00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef OPTIMIZER_H
00017 #define OPTIMIZER_H
00018
00019 #include <globalsearch/optbase.h>
00020 #include <globalsearch/queueinterface.h>
00021
00022 #include <QtCore/QHash>
00023 #include <QtCore/QObject>
00024 #include <QtCore/QVariant>
00025 #include <QtCore/QStringList>
00026
00027 namespace GlobalSearch {
00028 class Structure;
00029 class OptimizerConfigDialog;
00030
00052 class Optimizer : public QObject
00053 {
00054 Q_OBJECT
00055
00056 public:
00057 friend class OptimizerConfigDialog;
00058
00066 explicit Optimizer(OptBase *parent, const QString &filename = "");
00067
00071 virtual ~Optimizer();
00072
00081 virtual void readSettings(const QString &filename = "");
00082
00091 virtual void writeSettings(const QString &filename = "");
00092
00096 virtual QString getIDString() {return m_idString;};
00097
00101 virtual int getNumberOfOptSteps();
00102
00113 virtual bool isReadyToSearch(QString *err) {*err = ""; return true;}
00114
00126 virtual bool checkIfOutputFileExists(Structure *s, bool *exists);
00127
00140 virtual bool checkForSuccessfulOutput(Structure *s, bool *success);
00141
00153 virtual bool update(Structure *structure);
00154
00165 virtual bool load(Structure *structure);
00166
00177 virtual bool read(Structure *structure, const QString & filename);
00178
00187 virtual QString getTemplate(const QString &filename, int optStepIndex);
00188
00197 virtual QStringList getTemplate(const QString &filename);
00198
00206 virtual QVariant getData(const QString &identifier);
00207
00212 virtual QStringList getTemplateNames() {return m_templates.keys();};
00213
00217 virtual QStringList getDataIdentifiers() {return m_data.keys();};
00218
00223 QString getUser1() {return m_user1;};
00224
00229 QString getUser2() {return m_user2;};
00230
00235 QString getUser3() {return m_user3;};
00236
00241 QString getUser4() {return m_user4;};
00242
00243 public slots:
00253 virtual bool setTemplate(const QString &filename,
00254 const QString &templateData,
00255 int optStepIndex);
00256
00266 virtual bool setTemplate(const QString &filename,
00267 const QStringList &templateData);
00268
00278 virtual bool appendTemplate(const QString &filename,
00279 const QString &templateData);
00280
00292 virtual bool removeAllTemplatesForOptStep(int optStepIndex);
00293
00304 virtual bool setData(const QString &identifier,
00305 const QVariant &data);
00306
00311 void setUser1(const QString &s) {m_user1 = s;};
00312
00317 void setUser2(const QString &s) {m_user2 = s;};
00318
00323 void setUser3(const QString &s) {m_user3 = s;};
00324
00329 void setUser4(const QString &s) {m_user4 = s;};
00330
00346 QString localRunCommand() const {return m_localRunCommand;};
00347
00361 QStringList localRunArgs() const {return m_localRunArgs;};
00362
00376 QString stdinFilename() const {return m_stdinFilename;};
00377
00391 QString stdoutFilename() const {return m_stdoutFilename;};
00392
00406 QString stderrFilename() const {return m_stderrFilename;};
00407
00417 virtual QHash<QString, QString> getInterpretedTemplates(Structure *s);
00418
00420
00426 bool hasDialog() {return m_hasDialog;};
00427
00434 virtual QDialog* dialog();
00435
00436 protected slots:
00443 virtual void updateQueueInterface();
00444
00445 protected:
00450 virtual void readTemplatesFromSettings(const QString &filename = "");
00451
00456 virtual void writeTemplatesToSettings(const QString &filename = "");
00457
00462 virtual void readUserValuesFromSettings(const QString &filename = "");
00463
00468 virtual void writeUserValuesToSettings(const QString &filename = "");
00469
00474 virtual void readDataFromSettings(const QString &filename = "");
00475
00480 virtual void writeDataToSettings(const QString &filename = "");
00481
00487 QHash<QString, QVariant> m_data;
00488
00493 QHash<QString, QStringList>& resolveTemplateHash(const QString &filename);
00494
00500 const QHash<QString, QStringList>& resolveTemplateHash(const QString &filename) const;
00501
00509 virtual void fixTemplateLengths();
00510
00516 QHash<QString, QStringList > m_templates;
00517
00523 QHash<QString, QStringList > m_QITemplates;
00524
00529 QString m_completionFilename;
00530
00536 QStringList m_completionStrings;
00537
00542 QStringList m_outputFilenames;
00543
00581 QString m_localRunCommand;
00582
00596 QStringList m_localRunArgs;
00597
00611 QString m_stdinFilename;
00612
00626 QString m_stdoutFilename;
00627
00641 QString m_stderrFilename;
00642
00647 QString m_user1;
00648
00653 QString m_user2;
00654
00659 QString m_user3;
00660
00665 QString m_user4;
00666
00670 OptBase *m_opt;
00671
00675 QString m_idString;
00676
00678 bool m_hasDialog;
00679 QDialog *m_dialog;
00681 };
00682 }
00683
00684 #endif