14 class TGShapedMain :
public TGMainFrame {
17 const TGPicture *fBgnd;
23 TGShapedMain(
const TGWindow *p,
int w,
int h);
24 virtual ~TGShapedMain();
27 TGSpeedo *GetSpeedo()
const {
return fSpeedo; }
28 Int_t GetActInfo()
const {
return fActInfo; }
31 ClassDef(TGShapedMain, 0)
36 TGShapedMain *gMainWindow;
42 TGShapedMain::TGShapedMain(
const TGWindow *p,
int w,
int h) :
49 fSpeedo =
new TGSpeedo(
this, 0.0, 100.0,
"CPU",
"[%]");
50 fSpeedo->Connect(
"OdoClicked()",
"TGShapedMain",
this,
"ToggleInfos()");
51 fSpeedo->Connect(
"LedClicked()",
"TGShapedMain",
this,
"CloseWindow()");
52 Connect(
"CloseWindow()",
"TGShapedMain",
this,
"CloseWindow()");
53 AddFrame(fSpeedo,
new TGLayoutHints(kLHintsCenterX | kLHintsCenterX));
54 fSpeedo->SetDisplayText(
"Used RAM",
"[MB]");
55 fTimer =
new TTimer(100);
56 fTimer->SetCommand(
"Update()");
58 fBgnd = fSpeedo->GetPicture();
59 gVirtualX->ShapeCombineMask(GetId(), 0, 0, fBgnd->GetMask());
60 SetBackgroundPixmap(fBgnd->GetPicture());
61 SetWMSizeHints(fBgnd->GetWidth(), fBgnd->GetHeight(), fBgnd->GetWidth(),
62 fBgnd->GetHeight(), 1, 1);
69 Resize(GetDefaultSize());
71 SetWMSizeHints(GetDefaultWidth(), GetDefaultHeight(), GetDefaultWidth(),
72 GetDefaultHeight(), 1, 1);
73 SetWindowName(
"ROOT CPU Load Meter");
78 void TGShapedMain::ToggleInfos()
87 fSpeedo->SetDisplayText(
"Total RAM",
"[MB]");
88 else if (fActInfo == 1)
89 fSpeedo->SetDisplayText(
"Used RAM",
"[MB]");
90 else if (fActInfo == 2)
91 fSpeedo->SetDisplayText(
"Free RAM",
"[MB]");
95 TGShapedMain::~TGShapedMain()
104 void TGShapedMain::CloseWindow()
117 Float_t act_load = 0.0;
119 prev_load = act_load;
120 old_memUsage = memUsage;
123 gSystem->GetCpuInfo(&cpuInfo, 100);
125 act_load = cpuInfo.fTotal;
127 gSystem->GetMemInfo(&memInfo);
129 if (gMainWindow->GetActInfo() == 0)
130 memUsage = memInfo.fMemTotal;
131 else if (gMainWindow->GetActInfo() == 1)
132 memUsage = memInfo.fMemUsed;
133 else if (gMainWindow->GetActInfo() == 2)
134 memUsage = memInfo.fMemFree;
136 if (fabs(act_load-prev_load) > 0.9) {
137 gSpeedo->SetScaleValue(act_load, 10);
138 prev_load = act_load;
141 if (memUsage != old_memUsage) {
142 gSpeedo->SetOdoValue(memUsage);
143 old_memUsage = memUsage;
152 gMainWindow =
new TGShapedMain(gClient->GetRoot(), 500, 200);
153 gSpeedo = gMainWindow->GetSpeedo();
156 gSpeedo->SetThresholds(12.5, 50.0, 87.5);
158 gSpeedo->SetThresholdColors(TGSpeedo::kGreen, TGSpeedo::kOrange,
161 gSpeedo->EnableThreshold();
162 gSpeedo->SetScaleValue(0.0, 5);
164 gSpeedo->EnablePeakMark();