CMakeSetupDialog.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
  2. file Copyright.txt or https://cmake.org/licensing for details. */
  3. #ifndef CMakeSetupDialog_h
  4. #define CMakeSetupDialog_h
  5. #include "QCMake.h"
  6. #include "ui_CMakeSetupDialog.h"
  7. #include <QEventLoop>
  8. #include <QMainWindow>
  9. #include <QThread>
  10. class QCMakeThread;
  11. class CMakeCacheModel;
  12. class QProgressBar;
  13. class QToolButton;
  14. /// Qt user interface for CMake
  15. class CMakeSetupDialog
  16. : public QMainWindow
  17. , public Ui::CMakeSetupDialog
  18. {
  19. Q_OBJECT
  20. public:
  21. CMakeSetupDialog();
  22. ~CMakeSetupDialog();
  23. public slots:
  24. void setBinaryDirectory(const QString& dir);
  25. void setSourceDirectory(const QString& dir);
  26. protected slots:
  27. void initialize();
  28. void doConfigure();
  29. void doGenerate();
  30. void doOpenProject();
  31. void doInstallForCommandLine();
  32. void doHelp();
  33. void doAbout();
  34. void doInterrupt();
  35. void error(const QString& message);
  36. void message(const QString& message);
  37. void doSourceBrowse();
  38. void doBinaryBrowse();
  39. void doReloadCache();
  40. void doDeleteCache();
  41. void updateSourceDirectory(const QString& dir);
  42. void updateBinaryDirectory(const QString& dir);
  43. void showProgress(const QString& msg, float percent);
  44. void setEnabledState(bool);
  45. bool setupFirstConfigure();
  46. void updateGeneratorLabel(const QString& gen);
  47. void setExitAfterGenerate(bool);
  48. void addBinaryPath(const QString&);
  49. QStringList loadBuildPaths();
  50. void saveBuildPaths(const QStringList&);
  51. void onBinaryDirectoryChanged(const QString& dir);
  52. void onSourceDirectoryChanged(const QString& dir);
  53. void setCacheModified();
  54. void removeSelectedCacheEntries();
  55. void selectionChanged();
  56. void addCacheEntry();
  57. void startSearch();
  58. void setDebugOutput(bool);
  59. void setAdvancedView(bool);
  60. void setGroupedView(bool);
  61. void showUserChanges();
  62. void setSearchFilter(const QString& str);
  63. bool prepareConfigure();
  64. bool doConfigureInternal();
  65. bool doGenerateInternal();
  66. void exitLoop(int);
  67. void doOutputContextMenu(QPoint pt);
  68. void doOutputFindDialog();
  69. void doOutputFindNext(bool directionForward = true);
  70. void doOutputFindPrev();
  71. void doOutputErrorNext();
  72. void doRegexExplorerDialog();
  73. /// display the modal warning messages dialog window
  74. void doWarningMessagesDialog();
  75. protected:
  76. enum State
  77. {
  78. Interrupting,
  79. ReadyConfigure,
  80. ReadyGenerate,
  81. Configuring,
  82. Generating
  83. };
  84. void enterState(State s);
  85. void closeEvent(QCloseEvent*);
  86. void dragEnterEvent(QDragEnterEvent*);
  87. void dropEvent(QDropEvent*);
  88. QCMakeThread* CMakeThread;
  89. bool ExitAfterGenerate;
  90. bool CacheModified;
  91. bool ConfigureNeeded;
  92. QAction* ReloadCacheAction;
  93. QAction* DeleteCacheAction;
  94. QAction* ExitAction;
  95. QAction* ConfigureAction;
  96. QAction* GenerateAction;
  97. QAction* WarnUninitializedAction;
  98. QAction* WarnUnusedAction;
  99. QAction* InstallForCommandLineAction;
  100. State CurrentState;
  101. QTextCharFormat ErrorFormat;
  102. QTextCharFormat MessageFormat;
  103. QStringList AddVariableNames;
  104. QStringList AddVariableTypes;
  105. QStringList FindHistory;
  106. QEventLoop LocalLoop;
  107. float ProgressOffset;
  108. float ProgressFactor;
  109. };
  110. // QCMake instance on a thread
  111. class QCMakeThread : public QThread
  112. {
  113. Q_OBJECT
  114. public:
  115. QCMakeThread(QObject* p);
  116. QCMake* cmakeInstance() const;
  117. signals:
  118. void cmakeInitialized();
  119. protected:
  120. virtual void run();
  121. QCMake* CMakeInstance;
  122. };
  123. #endif // CMakeSetupDialog_h