blob: 8d1adde115d8269ad77e958b09b61feba5320ef3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <coreplugin/coreconstants.h>
#include <coreplugin/dialogs/ioptionspage.h>
#include <coreplugin/ioutputpane.h>
#include <utils/outputformat.h>
#include <utils/theme/theme.h>
#include <QPointer>
QT_BEGIN_NAMESPACE
class QToolButton;
class QAction;
class QPoint;
QT_END_NAMESPACE
namespace Core { class OutputWindow; }
namespace ProjectExplorer {
class RunControl;
namespace Internal {
class ShowOutputTaskHandler;
class TabWidget;
enum class AppOutputPaneMode { FlashOnOutput, PopupOnOutput, PopupOnFirstOutput };
class AppOutputSettings
{
public:
static QColor defaultBackgroundColor();
QColor effectiveBackgroundColor() const;
AppOutputPaneMode runOutputMode = AppOutputPaneMode::PopupOnFirstOutput;
AppOutputPaneMode debugOutputMode = AppOutputPaneMode::FlashOnOutput;
bool cleanOldOutput = false;
bool mergeChannels = false;
bool wrapOutput = false;
bool discardExcessiveOutput = false;
bool overwriteBackground = false;
int maxCharCount = Core::Constants::DEFAULT_MAX_CHAR_COUNT;
QColor backgroundColor;
};
class AppOutputPane final : public Core::IOutputPane
{
public:
AppOutputPane();
~AppOutputPane() final;
bool aboutToClose() const;
QList<RunControl *> allRunControls() const;
const AppOutputSettings &settings() const { return m_settings; }
void setSettings(const AppOutputSettings &settings);
void prepareRunControlStart(RunControl *runControl);
void showOutputPaneForRunControl(RunControl *runControl);
void closeTabsWithoutPrompt();
private:
enum CloseTabMode {
CloseTabNoPrompt,
CloseTabWithPrompt
};
void closeTabs(CloseTabMode mode);
void showTabFor(RunControl *rc);
void setBehaviorOnOutput(RunControl *rc, AppOutputPaneMode mode);
void projectRemoved();
void createNewOutputWindow(RunControl *rc);
void appendMessage(ProjectExplorer::RunControl *rc, const QString &out,
Utils::OutputFormat format);
void reRunRunControl();
void stopRunControl();
void attachToRunControl();
void tabChanged(int);
void contextMenuRequested(const QPoint &pos);
void runControlFinished(RunControl *runControl);
void aboutToUnloadSession();
void updateFromSettings();
void enableDefaultButtons();
void zoomIn(int range);
void zoomOut(int range);
void resetZoom();
void enableButtons(const RunControl *rc);
class RunControlTab {
public:
explicit RunControlTab(RunControl *runControl = nullptr,
Core::OutputWindow *window = nullptr);
QPointer<RunControl> runControl;
QPointer<Core::OutputWindow> window;
AppOutputPaneMode behaviorOnOutput = AppOutputPaneMode::FlashOnOutput;
};
void closeTab(int index, CloseTabMode cm = CloseTabWithPrompt);
bool optionallyPromptToStop(RunControl *runControl);
RunControlTab *tabFor(const RunControl *rc);
RunControlTab *tabFor(const QWidget *outputWindow);
const RunControlTab *tabFor(const QWidget *outputWindow) const;
RunControlTab *currentTab();
const RunControlTab *currentTab() const;
RunControl *currentRunControl() const;
void handleOldOutput(Core::OutputWindow *window) const;
void updateCloseActions();
QWidget *outputWidget(QWidget *) final;
QList<QWidget *> toolBarWidgets() const final;
void clearContents() final;
bool canFocus() const final;
bool hasFocus() const final;
void setFocus() final;
bool canNext() const final;
bool canPrevious() const final;
void goToNext() final;
void goToPrev() final;
bool canNavigate() const final;
bool hasFilterContext() const final;
void updateFilter() final;
const QList<Core::OutputWindow *> outputWindows() const final;
void ensureWindowVisible(Core::OutputWindow *ow) final;
void loadSettings();
void storeSettings() const;
TabWidget *m_tabWidget;
QList<RunControlTab> m_runControlTabs;
QAction *m_stopAction;
QAction *m_closeCurrentTabAction;
QAction *m_closeAllTabsAction;
QAction *m_closeOtherTabsAction;
QToolButton *m_reRunButton;
QToolButton *m_stopButton;
QToolButton *m_attachButton;
QToolButton * const m_settingsButton;
QWidget *m_formatterWidget;
ShowOutputTaskHandler * const m_handler;
AppOutputSettings m_settings;
};
class AppOutputSettingsPage final : public Core::IOptionsPage
{
public:
AppOutputSettingsPage();
};
AppOutputPane &appOutputPane();
void setupAppOutputPane();
void destroyAppOutputPane();
} // namespace Internal
} // namespace ProjectExplorer
|