00001 #ifndef _QIGUI_SESSION__H_
00002 #define _QIGUI_SESSION__H_
00003
00004 #include <QDockWidget>
00005 #include <QMainWindow>
00006 #include <QIGUICoSessionHandler.hh>
00007 #include <QIGUIChannelSet.hh>
00008
00009
00010 #include "ui_DockSession.h"
00011 class QChain;
00012 class QTree;
00013 class QIGUIFileHandler;
00014 class QIGUIDianaSessionHandler;
00015 class QIGUIPulseWindow;
00016 class QIGUIPlotData;
00017 class QIGUIMainWindow;
00018 class QProgressBar;
00019 class QComboBox;
00020 class QIGUIDetectorMapViewer;
00021
00022 class QIGUISession: public QDockWidget, public Ui::DockSession
00023 {
00024 Q_OBJECT
00025
00026 private:
00027
00028 QIGUIMainWindow * fMainWindow;
00029 QIGUIFileHandler * fFileHandler;
00030 std::list<QIGUIPulseWindow *> fPulseWindows;
00031
00032
00033 QIGUIDianaSessionHandler * fDianaSessionHandler;
00034 bool fDianaSessionRunning;
00035 std::string fDianaStatus;
00036
00037
00038 std::map<QString, QIGUICoSessionHandler *> fCoSessionHandlers;
00039
00040
00041 QIGUIDetectorMapViewer * fDetectorMapViewer;
00042 bool fDetectorMapViewerActive;
00043
00044
00045 std::map<int, QIGUIChannelSet> fChannelSets;
00046
00047
00048 public:
00049
00050
00051 QIGUISession (QWidget * parent=0);
00052 QIGUISession (QString& name, QWidget * parent=0);
00053 virtual ~QIGUISession();
00054 void Init();
00055 void InitDianaConfiguration();
00056 void CreateSignals();
00057 void DestroySignals();
00058
00059
00060
00061 signals:
00062 void RequestFocusToMainWindow(QString name);
00063 void DisplayParametersSignal();
00064
00065
00066 public slots:
00067 void CheckRequestFocus(bool vis);
00068 void NotifyChangeParameter(QTreeWidgetItem * , int );
00069 void DisplayParameters();
00070 void RerunDiana();
00071 void RefreshModulesParameters();
00072 void ChangeDianaConfiguration(QTreeWidgetItem * item, int column);
00073
00074 void AddCoAnalysis();
00075 void RemoveCoAnalysis();
00076 void BuildCoincidences(QString name = "");
00077 void RefreshCurrentCoData();
00078 void NotifyChangeCoData(QTreeWidgetItem * , int );
00079 void CoAnalysisEnd(QString, int);
00080 void SetCoSessionHandlersStatus (QIGUICoSessionHandler::Status status);
00081 void SetCoSessionHandlerStatus (QString name, QIGUICoSessionHandler::Status status);
00082
00083 void ChangeDetectorMap();
00084 void NotifyChangeDetectorMap();
00085 void ShowDetectorMapViewer(int);
00086 QIGUIDetectorMapViewer * GetDetectorMapViewer() {return fDetectorMapViewer;}
00087 bool IsDetectorMapViewerActive () {return fDetectorMapViewerActive;}
00088
00089
00090
00091 public:
00092
00093
00094
00095 QIGUIFileHandler * GetFileHandler() {return fFileHandler;}
00096 std::list<QIGUIPulseWindow*> GetPulseWindows() {return fPulseWindows;}
00097
00098
00099
00100 void UpdateOpenFilesList();
00101 void FillVariablesComboCut();
00102 void FillVariablesComboCut(QComboBox * );
00103 void EmitDisplayParametersSignal();
00104
00105
00106 QIGUIDianaSessionHandler * GetDianaSessionHandler() {return fDianaSessionHandler;}
00107 bool CheckAutorunDiana();
00108 bool IsDianaRunning() {return fDianaSessionRunning;}
00109 void SetDianaStatus(std::string status);
00110 std::string GetDianaStatus() {return fDianaStatus;}
00111 std::string GetDianaPath();
00112 std::string GetDianaConfigFile();
00113 std::string GetDianaOptions();
00114 std::string GetDianaLogFile();
00115 int GetDianaPort();
00116 void SetDianaPort(int port);
00117 void AddPulseWindow(QIGUIPulseWindow*);
00118 void RemovePulseWindow(QIGUIPulseWindow*);
00119 void LaunchDianaPulsesViewer(QIGUIPlotData *plotData=0, QIGUICoSessionHandler * coSession=0);
00120 void RunDiana();
00121
00122
00123 QIGUICoSessionHandler * GetCoSessionHandler(QString name="");
00124 void DeleteCoSessionHandler(QString name);
00125 std::string GetDetectorMap();
00126 void NotifyCutChangeToCoSessionHandlers(QString name);
00127 void NotifyCoCutChangeToCoSessionHandlers(QString name);
00128
00129
00130 bool IsChannelSet(int ch);
00131 QIGUIChannelSet & GetChannelSet(int ch);
00132
00133
00134
00135 void NotifyChangeFile();
00136 void SetCoAnalysisToBeDone(bool flag, QTreeWidgetItem * item=0);
00137
00138 void AddFriend();
00139 void AddDeltaTimeFriend();
00140
00141 friend class QIGUIDianaSessionHandler;
00142 friend class QIGUICoSessionHandler;
00143
00144
00145
00146 };
00147
00148 #endif