Graphics User Interface | QtFileDialog.C: This is a small ROOT macro to use Qt 3.3 class: begin_html QFileDialog end_html |
// Simple macro showing capabilities of TGSpeedo widget. //Author: Bertrand Bellenot #include "TSystem.h" #include "TGFrame.h" #include "TGWindow.h" #include "TGSpeedo.h" class TGShapedMain : public TGMainFrame { protected: const TGPicture *fBgnd; // picture used as mask TGSpeedo *fSpeedo; // analog meter TTimer *fTimer; // update timer Int_t fActInfo; // actual information value public: TGShapedMain(const TGWindow *p, int w, int h); virtual ~TGShapedMain(); void CloseWindow(); TGSpeedo *GetSpeedo() const { return fSpeedo; } Int_t GetActInfo() const { return fActInfo; } void ToggleInfos(); ClassDef(TGShapedMain, 0) }; // globals TGShapedMain *gMainWindow; TGSpeedo *gSpeedo; Float_t prev_load; Int_t old_memUsage; //______________________________________________________________________________ TGShapedMain::TGShapedMain(const TGWindow *p, int w, int h) : TGMainFrame(p, w, h) { // Constructor. fActInfo = 1; fSpeedo = new TGSpeedo(this, 0.0, 100.0, "CPU", "[%]"); fSpeedo->Connect("OdoClicked()", "TGShapedMain", this, "ToggleInfos()"); fSpeedo->Connect("LedClicked()", "TGShapedMain", this, "CloseWindow()"); Connect("CloseWindow()", "TGShapedMain", this, "CloseWindow()"); AddFrame(fSpeedo, new TGLayoutHints(kLHintsCenterX | kLHintsCenterX, 0, 0, 0, 0)); fSpeedo->SetDisplayText("Used RAM", "[MB]"); fTimer = new TTimer(100); fTimer->SetCommand("Update()"); fBgnd = fSpeedo->GetPicture(); gVirtualX->ShapeCombineMask(GetId(), 0, 0, fBgnd->GetMask()); SetBackgroundPixmap(fBgnd->GetPicture()); SetWMSizeHints(fBgnd->GetWidth(), fBgnd->GetHeight(), fBgnd->GetWidth(), fBgnd->GetHeight(), 1, 1); MapSubwindows(); MapWindow(); // To avoid closing the window while TGSpeedo is drawing DontCallClose(); // To avoid closing the window while TGSpeedo is drawing Resize(GetDefaultSize()); // Set fixed size SetWMSizeHints(GetDefaultWidth(), GetDefaultHeight(), GetDefaultWidth(), GetDefaultHeight(), 1, 1); SetWindowName("ROOT CPU Load Meter"); fTimer->TurnOn(); } //______________________________________________________________________________ void TGShapedMain::ToggleInfos() { // Toggle information displayed in Analog Meter if (fActInfo < 2) fActInfo++; else fActInfo = 0; if (fActInfo == 0) fSpeedo->SetDisplayText("Total RAM", "[MB]"); else if (fActInfo == 1) fSpeedo->SetDisplayText("Used RAM", "[MB]"); else if (fActInfo == 2) fSpeedo->SetDisplayText("Free RAM", "[MB]"); } //______________________________________________________________________________ TGShapedMain::~TGShapedMain() { // Destructor. delete fTimer; delete fSpeedo; } //______________________________________________________________________________ void TGShapedMain::CloseWindow() { // Close Window. if (fTimer) fTimer->TurnOff(); DestroyWindow(); } void Update() { MemInfo_t memInfo; CpuInfo_t cpuInfo; Float_t act_load = 0.0; Int_t memUsage = 0; prev_load = act_load; old_memUsage = memUsage; // Get CPU informations gSystem->GetCpuInfo(&cpuInfo, 100); // actual CPU load act_load = cpuInfo.fTotal; // Get Memory informations gSystem->GetMemInfo(&memInfo); // choose which value to display if (gMainWindow->GetActInfo() == 0) memUsage = memInfo.fMemTotal; else if (gMainWindow->GetActInfo() == 1) memUsage = memInfo.fMemUsed; else if (gMainWindow->GetActInfo() == 2) memUsage = memInfo.fMemFree; // small threshold to avoid "trembling" needle if (fabs(act_load-prev_load) > 0.9) { gSpeedo->SetScaleValue(act_load, 10); prev_load = act_load; } // update only if value has changed if (memUsage != old_memUsage) { gSpeedo->SetOdoValue(memUsage); old_memUsage = memUsage; } } //______________________________________________________________________________ void CPUMeter() { // Main application. gMainWindow = new TGShapedMain(gClient->GetRoot(), 500, 200); gSpeedo = gMainWindow->GetSpeedo(); // set threshold values gSpeedo->SetThresholds(12.5, 50.0, 87.5); // set threshold colors gSpeedo->SetThresholdColors(TGSpeedo::kGreen, TGSpeedo::kOrange, TGSpeedo::kRed); // enable threshold gSpeedo->EnableThreshold(); gSpeedo->SetScaleValue(0.0, 5); // enable peak marker gSpeedo->EnablePeakMark(); } CPUMeter.C:1 CPUMeter.C:2 CPUMeter.C:3 CPUMeter.C:4 CPUMeter.C:5 CPUMeter.C:6 CPUMeter.C:7 CPUMeter.C:8 CPUMeter.C:9 CPUMeter.C:10 CPUMeter.C:11 CPUMeter.C:12 CPUMeter.C:13 CPUMeter.C:14 CPUMeter.C:15 CPUMeter.C:16 CPUMeter.C:17 CPUMeter.C:18 CPUMeter.C:19 CPUMeter.C:20 CPUMeter.C:21 CPUMeter.C:22 CPUMeter.C:23 CPUMeter.C:24 CPUMeter.C:25 CPUMeter.C:26 CPUMeter.C:27 CPUMeter.C:28 CPUMeter.C:29 CPUMeter.C:30 CPUMeter.C:31 CPUMeter.C:32 CPUMeter.C:33 CPUMeter.C:34 CPUMeter.C:35 CPUMeter.C:36 CPUMeter.C:37 CPUMeter.C:38 CPUMeter.C:39 CPUMeter.C:40 CPUMeter.C:41 CPUMeter.C:42 CPUMeter.C:43 CPUMeter.C:44 CPUMeter.C:45 CPUMeter.C:46 CPUMeter.C:47 CPUMeter.C:48 CPUMeter.C:49 CPUMeter.C:50 CPUMeter.C:51 CPUMeter.C:52 CPUMeter.C:53 CPUMeter.C:54 CPUMeter.C:55 CPUMeter.C:56 CPUMeter.C:57 CPUMeter.C:58 CPUMeter.C:59 CPUMeter.C:60 CPUMeter.C:61 CPUMeter.C:62 CPUMeter.C:63 CPUMeter.C:64 CPUMeter.C:65 CPUMeter.C:66 CPUMeter.C:67 CPUMeter.C:68 CPUMeter.C:69 CPUMeter.C:70 CPUMeter.C:71 CPUMeter.C:72 CPUMeter.C:73 CPUMeter.C:74 CPUMeter.C:75 CPUMeter.C:76 CPUMeter.C:77 CPUMeter.C:78 CPUMeter.C:79 CPUMeter.C:80 CPUMeter.C:81 CPUMeter.C:82 CPUMeter.C:83 CPUMeter.C:84 CPUMeter.C:85 CPUMeter.C:86 CPUMeter.C:87 CPUMeter.C:88 CPUMeter.C:89 CPUMeter.C:90 CPUMeter.C:91 CPUMeter.C:92 CPUMeter.C:93 CPUMeter.C:94 CPUMeter.C:95 CPUMeter.C:96 CPUMeter.C:97 CPUMeter.C:98 CPUMeter.C:99 CPUMeter.C:100 CPUMeter.C:101 CPUMeter.C:102 CPUMeter.C:103 CPUMeter.C:104 CPUMeter.C:105 CPUMeter.C:106 CPUMeter.C:107 CPUMeter.C:108 CPUMeter.C:109 CPUMeter.C:110 CPUMeter.C:111 CPUMeter.C:112 CPUMeter.C:113 CPUMeter.C:114 CPUMeter.C:115 CPUMeter.C:116 CPUMeter.C:117 CPUMeter.C:118 CPUMeter.C:119 CPUMeter.C:120 CPUMeter.C:121 CPUMeter.C:122 CPUMeter.C:123 CPUMeter.C:124 CPUMeter.C:125 CPUMeter.C:126 CPUMeter.C:127 CPUMeter.C:128 CPUMeter.C:129 CPUMeter.C:130 CPUMeter.C:131 CPUMeter.C:132 CPUMeter.C:133 CPUMeter.C:134 CPUMeter.C:135 CPUMeter.C:136 CPUMeter.C:137 CPUMeter.C:138 CPUMeter.C:139 CPUMeter.C:140 CPUMeter.C:141 CPUMeter.C:142 CPUMeter.C:143 CPUMeter.C:144 CPUMeter.C:145 CPUMeter.C:146 CPUMeter.C:147 CPUMeter.C:148 CPUMeter.C:149 CPUMeter.C:150 CPUMeter.C:151 CPUMeter.C:152 CPUMeter.C:153 CPUMeter.C:154 CPUMeter.C:155 CPUMeter.C:156 CPUMeter.C:157 CPUMeter.C:158 CPUMeter.C:159 CPUMeter.C:160 CPUMeter.C:161 CPUMeter.C:162 |
|