/*========================================================================= Program: CMake - Cross-Platform Makefile Generator Module: $RCSfile$ Language: C++ Date: $Date$ Version: $Revision$ Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the above copyright notices for more information. =========================================================================*/ #ifndef CMakeSetupDialog_h #define CMakeSetupDialog_h #include "QCMake.h" #include #include #include "ui_CMakeSetupDialog.h" class QCMakeThread; class CMakeCacheModel; class QProgressBar; class QToolButton; /// Qt user interface for CMake class CMakeSetupDialog : public QMainWindow, public Ui::CMakeSetupDialog { Q_OBJECT public: CMakeSetupDialog(); ~CMakeSetupDialog(); public slots: void setBinaryDirectory(const QString& dir); void setSourceDirectory(const QString& dir); protected slots: void initialize(); void doConfigure(); void doGenerate(); void doInstallForCommandLine(); void doHelp(); void doAbout(); void doInterrupt(); void finishConfigure(int error); void finishGenerate(int error); void error(const QString& message); void message(const QString& message); void doSourceBrowse(); void doBinaryBrowse(); void doReloadCache(); void doDeleteCache(); void updateSourceDirectory(const QString& dir); void updateBinaryDirectory(const QString& dir); void showProgress(const QString& msg, float percent); void setEnabledState(bool); bool setupFirstConfigure(); void updateGeneratorLabel(const QString& gen); void setExitAfterGenerate(bool); void addBinaryPath(const QString&); QStringList loadBuildPaths(); void saveBuildPaths(const QStringList&); void onBinaryDirectoryChanged(const QString& dir); void onSourceDirectoryChanged(const QString& dir); void setCacheModified(); void removeSelectedCacheEntries(); void selectionChanged(); void addCacheEntry(); void startSearch(); void setDebugOutput(bool); protected: enum State { Interrupting, ReadyConfigure, ReadyGenerate, Configuring, Generating }; void enterState(State s); void closeEvent(QCloseEvent*); void dragEnterEvent(QDragEnterEvent*); void dropEvent(QDropEvent*); QCMakeThread* CMakeThread; bool ExitAfterGenerate; bool CacheModified; QAction* ReloadCacheAction; QAction* DeleteCacheAction; QAction* ExitAction; QAction* ConfigureAction; QAction* GenerateAction; QAction* SuppressDevWarningsAction; QAction* InstallForCommandLineAction; State CurrentState; QTextCharFormat ErrorFormat; QTextCharFormat MessageFormat; }; // QCMake instance on a thread class QCMakeThread : public QThread { Q_OBJECT public: QCMakeThread(QObject* p); QCMake* cmakeInstance() const; signals: void cmakeInitialized(); protected: virtual void run(); QCMake* CMakeInstance; }; #endif // CMakeSetupDialog_h