00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00024
00025 #ifndef QVAPPLICATION_H
00026 #define QVAPPLICATION_H
00027
00028 #include <QSet>
00029 #include <QString>
00030 #include <QStringList>
00031 #include <QApplication>
00032 #include <QMutex>
00033
00034 #include <qvdefines.h>
00035
00036 class QVGUI;
00037 class QVPropertyContainer;
00038 class QVProcessingBlock;
00039 class QVImageCanvas;
00040
00041 #define qvApp ((QVApplication*) qApp)
00042
00055 class QVApplication : public QApplication
00056 {
00057 Q_OBJECT
00058 public:
00072 QVApplication (int &argc, char **argv,
00073 QString info = QString(), bool GUIenabled = TRUE);
00074
00089 int processArguments();
00090
00106 int exec();
00107
00115 void setTerminateOnLastBlock(bool terminate) { terminateOnLastBlock=terminate; };
00116
00129 void setArgumentAsUsed(QString argument);
00130
00140 QStringList getUnusedArguments();
00141
00144 bool isRunning() { return isRunningFlag; };
00145
00148 bool forHelp() { return forHelpFlag; };
00149
00152 QString getHelp();
00153
00156 static QVApplication* instance() { return dynamic_cast<QVApplication*>(qApp); }
00157
00158
00166
00167
00168
00175 int getNumberOfArguments() const { return arguments().size(); }
00176
00185 QString getArgument(const int index)
00186 {
00187 const QString argument = arguments()[index];
00188
00189 setArgumentAsUsed(argument);
00190
00191 return argument;
00192 }
00193
00200 QStringList getArguments()
00201 {
00202 foreach(QString argument, arguments())
00203 setArgumentAsUsed(argument);
00204
00205 return arguments();
00206 }
00207
00208 #ifndef DOXYGEN_IGNORE_THIS
00209 void registerQVPropertyContainer(QVPropertyContainer *qvp);
00210 void deregisterQVPropertyContainer(QVPropertyContainer *qvp);
00211 void registerGUI(QVGUI *visionInterface);
00212 void deregisterGUI();
00213 QSet<QVPropertyContainer *> getQVPropertyContainers() { return qvps; };
00214 QMutex mutex;
00215 #endif
00216
00217 public slots:
00221 bool startItems();
00222
00228 void quitItems();
00229
00230 void quitBlock(QVProcessingBlock *block);
00231
00236 void quit();
00237
00238 private slots:
00239 void blockFinished();
00240
00241 private:
00242 QString info;
00243 QStringList unusedArguments;
00244 QSet<QVPropertyContainer *> qvps;
00245 QVGUI *visionInterface;
00246 bool isRunningFlag;
00247 int blockCount;
00248 bool terminateOnLastBlock, forHelpFlag;
00249
00250 void printHelp();
00251 };
00252 #endif // QVAPPLICATION_H