00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 
00056 
00057 
00058 
00059 
00060 
00061 
00062 
00063 
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071 
00072 
00073 
00074 
00075 
00076 
00077 
00078 
00079 
00080 
00081 
00082 
00083 
00084 
00085 
00086 
00087 
00088 
00089 
00090 
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099 
00100 
00101 
00102 
00103 
00104 
00105 
00106 
00107 
00108 
00109 
00110 
00111 
00112 
00113 
00114 
00115 
00116 
00117 
00118 
00119 
00120 
00121 
00122 
00123 
00124 
00125 
00126 
00127 
00128 
00129 
00130 
00131 
00132 
00133 
00134 
00135 
00136 
00137 
00138 
00139 
00140 
00141 
00142 
00143 
00144 
00145 
00146 
00147 
00148 
00149 
00150 
00151 
00152 
00153 
00154 
00155 
00156 
00157 
00158 
00159 
00160 
00161 
00162 
00163 
00164 
00165 
00166 
00167 
00168 
00169 
00170 
00171 
00172 
00173 
00174    
00175 
00176 #ifndef SCHEDULEWIN_H
00177 #define SCHEDULEWIN_H
00178 
00179 
00180 #include <string>
00181 #include <typeinfo>
00182 #include <LEDA/list.h>
00183 #include <LEDA/string.h>
00184 
00185 
00186 #include "../model/STaskSystem.h"
00187 #include "../general/SObserver.h"
00188 #include "../logging/SPlayerLog.h"
00189 #include "../logging/STextLog.h"
00190 #include "../algorithms/SSchedAlgorithm.h"
00191 #include "SDAGViewWin.h"
00192 #include "SMachineViewWin.h"
00193 #include "SGanttViewWin.h"
00194 #include "SPrefDialog.h"
00195 #include "SMeshViewWin.h"
00196 #include "SBibView.h"
00197 
00198 
00199 #include <qapplication.h>
00200 #include <qfiledialog.h>
00201 #include <qkeycode.h>
00202 #include <qlabel.h>
00203 #include <qmenubar.h>
00204 #include <qmessagebox.h>
00205 #include <qpopupmenu.h>
00206 #include <qstatusbar.h>
00207 #include <qslider.h>
00208 #include <qstring.h>
00209 #include <qtimer.h>
00210 #include <qtoolbar.h>
00211 #include <qtoolbutton.h>
00212 #include <qtooltip.h>
00213 #include <qwhatsthis.h>
00214 #include <qmultilineedit.h>
00215 #include <qlcdnumber.h>
00216 
00217 
00227 class ScheduleWindow : public QMainWindow, public SObserver
00228 {
00229   Q_OBJECT
00230 
00231 public:
00236   ScheduleWindow();
00238   ~ScheduleWindow();
00239 
00241   void setupActions();  
00243   void setupMenuBar();
00245   void setupToolBar();
00247   void setupStatusBar();
00248 
00249   
00250   void updateMatching(const SClassification &classif);
00251   void updateMatching();
00252   
00253   int getNumberOfAlgorithms();
00254   
00255   const SSchedAlgorithm* const* getAlgArray() const { return _pAlgorithmArray; };
00256   
00257   leda_list<leda_string> getNamesOfAlgorithms();
00258   leda_list<leda_string> getNamesOfIncompatibleAlgorithms();
00259   STaskSystem &getTaskSystem();
00260 signals:
00266   void sload();
00267   
00268 protected:
00274   virtual void showEvent( QShowEvent* );
00279   virtual void hideEvent( QHideEvent* );
00286   virtual void closeEvent( QCloseEvent* );
00293   void update( const class SEvent & );
00294 
00295 private:
00302   void dagViewWin(); 
00309   void ganttViewWin();
00316   void machineViewWin();
00317   void meshViewWin();
00321   void setAlgorithm(); 
00326   void removeLoggers();
00330   void setLogger();
00331 
00337   void toggleTextLabels( bool enable );
00341   void saveWinPos();
00346   void load( const char* filename );
00347   
00348   void initAlgorithmArray();
00353   void addToRecentFiles(string filename);
00356   void updateRecentFileMenu();
00357 
00358   
00359   leda_list<string> _recentFiles;
00360 
00361   
00362   QMenuBar   *_pMenuBar;
00363   QPopupMenu *_pFileMenu;
00364   QPopupMenu *_pRecentFileMenu;
00365   QPopupMenu *_pViewMenu;
00366   QPopupMenu *_pNavMenu; 
00367   QPopupMenu *_pOptionMenu;
00368   QPopupMenu *_pHelpMenu;
00369   
00370   
00371   int _viewdag, _viewmachine, _viewmesh, _viewgantt, _viewbib;
00372   int _ftb, _ntb, _sb, _btnsig;
00373   int _navplay, _navstop, _navstep, _navreset; 
00374   
00375   QLabel *_pJobLabel, *_pMachLabel, *_pStatusLabel, *_pSimTimeLabel; 
00376   
00377   QToolBar    *_pFileToolBar, *_pNavToolBar, *_pTimeToolBar, *_pViewToolBar;
00378   QToolButton *_pFileNewBtn, *_pFileOpenBtn, *_pFileSaveBtn;
00379   QToolButton *_pNavPlayBtn, *_pNavStopBtn, *_pNavStepBtn, *_pNavResetBtn;
00380   QToolButton 
00381  *_pViewBibBtn;
00382 
00383   
00384   QAction *fileNew;
00385   QAction *fileOpen;
00386   QAction *fileSave;
00387   QAction *fileSaveAs;
00388   QAction *fileClose;
00389   QAction *filePrint;
00390   QAction *fileQuit;
00391 
00392   QAction *editCut;
00393   QAction *editCopy;
00394   QAction *editPaste;
00395 
00396   QAction *viewToolBar;
00397   QAction *viewStatusBar;
00398   QAction *viewPrecDAG;
00399   QAction *viewMachines;
00400   QAction *viewMesh;
00401   QAction *viewGantt;
00402   QAction *viewBib;
00403 
00404   QAction *helpAboutApp;
00405   
00406     
00407   QLabel      *_pTimeLabel;
00408   QSlider     *_pTimeSlider;
00409   QLCDNumber *_pSimTimeLCD;
00410   
00411   QMultiLineEdit *_pAlgDescrEdit;
00412   QMultiLineEdit *_pActionDescr;
00413   
00414   
00415   bool _stopIt; 
00416   
00417   int _waittime;    
00418   
00419   QTimer *_pNavTimer;
00420   
00421   SDAGViewWin *_pDAGViewWin;
00424   SMachineViewWin *_pMachineViewWin;
00425   SMeshViewWin *_pMeshViewWin;
00428   SGanttViewWin *_pGanttViewWin;
00434   SPrefDialog *_pPrefDlg;
00437   QString _defaultPath;
00440   SSchedAlgorithm *_pAlgorithm;
00443   STaskSystem _ts; 
00444   
00445   STextLog *_pTextLogger;
00446   std::ofstream _textLogStream;
00447   string _textLogFilename;
00448   int _textLogSchedFilter, _textLogEditFilter;
00449   SPlayerLog *_pPlayerLogger;
00450   std::ofstream _playerLogStream;
00451   string _playerLogFilename;
00452   
00453   int _numberOfAlgorithms;
00454   
00455   SSchedAlgorithm** _pAlgorithmArray;
00456   bool* _matchingArray;
00457   SBibView *_pBibView;
00458 private slots:
00462   void about();
00466   void aboutQt();
00470   void preferences();
00476   void prefClosed();
00481   void restoreWinPos();
00486   void toggleBtnSignatures();
00490   void toggleStatusBar();
00494   void toggleFileToolBar(); 
00498   void toggleNavToolBar(); 
00503   void toggleDAGViewWin(bool on); 
00508   void toggleMachineViewWin(bool on); 
00513   void toggleMeshViewWin(bool on);
00518   void toggleGanttViewWin(bool on);
00519   void toggleBibWin();
00525   void play();
00530   void stop();
00536   void reset(); 
00541   void step();
00545   void setTimer();
00549   void setTimeLabel( int );
00553   void newTaskSystem();
00557   void load();
00561   void save();
00567   void showBibEntry();
00570   void loadRecentFile(int index);
00571 };
00572 
00573 #endif