OSDN Git Service

It's 2011 now.
[qt-creator-jp/qt-creator-jp.git] / src / plugins / coreplugin / mainwindow.h
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
8 **
9 ** No Commercial Usage
10 **
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
14 ** this package.
15 **
16 ** GNU Lesser General Public License Usage
17 **
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file.  Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 **
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights.  These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 **
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
31 **
32 **************************************************************************/
33
34 #ifndef MAINWINDOW_H
35 #define MAINWINDOW_H
36
37 #include "eventfilteringmainwindow.h"
38 #include "icontext.h"
39 #include "icore.h"
40
41 #include <QtCore/QMap>
42 #include <QtGui/QColor>
43
44 QT_BEGIN_NAMESPACE
45 class QSettings;
46 class QShortcut;
47 class QPrinter;
48 class QToolButton;
49 QT_END_NAMESPACE
50
51 namespace Core {
52
53 class ActionManager;
54 class StatusBarWidget;
55 class EditorManager;
56 class FileManager;
57 class HelpManager;
58 class IWizard;
59 class MessageManager;
60 class MimeDatabase;
61 class ModeManager;
62 class ProgressManager;
63 class NavigationWidget;
64 class RightPaneWidget;
65 class ScriptManager;
66 class SettingsDatabase;
67 class UniqueIDManager;
68 class VariableManager;
69 class VcsManager;
70
71 namespace Internal {
72
73 class ActionManagerPrivate;
74 class CoreImpl;
75 class FancyTabWidget;
76 class GeneralSettings;
77 class ProgressManagerPrivate;
78 class ShortcutSettings;
79 class StatusBarManager;
80 class VersionDialog;
81 class SystemEditor;
82
83 class MainWindow : public EventFilteringMainWindow
84 {
85     Q_OBJECT
86
87 public:
88     MainWindow();
89     ~MainWindow();
90
91     bool init(QString *errorMessage);
92     void extensionsInitialized();
93     void aboutToShutdown();
94
95     IContext *contextObject(QWidget *widget);
96     void addContextObject(IContext *contex);
97     void removeContextObject(IContext *contex);
98     void resetContext();
99
100     void openFiles(const QStringList &fileNames, ICore::OpenFilesFlags flags);
101
102     Core::ActionManager *actionManager() const;
103     Core::FileManager *fileManager() const;
104     Core::UniqueIDManager *uniqueIDManager() const;
105     Core::MessageManager *messageManager() const;
106     Core::EditorManager *editorManager() const;
107     Core::ProgressManager *progressManager() const;
108     Core::ScriptManager *scriptManager() const;
109     Core::VariableManager *variableManager() const;
110     Core::ModeManager *modeManager() const;
111     Core::MimeDatabase *mimeDatabase() const;
112     Core::HelpManager *helpManager() const;
113
114     VcsManager *vcsManager() const;
115     QSettings *settings(QSettings::Scope scope) const;
116     inline SettingsDatabase *settingsDatabase() const { return m_settingsDatabase; }
117     virtual QPrinter *printer() const;
118     IContext * currentContextObject() const;
119     QStatusBar *statusBar() const;
120
121     void updateAdditionalContexts(const Context &remove, const Context &add);
122     bool hasContext(int context) const;
123
124     void setSuppressNavigationWidget(bool suppress);
125
126     void setOverrideColor(const QColor &color);
127
128 signals:
129     void windowActivated();
130
131 public slots:
132     void newFile();
133     void openFileWith();
134     void exit();
135     void setFullScreen(bool on);
136
137     void showNewItemDialog(const QString &title,
138                            const QList<IWizard *> &wizards,
139                            const QString &defaultLocation = QString());
140
141     bool showOptionsDialog(const QString &category = QString(),
142                            const QString &page = QString(),
143                            QWidget *parent = 0);
144
145     bool showWarningWithOptions(const QString &title, const QString &text,
146                                 const QString &details = QString(),
147                                 const QString &settingsCategory = QString(),
148                                 const QString &settingsId = QString(),
149                                 QWidget *parent = 0);
150
151 protected:
152     virtual void changeEvent(QEvent *e);
153     virtual void closeEvent(QCloseEvent *event);
154     virtual void dragEnterEvent(QDragEnterEvent *event);
155     virtual void dropEvent(QDropEvent *event);
156
157 private slots:
158     void openFile();
159     void aboutToShowRecentFiles();
160     void openRecentFile();
161     void setFocusToEditor();
162     void saveAll();
163     void aboutQtCreator();
164     void aboutPlugins();
165     void updateFocusWidget(QWidget *old, QWidget *now);
166     void setSidebarVisible(bool visible);
167     void destroyVersionDialog();
168     void openDelayedFiles();
169
170 private:
171     void updateContextObject(IContext *context);
172     void updateContext();
173
174     void registerDefaultContainers();
175     void registerDefaultActions();
176
177     void readSettings();
178     void writeSettings();
179
180     CoreImpl *m_coreImpl;
181     UniqueIDManager *m_uniqueIDManager;
182     Context m_additionalContexts;
183     QSettings *m_settings;
184     QSettings *m_globalSettings;
185     SettingsDatabase *m_settingsDatabase;
186     mutable QPrinter *m_printer;
187     ActionManagerPrivate *m_actionManager;
188     EditorManager *m_editorManager;
189     FileManager *m_fileManager;
190     MessageManager *m_messageManager;
191     ProgressManagerPrivate *m_progressManager;
192     ScriptManager *m_scriptManager;
193     QScopedPointer<VariableManager> m_variableManager;
194     VcsManager *m_vcsManager;
195     StatusBarManager *m_statusBarManager;
196     ModeManager *m_modeManager;
197     MimeDatabase *m_mimeDatabase;
198     HelpManager *m_helpManager;
199     FancyTabWidget *m_modeStack;
200     NavigationWidget *m_navigationWidget;
201     RightPaneWidget *m_rightPaneWidget;
202     Core::StatusBarWidget *m_outputView;
203     VersionDialog *m_versionDialog;
204
205     IContext *m_activeContext;
206
207     QMap<QWidget *, IContext *> m_contextWidgets;
208
209     GeneralSettings *m_generalSettings;
210     ShortcutSettings *m_shortcutSettings;
211     SystemEditor *m_systemEditor;
212
213     // actions
214     QShortcut *m_focusToEditor;
215     QAction *m_newAction;
216     QAction *m_openAction;
217     QAction *m_openWithAction;
218     QAction *m_saveAllAction;
219     QAction *m_exitAction;
220     QAction *m_optionsAction;
221     QAction *m_toggleSideBarAction;
222     QAction *m_toggleFullScreenAction;
223 #ifdef Q_WS_MAC
224     QAction *m_minimizeAction;
225     QAction *m_zoomAction;
226 #endif
227
228     QToolButton *m_toggleSideBarButton;
229     QColor m_overrideColor;
230
231     QStringList m_filesToOpenDelayed;
232 };
233
234 } // namespace Internal
235 } // namespace Core
236
237 #endif // MAINWINDOW_H