X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Fmainwindow.h;fp=src%2Fmainwindow.h;h=08dfd22d3880c28173e1af79bcadbf30cb0b445f;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git diff --git a/src/mainwindow.h b/src/mainwindow.h new file mode 100644 index 0000000..08dfd22 --- /dev/null +++ b/src/mainwindow.h @@ -0,0 +1,618 @@ +#ifndef MAINWINDOW_H +#define MAINWINDOW_H + +#include +#include +#include +#include +#include +#include +#include + +#include "branchpropeditor.h" +#include "extrainfodialog.h" +#include "file.h" +#include "flag.h" +#include "historywindow.h" +#include "mapeditor.h" +#include "scripting.h" +#include "texteditor.h" +#include "vymview.h" + +class Main : public QMainWindow { + Q_OBJECT + + public: + /*! Modifier modes are used when SHIFT together with a mouse button is + * pressed */ + enum ModMode { + ModModeUndefined, //!< Unused + ModModePoint, //!< Regular mode: Point and relink items + ModModeColor, //!< Pick color from object + ModModeXLink, //!< Create a XLink (XLinkObj) from selected object + ModModeMoveObject, //!< Move object without linking + ModModeMoveView //!< Move view without changing + }; + + Main(QWidget *parent = 0); + ~Main(); + void loadCmdLine(); + + private: + QProgressDialog progressDialog; + int progressMax; + int progressCounter; + int progressCounterTotal; + + public: + void statusMessage(const QString &); + void setProgressMaximum(int max); + void addProgressValue(float v); + void initProgressCounter(uint n = 1); + void removeProgressCounter(); + + public slots: + void fileNew(); + void fileNewCopy(); + + protected: + void closeEvent(QCloseEvent *); + + public: + QPrinter *setupPrinter(); + + private: + void setupAPI(); + + /*! Helper method to clone actions later in MapEditor */ + void cloneActionMapEditor(QAction *a, QKeySequence ks); + + void setupFileActions(); + void setupEditActions(); + void setupSelectActions(); + void setupFormatActions(); + void setupViewActions(); + void setupConnectActions(); + void setupModeActions(); + void setupWindowActions(); + void setupFlagActions(); + + public slots: + void addUserFlag(); + + public: + Flag *setupFlag(const QString &path, Flag::FlagType type, + const QString &name, const QString &tooltip, + const QUuid &uid = QUuid(), const QKeySequence &ks = 0); + + private: + void setupNetworkActions(); + void setupSettingsActions(); + void setupTestActions(); + void setupHelpActions(); + void setupContextMenus(); + void setupRecentMapsMenu(); + void setupMacros(); + void setupToolbars(); + VymView *currentView() const; + VymView *view(const int i); + + public: + MapEditor *currentMapEditor() const; + VymModel *currentModel() const; + uint currentMapID() const; + int currentMapIndex() const; + VymModel *getModel(uint); + void gotoModel(VymModel *m); + void gotoModelWithID(uint id); + bool closeModelWithID(uint id); + int modelCount(); + void updateTabName(VymModel *vm); + + private slots: + void editorChanged(); + + public slots: + File::ErrorCode fileLoad(QString, const LoadMode &, const FileType &ftype); + void fileLoad(const LoadMode &); + private slots: + void fileLoad(); + void fileSaveSession(); + public slots: + void fileRestoreSession(); + private slots: + void fileLoadRecent(); + void addRecentMap(const QString &); + void fileSave(VymModel *, const SaveMode &); + void fileSave(); + public slots: + void fileSave(VymModel *); // autosave from MapEditor + private slots: + void fileSaveAs(); + void fileSaveAs(const SaveMode &); + void fileSaveAsDefault(); + void fileImportFirefoxBookmarks(); + void fileImportFreemind(); + void fileImportMM(); + void fileImportDir(); + void fileExportAO(); + void fileExportASCII(); + void fileExportASCIITasks(); + void fileExportCSV(); + void fileExportConfluence(); + void fileExportFirefoxBookmarks(); + void fileExportHTML(); + void fileExportImage(); + void fileExportImpress(); + void fileExportLaTeX(); + void fileExportMarkdown(); + void fileExportOrgMode(); + void fileExportPDF(); + void fileExportSVG(); + void fileExportTaskjuggler(); + void fileExportXML(); + void fileExportLast(); + bool fileCloseMap(int i = -1); // Optionally pass number of tab + void filePrint(); + bool fileExitVYM(); + + public slots: + void editUndo(); + void editRedo(); + void gotoHistoryStep(int); + private slots: + void editCopy(); + void editPaste(); + void editCut(); + + public slots: + void updateQueries(VymModel *); + bool openURL(const QString &url); + void openTabs(QStringList); + void editOpenURL(); + void editOpenURLTab(); + + private slots: + void editOpenMultipleVisURLTabs(bool ignoreScrolled = true); + void editOpenMultipleURLTabs(); + void editNote2URLs(); + void editURL(); + void editLocalURL(); + void editHeading2URL(); + void getJiraDataSubtree(); + void setHeadingConfluencePageName(); + void getConfluenceUser(); + void openVymLinks(const QStringList &, bool background = false); + void editVymLink(); + void editOpenMultipleVymLinks(); + public slots: + void editHeading(); + void editHeadingFinished(VymModel *m); + void editOpenVymLink(bool background = false); + void editOpenVymLinkBackground(); + private slots: + void editDeleteVymLink(); + void editToggleHideExport(); + void editToggleTask(); + void editCycleTaskStatus(); + void editTaskResetDeltaPrio(); + void editTaskSleepN(); + void editAddTimestamp(); + void editMapProperties(); + void editMoveUp(); + void editMoveDown(); + void editMoveUpDiagonally(); + void editMoveDownDiagonally(); + void editDetach(); + void editSortChildren(); + void editSortBackChildren(); + void editToggleScroll(); + void editExpandAll(); + void editExpandOneLevel(); + void editCollapseOneLevel(); + void editCollapseUnselected(); + void editUnscrollChildren(); + void editGrowSelectionSize(); + void editShrinkSelectionSize(); + void editResetSelectionSize(); + void editAddAttribute(); + void editAddMapCenter(); + void editNewBranch(); + void editNewBranchBefore(); + void editNewBranchAbove(); + void editNewBranchBelow(); + void editImportAdd(); + void editImportReplace(); + void editSaveBranch(); + void editDeleteKeepChildren(); + void editDeleteChildren(); + void editDeleteSelection(); + void editLoadImage(); + void editSaveImage(); + void popupFollowXLink(); + void editFollowXLink(QAction *); + void editEditXLink(QAction *); + + private slots: + bool initLinkedMapsMenu(VymModel *model, QMenu *menu); + + public slots: + void editGoToLinkedMap(); + + private slots: + void editToggleTarget(); + bool initTargetsMenu(VymModel *model, QMenu *menu); + void editGoToTarget(); + void editMoveToTarget(); + void editSelectPrevious(); + void editSelectNext(); + void editSelectNothing(); + void editOpenFindResultWidget(); + void editFindNext(QString s, bool searchNotesFlag); + void editFindDuplicateURLs(); + + public slots: + void selectQuickColor(int n); + void setQuickColor(QColor col); + void quickColorPressed(); + void formatPickColor(); + QColor getCurrentColor(); + int getCurrentColorIndex(); + void setCurrentColor(QColor); + + private slots: + void formatColorBranch(); + void formatColorSubtree(); + void formatLinkStyleLine(); + void formatLinkStyleParabel(); + void formatLinkStylePolyLine(); + void formatLinkStylePolyParabel(); + void formatSelectBackColor(); + void formatSelectBackImage(); + void formatSelectLinkColor(); + void formatSelectSelectionColor(); + void formatSelectFont(); + void formatToggleLinkColorHint(); + void formatHideLinkUnselected(); + + public slots: + void viewZoomReset(); + void viewZoomIn(); + void viewZoomOut(); + void viewRotateCounterClockwise(); + void viewRotateClockwise(); + void viewCenter(); + void viewCenterScaled(); + + public slots: + void networkStartServer(); + void networkConnect(); + void downloadFinished(); + bool settingsPDF(); + bool settingsURL(); + void settingsZipTool(); + void settingsMacroPath(); + void settingsUndoLevels(); + void settingsDefaultMapPath(); + + public: + QString defaultMapPath(); // Default path, used with "auto" to define newMapPath + QString newMapPath(); // Depends on settings and dark theme + bool useAutosave(); + void setAutosave(bool b); + + public slots: + void settingsAutosaveTime(); + void settingsDefaultMapAuthor(); + void settingsDarkTheme(); + void settingsShowParentsLevelTasks(); + void settingsShowParentsLevelFindResults(); + void settingsToggleAutoLayout(); + void settingsToggleWriteBackupFile(); + void settingsToggleAnimation(); + void settingsToggleDownloads(); + bool settingsConfluence(); + bool settingsJIRA(); + + void windowToggleNoteEditor(); + void windowToggleTreeEditor(); + void windowToggleTaskEditor(); + void windowToggleSlideEditor(); + void windowToggleScriptEditor(); + void windowToggleScriptOutput(); + void windowToggleHistory(); + void windowToggleProperty(); + void windowShowHeadingEditor(); + void windowToggleHeadingEditor(); + void updateHistory(SimpleSettings &); + void windowToggleAntiAlias(); + bool isAliased(); + bool hasSmoothPixmapTransform(); + void windowToggleSmoothPixmap(); + void clearScriptOutput(); + void updateHeading(const VymText &vt); + void updateNoteText(const VymText &vt); + void updateNoteEditor(TreeItem *ti); + void updateHeadingEditor(BranchItem *bi = nullptr); + void selectInNoteEditor(QString s, int i); + void setFocusMapEditor(); + void changeSelection(VymModel *model, const QItemSelection &newSel, + const QItemSelection &delSel); + void updateDockWidgetTitles(VymModel *model); + + void updateActions(); + ModMode getModMode(); + bool autoSelectNewBranch(); + QVariant runScript(const QString &); + QObject *getCurrentModelWrapper(); + bool gotoWindow(const int &n); + + private slots: + void windowNextEditor(); + void windowPreviousEditor(); + void nextSlide(); + void previousSlide(); + + void flagChanged(); + + void testFunction1(); + void testFunction2(); + void toggleWinter(); + void toggleHideExport(); + void testCommand(); + + void helpDoc(); + void helpDemo(); + void helpShortcuts(); + void helpMacros(); + void helpScriptingCommands(); + void helpDebugInfo(); + void helpAbout(); + void helpAboutQT(); + + void callMacro(); + void downloadReleaseNotesFinished(); + + private: + QUrl serverUrl(const QString &scriptName); + bool checkUpdatesAfterReleaseNotes; + + public: + void checkReleaseNotesAndUpdates(); + + public slots: + void checkReleaseNotes(); + bool downloadsEnabled(bool userTriggered = false); + void downloadUpdatesFinished(bool userTriggered = false); + void downloadUpdatesFinishedInt(); + void downloadUpdates(bool userTriggered); + void checkUpdates(); + void escapePressed(); + void togglePresentationMode(); + + private: + QString shortcutScope; //! For listing shortcuts + QTabWidget *tabWidget; + qint64 *browserPID; + + QStringList imageTypes; + + QScriptEngine scriptEngine; + + QString prevSelection; + + HistoryWindow *historyWindow; + + QDockWidget *headingEditorDW; + QDockWidget *noteEditorDW; + QDockWidget *scriptEditorDW; + QDockWidget *branchPropertyEditorDW; + + public: + QList + mapEditorActions; //! allows mapEditor to clone actions and shortcuts + QList + taskEditorActions; //! allows taskEditor to clone actions and shortcuts + private: + QList + restrictedMapActions; //! Actions reqire map and write access + QList + unrestrictedMapActions; //! Actions require map, but work also in + //! readonly, e.g. print, copy + QList actionListFiles; //! File related actions, e.g. load, save, + //! restore session + QList actionListBranches; + QList actionListItems; + + int xLinkMenuWidth; + + QMenu *recentFilesMenu; + enum { MaxRecentFiles = 20 }; + QAction *recentFileActions[MaxRecentFiles]; + + QAction *macroActions[24]; + QStringList macro; + + QList quickColors; + + QMenu *toolbarsMenu; + QToolBar *fileToolbar; + QToolBar *clipboardToolbar; + QToolBar *editActionsToolbar; + QToolBar *selectionToolbar; + QToolBar *editorsToolbar; + QToolBar *colorsToolbar; + QToolBar *zoomToolbar; + QToolBar *modModesToolbar; + QToolBar *referencesToolbar; + QToolBar *standardFlagsToolbar; + QToolBar *userFlagsToolbar; + + bool presentationMode; + QMap + toolbarStates; // Save visibilty of toolbars during presentation mode + + QAction *actionFileNew; + QAction *actionFileNewCopy; + QAction *actionFileOpen; + QAction *actionFileRestoreSession; + QAction *actionFileSave; + QAction *actionFilePrint; + QAction *actionMapProperties; + QAction *actionFileExportLast; + QAction *actionFileExportConfluence; + QAction *actionUndo; + QAction *actionRedo; + QAction *actionCopy; + QAction *actionCut; + QAction *actionPaste; + QAction *actionMoveUp; + QAction *actionMoveDown; + QAction *actionMoveDownDiagonally; + QAction *actionMoveUpDiagonally; + QAction *actionDetach; + QAction *actionSortChildren; + QAction *actionSortBackChildren; + QAction *actionToggleScroll; + QAction *actionExpandAll; + QAction *actionExpandOneLevel; + QAction *actionCollapseOneLevel; + QAction *actionCollapseUnselected; + QAction *actionOpenURL; + QAction *actionOpenURLTab; + QAction *actionOpenMultipleVisURLTabs; + QAction *actionOpenMultipleURLTabs; + QAction *actionGetURLsFromNote; + QAction *actionURLNew; + QAction *actionLocalURL; + QAction *actionHeading2URL; + QAction *actionGetJiraDataSubtree; + QAction *actionGetConfluencePageName; + QAction *actionOpenVymLink; + QAction *actionOpenVymLinkBackground; + QAction *actionOpenMultipleVymLinks; + QAction *actionEditVymLink; + QAction *actionDeleteVymLink; + QAction *actionAddTimestamp; + QAction *actionToggleTask; + QAction *actionTogglePresentationMode; + QAction *actionCycleTaskStatus; + QAction *actionTaskResetDeltaPrio; + QAction *actionTaskSleep0; + QAction *actionTaskSleepN; + QAction *actionTaskSleep1; + QAction *actionTaskSleep2; + QAction *actionTaskSleep3; + QAction *actionTaskSleep4; + QAction *actionTaskSleep5; + QAction *actionTaskSleep7; + QAction *actionTaskSleep14; + QAction *actionTaskSleep28; + QAction *actionToggleHideExport; + QAction *actionMapInfo; + QAction *actionHeading; + QAction *actionDelete; + QAction *actionDeleteAlt; + QAction *actionAddAttribute; + + public: + QAction *actionAddMapCenter; + + private: + QAction *actionAddBranch; + QAction *actionAddBranchBefore; + QAction *actionAddBranchAbove; + QAction *actionAddBranchBelow; + QAction *actionDeleteKeepChildren; + QAction *actionDeleteChildren; + QAction *actionImportAdd; + QAction *actionImportReplace; + QAction *actionSaveBranch; + QAction *actionLoadImage; + + QAction *actionGrowSelectionSize; + QAction *actionShrinkSelectionSize; + QAction *actionResetSelectionSize; + + QAction *actionToggleTarget; + QAction *actionGoToTargetLinkedMap; + QAction *actionGoToTarget; + QAction *actionMoveToTarget; + QAction *actionSelectPrevious; + QAction *actionSelectNext; + QAction *actionSelectNothing; + QAction *actionFind; + + QActionGroup *actionGroupQuickColors; + QAction *actionFormatQuickColor; + QAction *actionFormatPickColor; + QAction *actionFormatColorBranch; + QAction *actionFormatColorSubtree; + QAction *actionFormatLinkColorHint; + QAction *actionFormatBackColor; + QAction *actionFormatBackImage; + QAction *actionFormatLinkColor; + QAction *actionFormatSelectionColor; + QAction *actionFormatFont; + + QAction *actionZoomIn; + QAction *actionZoomOut; + QAction *actionZoomReset; + QAction *actionRotateCounterClockwise; + QAction *actionRotateClockwise; + QAction *actionCenterOn; + QAction *actionFitToSelection; + + QActionGroup *actionGroupModModes; + QAction *actionModModePoint; + QAction *actionModModeColor; + QAction *actionModModeCopy; + QAction *actionModModeXLink; + QAction *actionModModeMoveObject; + QAction *actionModModeMoveView; + + QAction *actionToggleHideMode; + + QAction *actionToggleWinter; + + QActionGroup *actionGroupFormatFrameTypes; + + QActionGroup *actionGroupFormatLinkStyles; + QAction *actionFormatLinkStyleLine; + QAction *actionFormatLinkStyleParabel; + QAction *actionFormatLinkStylePolyLine; + QAction *actionFormatLinkStylePolyParabel; + QAction *actionFormatHideLinkUnselected; + + QAction *actionViewToggleNoteEditor; + QAction *actionViewToggleHeadingEditor; + QAction *actionViewToggleTreeEditor; + QAction *actionViewToggleTaskEditor; + QAction *actionViewToggleSlideEditor; + QAction *actionViewToggleScriptEditor; + QAction *actionViewToggleScriptOutput; + QAction *actionViewToggleHistoryWindow; + QAction *actionViewTogglePropertyEditor; + QAction *actionViewToggleAntiAlias; + QAction *actionViewToggleSmoothPixmapTransform; + QAction *actionViewCenter; + + QAction *actionConnectGetConfluenceUser; + QAction *actionSettingsAutoSelectNewBranch; + QAction *actionSettingsAutoSelectText; + QAction *actionSettingsUseFlagGroups; + QAction *actionSettingsUseHideExport; + QAction *actionSettingsToggleAutosave; + QAction *actionSettingsAutosaveTime; + QAction *actionSettingsDarkTheme; + QAction *actionSettingsShowParentsLevelTasks; + QAction *actionSettingsShowParentsLevelFindResults; + QAction *actionSettingsToggleAutoLayout; + QAction *actionSettingsWriteBackupFile; + QAction *actionSettingsToggleDownloads; + QAction *actionSettingsUseAnimation; + QAction *actionSettingsJIRA; + QAction *actionSettingsConfluence; +}; + +#endif