Blame | Last modification | View Log | RSS feed
#include "../include/root_app.h"
#include "../include/workstation.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
// Main window constructor (+layout) ---------------------------------
TGAppMainFrame::TGAppMainFrame(const TGWindow *p, int w, int h)
{
// Define main window and menubar
fMain = new TGMainFrame(p, w, h, kVerticalFrame);
AppLayout();
fMain->SetWindowName(WINDOW_NAME);
fMain->MapSubwindows();
fMain->MapWindow();
fMain->Layout();
}
TGAppMainFrame::~TGAppMainFrame()
{
fMain->Cleanup();
delete fMain;
}
// Closing main window and checking about information ----------------
void TGAppMainFrame::CloseWindow()
{
fMain->Cleanup();
delete fMain;
gApplication->Terminate(0);
}
// -------------------------------------------------------------------
// -------------------------------------------------------------------
// Separate functions -----------------------------------------
void GetTime(int intime, char *outtime)
{
time_t rawtime;
struct tm * timeinfo;
if(intime < 0)
time(&rawtime);
else
rawtime = (time_t)intime;
timeinfo = localtime(&rawtime);
sprintf(outtime, "%s", asctime(timeinfo));
int len = strlen(outtime);
if(len) outtime[len-1] = 0;
}
// ----------------------------------------------------------
// Temperature sensor functions -----------------------------
const char* dbname = "mysql://f9lab08.ijs.si/f9phdet";
const char* tblname = "fprtd122";
const char* username = "f9daq";
const char* userpass = "f9lab";
// Get the temperature from MYSQL database
double GetTemperature(int ch, const char *s)
{
int bin=5+7*4-ch*4;
char hex[16];
strncpy(hex, (const char *) &s[bin], 4);
hex[4]=0;
int ix;
sscanf (hex,"%x",&ix);
//printf("0x%s\t",hex);
return (ix/65535.)*1050.-200.;
}
// Transform local time to timestamp
int GetTimeStamp(int *intime)
{
time_t rawtime;
struct tm * timeinfo;
time(&rawtime);
timeinfo = localtime(&rawtime);
if(DBGSIG)
printf("%d.%d.%d, %d:%d:%d\n", intime[0], intime[1], intime[2], intime[3], intime[4], intime[5]);
timeinfo->tm_mday = intime[0];
timeinfo->tm_mon = intime[1] - 1;
timeinfo->tm_year = intime[2] - 1900;
timeinfo->tm_hour = intime[3];
timeinfo->tm_min = intime[4];
timeinfo->tm_sec = intime[5];
return (int)mktime(timeinfo);
}
// Get data from MYSQL database
void TGAppMainFrame::fieldpoint(int *timerange, int selch)
{
char humantime[256];
// Display selected timestamps
GetTime(timerange[0], humantime);
printf("Minimum time set to: %s (%d)\n", humantime, timerange[0]);
if(timerange[1] != -1)
{
GetTime(timerange[1], humantime);
printf("Maximum time set to: %s (%d)\n", humantime, timerange[1]);
}
printf("Selected fieldpoint channel: %d\n", selch);
printf("\n");
// Database settings
TSQLServer *db = TSQLServer::Connect(dbname, username, userpass);
printf("Server info: %s\n", db->ServerInfo());
TSQLRow *row;
TSQLResult *res;
if(DBGSIG)
{
// list databases available on server
printf("\nList all databases on server %s\n", db->GetHost());
res = db->GetDataBases();
while ((row = res->Next())) {
printf("%s\n", row->GetField(0));
delete row;
}
delete res;
// list tables in database "test" (the permission tables)
printf("\nList all tables in database \"f9phdet\" on server %s\n", db->GetHost());
res = db->GetTables("f9phdet");
while ((row = res->Next())) {
printf("%s\n", row->GetField(0));
delete row;
}
delete res;
// list columns in table "runcatalog" in database "mysql"
printf("\nList all columns in table \"f9phdet\" in database \"f9rtd122\" on server %s\n", db->GetHost());
res = db->GetColumns("f9phdet", "fprtd122");
while ((row = res->Next())) {
printf("%s\n", row->GetField(0));
delete row;
}
delete res;
}
// query database and print results
char sql[1000] = "SELECT status,data,timestamp FROM fprtd122 WHERE status='A272727272727272748' AND substring(data,1,4)='A00C' ";
if(timerange[1] == -1)
sprintf(sql,"%s AND timestamp>='%d'", sql, timerange[0]);
else
sprintf(sql,"%s AND timestamp>='%d' AND timestamp<='%d'", sql, timerange[0], timerange[1]);
if(DBGSIG)
printf("%s\n",sql);
res = db->Query(sql);
int nrows = res->GetRowCount();
printf("\nGot %d rows in result\n", nrows);
// Printing and plotting
char timeval[256];
TGraph *gr;
double *x, *y;
double firsttime, lasttime;
gr = new TGraph(nrows);
gr->SetLineColor(kRed);
gr->SetLineWidth(1);
gr->SetMarkerColor(kBlack);
gr->SetMarkerSize(0.8);
gr->SetMarkerStyle(20);
gr->SetTitle("Temperature sensor;Time;Temperature (deg.)");
FILE *fp;
fp = fopen("./fieldpoint/dataout_fieldpoint.txt", "w");
if(DBGSIG)
printf("Time\tTemperature\n");
for (int i = 0; i < nrows; i++) {
row = res->Next();
GetTime((int)atof(row->GetField(2))-TIMEOFF, timeval);
x = new double;
y = new double;
*x = atof(row->GetField(2))-TIMEOFF;
*y = GetTemperature(selch,row->GetField(1));
gr->SetPoint(i,*x,*y);
if(i == 0) firsttime = *x;
else if(i == nrows-1) lasttime = *x;
if(datSettings->GetSelected() == 0)
{
fprintf(fp, "%s\t%d\t%f\n",timeval,(int)*x,*y);
if(DBGSIG)
printf("%s\t%d\t%f\n",timeval,(int)*x,*y);
}
else if(datSettings->GetSelected() == 1)
{
fprintf(fp, "%s\t%f\n",timeval,*y);
if(DBGSIG)
printf("%s\t%f\n",timeval,*y);
}
else if(datSettings->GetSelected() == 2)
{
fprintf(fp, "%d\t%f\n",(int)*x,*y);
if(DBGSIG)
printf("%d\t%f\n",(int)*x,*y);
}
delete x;
delete y;
delete row;
}
fclose(fp);
delete res;
delete db;
TCanvas *gCanvas = displayCanvas->GetCanvas();
gCanvas->SetGrid();
gr->GetXaxis()->SetTimeDisplay(1);
gr->GetXaxis()->SetTimeFormat("%H:%M, %d.%m.");
gr->GetXaxis()->SetTimeOffset(0);
gr->GetXaxis()->SetLabelSize(0.027);
gr->GetXaxis()->SetLabelOffset(0.015);
gr->GetXaxis()->SetTitleSize(0.038);
gr->GetXaxis()->SetTitleOffset(1.2);
gr->GetYaxis()->SetLabelSize(0.027);
gr->GetYaxis()->SetTitleSize(0.038);
gr->GetXaxis()->SetNdivisions(-507);
gr->GetXaxis()->SetRange(firsttime,lasttime);
gr->GetXaxis()->SetRangeUser(firsttime,lasttime);
gr->Draw("APL");
gCanvas->Modified();
gCanvas->Update();
}
// Update the temperature plot
void TGAppMainFrame::UpdateTempPlot()
{
int stime[6];
int etime[6];
int timestamp[2];
time_t rtime;
int curyear;
time(&rtime);
curyear = (int)(localtime(&rtime))->tm_year+1900;
int leapy = 0;
// Getting the start time
stime[0] = (int)(tempDay[0]->GetSelected())+1;
stime[2] = curyear - (int)(tempYear[0]->GetSelected());
if(DBGSIG)
printf("%d, %d, %d\n", stime[2], curyear, (int)(tempYear[0]->GetSelected()));
stime[3] = (int)(tempHour[0]->GetSelected());
stime[4] = (int)(tempMinute[0]->GetSelected());
stime[5] = (int)(tempSecond[0]->GetSelected());
switch( tempMonth[0]->GetSelected() )
{
case 0:
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 1:
if( stime[2]%4 == 0)
leapy = 1;
if( (leapy == 1) && (stime[0] > 29) )
{
stime[0] = 29;
tempDay[0]->Select(28);
}
else if( (leapy == 0) && (stime[0] > 28) )
{
stime[0] = 28;
tempDay[0]->Select(27);
}
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 2:
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 3:
if(stime[0] > 30)
{
stime[0] = 30;
tempDay[0]->Select(29);
}
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 4:
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 5:
if(stime[0] > 30)
{
stime[0] = 30;
tempDay[0]->Select(29);
}
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 6:
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 7:
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 8:
if(stime[0] > 30)
{
stime[0] = 30;
tempDay[0]->Select(29);
}
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 9:
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 10:
if(stime[0] > 30)
{
stime[0] = 30;
tempDay[0]->Select(29);
}
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
case 11:
stime[1] = (int)(tempMonth[0]->GetSelected())+1;
break;
default:
break;
}
timestamp[0] = GetTimeStamp(stime);
if(DBGSIG)
printf("Start time: %d\n", timestamp[0]);
// Getting the end time
etime[0] = (int)(tempDay[1]->GetSelected())+1;
etime[2] = curyear - (int)(tempYear[1]->GetSelected());
etime[3] = (int)(tempHour[1]->GetSelected());
etime[4] = (int)(tempMinute[1]->GetSelected());
etime[5] = (int)(tempSecond[1]->GetSelected());
switch( tempMonth[1]->GetSelected() )
{
case 0:
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 1:
if( etime[2]%4 == 0)
leapy = 1;
if( (leapy == 1) && (etime[0] > 29) )
{
etime[0] = 29;
tempDay[1]->Select(28);
}
else if( (leapy == 0) && (etime[0] > 28) )
{
etime[0] = 28;
tempDay[1]->Select(27);
}
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 2:
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 3:
if(etime[0] > 30)
{
etime[0] = 30;
tempDay[1]->Select(29);
}
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 4:
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 5:
if(etime[0] > 30)
{
etime[0] = 30;
tempDay[1]->Select(29);
}
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 6:
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 7:
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 8:
if(etime[0] > 30)
{
etime[0] = 30;
tempDay[1]->Select(29);
}
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 9:
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 10:
if(etime[0] > 30)
{
etime[0] = 30;
tempDay[1]->Select(29);
}
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
case 11:
etime[1] = (int)(tempMonth[1]->GetSelected())+1;
break;
default:
break;
}
if( tempEndOn->IsDown() )
timestamp[1] = -1;
else
timestamp[1] = GetTimeStamp(etime);
if(DBGSIG)
printf("End time: %d\n", timestamp[1]);
fieldpoint(timestamp, tempCh->GetSelected());
}
// Export the temperature plot to pdf
void TGAppMainFrame::ExportTempPlot()
{
TCanvas *gCanvas = displayCanvas->GetCanvas();
gCanvas->Modified();
gCanvas->Update();
gCanvas->SaveAs("./fieldpoint/plotout_fieldpoint.pdf");
}
// Toggle the endtime settings for temperature sensor
void TGAppMainFrame::TempEndToggle()
{
if( tempEndOn->IsDown() )
{
tempDay[1]->SetEnabled(kFALSE);
tempMonth[1]->SetEnabled(kFALSE);
tempYear[1]->SetEnabled(kFALSE);
tempHour[1]->SetEnabled(kFALSE);
tempMinute[1]->SetEnabled(kFALSE);
tempSecond[1]->SetEnabled(kFALSE);
}
else
{
tempDay[1]->SetEnabled(kTRUE);
tempMonth[1]->SetEnabled(kTRUE);
tempYear[1]->SetEnabled(kTRUE);
tempHour[1]->SetEnabled(kTRUE);
tempMinute[1]->SetEnabled(kTRUE);
tempSecond[1]->SetEnabled(kTRUE);
}
}
// --------------------------------------------------------------
// Setting the application layout ------------------------------------
void TGAppMainFrame::AppLayout()
{
// Fieldpoint window ------------------------
TGLayoutHints *f0 = new TGLayoutHints(kLHintsLeft | kLHintsTop,2,2,2,2);
TGLayoutHints *f0centerx = new TGLayoutHints(kLHintsCenterX,2,2,2,2);
TGLayoutHints *f0centery = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);
TGLayoutHints *f1 = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,2,2,2,2);
TGLayoutHints *f2 = new TGLayoutHints(kLHintsExpandX,2,2,2,2);
TGHorizontalFrame *fH1, *fH2;
TGGroupFrame *fG1;
TGLabel *lab;
time_t rtime;
int yearrange[2];
int subwin[2];
char ctemp[256];
subwin[0] = winWidth-10;
subwin[1] = 6.6*winHeight/12;
// Display canvas for temperature sensor
displayCanvas = new TRootEmbeddedCanvas("displayCanvas",fMain,subwin[0],subwin[1]);
fMain->AddFrame(displayCanvas, f0centerx);
TCanvas *gCanvas = displayCanvas->GetCanvas();
gCanvas->SetGridx();
gCanvas->SetGridy();
fG1 = new TGGroupFrame(fMain, "Temperature sensor settings");
// Channel selector
fH1 = new TGHorizontalFrame(fG1, subwin[0], 30);
lab = new TGLabel(fH1, "Fieldpoint channel:");
fH1->AddFrame(lab, f0centery);
tempCh = new TGComboBox(fH1, 200);
tempCh->AddEntry("0", 0);
tempCh->AddEntry("1", 1);
tempCh->AddEntry("2", 2);
tempCh->AddEntry("3", 3);
tempCh->AddEntry("4", 4);
tempCh->AddEntry("5", 5);
tempCh->AddEntry("6", 6);
tempCh->AddEntry("7", 7);
tempCh->Resize(50,22);
tempCh->Select(1);
fH1->AddFrame(tempCh, f0centery);
fG1->AddFrame(fH1, f2);
// Start and stop time ------------------------
time(&rtime);
lab = new TGLabel(fG1, "Start time:");
fG1->AddFrame(lab, f0);
fH1 = new TGHorizontalFrame(fG1, subwin[0], 30);
// Start day
lab = new TGLabel(fH1, "\tDay: ");
fH1->AddFrame(lab, f0centery);
tempDay[0] = new TGComboBox(fH1, 200);
for(int i = 0; i < 31; i++)
{
sprintf(ctemp, "%d", i+1);
tempDay[0]->AddEntry(ctemp, i);
}
tempDay[0]->Resize(50,22);
tempDay[0]->Select((int)(localtime(&rtime))->tm_mday-1);
fH1->AddFrame(tempDay[0], f0centery);
// Start month
lab = new TGLabel(fH1, " Month: ");
fH1->AddFrame(lab, f0centery);
tempMonth[0] = new TGComboBox(fH1, 200);
tempMonth[0]->AddEntry("January", 0);
tempMonth[0]->AddEntry("February", 1);
tempMonth[0]->AddEntry("March", 2);
tempMonth[0]->AddEntry("April", 3);
tempMonth[0]->AddEntry("May", 4);
tempMonth[0]->AddEntry("June", 5);
tempMonth[0]->AddEntry("July", 6);
tempMonth[0]->AddEntry("August", 7);
tempMonth[0]->AddEntry("September", 8);
tempMonth[0]->AddEntry("October", 9);
tempMonth[0]->AddEntry("November", 10);
tempMonth[0]->AddEntry("December", 11);
tempMonth[0]->Resize(80,22);
tempMonth[0]->Select((int)(localtime(&rtime))->tm_mon);
fH1->AddFrame(tempMonth[0], f0centery);
// Start year
yearrange[0] = 2010;
yearrange[1] = (int)(localtime(&rtime))->tm_year+1900;
lab = new TGLabel(fH1, " Year: ");
fH1->AddFrame(lab, f0centery);
tempYear[0] = new TGComboBox(fH1, 200);
for(int i = 0; i < (yearrange[1]-yearrange[0])+1; i++)
{
sprintf(ctemp, "%d", yearrange[1]-i);
tempYear[0]->AddEntry(ctemp, i);
}
tempYear[0]->Resize(60,22);
tempYear[0]->Select(0);
fH1->AddFrame(tempYear[0], f0centery);
// Start hour
lab = new TGLabel(fH1, " Hour: ");
fH1->AddFrame(lab, f0centery);
tempHour[0] = new TGComboBox(fH1, 200);
for(int i = 0; i < 24; i++)
{
if(i < 10)
sprintf(ctemp, "0%d", i);
else
sprintf(ctemp, "%d", i);
tempHour[0]->AddEntry(ctemp, i);
}
tempHour[0]->Resize(50,22);
tempHour[0]->Select(7);
fH1->AddFrame(tempHour[0], f0centery);
// Start minute
lab = new TGLabel(fH1, " Minute: ");
fH1->AddFrame(lab, f0centery);
tempMinute[0] = new TGComboBox(fH1, 200);
for(int i = 0; i < 60; i++)
{
if(i < 10)
sprintf(ctemp, "0%d", i);
else
sprintf(ctemp, "%d", i);
tempMinute[0]->AddEntry(ctemp, i);
}
tempMinute[0]->Resize(50,22);
tempMinute[0]->Select(0);
fH1->AddFrame(tempMinute[0], f0centery);
// Start second
lab = new TGLabel(fH1, " Second: ");
fH1->AddFrame(lab, f0centery);
tempSecond[0] = new TGComboBox(fH1, 200);
for(int i = 0; i < 60; i++)
{
if(i < 10)
sprintf(ctemp, "0%d", i);
else
sprintf(ctemp, "%d", i);
tempSecond[0]->AddEntry(ctemp, i);
}
tempSecond[0]->Resize(50,22);
tempSecond[0]->Select(0);
fH1->AddFrame(tempSecond[0], f0centery);
fG1->AddFrame(fH1, f2);
// Use the end time or not
tempEndOn = new TGCheckButton(fG1, "Draw to last time point (ON/OFF)");
tempEndOn->Resize(100,22);
tempEndOn->SetState(kButtonUp);
fG1->AddFrame(tempEndOn, f0);
lab = new TGLabel(fG1, "End time:");
fG1->AddFrame(lab, f0);
fH1 = new TGHorizontalFrame(fG1, subwin[0], 30);
// End day
lab = new TGLabel(fH1, "\tDay: ");
fH1->AddFrame(lab, f0centery);
tempDay[1] = new TGComboBox(fH1, 200);
for(int i = 0; i < 31; i++)
{
sprintf(ctemp, "%d", i+1);
tempDay[1]->AddEntry(ctemp, i);
}
tempDay[1]->Resize(50,22);
tempDay[1]->Select((int)(localtime(&rtime))->tm_mday-1);
fH1->AddFrame(tempDay[1], f0centery);
// End month
lab = new TGLabel(fH1, " Month: ");
fH1->AddFrame(lab, f0centery);
tempMonth[1] = new TGComboBox(fH1, 200);
tempMonth[1]->AddEntry("January", 0);
tempMonth[1]->AddEntry("February", 1);
tempMonth[1]->AddEntry("March", 2);
tempMonth[1]->AddEntry("April", 3);
tempMonth[1]->AddEntry("May", 4);
tempMonth[1]->AddEntry("June", 5);
tempMonth[1]->AddEntry("July", 6);
tempMonth[1]->AddEntry("August", 7);
tempMonth[1]->AddEntry("September", 8);
tempMonth[1]->AddEntry("October", 9);
tempMonth[1]->AddEntry("November", 10);
tempMonth[1]->AddEntry("December", 11);
tempMonth[1]->Resize(80,22);
tempMonth[1]->Select((int)(localtime(&rtime))->tm_mon);
fH1->AddFrame(tempMonth[1], f0centery);
// End year
time(&rtime);
yearrange[0] = 2010;
yearrange[1] = (int)(localtime(&rtime))->tm_year+1900;
lab = new TGLabel(fH1, " Year: ");
fH1->AddFrame(lab, f0centery);
tempYear[1] = new TGComboBox(fH1, 200);
for(int i = 0; i < (yearrange[1]-yearrange[0])+1; i++)
{
sprintf(ctemp, "%d", yearrange[1]-i);
tempYear[1]->AddEntry(ctemp, i);
}
tempYear[1]->Resize(60,22);
tempYear[1]->Select(0);
fH1->AddFrame(tempYear[1], f0centery);
// End hour
lab = new TGLabel(fH1, " Hour: ");
fH1->AddFrame(lab, f0centery);
tempHour[1] = new TGComboBox(fH1, 200);
for(int i = 0; i < 24; i++)
{
if(i < 10)
sprintf(ctemp, "0%d", i);
else
sprintf(ctemp, "%d", i);
tempHour[1]->AddEntry(ctemp, i);
}
tempHour[1]->Resize(50,22);
tempHour[1]->Select(18);
fH1->AddFrame(tempHour[1], f0centery);
// End minute
lab = new TGLabel(fH1, " Minute: ");
fH1->AddFrame(lab, f0centery);
tempMinute[1] = new TGComboBox(fH1, 200);
for(int i = 0; i < 60; i++)
{
if(i < 10)
sprintf(ctemp, "0%d", i);
else
sprintf(ctemp, "%d", i);
tempMinute[1]->AddEntry(ctemp, i);
}
tempMinute[1]->Resize(50,22);
tempMinute[1]->Select(0);
fH1->AddFrame(tempMinute[1], f0centery);
// End second
lab = new TGLabel(fH1, " Second: ");
fH1->AddFrame(lab, f0centery);
tempSecond[1] = new TGComboBox(fH1, 200);
for(int i = 0; i < 60; i++)
{
if(i < 10)
sprintf(ctemp, "0%d", i);
else
sprintf(ctemp, "%d", i);
tempSecond[1]->AddEntry(ctemp, i);
}
tempSecond[1]->Resize(50,22);
tempSecond[1]->Select(0);
fH1->AddFrame(tempSecond[1], f0centery);
fG1->AddFrame(fH1, f2);
// Start and stop time ------------------------
// Dataout settings
fH1 = new TGHorizontalFrame(fG1, subwin[0], 30);
lab = new TGLabel(fH1, "Output data settings: ");
fH1->AddFrame(lab, f0centery);
datSettings = new TGComboBox(fH1, 200);
datSettings->AddEntry("Export local time and UNIX timestamp", 0);
datSettings->AddEntry("Export only local time", 1);
datSettings->AddEntry("Export only UNIX timestamp", 2);
datSettings->Resize(300,22);
datSettings->Select(0);
fH1->AddFrame(datSettings, f0centery);
fG1->AddFrame(fH1, f2);
// Control buttons
fH2 = new TGHorizontalFrame(fG1, subwin[0], 30);
fH1 = new TGHorizontalFrame(fH2, subwin[0], 30);
updateTemp = new TGTextButton(fH1, "Update");
updateTemp->SetTextJustify(36);
updateTemp->SetWrapLength(-1);
updateTemp->Resize(80,22);
fH1->AddFrame(updateTemp, f0);
exportTemp = new TGTextButton(fH1, "Export");
exportTemp->SetTextJustify(36);
exportTemp->SetWrapLength(-1);
exportTemp->Resize(80,22);
fH1->AddFrame(exportTemp, f0);
closeTemp = new TGTextButton(fH1, "Close");
closeTemp->SetTextJustify(36);
closeTemp->SetWrapLength(-1);
closeTemp->Resize(80,22);
fH1->AddFrame(closeTemp, f0);
fH2->AddFrame(fH1, f0centerx);
fG1->AddFrame(fH2, f2);
fMain->AddFrame(fG1, f1);
// Action connections
updateTemp->Connect("Clicked()", "TGAppMainFrame", this, "UpdateTempPlot()");
tempEndOn->Connect("Clicked()", "TGAppMainFrame", this, "TempEndToggle()");
exportTemp->Connect("Clicked()", "TGAppMainFrame", this, "ExportTempPlot()");
closeTemp->Connect("Clicked()", "TGAppMainFrame", this, "CloseWindow()");
// Fieldpoint window ------------------------
}
// -------------------------------------------------------------------
// Main function -----------------------------------------------------
void root_app()
{
new TGAppMainFrame(gClient->GetRoot(), winWidth, winHeight);
}
int main(int argc, char **argv)
{
TApplication theApp("TGAppMainFrame", &argc, argv);
root_app();
theApp.Run();
return 0;
}
// -------------------------------------------------------------------