#include #include #include #include #include #include #include #include #include #include #include #include #include #include //++//#include //#include using namespace std; class MyMainFrame{ RQ_OBJECT("MyMainFrame") private: TGMainFrame *fMain; TRootEmbeddedCanvas *fEcanvas; public: MyMainFrame(const TGWindow *p, UInt_t w, UInt_t h); virtual ~MyMainFrame(); void DoSomething(); int numberOfNumEntries = 3; //TGNumberEntry *entryDpid; TGListBox *fListBox; TGNumberEntry *entryStartDate; TGNumberEntry *entryEndDate; TGNumberEntry *entryStartTime; TGNumberEntry *entryEndTime; TGComboBox *fCombo; //TCanvas c1; }; enum EEntriesID{ kENTRY1, kENTRY2 }; MyMainFrame::MyMainFrame(const TGWindow *p, UInt_t w, UInt_t h){ //Create main frame fMain = new TGMainFrame(p, w, h); //Create canvas widget //fEcanvas = new TRootEmbeddedCanvas("Ecanvas", fMain, 200, 200); //fMain->AddFrame(fEcanvas, new TGLayoutHints(kLHintsExpandX| kLHintsExpandY, 10, 10, 10, 1)); //Create a horizontal frame widget with buttons TGHorizontalFrame *hframe = new TGHorizontalFrame(fMain, 200, 40); TGTextButton *doSomething = new TGTextButton(hframe, "&Go"); hframe->AddFrame(doSomething, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4)); TGTextButton *exit = new TGTextButton(hframe, "&Exit", "gApplication->Terminate(0)"); hframe->AddFrame(exit, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4)); //////////////////////////////////////// TGListBox *fListBox = new TGListBox(hframe, 90); fListBox->AddEntry("hi", 1); fListBox->Resize(150,80); hframe->AddFrame(fListBox, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4)); TGLabel *label1 = new TGLabel(hframe, "start date:"); hframe->AddFrame(label1, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 8, 0, 1, 1)); entryStartDate = new TGNumberEntry(hframe, .005, 9, kENTRY1, TGNumberFormat::kNESMDayYear, TGNumberFormat::kNELNoLimits); hframe->AddFrame(entryStartDate, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4)); TGLabel *label1 = new TGLabel(hframe, "start time:"); hframe->AddFrame(label1, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 8, 0, 1, 1)); entryStartTime = new TGNumberEntry(hframe, .005, 9, kENTRY1, TGNumberFormat::kNESHourMinSec, TGNumberFormat::kNELNoLimits); hframe->AddFrame(entryStartTime, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4)); TGLabel *label1 = new TGLabel(hframe, "end date:"); hframe->AddFrame(label1, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 8, 0, 1, 1)); entryEndDate = new TGNumberEntry(hframe, .005, 9, kENTRY1, TGNumberFormat::kNESMDayYear, TGNumberFormat::kNELNoLimits); hframe->AddFrame(entryEndDate, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4)); TGLabel *label1 = new TGLabel(hframe, "end time:"); hframe->AddFrame(label1, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 8, 0, 1, 1)); entryEndTime = new TGNumberEntry(hframe, .005, 9, kENTRY1, TGNumberFormat::kNESHourMinSec, TGNumberFormat::kNELNoLimits); hframe->AddFrame(entryEndTime, new TGLayoutHints(kLHintsCenterX, 5, 5, 3, 4)); TGLabel *label1 = new TGLabel(hframe, "data:"); hframe->AddFrame(label1, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 8, 0, 1, 1)); fCombo = new TGComboBox(hframe, 100); fCombo->AddEntry("actual_vmon", 1); fCombo->AddEntry("actual_imon", 2); fCombo->AddEntry("actual_temp", 3); fCombo->Resize(150, 20); hframe->AddFrame(fCombo, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 8, 0, 1, 1)); //////////////////////////////////// doSomething->Connect("Clicked()", "MyMainFrame", this, "DoSomething()"); fMain->AddFrame(hframe, new TGLayoutHints(kLHintsCenterX, 2, 2, 2, 2)); fMain->SetWindowName("Select a Channel"); //map all subwindows of main frame fMain->MapSubwindows(); //initialize layout algorithm fMain->Resize(fMain->GetDefaultSize()); //map main frame fMain->MapWindow(); } void MyMainFrame::DoSomething(){ long dpid; long unixTimeStart; long unixTimeEnd; int channelCounter = 0; double ** returnArray; vector sendVector; Int_t year, month, day, hour, min, sec; //++//CARLandJACKobject DATAOBJECT; entryStartDate->GetDate(year, month, day); entryStartTime->GetTime(hour, min, sec); TDatime curDate(year, month, day, hour, min, sec); unixTimeStart = curDate.Convert(); entryEndDate->GetDate(year, month, day); entryEndTime->GetTime(hour, min, sec); TDatime curDate(year, month, day, hour, min, sec); unixTimeEnd = curDate.Convert(); char typeOfData = 'v'; //default is voltage.. switch(fCombo->GetSelected()){ case 1: typeOfData = 'v'; break; case 2: typeOfData = 'i'; break; case 3: typeOfData = 't'; break; } TList* selected = new TList; fListBox->GetSelectedEntries(selected); TIter next(selected); while ((entry = (TGTextLBEntry *)next())){ TString name = obj->GetTitle(); } returnArray = new double*[3]; for(int counter = 0; counter < 3; counter++){ returnArray[counter] = new double[2]; } //++//DATAOBJECT = new CARLandJACKobject(); //++//returnArray = DATAOBJECT.Get(dpid, unixTimeStart, unixTimeEnd, typeOfData); //++//SimpleGraphClass::SimpleGraph(channelName, returnArray); returnArray[0][0] = 2.1; returnArray[1][0] = 5; //sendVector.push_back(const_cast(returnArray)); //SimpleGraphClass::SimpleGraph("test_name", returnArray); /*c1 = new TCanvas("c1","Time History of Voltage",200,10,700,500); c1->SetFillColor(42); c1->SetGrid(); SimpleGraphClass::SimpleGraph2("test_name", returnArray, channelCounter); channelCounter++; returnArray[0][0] = 2.1; returnArray[1][0] = 7; SimpleGraphClass::SimpleGraph2("test_name", returnArray, channelCounter); */ } MyMainFrame::~MyMainFrame(){SimpleGraphClass::SimpleGraph2("test_name", returnArray, channelCounter); fMain->Cleanup(); delete fMain; } void example(){ new MyMainFrame(gClient->GetRoot(), 200, 200); }