190 lines
6.6 KiB
C++
190 lines
6.6 KiB
C++
#include <TApplication.h>
|
|
#include <TGClient.h>
|
|
#include <TCanvas.h>
|
|
#include <TF1.h>
|
|
#include <TRandom.h>
|
|
#include <TRootEmbeddedCanvas.h>
|
|
#include <TGTableContainer.h>
|
|
#include <TGFileDialog.h>
|
|
|
|
#include <fstream>
|
|
#include <iostream>
|
|
|
|
#include "programSetting.h"
|
|
|
|
std::string ProgramSetting::databaseIP = "http://fsunuc.physics.fsu.edu/influx/";
|
|
std::string ProgramSetting::databaseName = "testing";
|
|
std::string ProgramSetting::DataSavingPath = "/home/catrina/FSUDAQ/";
|
|
std::string ProgramSetting::ExpName = "Test";
|
|
std::string ProgramSetting::ElogIP = "128.186.111.127";
|
|
|
|
const std::string ProgramSetting::settingFileName = "FSUDAQ.sh";
|
|
|
|
///this is declared at FSUDAQ.cpp
|
|
extern unsigned short lastRunID;
|
|
|
|
ProgramSetting::ProgramSetting(const TGWindow *p){
|
|
fMain = new TGMainFrame(p, 600, 400);
|
|
fMain->SetWindowName("Program Setting");
|
|
fMain->Connect("CloseWindow()", "ProgramSetting", this, "CloseWindow()");
|
|
|
|
TGLayoutHints * haha = new TGLayoutHints(kLHintsRight | kLHintsCenterY, 5,5,5,2);
|
|
TGLayoutHints * kaka = new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 5,5,0,0);
|
|
|
|
TGVerticalFrame * vframe = new TGVerticalFrame(fMain); fMain->AddFrame(vframe);
|
|
|
|
{///============== Data Saving Path
|
|
TGGroupFrame * gfData = new TGGroupFrame(vframe, "Data Storage", kHorizontalFrame); vframe->AddFrame(gfData, new TGLayoutHints(kLHintsNormal, 5, 5, 5, 5));
|
|
|
|
TGHorizontalFrame * hfData = new TGHorizontalFrame(gfData); gfData->AddFrame(hfData, new TGLayoutHints(kLHintsNormal, 0, 0, 5, 0));
|
|
|
|
TGVerticalFrame * vfLabel = new TGVerticalFrame(hfData, 200); hfData->AddFrame(vfLabel );
|
|
TGVerticalFrame * vfTxt = new TGVerticalFrame(hfData); hfData->AddFrame(vfTxt);
|
|
|
|
TGLabel * lbExpName = new TGLabel(vfLabel, "ExpName :"); vfLabel->AddFrame(lbExpName, haha);
|
|
TGLabel * lbDataPath = new TGLabel(vfLabel, "Data Absolute Path :"); vfLabel->AddFrame(lbDataPath, haha);
|
|
|
|
txtExpName = new TGTextEntry(vfTxt, ExpName.c_str()); vfTxt->AddFrame(txtExpName, kaka);
|
|
txtExpName->Connect("ReturnPressed()", "ProgramSetting", this, "SetSetting()");
|
|
txtExpName->Resize(300, 20);
|
|
|
|
txtDataPath = new TGTextEntry(vfTxt, DataSavingPath.c_str()); vfTxt->AddFrame(txtDataPath, kaka);
|
|
txtDataPath->Connect("ReturnPressed()", "ProgramSetting", this, "SetSetting()");
|
|
txtDataPath->Resize(300, 20);
|
|
|
|
}
|
|
|
|
{///============== Database & Elog
|
|
TGGroupFrame * gfDatabase = new TGGroupFrame(vframe, "Database & Elog Setting", kHorizontalFrame); vframe->AddFrame(gfDatabase, new TGLayoutHints(kLHintsExpandX, 5, 5, 5, 5));
|
|
|
|
TGHorizontalFrame * hfDB1 = new TGHorizontalFrame(gfDatabase); gfDatabase->AddFrame(hfDB1, new TGLayoutHints(kLHintsNormal, 0, 0, 5, 0));
|
|
|
|
TGVerticalFrame * vfLabel = new TGVerticalFrame(hfDB1, 200); hfDB1->AddFrame(vfLabel);
|
|
TGVerticalFrame * vfTxt = new TGVerticalFrame(hfDB1); hfDB1->AddFrame(vfTxt);
|
|
|
|
TGLabel * lbIP = new TGLabel(vfLabel, "IP :"); vfLabel->AddFrame(lbIP, haha);
|
|
TGLabel * lbDBName = new TGLabel(vfLabel, "DB Name :"); vfLabel->AddFrame(lbDBName, haha);
|
|
TGLabel * lbElogIP = new TGLabel(vfLabel, "Elog IP :"); vfLabel->AddFrame(lbElogIP, haha);
|
|
|
|
txtIP = new TGTextEntry(vfTxt, databaseIP.c_str()); vfTxt->AddFrame(txtIP, kaka);
|
|
txtIP->Resize(300, 20);
|
|
txtIP->Connect("ReturnPressed()", "ProgramSetting", this, "SetSetting()");
|
|
|
|
txtDBName = new TGTextEntry(vfTxt, databaseName.c_str()); vfTxt->AddFrame(txtDBName, kaka);
|
|
txtDBName->Resize(300, 20);
|
|
txtDBName->Connect("ReturnPressed()", "ProgramSetting", this, "SetSetting()");
|
|
|
|
txtElogIP = new TGTextEntry(vfTxt, ElogIP.c_str()); vfTxt->AddFrame(txtElogIP, kaka);
|
|
txtElogIP->Resize(300, 20);
|
|
txtElogIP->Connect("ReturnPressed()", "ProgramSetting", this, "SetSetting()");
|
|
}
|
|
|
|
{///============== Read Time event building
|
|
|
|
|
|
}
|
|
|
|
fMain->MapSubwindows();
|
|
fMain->Resize(fMain->GetDefaultSize());
|
|
fMain->MapWindow();
|
|
}
|
|
|
|
ProgramSetting::~ProgramSetting(){
|
|
|
|
delete txtIP;
|
|
delete txtDBName;
|
|
delete txtDataPath;
|
|
delete txtExpName;
|
|
delete txtElogIP;
|
|
|
|
fMain->Cleanup();
|
|
delete fMain;
|
|
}
|
|
|
|
void ProgramSetting::SetSetting(){
|
|
|
|
DataSavingPath = txtDataPath->GetText();
|
|
ExpName = txtExpName->GetText();
|
|
|
|
databaseIP = txtIP->GetText();
|
|
databaseName = txtDBName->GetText();
|
|
|
|
ElogIP = txtElogIP->GetText();
|
|
|
|
PrintSettings();
|
|
|
|
SaveProgramSetting();
|
|
|
|
Emit("SetSetting()");
|
|
|
|
}
|
|
|
|
void ProgramSetting::PrintSettings(){
|
|
|
|
printf("Data Saving Path : %s\n", DataSavingPath.c_str());
|
|
printf(" ExpName : %s\n", ExpName.c_str());
|
|
printf(" IP : %s\n", databaseIP.c_str());
|
|
printf(" Name : %s\n", databaseName.c_str());
|
|
printf(" Elog IP : %s\n", ElogIP.c_str());
|
|
printf(" last run ID : %d\n", lastRunID);
|
|
|
|
}
|
|
|
|
void ProgramSetting::LoadProgramSetting(){
|
|
|
|
std::ifstream fileIn;
|
|
fileIn.open(ProgramSetting::settingFileName.c_str(), std::ios::in);
|
|
|
|
if( fileIn ){
|
|
std::string line;
|
|
int lineNum = 0;
|
|
size_t pos = 0;
|
|
while (fileIn.good() ){
|
|
std::getline(fileIn, line);
|
|
lineNum ++;
|
|
pos = line.find("=");
|
|
if( pos > 1 ){
|
|
pos += 2;
|
|
///printf("%d | %s , %d \n", lineNum, line.c_str(), pos);
|
|
switch ( lineNum ){
|
|
case 1: ProgramSetting::ExpName = line.substr(pos); break;
|
|
case 2: ProgramSetting::DataSavingPath = line.substr(pos); break;
|
|
case 3: ProgramSetting::databaseIP = line.substr(pos); break;
|
|
case 4: ProgramSetting::databaseName = line.substr(pos); break;
|
|
case 5: ProgramSetting::ElogIP = line.substr(pos); break;
|
|
case 6: lastRunID = std::atoi(line.substr(pos).c_str()); break;
|
|
}
|
|
}
|
|
}
|
|
|
|
fileIn.close();
|
|
}else{
|
|
printf("%s | Cannot open file : %s.\n", __func__, ProgramSetting::settingFileName.c_str());
|
|
printf("Creating One with default setting");
|
|
SaveProgramSetting();
|
|
}
|
|
|
|
PrintSettings();
|
|
}
|
|
|
|
void ProgramSetting::SaveProgramSetting(){
|
|
|
|
printf("+++++++ %s \n", __func__);
|
|
|
|
FILE * fileOut = fopen(ProgramSetting::settingFileName.c_str(), "w");
|
|
if( fileOut != NULL ){
|
|
|
|
fputs( ("ExpName = " + ProgramSetting::ExpName + "\n").c_str(), fileOut);
|
|
fputs( ("DataPath = " + ProgramSetting::DataSavingPath + "\n").c_str(), fileOut);
|
|
fputs( ("DatabaseIP = " + ProgramSetting::databaseIP + "\n").c_str(), fileOut);
|
|
fputs( ("DatabaseName = " + ProgramSetting::databaseName + "\n").c_str(), fileOut);
|
|
fputs( ("ElogIP = " + ProgramSetting::ElogIP + "\n").c_str(), fileOut);
|
|
fputs( ("lastRunID = " + std::to_string(lastRunID) + "\n").c_str(), fileOut);
|
|
|
|
fclose(fileOut);
|
|
}else{
|
|
printf("%s | Cannot open file : %s.\n", __func__, ProgramSetting::settingFileName.c_str());
|
|
}
|
|
|
|
}
|