diff --git a/slsDetectorGui/forms/form_tab_messages.ui b/slsDetectorGui/forms/form_tab_messages.ui
new file mode 100644
index 000000000..1f75475e5
--- /dev/null
+++ b/slsDetectorGui/forms/form_tab_messages.ui
@@ -0,0 +1,82 @@
+
+
+ TabMessagesObject
+
+
+
+ 0
+ 0
+ 775
+ 345
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ Form
+
+
+ -
+
+
-
+
+
+ TextLabel
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 20
+
+
+
+
+ -
+
+
+ -
+
+
+ TextLabel
+
+
+
+ -
+
+
+ -
+
+
+
+
+
+
+
+
+
diff --git a/slsDetectorGui/forms/form_tab_plot.ui b/slsDetectorGui/forms/form_tab_plot.ui
index f8b21cde4..9fc9064d3 100644
--- a/slsDetectorGui/forms/form_tab_plot.ui
+++ b/slsDetectorGui/forms/form_tab_plot.ui
@@ -35,7 +35,7 @@
10
- 135
+ 200
751
141
@@ -73,7 +73,26 @@
-
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 250
+ 0
+
+
+
+ QLineEdit::Normal
+
+
+ false
+
+
-
@@ -392,10 +411,10 @@
- 150
+ 315
70
- 466
- 46
+ 446
+ 51
@@ -466,7 +485,7 @@
- 210
+ 180
20
@@ -478,10 +497,10 @@
- 150
+ 315
10
- 466
- 46
+ 446
+ 51
@@ -499,7 +518,7 @@
10
20
254
- 23
+ 21
@@ -575,8 +594,8 @@
- 420
- 12
+ 395
+ 15
40
28
@@ -608,7 +627,7 @@
10
- 290
+ 135
751
51
@@ -634,6 +653,12 @@
-
+
+
+ 0
+ 0
+
+
File Name:
@@ -645,7 +670,20 @@
0
-
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 250
+ 0
+
+
+
-
@@ -687,6 +725,22 @@
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 40
+ 20
+
+
+
+
-
@@ -710,10 +764,10 @@
- 655
- 10
- 106
- 106
+ 10
+ 70
+ 261
+ 51
@@ -725,28 +779,16 @@
false
-
+
5
- 19
- 96
- 81
+ 21
+ 251
+ 21
-
-
- 28
-
-
- 8
-
-
- 0
-
-
- 0
-
+
-
@@ -762,11 +804,11 @@
Create
- false
+ true
- -
+
-
@@ -780,6 +822,28 @@
Close All
+
+ true
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Qt::NoFocus
+
+
+ Save All
+
+
+ true
+
@@ -793,8 +857,8 @@
10
10
- 106
- 106
+ 261
+ 51
@@ -806,16 +870,16 @@
false
-
+
10
- 14
- 93
- 96
+ 20
+ 246
+ 21
-
+
-
@@ -823,14 +887,14 @@
- -
+
-
Data Graph
- -
+
-
Histogram
diff --git a/slsDetectorGui/forms/form_tab_settings.ui b/slsDetectorGui/forms/form_tab_settings.ui
index d1b7ad2d5..89d6214fe 100644
--- a/slsDetectorGui/forms/form_tab_settings.ui
+++ b/slsDetectorGui/forms/form_tab_settings.ui
@@ -115,7 +115,7 @@
-
-
+
-1
@@ -139,10 +139,10 @@
-
-
+
-
-
+
diff --git a/slsDetectorGui/include/qDetectorMain.h b/slsDetectorGui/include/qDetectorMain.h
index c7ac27275..ed1307d7a 100644
--- a/slsDetectorGui/include/qDetectorMain.h
+++ b/slsDetectorGui/include/qDetectorMain.h
@@ -19,6 +19,7 @@ class qTabAdvanced;
class qTabSettings;
class qTabDebugging;
class qTabDeveloper;
+class qTabMessages;
/** Project Class Headers */
class slsDetectorUtils;
#include "sls_detector_defs.h"
@@ -80,25 +81,27 @@ private:
/** The default tab heading color */
QColor defaultTabColor;
/** enumeration of the tabs */
- enum {Measurement, Settings, DataOutput, Plot, Actions, Advanced, Debugging, Developer, NumberOfTabs };
+ enum {Measurement, Settings, DataOutput, Plot, Actions, Advanced, Debugging, Developer, Messages, NumberOfTabs };
/* Scroll Area for the tabs**/
QScrollArea *scroll[NumberOfTabs];
/**Measurement tab */
- qTabMeasurement *tab_measurement;
+ qTabMeasurement *tab_measurement;
/**DataOutput tab */
- qTabDataOutput *tab_dataoutput;
+ qTabDataOutput *tab_dataoutput;
/**Plot tab */
- qTabPlot *tab_plot;
+ qTabPlot *tab_plot;
/**Actions tab */
- qTabActions *tab_actions;
+ qTabActions *tab_actions;
/**Settings tab */
- qTabSettings *tab_settings;
+ qTabSettings *tab_settings;
/**Advanced tab */
- qTabAdvanced *tab_advanced;
+ qTabAdvanced *tab_advanced;
/**Debugging tab */
- qTabDebugging *tab_debugging;
+ qTabDebugging *tab_debugging;
/**Developer tab */
- qTabDeveloper *tab_developer;
+ qTabDeveloper *tab_developer;
+ /**Messages tab */
+ qTabMessages *tab_messages;
/**if the developer tab should be enabled,known from command line */
int isDeveloper;
diff --git a/slsDetectorGui/include/qTabMeasurement.h b/slsDetectorGui/include/qTabMeasurement.h
index e926ad9dd..c43b808d7 100644
--- a/slsDetectorGui/include/qTabMeasurement.h
+++ b/slsDetectorGui/include/qTabMeasurement.h
@@ -53,6 +53,10 @@ private:
*/
void SetupWidgetWindow();
+ /** Sets up the timing mode
+ */
+ void SetupTimingMode();
+
/** Sets up all the slots and signals
* @param timingChange only some of the signals are disconnected when timing mode is changed
* This method is to reconnect them again.
diff --git a/slsDetectorGui/include/qTabMessages.h b/slsDetectorGui/include/qTabMessages.h
new file mode 100644
index 000000000..e61eecb9d
--- /dev/null
+++ b/slsDetectorGui/include/qTabMessages.h
@@ -0,0 +1,68 @@
+/*
+ * qTabMessages.h
+ *
+ * Created on: Jun 26, 2012
+ * Author: l_maliakal_d
+ */
+
+#ifndef QTABMESSAGES_H_
+#define QTABMESSAGES_H_
+
+
+
+/** Project Class Headers */
+class slsDetectorUtils;
+/** Qt Include Headers */
+#include
+#include
+#include
+
+/**
+ *@short sets up the Messages parameters
+ */
+class qTabMessages:public QWidget{
+ Q_OBJECT
+
+public:
+ /** \short The constructor
+ * @param parent is the parent tab widget
+ * @param detector is the detector returned from the detector tab
+ */
+ qTabMessages(QWidget *parent,slsDetectorUtils*& detector);
+
+ /** Destructor
+ */
+ ~qTabMessages();
+
+
+private:
+ /** The sls detector object */
+ slsDetectorUtils *myDet;
+
+ /** Log of executed commands */
+ QTextEdit *dispLog;
+
+ /** Command display */
+ QLineEdit *dispCommand;
+
+ /** Path display */
+ QLineEdit *dispPath;
+
+/** methods */
+ /** Sets up the widget */
+ void SetupWidgetWindow();
+
+ /** Sets up all the slots and signals */
+ void Initialization();
+
+
+private slots:
+ void executeCommand();
+
+};
+
+
+
+
+
+#endif /* QTABMESSAGES_H_ */
diff --git a/slsDetectorGui/include/qTabSettings.h b/slsDetectorGui/include/qTabSettings.h
index 23c5ecd6b..0a587022b 100644
--- a/slsDetectorGui/include/qTabSettings.h
+++ b/slsDetectorGui/include/qTabSettings.h
@@ -12,6 +12,9 @@
#include "ui_form_tab_settings.h"
/** Project Class Headers */
class slsDetectorUtils;
+#include "sls_detector_defs.h"
+/** Qt Include Headers */
+#include
/**
*@short sets up the Settings parameters
@@ -35,15 +38,26 @@ public:
private:
/** The sls detector object */
slsDetectorUtils *myDet;
-
- /** sls detector id */
+ /**etector id */
int detID;
+ /** detector type */
+ slsDetectorDefs::detectorType detType;
+ enum{Standard,Fast,HighGain,DynamicGain,LowGain,MediumGain,VeryHighGain,Undefined,Uninitialized,NumSettings};
+
+ /** To be able to index items on a combo box */
+ QStandardItemModel* model;
+ QModelIndex index[NumSettings];
+ QStandardItem* item[NumSettings];
/** Sets up the widget
*/
void SetupWidgetWindow();
+ /** Sets up the detector settings
+ */
+ void SetupDetectorSettings();
+
/** Sets up all the slots and signals
*/
void Initialization();
diff --git a/slsDetectorGui/slsDetectorGui.pro b/slsDetectorGui/slsDetectorGui.pro
index 6046b23e6..10f51bafc 100644
--- a/slsDetectorGui/slsDetectorGui.pro
+++ b/slsDetectorGui/slsDetectorGui.pro
@@ -58,7 +58,8 @@ SOURCES = \
src/qTabAdvanced.cpp\
src/qTabSettings.cpp\
src/qTabDebugging.cpp\
- src/qTabDeveloper.cpp
+ src/qTabDeveloper.cpp\
+ src/qTabMessages.cpp
HEADERS = \
slsDetectorPlotting/include/SlsQt1DPlot.h\
@@ -82,6 +83,7 @@ HEADERS = \
include/qTabSettings.h\
include/qTabDebugging.h\
include/qTabDeveloper.h\
+ include/qTabMessages.h\
../slsDetectorSoftware/commonFiles/sls_detector_defs.h
@@ -95,3 +97,4 @@ FORMS = \
forms/form_tab_settings.ui\
forms/form_tab_debugging.ui\
forms/form_tab_developer.ui
+# forms/form_tab_messages.ui
diff --git a/slsDetectorGui/src/qDetectorMain.cpp b/slsDetectorGui/src/qDetectorMain.cpp
index 718281802..aaebe0f3b 100644
--- a/slsDetectorGui/src/qDetectorMain.cpp
+++ b/slsDetectorGui/src/qDetectorMain.cpp
@@ -10,6 +10,7 @@
#include "qTabSettings.h"
#include "qTabDebugging.h"
#include "qTabDeveloper.h"
+#include "qTabMessages.h"
/** Project Class Headers */
#include "slsDetector.h"
#include "multiSlsDetector.h"
@@ -93,6 +94,7 @@ void qDetectorMain::SetUpWidgetWindow(){
tab_advanced = new qTabAdvanced (this, myDet);
tab_debugging = new qTabDebugging (this, myDet);
tab_developer = new qTabDeveloper (this, myDet);
+ tab_messages = new qTabMessages (this, myDet);
/** creating the scroll area widgets for the tabs */
for(int i=0;iinsertTab(Advanced, scroll[Advanced], "Advanced");
tabs->insertTab(Debugging, scroll[Debugging], "Debugging");
tabs->insertTab(Developer, scroll[Developer], "Developer");
+ /** Prefer this to expand and not have scroll buttons*/
+ tabs->insertTab(Messages, tab_messages, "Messages");
/** mode setup - to set up the tabs initially as disabled, not in form so done here */
SetDebugMode(false);
@@ -404,6 +408,7 @@ void qDetectorMain::EnableTabs(){
tabs->setTabEnabled(DataOutput,enable);
tabs->setTabEnabled(Actions,enable);
tabs->setTabEnabled(Settings,enable);
+ tabs->setTabEnabled(Messages,enable);
/** special tabs */
if(enable==false){
diff --git a/slsDetectorGui/src/qTabMeasurement.cpp b/slsDetectorGui/src/qTabMeasurement.cpp
index 23e597325..b0da22efe 100644
--- a/slsDetectorGui/src/qTabMeasurement.cpp
+++ b/slsDetectorGui/src/qTabMeasurement.cpp
@@ -12,9 +12,8 @@
/** Project Class Headers */
#include "slsDetector.h"
#include "multiSlsDetector.h"
-
+/** Qt Include Headers */
#include
-
/** C++ Include Headers */
#include
using namespace std;
@@ -63,8 +62,15 @@ void qTabMeasurement::SetupWidgetWindow(){
progressBar->setValue(0);
/** timing mode*/
+ SetupTimingMode();
+}
+
+//-------------------------------------------------------------------------------------------------------------------------------------------------
+
+void qTabMeasurement::SetupTimingMode(){
/** Get timing mode from detector*/
slsDetectorDefs::externalCommunicationMode mode = myDet->setExternalCommunicationMode();
+
/** To be able to index items on a combo box */
QStandardItemModel* model = qobject_cast(comboTimingMode->model());
QModelIndex index[NumTimingModes];
@@ -112,15 +118,15 @@ void qTabMeasurement::SetupWidgetWindow(){
* then the timing mode is 'None'.
* This is for the inexperienced user */
if(mode==slsDetectorDefs::AUTO_TIMING){
- int frames = (int)myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,-1);
- int triggers = (int)myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER,-1);
- if((frames==1)&&(triggers==1)){
- comboTimingMode->setCurrentIndex((int)None);
- setTimingMode((int)None);
- }else{
- comboTimingMode->setCurrentIndex((int)Auto);
- setTimingMode((int)Auto);
- }
+ int frames = (int)myDet->setTimer(slsDetectorDefs::FRAME_NUMBER,-1);
+ int triggers = (int)myDet->setTimer(slsDetectorDefs::CYCLES_NUMBER,-1);
+ if((frames==1)&&(triggers==1)){
+ comboTimingMode->setCurrentIndex((int)None);
+ setTimingMode((int)None);
+ }else{
+ comboTimingMode->setCurrentIndex((int)Auto);
+ setTimingMode((int)Auto);
+ }
}else{
/** mode +1 since the detector class has no timingmode as "None" */
comboTimingMode->setCurrentIndex((int)mode+1);
@@ -128,7 +134,7 @@ void qTabMeasurement::SetupWidgetWindow(){
}
}
/** Mode NOT ENABLED.
- * This should not happen only if the server and gui has a mismatch
+ * This should not happen -only if the server and gui has a mismatch
* on which all modes are allowed in detectors */
else{
qDefs::ErrorMessage("ERROR: Unknown Timing Mode detected from detector."
diff --git a/slsDetectorGui/src/qTabMessages.cpp b/slsDetectorGui/src/qTabMessages.cpp
new file mode 100644
index 000000000..25894f492
--- /dev/null
+++ b/slsDetectorGui/src/qTabMessages.cpp
@@ -0,0 +1,129 @@
+/*
+ * qTabMessages.cpp
+ *
+ * Created on: Jun 26, 2012
+ * Author: l_maliakal_d
+ */
+
+#include "qTabMessages.h"
+/** Project Class Headers */
+#include "slsDetector.h"
+#include "multiSlsDetector.h"
+/** Qt Include Headers */
+#include
+#include
+#include
+#include
+#include
+#include
+/** C++ Include Headers */
+#include
+using namespace std;
+
+//-------------------------------------------------------------------------------------------------------------------------------------------------
+
+qTabMessages::qTabMessages(QWidget *parent,slsDetectorUtils*& detector):
+ QWidget(parent),myDet(detector){
+ SetupWidgetWindow();
+ Initialization();
+}
+
+//-------------------------------------------------------------------------------------------------------------------------------------------------
+
+qTabMessages::~qTabMessages(){
+ delete myDet;
+ delete dispLog;
+ delete dispCommand;
+ delete dispPath;
+}
+
+//-------------------------------------------------------------------------------------------------------------------------------------------------
+
+void qTabMessages::SetupWidgetWindow(){
+ /** Layout */
+ QGridLayout *gridLayout = new QGridLayout(this);
+ QLabel *lblCommand = new QLabel("System Command:",this);
+ QLabel *lblPath = new QLabel("Working Directory:",this);
+ QSpacerItem *hSpacer= new QSpacerItem(20, 20, QSizePolicy::Fixed, QSizePolicy::Minimum);
+ dispLog = new QTextEdit(this);
+ dispCommand = new QLineEdit(this);
+ dispPath = new QLineEdit(this);
+ dispLog->setReadOnly(true);
+ dispPath->setReadOnly(true);
+ dispLog->setFocusPolicy(Qt::NoFocus);
+ dispPath->setFocusPolicy(Qt::NoFocus);
+ gridLayout->addWidget(dispLog, 0, 0, 1, 3);
+ gridLayout->addWidget(lblCommand, 1, 0, 1, 1);
+ gridLayout->addItem(hSpacer, 1, 1, 1, 1);
+ gridLayout->addWidget(dispCommand, 1, 2, 1, 1);
+ gridLayout->addWidget(lblPath, 2, 0, 1, 1);
+ gridLayout->addWidget(dispPath, 2, 2, 1, 1);
+
+ /** Command & Path*/
+ dispCommand->setText("Insert your command here");
+ dispPath->setText(QDir("./").absolutePath());
+}
+
+//-------------------------------------------------------------------------------------------------------------------------------------------------
+
+void qTabMessages::Initialization(){
+ connect(dispCommand,SIGNAL(returnPressed()),this,SLOT(executeCommand()));
+}
+
+//-------------------------------------------------------------------------------------------------------------------------------------------------
+
+void qTabMessages::executeCommand(){
+#ifdef VERBOSE
+ cout<<"Calling: "<< dispCommand->text().toAscii().constData()<text()).absolutePath());
+#ifdef VERBOSE
+ //std::cout <<"working directory is " << proc.workingDirectory().absPath() << std::endl;
+ cout<<"Current Working Directory: "<text()));
+#ifdef VERBOSE
+/* QStringList list = proc.arguments();
+ QStringList::Iterator it = list.begin();
+ while( it != list.end() ) {
+ cout<<*it<
using namespace std;
-
+//-------------------------------------------------------------------------------------------------------------------------------------------------
qTabSettings::qTabSettings(QWidget *parent,slsDetectorUtils*& detector,int detID):
QWidget(parent),myDet(detector),detID(detID){
+
setupUi(this);
SetupWidgetWindow();
Initialization();
}
-
-
+//-------------------------------------------------------------------------------------------------------------------------------------------------
qTabSettings::~qTabSettings(){
delete myDet;
}
-
-
+//-------------------------------------------------------------------------------------------------------------------------------------------------
void qTabSettings::SetupWidgetWindow(){
+ /** Detector Type*/
+ detType=myDet->getDetectorsType();
+
/** Settings */
+ SetupDetectorSettings();
comboSettings->setCurrentIndex(myDet->getSettings(detID));
+
+
}
+//-------------------------------------------------------------------------------------------------------------------------------------------------
+void qTabSettings::SetupDetectorSettings(){
+ /** Get detector settings from detector*/
+ slsDetectorDefs::detectorSettings sett = myDet->getSettings(detID);
+
+ /** To be able to index items on a combo box */
+ model = qobject_cast(comboSettings->model());
+ if (model) {
+ for(int i=0;iindex(i, comboSettings->modelColumn(), comboSettings->rootModelIndex());
+ item[i] = model->itemFromIndex(index[i]);
+ }
+ /** Enabling/Disabling depending on the detector type
+ Undefined and uninitialized are enabled for all detectors*/
+ if(sett==slsDetectorDefs::UNDEFINED)
+ item[(int)Uninitialized]->setEnabled(false);
+ else if(sett==slsDetectorDefs::UNINITIALIZED)
+ item[(int)Undefined]->setEnabled(false);
+ else{
+ item[(int)Uninitialized]->setEnabled(false);
+ item[(int)Undefined]->setEnabled(false);
+ }
+ switch(detType){
+ case slsDetectorDefs::MYTHEN:
+ item[(int)Standard]->setEnabled(true);
+ item[(int)Fast]->setEnabled(true);
+ item[(int)HighGain]->setEnabled(true);
+ item[(int)DynamicGain]->setEnabled(false);
+ item[(int)LowGain]->setEnabled(false);
+ item[(int)MediumGain]->setEnabled(false);
+ item[(int)VeryHighGain]->setEnabled(false);
+ break;
+ case slsDetectorDefs::EIGER:
+ item[(int)Standard]->setEnabled(false);
+ item[(int)Fast]->setEnabled(false);
+ item[(int)HighGain]->setEnabled(false);
+ item[(int)DynamicGain]->setEnabled(false);
+ item[(int)LowGain]->setEnabled(false);
+ item[(int)MediumGain]->setEnabled(false);
+ item[(int)VeryHighGain]->setEnabled(false);
+ break;
+ case slsDetectorDefs::GOTTHARD:
+ item[(int)Standard]->setEnabled(false);
+ item[(int)Fast]->setEnabled(false);
+ item[(int)HighGain]->setEnabled(true);
+ item[(int)DynamicGain]->setEnabled(true);
+ item[(int)LowGain]->setEnabled(true);
+ item[(int)MediumGain]->setEnabled(true);
+ item[(int)VeryHighGain]->setEnabled(true);
+ break;
+ default:
+ qDefs::ErrorMessage("ERROR: Unknown detector type.","Settings: ERROR");
+ exit(-1);
+ break;
+ }
+ /** detector settings selected NOT ENABLED.
+ * This should not happen -only if the server and gui has a mismatch
+ * on which all modes are allowed in detectors */
+ if(!(item[(int)sett]->isEnabled())){
+ qDefs::ErrorMessage("ERROR: Unknown Detector Settings retrieved from detector. "
+ "Exiting GUI.","Settings: ERROR");
+#ifdef VERBOSE
+ cout<<"ERROR: Unknown Detector Settings retrieved from detector."<setCurrentIndex((int)sett);
+
+ }
+ }
+}
+
+//-------------------------------------------------------------------------------------------------------------------------------------------------
void qTabSettings::Initialization(){
/** Settings */
connect(comboSettings,SIGNAL(currentIndexChanged(int)),this,SLOT(setSettings(int)));
}
-
+//-------------------------------------------------------------------------------------------------------------------------------------------------
void qTabSettings::setSettings(int index){
+ /** The first time settings is changed from undefined or uninitialized to a proper setting,
+ * then undefined/uninitialized should be disabled */
+ if(item[(int)Undefined]->isEnabled()){
+ /**Do not disable it if this wasnt selected again by mistake*/
+ if(index!=(int)Undefined)
+ item[(int)Undefined]->setEnabled(false);
+ }else if(item[(int)Uninitialized]->isEnabled()){
+ /**Do not disable it if this wasnt selected again by mistake*/
+ if(index!=(int)Uninitialized)
+ item[(int)Uninitialized]->setEnabled(false);
+ }
slsDetectorDefs::detectorSettings sett = myDet->setSettings((slsDetectorDefs::detectorSettings)index,detID);
#ifdef VERBOSE
cout<<"Settings have been set to "<slsDetectorBase::getDetectorSettings(sett)<