10 #ifndef COMPOSERMAINWINDOW_H
11 #define COMPOSERMAINWINDOW_H
14 #include <QStringList>
16 #include <QFileSystemModel>
18 #include <QCoreApplication>
19 #include <QApplication>
21 #include <QtGui/QMainWindow>
22 #include <QtGui/QTabWidget>
23 #include <QtGui/QStatusBar>
24 #include <QtGui/QMenu>
25 #include <QtGui/QAction>
26 #include <QtGui/QMessageBox>
27 #include <QtGui/QMenuBar>
28 #include <QtGui/QTreeWidget>
29 #include <QtGui/QWizardPage>
30 #include <QtGui/QWizard>
31 #include <QtGui/QVBoxLayout>
32 #include <QtGui/QFileDialog>
33 #include <QtGui/QPushButton>
34 #include <QtGui/QLabel>
35 #include <QtGui/QGridLayout>
36 #include <QtGui/QLineEdit>
37 #include <QtGui/QToolBar>
38 #include <QtGui/QSplashScreen>
39 #include <QtGui/QListWidget>
40 #include <QtGui/QDialog>
41 #include <QtGui/QBitmap>
42 #include <QtGui/QPainter>
43 #include <QtGui/QTreeView>
44 #include <QToolButton>
45 #include <QDockWidget>
48 #include <core/modules/PluginControl.h>
49 #include <core/modules/ProjectControl.h>
50 #include <core/modules/LanguageControl.h>
51 using namespace composer::core;
53 #include <core/util/ComposerSettings.h>
54 using namespace composer::core::util;
56 #include "PerspectiveManager.h"
57 #include "PreferencesDialog.h"
58 #include "PluginDetailsDialog.h"
59 #include "WelcomeWidget.h"
60 #include "AboutDialog.h"
61 #include "ComposerHelpWidget.h"
62 #include "ClickableDockWidget.h"
64 #include "RunGingaConfig.h"
67 #include "RunRemoteGingaVM.h"
70 using namespace composer::gui;
82 void run() { exec(); }
94 static const int maximumRecentProjectsSize = 10;
96 Ui::ComposerMainWindow *ui;
97 QTabWidget *tabProjects;
100 QToolButton *tbPerspectiveDropList;
102 QMenu *menu_Perspective;
104 QToolButton *tbLanguageDropList;
106 QMenu *menu_Language;
108 QMap<QString, QMainWindow*> projectsWidgets;
110 QMap<QString, QDockWidget*> firstDock;
113 QList <QDockWidget*> allDocks;
115 QMutex allDocksMutex;
117 QAction *fullScreenViewAct;
118 QAction *projectViewAct;
119 QAction *editPreferencesAct;
121 QAction *saveCurrentPluginsLayoutAct;
123 QAction *restorePluginsLayoutAct;
127 QListWidget *profilesExt;
129 QTreeWidget *pluginsExt;
132 QMap <QTreeWidgetItem*, IPluginFactory*> treeWidgetItem2plFactory;
136 QDialog *aboutPluginsDialog;
137 QPushButton *detailsButton;
139 QStringList extensions_paths;
146 QProcess localGingaProcess;
152 QProgressDialog *taskProgressBar;
154 QTimer *autoSaveTimer;
165 QString promptChooseExtDirectory();
177 void createAboutPlugins();
181 void createStatusBar();
189 void createActions();
193 void createFileSystem();
201 void readExtensions();
207 void closeEvent(QCloseEvent *event);
213 void updateRecentProjectsMenu(QStringList &recentProjects);
215 void updateDockStyle(QDockWidget *titleBar,
bool selected=
false);
217 void addButtonToDockTitleBar(QFrame *titleBar, QPushButton *button);
219 void updateTabWithProject(
int index, QString newLocation);
221 QTranslator m_translator;
222 QTranslator m_translatorQt;
230 void loadLanguage(
const QString& rLanguage);
234 void createLanguageMenu(
void);
236 void switchTranslator(QTranslator& translator,
const QString& filename);
243 void changeEvent(QEvent*);
245 virtual void keyPressEvent(QKeyEvent *event);
251 void slotLanguageChanged(QAction* action);
256 void saveLoadPluginData(
int);
270 void updateViewMenu();
274 void showEditPreferencesDialog();
279 void tabClosed(
int index);
283 void closeCurrentTab();
287 void showCurrentWidgetFullScreen();
291 void closeAllFiles();
295 void startOpenProject(QString projectLoc);
296 void endOpenProject(QString projectLoc);
298 void saveCurrentGeometryAsPerspective();
299 void restorePerspective();
300 void savePerspective(QString layoutName);
301 void saveDefaultPerspective(QString defaultPerspectiveName);
302 void restorePerspective(QString layoutName);
308 void runOnLocalGinga();
309 void runOnRemoteGingaVM();
310 void runHasFinished();
311 void updateRunActions();
313 void launchProjectWizard();
314 void addToRecentProjects(QString projectUrl);
315 void userPressedRecentProject(QString src);
316 void userPressedRecentProject();
317 void clearRecentProjects(
void);
318 void importFromDocument();
322 void selectedAboutCurrentPluginFactory();
326 void showPluginDetails();
328 void updateMenuPerspectives();
329 void updateMenuLanguages();
331 void restorePerspectiveFromMenu();
333 void currentTabChanged(
int n);
335 void focusChanged(QWidget *old, QWidget *now);
337 void setProjectDirty(QString location,
bool isDirty);
339 void gotoNCLClubWebsite();
341 void autoSaveCurrentProjects();
344 void updateLastFileDialogPath(QString filepath);
347 QString getLastFileDialogPath();
349 void addDefaultStructureToProject(Project *project,
350 bool shouldCopyDefaultConnBase =
true,
351 bool shouldCreateADefaultRegion =
true,
353 void on_actionReport_Bug_triggered();
369 void init(
const QApplication &app);
381 void errorDialog(QString);
391 Project *project,
int n);
397 void onOpenProjectTab(QString location);
402 void saveCurrentProject();
406 void saveAsCurrentProject();
417 void checkTemporaryFileLastModified(QString filename);
423 bool removeTemporaryFile(QString location);
433 void openProjects(
const QStringList &projects);
440 void writeSettings();
445 #endif // COMPOSERMAINWINDOW_H