00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef _KARAMBA_H_
00025 #define _KARAMBA_H_
00026
00027 #ifdef HAVE_CONFIG_H
00028 #include <config.h>
00029 #endif
00030
00031 #include <tqwidget.h>
00032 #include <tdeapplication.h>
00033
00034 #include <twinmodule.h>
00035 #include <twin.h>
00036
00037 #include <tqfile.h>
00038 #include <tdefile.h>
00039 #include <tqfileinfo.h>
00040 #include <tdeaction.h>
00041 #include <tqtimer.h>
00042 #include <tqpixmap.h>
00043 #include <tqpainter.h>
00044
00045
00046
00047 #include <tqregexp.h>
00048 #include <tqlabel.h>
00049 #include <tqobjectlist.h>
00050 #include <tqstring.h>
00051 #include <tqstringlist.h>
00052 #include <ksharedpixmap.h>
00053 #include <tqvaluestack.h>
00054 #include <dcopclient.h>
00055 #include <tdepopupmenu.h>
00056 #include <tqcursor.h>
00057 #include <netwm.h>
00058 #include <kiconloader.h>
00059 #include <tdefiledialog.h>
00060 #include <tqmap.h>
00061 #include <kurl.h>
00062 #include <krun.h>
00063 #include <tqdatetime.h>
00064 #include <tqbitmap.h>
00065 #include <tdeconfig.h>
00066 #include <kprocess.h>
00067 #include <tqdragobject.h>
00068
00069 #include "karambarootpixmap.h"
00070
00071 #include "bar.h"
00072 #include "textlabel.h"
00073 #include "imagelabel.h"
00074 #include "graph.h"
00075 #include "input.h"
00076
00077 #include "clickarea.h"
00078
00079 #include "sensorparams.h"
00080 #include "memsensor.h"
00081 #include "datesensor.h"
00082 #include "uptimesensor.h"
00083 #include "memsensor.h"
00084 #include "cpusensor.h"
00085 #include "networksensor.h"
00086 #include "xmmssensor.h"
00087 #include "noatunsensor.h"
00088 #include "programsensor.h"
00089 #include "disksensor.h"
00090 #include "sensorsensor.h"
00091 #include "textfilesensor.h"
00092
00093 #include "clickmap.h"
00094 #include "rsssensor.h"
00095
00096 #include "taskmanager.h"
00097 #include "showdesktop.h"
00098 #include "systemtray.h"
00099 #include "themefile.h"
00100
00109 class KarambaPython;
00110 class LineParser;
00111
00112 class karamba : public TQWidget
00113 {
00114 Q_OBJECT
00115
00116
00117 public:
00118 karamba(TQString fn, TQString name, bool reloading = false,
00119 int instance = -1, bool sub_theme = false);
00120 TQObjectList *menuList;
00121
00122 virtual ~karamba();
00123 const ThemeFile& theme() const { return m_theme; };
00124
00125 TQObjectList *meterList;
00126 TQObjectList *imageList;
00127 TQObjectList *clickList;
00128 void setSensor(const LineParser& lineParser, Meter* meter);
00129 TQString getSensor(Meter* meter);
00130 TQString findSensorFromMap(Sensor* sensor);
00131 void deleteMeterFromSensors(Meter* meter);
00132 Sensor* findSensorFromList(Meter* meter);
00133 TDEPopupMenu* keditpop;
00134 TDEPopupMenu *kpop;
00135 TQBitmap* widgetMask;
00136 KarambaRootPixmap *kroot;
00137 TaskManager taskManager;
00138 Systemtray* systray;
00139 TDEProcess* currProcess;
00140 bool useSmoothTransforms();
00141
00142 void changeInterval(int interval);
00143 void setWidgetUpdate(bool wu) { widgetUpdate = wu; };
00144 bool getWidgetUpdate() { return widgetUpdate; };
00145 bool hasMeter(Meter* meter) { return meterList->containsRef(meter) > 0; };
00146 char getTempUnit() { return tempUnit; };
00147 void addMenuConfigOption(TQString key, TQString name);
00148 bool setMenuConfigOption(TQString key, bool value);
00149 bool readMenuConfigOption(TQString key);
00150 void writeConfigData();
00151 TextField* getDefaultTextProps() { return defaultTextField; };
00152 int instance() const { return m_instance; };
00153 void setInstance(int instance) { m_instance = instance; };
00154 void closeTheme(bool reloading = false);
00155 void keyPressed(const TQString& s, const Meter* meter);
00156
00157 int numberOfConfMenuItems;
00158 TDEConfig* config;
00159 TQString prettyName;
00160 bool m_sub_theme;
00161 bool isSubTheme() { return m_sub_theme; }
00162
00163 void toggleWidgetUpdate( bool );
00164
00165 KWinModule* kWinModule;
00166
00167 TQString incomingData;
00168 TQString getIncomingData() { return incomingData; }
00169 void _setIncomingData(TQString data) { incomingData = data; }
00170 void setIncomingData(TQString theme, TQString data);
00171
00172 void themeNotify(TQString theme, TQString txt);
00173 void callTheme(TQString theme, TQString txt);
00174
00175 double getUpdateTime() { return update_time; }
00176 void setUpdateTime(double time) { update_time = time; }
00177
00178 void makeActive();
00179 void makePassive();
00180
00181 void showMenuExtension();
00182 void hideMenuExtension();
00183
00184 protected:
00185 void mousePressEvent( TQMouseEvent *);
00186 void wheelEvent( TQWheelEvent *);
00187 void mouseReleaseEvent( TQMouseEvent *);
00188 void mouseDoubleClickEvent( TQMouseEvent *);
00189 void mouseMoveEvent( TQMouseEvent *);
00190 void keyPressEvent ( TQKeyEvent * e );
00191 void closeEvent ( TQCloseEvent *);
00192 void paintEvent ( TQPaintEvent *);
00193 void saveProperties(TDEConfig *);
00194 void readProperties(TDEConfig *);
00195 void dragEnterEvent(TQDragEnterEvent* event);
00196 void dropEvent(TQDropEvent* event);
00197
00198 private:
00199 bool widgetUpdate;
00200 bool repaintInProgress;
00201
00202 bool want_right_button;
00203 bool want_meter_wheel_event;
00204
00205 NETWinInfo* info;
00206 bool onTop;
00207 bool managed;
00208 bool fixedPosition;
00209 bool haveUpdated;
00210 char tempUnit;
00211 double update_time;
00212 int m_instance;
00213
00214 bool parseConfig();
00215
00216 void passClick( TQMouseEvent* );
00217 void passWheelClick( TQWheelEvent* );
00218 void meterClicked(TQMouseEvent*, Meter*);
00219
00220 TQMap<TQString, Sensor*> sensorMap;
00221 TQObjectList *sensorList;
00222 TQObjectList *timeList;
00223
00224 TQTime lowerTimer;
00225
00226 bool foundKaramba;
00227
00228 TDEPopupMenu* themeConfMenu;
00229 TDEPopupMenu* toDesktopMenu;
00230 TDEPopupMenu* kglobal;
00231
00232 DCOPClient *client;
00233 TQCString appId;
00234
00235 TQPixmap pm;
00236 TQPixmap background;
00237 TQPainter p;
00238
00239 TQPoint clickPos;
00240 TDEActionCollection* accColl;
00241 TDEActionCollection* menuAccColl;
00242 TDEToggleAction *toggleLocked;
00243
00244 TDEToggleAction *toggleFastTransforms;
00245
00246
00247 KarambaPython* pythonIface;
00248 TextField *defaultTextField;
00249
00250 int desktop;
00251 ThemeFile m_theme;
00252
00253 int trayMenuSeperatorId;
00254 int trayMenuQuitId;
00255 int trayMenuToggleId;
00256 int trayMenuThemeId;
00257 void start();
00258
00259 public slots:
00260 void step();
00261 void externalStep();
00262 void widgetClosed();
00263 void updateSensors();
00264 void currentDesktopChanged(int);
00265 void currentWallpaperChanged(int);
00266 void slotToggleConfigOption(TQString key, bool);
00267 void updateBackground(TDESharedPixmap*);
00268 void passMenuOptionChanged(TQString key, bool);
00269 void passMenuItemClicked(int);
00270 void processExited (TDEProcess *proc);
00271 void receivedStdout (TDEProcess *proc, char *buffer, int buflen);
00272 void toDesktop(int desktopid, int menuid);
00273 const char *getPrettyName() { return prettyName.ascii(); }
00274
00275
00276 void systrayUpdated();
00277
00278
00279 void startupAdded(Startup*);
00280 void startupRemoved(Startup*);
00281
00282 void taskAdded(Task*);
00283 void taskRemoved(Task*);
00284 void activeTaskChanged(Task*);
00285 void reloadConfig();
00286
00287 void setAlwaysOnTop(bool stay);
00288
00293 void setWantRightButton(bool yesno) { want_right_button = yesno; }
00294
00295 void setWantMeterWheelEvent(bool yesno) { want_meter_wheel_event = yesno; }
00296
00300 void management_popup( void );
00301
00302 private:
00303 bool m_reloading;
00304 bool themeStarted;
00305 TQTimer *m_sysTimer;
00306 int m_interval;
00307
00308 private slots:
00309 void initPythonInterface();
00310 void killWidget();
00311 void editConfig();
00312 void editScript();
00313 void slotToggleLocked();
00314 void slotToggleFastTransforms();
00315 void popupNotify(int);
00316 void slotFileChanged( const TQString & );
00317
00318 void slotToggleSystemTray();
00319 void slotQuit();
00320 void slotShowTheme();
00321 };
00322
00323
00324
00325
00326
00327 class DesktopChangeSlot : public TQObject
00328 {
00329 Q_OBJECT
00330
00331
00332 public:
00333 DesktopChangeSlot(TQObject *parent, int desktop_id);
00334
00335
00336 void setMenuId(int id);
00337 int menuId();
00338
00339 public slots:
00340 void receive();
00341
00342 protected:
00343 int desktopid;
00344 int menuid;
00345 };
00346
00348 class SignalBridge : public TQObject
00349 {
00350 Q_OBJECT
00351
00352
00353 public:
00354 SignalBridge(TQObject* parent, TQString, TDEActionCollection*);
00355
00356 signals:
00357 void enabled(TQString, bool);
00358
00359 public slots:
00360 void receive();
00361
00362 private:
00363 TDEActionCollection* collection;
00364 };
00365
00366 #endif // _KARAMBA_H_