| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | /***************************************************************************
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** This file is part of Qt Creator | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** Contact:  Qt Software Information (qt-info@nokia.com) | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** | 
					
						
							|  |  |  | ** Non-Open Source Usage | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** Licensees may use this file in accordance with the Qt Beta Version | 
					
						
							|  |  |  | ** License Agreement, Agreement version 2.2 provided with the Software or, | 
					
						
							|  |  |  | ** alternatively, in accordance with the terms contained in a written | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** agreement between you and Nokia. | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** GNU General Public License Usage | 
					
						
							|  |  |  | ** | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | ** Alternatively, this file may be used under the terms of the GNU General | 
					
						
							|  |  |  | ** Public License versions 2.0 or 3.0 as published by the Free Software | 
					
						
							|  |  |  | ** Foundation and appearing in the file LICENSE.GPL included in the packaging | 
					
						
							|  |  |  | ** of this file.  Please review the following information to ensure GNU | 
					
						
							|  |  |  | ** General Public Licensing requirements will be met: | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
 | 
					
						
							|  |  |  | ** http://www.gnu.org/copyleft/gpl.html.
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ** In addition, as a special exception, Nokia gives you certain additional | 
					
						
							| 
									
										
										
										
											2008-12-02 14:17:16 +01:00
										 |  |  | ** rights. These rights are described in the Nokia Qt GPL Exception | 
					
						
							|  |  |  | ** version 1.2, included in the file GPL_EXCEPTION.txt in this package. | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ***************************************************************************/ | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | #ifndef MAINWINDOW_H
 | 
					
						
							|  |  |  | #define MAINWINDOW_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "icore.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QtGui/QMainWindow>
 | 
					
						
							|  |  |  | #include <QtCore/QMap>
 | 
					
						
							|  |  |  | #include <QtCore/QList>
 | 
					
						
							|  |  |  | #include <QtCore/QSet>
 | 
					
						
							|  |  |  | #include <QtCore/QPointer>
 | 
					
						
							|  |  |  | #include <QtGui/QPrinter>
 | 
					
						
							|  |  |  | #include <QtGui/QToolButton>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | QT_BEGIN_NAMESPACE | 
					
						
							|  |  |  | class QSettings; | 
					
						
							|  |  |  | class QShortcut; | 
					
						
							|  |  |  | QT_END_NAMESPACE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace ExtensionSystem { | 
					
						
							|  |  |  | class PluginManager; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Core { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ActionManagerInterface; | 
					
						
							|  |  |  | class BaseMode; | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | class BaseView; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class EditorManager; | 
					
						
							|  |  |  | class FileManager; | 
					
						
							|  |  |  | class IContext; | 
					
						
							|  |  |  | class MessageManager; | 
					
						
							|  |  |  | class MimeDatabase; | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | class ModeManager; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class ProgressManagerInterface; | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | class RightPaneWidget; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class ScriptManagerInterface; | 
					
						
							|  |  |  | class UniqueIDManager; | 
					
						
							|  |  |  | class VariableManager; | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | class VCSManager; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class ViewManagerInterface; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Internal { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ActionManager; | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | class CoreImpl; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class FancyTabWidget; | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | class GeneralSettings; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | class NavigationWidget; | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | class OutputPane; | 
					
						
							|  |  |  | class ProgressManager; | 
					
						
							|  |  |  | class ShortcutSettings; | 
					
						
							|  |  |  | class ViewManager; | 
					
						
							| 
									
										
										
										
											2008-12-03 17:38:53 +01:00
										 |  |  | class VersionDialog; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-02 14:09:21 +01:00
										 |  |  | class CORE_EXPORT  MainWindow : public QMainWindow | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | { | 
					
						
							|  |  |  |     Q_OBJECT | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     MainWindow(); | 
					
						
							|  |  |  |     ~MainWindow(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     bool init(ExtensionSystem::PluginManager *pm, QString *error_message); | 
					
						
							|  |  |  |     void extensionsInitialized(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     IContext *contextObject(QWidget *widget); | 
					
						
							|  |  |  |     void addContextObject(IContext *contex); | 
					
						
							|  |  |  |     void removeContextObject(IContext *contex); | 
					
						
							|  |  |  |     void resetContext(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void openFiles(const QStringList &fileNames); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     //ICore
 | 
					
						
							|  |  |  |     inline ExtensionSystem::PluginManager *pluginManager() { return m_pluginManager; } | 
					
						
							|  |  |  |     Core::ActionManagerInterface *actionManager() const; | 
					
						
							|  |  |  |     Core::FileManager *fileManager() const; | 
					
						
							|  |  |  |     Core::UniqueIDManager *uniqueIDManager() const; | 
					
						
							|  |  |  |     Core::MessageManager *messageManager() const; | 
					
						
							|  |  |  |     Core::ViewManagerInterface *viewManager() const; | 
					
						
							|  |  |  |     ExtensionSystem::PluginManager *pluginManager() const; | 
					
						
							|  |  |  |     Core::EditorManager *editorManager() const; | 
					
						
							|  |  |  |     Core::ProgressManagerInterface *progressManager() const; | 
					
						
							|  |  |  |     Core::ScriptManagerInterface *scriptManager() const; | 
					
						
							|  |  |  |     Core::VariableManager *variableManager() const; | 
					
						
							|  |  |  |     Core::ModeManager *modeManager() const; | 
					
						
							|  |  |  |     Core::MimeDatabase *mimeDatabase() const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     VCSManager *vcsManager() const; | 
					
						
							|  |  |  |     inline QSettings *settings() const { return m_settings; } | 
					
						
							|  |  |  |     virtual QPrinter *printer() const; | 
					
						
							|  |  |  |     IContext * currentContextObject() const; | 
					
						
							|  |  |  |     QStatusBar *statusBar() const; | 
					
						
							|  |  |  |     void addAdditionalContext(int context); | 
					
						
							|  |  |  |     void removeAdditionalContext(int context); | 
					
						
							|  |  |  |     bool hasContext(int context) const; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void updateContext(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QMenu *createPopupMenu(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void setSuppressNavigationWidget(bool suppress); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | signals: | 
					
						
							|  |  |  |     void windowActivated(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public slots: | 
					
						
							|  |  |  |     void newFile(); | 
					
						
							|  |  |  |     void openFileWith(); | 
					
						
							|  |  |  |     void exit(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QStringList showNewItemDialog(const QString &title, | 
					
						
							|  |  |  |                                   const QList<IWizard *> &wizards, | 
					
						
							|  |  |  |                                   const QString &defaultLocation = QString()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void showOptionsDialog(const QString &category = QString(), const QString &page = QString()); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | protected: | 
					
						
							|  |  |  |     void changeEvent(QEvent *e); | 
					
						
							|  |  |  |     void closeEvent(QCloseEvent *event); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | private slots: | 
					
						
							|  |  |  |     void openFile(); | 
					
						
							|  |  |  |     void aboutToShowRecentFiles(); | 
					
						
							|  |  |  |     void openRecentFile(); | 
					
						
							|  |  |  |     void setFocusToEditor(); | 
					
						
							|  |  |  |     void saveAll(); | 
					
						
							|  |  |  |     void aboutQtCreator(); | 
					
						
							|  |  |  |     void aboutPlugins(); | 
					
						
							|  |  |  |     void updateFocusWidget(QWidget *old, QWidget *now); | 
					
						
							|  |  |  |     void toggleNavigation(); | 
					
						
							| 
									
										
										
										
											2008-12-03 17:38:53 +01:00
										 |  |  |     void destroyVersionDialog(); | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | private: | 
					
						
							|  |  |  |     void updateContextObject(IContext *context); | 
					
						
							|  |  |  |     void registerDefaultContainers(); | 
					
						
							|  |  |  |     void registerDefaultActions(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     void readSettings(); | 
					
						
							|  |  |  |     void writeSettings(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     CoreImpl *m_coreImpl; | 
					
						
							|  |  |  |     UniqueIDManager *m_uniqueIDManager; | 
					
						
							|  |  |  |     QList<int> m_globalContext; | 
					
						
							|  |  |  |     QList<int> m_additionalContexts; | 
					
						
							|  |  |  |     QSettings *m_settings; | 
					
						
							|  |  |  |     mutable QPrinter *m_printer; | 
					
						
							|  |  |  |     ActionManager *m_actionManager; | 
					
						
							|  |  |  |     EditorManager *m_editorManager; | 
					
						
							|  |  |  |     FileManager *m_fileManager; | 
					
						
							|  |  |  |     MessageManager *m_messageManager; | 
					
						
							|  |  |  |     ProgressManager *m_progressManager; | 
					
						
							|  |  |  |     ScriptManagerInterface *m_scriptManager; | 
					
						
							|  |  |  |     VariableManager *m_variableManager; | 
					
						
							|  |  |  |     VCSManager *m_vcsManager; | 
					
						
							|  |  |  |     ViewManager *m_viewManager; | 
					
						
							|  |  |  |     ModeManager *m_modeManager; | 
					
						
							|  |  |  |     MimeDatabase *m_mimeDatabase; | 
					
						
							|  |  |  |     FancyTabWidget *m_modeStack; | 
					
						
							|  |  |  |     NavigationWidget *m_navigationWidget; | 
					
						
							|  |  |  |     RightPaneWidget *m_rightPaneWidget; | 
					
						
							|  |  |  |     Core::BaseView *m_outputView; | 
					
						
							| 
									
										
										
										
											2008-12-03 17:38:53 +01:00
										 |  |  |     VersionDialog *m_versionDialog; | 
					
						
							| 
									
										
										
										
											2008-12-02 12:01:29 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     IContext * m_activeContext; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QMap<QWidget *, IContext *> m_contextWidgets; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     ExtensionSystem::PluginManager *m_pluginManager; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     OutputPane *m_outputPane; | 
					
						
							|  |  |  |     BaseMode *m_outputMode; | 
					
						
							|  |  |  |     GeneralSettings *m_generalSettings; | 
					
						
							|  |  |  |     ShortcutSettings *m_shortcutSettings; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QMap<QAction*, QString> m_recentFilesActions; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     // actions
 | 
					
						
							|  |  |  |     QShortcut *m_focusToEditor; | 
					
						
							|  |  |  |     QAction *m_newAction; | 
					
						
							|  |  |  |     QAction *m_openAction; | 
					
						
							|  |  |  |     QAction *m_openWithAction; | 
					
						
							|  |  |  |     QAction *m_saveAllAction; | 
					
						
							|  |  |  |     QAction *m_exitAction; | 
					
						
							|  |  |  |     QAction *m_optionsAction; | 
					
						
							|  |  |  |     QAction *m_toggleSideBarAction; | 
					
						
							|  |  |  | #ifdef Q_OS_MAC
 | 
					
						
							|  |  |  |     QAction *m_minimizeAction; | 
					
						
							|  |  |  |     QAction *m_zoomAction; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     QToolButton *m_toggleSideBarButton; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } // namespace Internal
 | 
					
						
							|  |  |  | } // namespace Core
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // MAINWINDOW_H
 |