00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef ABSTRACTDIALOG_H
00019 #define ABSTRACTDIALOG_H
00020
00021 #include <globalsearch/optimizer.h>
00022 #include <globalsearch/optbase.h>
00023
00024 #include <QtGui/QProgressBar>
00025 #include <QtGui/QMessageBox>
00026 #include <QtGui/QTabWidget>
00027 #include <QtGui/QDialog>
00028
00029 #include <QtCore/QMutex>
00030 #include <QtCore/QTimer>
00031
00032 namespace Avogadro {
00033 class GLWidget;
00034 class Molecule;
00035 }
00036
00037 namespace GlobalSearch {
00038
00099 class AbstractDialog : public QDialog
00100 {
00101 Q_OBJECT
00102
00103 public:
00114 explicit AbstractDialog( Avogadro::GLWidget *glWidget = 0,
00115 QWidget *parent = 0,
00116 Qt::WindowFlags f = 0 );
00117
00123 void initialize();
00124
00139 virtual ~AbstractDialog();
00140
00144 Avogadro::GLWidget* getGLWidget() {return m_glWidget;};
00145
00149 OptBase* getOptBase() {return m_opt;};
00150
00151 public slots:
00157 virtual void disconnectGUI();
00158
00164 virtual void lockGUI();
00165
00170 virtual void updateGUI();
00171
00181 virtual void writeSettings(const QString &filename = "") {
00182 reemitTabsWriteSettings(filename);};
00183
00192 virtual void readSettings(const QString &filename = "")
00193 {
00194 this->reemitTabsReadSettings(filename);
00195 };
00196
00216 virtual void saveSession() =0;
00217
00226 void updateStatus(int opt, int run, int fail) {
00227 emit sig_updateStatus(opt,run,fail);};
00228
00234 void setGLWidget(Avogadro::GLWidget *w) {m_glWidget = w;};
00235
00253 bool startProgressUpdate(const QString & text, int min, int max);
00254
00259 void stopProgressUpdate();
00260
00264 void updateProgressMinimum(int min) {
00265 emit sig_updateProgressMinimum(min);};
00266
00270 void updateProgressMaximum(int max) {
00271 emit sig_updateProgressMaximum(max);};
00272
00276 void updateProgressValue(int val) {
00277 emit sig_updateProgressValue(val);};
00278
00282 void updateProgressLabel(const QString & text) {
00283 emit sig_updateProgressLabel(text);};
00284
00291 void repaintProgressBar() {
00292 emit sig_repaintProgressBar();};
00303 void newDebug(const QString &s) {emit newLog("Debug: " + s);};
00304
00313 void newWarning(const QString &s) {emit newLog("Warning: " + s);};
00314
00324 void newError(const QString &s) {
00325 emit newLog("Error: " + s); errorBox(s);};
00326
00336 void errorBox(const QString &s) {emit sig_errorBox(s);};
00337
00338 protected slots:
00347 virtual void startSearch() =0;
00348
00353 virtual void resumeSession();
00354
00360 void updateStatus_(int, int, int);
00361
00367 void startProgressUpdate_(const QString &, int, int);
00368
00374 void stopProgressUpdate_();
00375
00381 void updateProgressMinimum_(int);
00382
00388 void updateProgressMaximum_(int);
00389
00395 void updateProgressValue_(int);
00396
00402 void updateProgressLabel_(const QString &);
00403
00409 void repaintProgressBar_();
00410
00416 void errorBox_(const QString &s) {
00417 QMessageBox::critical(this, "Error", s);};
00418
00419 signals:
00423 void tabsDisconnectGUI();
00424
00428 void tabsLockGUI();
00429
00433 void tabsUpdateGUI();
00434
00439 void moleculeChanged(GlobalSearch::Structure*);
00440
00448 void newLog(const QString &str);
00449
00455 void sig_updateStatus(int,int,int);
00456
00462 void sig_startProgressUpdate(const QString &, int, int);
00463
00469 void sig_stopProgressUpdate();
00470
00476 void sig_updateProgressMinimum(int);
00477
00483 void sig_updateProgressMaximum(int);
00484
00490 void sig_updateProgressValue(int);
00491
00497 void sig_updateProgressLabel(const QString &);
00498
00504 void sig_repaintProgressBar();
00505
00511 void sig_errorBox(const QString &);
00512
00513 protected:
00517 virtual void resumeSession_(const QString &filename);
00518
00522 OptBase *m_opt;
00523
00527 Avogadro::Molecule *m_molecule;
00528
00532 Avogadro::GLWidget *m_glWidget;
00533
00537 QMutex *progMutex;
00538
00542 QTimer *progTimer;
00543
00549 QPushButton *ui_push_begin;
00550
00556 QPushButton *ui_push_save;
00557
00563 QPushButton *ui_push_resume;
00564
00570 QLabel *ui_label_opt;
00571
00577 QLabel *ui_label_run;
00578
00584 QLabel *ui_label_fail;
00585
00591 QLabel *ui_label_prog;
00592
00598 QProgressBar *ui_progbar;
00599
00605 QTabWidget *ui_tabs;
00606
00608
00609
00610
00611 signals:
00612 void tabsWriteSettingsBlockingQueued(const QString &filename);
00613 void tabsWriteSettingsDirect(const QString &filename);
00614 void tabsReadSettingsBlockingQueued(const QString &filename);
00615 void tabsReadSettingsDirect(const QString &filename);
00616 private slots:
00617 void reemitTabsWriteSettings(const QString &filename);
00618 void reemitTabsReadSettings(const QString &filename);
00620
00621
00622 };
00623 }
00624
00625 #endif