Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Source/QtDialog/CMakeSetupDialog.h
4998 views
1
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2
file LICENSE.rst or https://cmake.org/licensing for details. */
3
#pragma once
4
5
#include <memory>
6
7
#include "QCMake.h"
8
#include "QCMakePreset.h"
9
#include <QEventLoop>
10
#include <QMainWindow>
11
#include <QThread>
12
#include <QVector>
13
14
#include "ui_CMakeSetupDialog.h"
15
16
class QCMakePresetItemModel;
17
class QCMakeThread;
18
class CMakeCacheModel;
19
class QProgressBar;
20
class QToolButton;
21
22
#ifdef QT_WINEXTRAS
23
class QWinTaskbarButton;
24
#endif
25
26
/// Qt user interface for CMake
27
class CMakeSetupDialog
28
: public QMainWindow
29
, public Ui::CMakeSetupDialog
30
{
31
Q_OBJECT
32
public:
33
CMakeSetupDialog();
34
~CMakeSetupDialog();
35
36
public slots:
37
void setBinaryDirectory(QString const& dir);
38
void setSourceDirectory(QString const& dir);
39
void setDeferredPreset(QString const& preset);
40
void setStartupBinaryDirectory(bool startup);
41
42
protected slots:
43
void initialize();
44
void doConfigure();
45
void doGenerate();
46
void doOpenProject();
47
void doInstallForCommandLine();
48
void doHelp();
49
void doAbout();
50
void doInterrupt();
51
void error(QString const& message);
52
void message(QString const& message);
53
54
void doSourceBrowse();
55
void doBinaryBrowse();
56
void doReloadCache();
57
void doDeleteCache();
58
void updateSourceDirectory(QString const& dir);
59
void updateBinaryDirectory(QString const& dir);
60
void updatePresets(QVector<QCMakePreset> const& presets);
61
void updatePreset(QString const& name);
62
void showPresetLoadError(QString const& dir, QString const& message);
63
void showProgress(QString const& msg, float percent);
64
void setEnabledState(bool);
65
bool setupFirstConfigure();
66
void updateGeneratorLabel(QString const& gen);
67
void setExitAfterGenerate(bool);
68
void addBinaryPath(QString const&);
69
QStringList loadBuildPaths();
70
void saveBuildPaths(QStringList const&);
71
void onBinaryDirectoryChanged(QString const& dir);
72
void onSourceDirectoryChanged(QString const& dir);
73
void onBuildPresetChanged(QString const& name);
74
void setCacheModified();
75
void removeSelectedCacheEntries();
76
void selectionChanged();
77
void editEnvironment();
78
void addCacheEntry();
79
void startSearch();
80
void setDebugOutput(bool);
81
void setAdvancedView(bool);
82
void setGroupedView(bool);
83
void showUserChanges();
84
void setSearchFilter(QString const& str);
85
bool prepareConfigure();
86
bool doConfigureInternal();
87
bool doGenerateInternal();
88
void exitLoop(int);
89
void doOutputContextMenu(QPoint pt);
90
void doOutputFindDialog();
91
void doOutputFindNext(bool directionForward = true);
92
void doOutputFindPrev();
93
void doOutputErrorNext();
94
void doRegexExplorerDialog();
95
/// display the modal warning messages dialog window
96
void doWarningMessagesDialog();
97
98
protected:
99
enum State
100
{
101
Interrupting,
102
ReadyConfigure,
103
ReadyGenerate,
104
Configuring,
105
Generating
106
};
107
void enterState(State s);
108
109
void closeEvent(QCloseEvent*);
110
void dragEnterEvent(QDragEnterEvent*);
111
void dropEvent(QDropEvent*);
112
113
QCMakeThread* CMakeThread;
114
bool ExitAfterGenerate;
115
bool CacheModified;
116
bool ConfigureNeeded;
117
QAction* ReloadCacheAction;
118
QAction* DeleteCacheAction;
119
QAction* ExitAction;
120
QAction* ConfigureAction;
121
QAction* GenerateAction;
122
QAction* WarnUninitializedAction;
123
QAction* InstallForCommandLineAction;
124
State CurrentState;
125
QString DeferredPreset;
126
bool StartupBinaryDirectory = false;
127
128
QTextCharFormat ErrorFormat;
129
QTextCharFormat MessageFormat;
130
131
QStringList AddVariableNames;
132
QStringList AddVariableTypes;
133
QStringList FindHistory;
134
135
QEventLoop LocalLoop;
136
137
#ifdef QT_WINEXTRAS
138
QWinTaskbarButton* TaskbarButton;
139
#endif
140
141
float ProgressOffset;
142
float ProgressFactor;
143
};
144
145
// QCMake instance on a thread
146
class QCMakeThread : public QThread
147
{
148
Q_OBJECT
149
public:
150
QCMakeThread(QObject* p);
151
QCMake* cmakeInstance() const;
152
153
signals:
154
void cmakeInitialized();
155
156
protected:
157
virtual void run();
158
std::unique_ptr<QCMake> CMakeInstance;
159
};
160
161