1 // Copyright (c) 2012 Dennco Project
3 // This program is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 // GNU General Public License for more details.
13 // You should have received a copy of the GNU General Public License
14 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 // Created by tkawata on Sep-30, 2012.
37 class DCCreator : public QObject
42 enum DCPersMode { DC_PERSMODE_NAVIGATION, DC_PERSMODE_PAGEEDIT };
45 QMainWindow *d_mainWindow;
46 DCContent *d_vcontent;
48 DCPersMode d_persMode;
49 QString d_contentRootPath;
51 QUndoStack *d_undoStack;
55 DCCreator(QMainWindow *mainwindow);
58 DCContent* getCurrentContent() const { return d_vcontent; }
59 DCContainer* getCurrentContainer() const;
60 QMainWindow* getMainWindow() const { return d_mainWindow; }
61 DCScene* getScene() const { return d_scene; }
62 DCPersMode getPersMode() const { return d_persMode; }
64 virtual bool event(QEvent *event);
66 void resetVisualizer();
69 bool loadContent(const QString &contentRoot);
70 bool savePage(DCVCPage *page, bool showResultInMessageBox = false);
71 bool savePage(const QSet<DCVCPage*>& pages, bool showResultInMessageBox = false);
72 bool saveAll(bool showResultInMessageBox = false);
74 void selectPage(const void *requester, DCVCPage *page, bool multipleSelection);
75 void unselectPage(const void *requester, DCVCPage *page);
76 bool selectPage(const void *requester, const QString &locationPath, bool multipleSelection);
77 bool unselectPage(const void *requester, const QString &locationPath);
78 void unselectPageAll(const void *requester);
80 void selectCellObject(const void *requester, DCVComponent *object, bool multipleSelection = false);
81 void unselectCellObject(const void *requester, DCVComponent *object);
82 void unselectCellObjectAll(const void *requester);
84 void changeSceneScale(const void *requester, float scale);
85 void rotateScene(const void *requester, float xangle_delta, float yangle_delta);
86 void translateBrowsModeScene(const void *requester, float dx, float dy);
87 void translateEditModeScene(const void *requester, float dx, float dy);
88 void resetSceneTranslation();
90 bool changePersMode(const void *requester, DCPersMode mode);
93 void doUndo(const void *requester);
94 void doUndoImmidiate();
97 void doCommandStartAddAxonTerminalFromAxon(const void *requester, DCCell *axnoCell);
98 void doCommandStartAddAxonTerminalFromReceptor(const void *requester, DCCell *receptorCell);
99 void doCommandCommitAddAxonTerminal(const void *requester, DCAxon *axon, DCCell *receptorCell);
100 void doCommandCommitAddAxonTerminal(const void *requester, DCCell *axonCell, DCReceptor *receptor);
101 void doCommandCancelAddAxonTerminal(const void *requester);
102 void doCommandRemoveAxonTerminal(const void *requester, DCCell *axonCell, DCAxonTerminal *axonTerminal);
103 void doCommandRemoveAxonTerminal(const void *requester, DCCell *receptorCell, const QString& receptorName);
104 void doCommandAssignCellCodeClassToCell(const void *requester, DCCell *cell, DCCellCode *cellCode);
105 void doCommandUnassignCellCodeClassFromCell(const void *requester, DCCell *cell);
107 void doCommandAddCellCodeClass(const void *requester, DCContainer *container, const QString& name, const QString& type);
108 void doCommandChangeCellCodeClassType(const void *requester, DCCellCode *cellCode, const QString& newType);
109 void doCommandAddCell(const void *requester, DCContainer *container, const QString& containerBasedPath, const QString& name, const QString& type, float pageX, float pageY);
110 void doCommandRenameCell(const void *requester, DCCell *cell, const QString& newContainerBasedPath, const QString& newName);
111 void doCommandChangeCellType(const void *requester, DCCell *cell, const QString& newType);
112 void doCommandRemoveCell(const void *requester, DCContainer *container, DCCell* cell);
113 void doCommandRemoveCellCode(const void *requester, DCContainer *container, DCCellCode* cellCode);
114 void doCommandAddPage(const void *requester, const QString& containerBasedPath);
115 void doCommandMovePage(const void *requester, const QString &oldContainerBasedPath, const QString &newContainerBasedPath);
116 void doCommandRemovePage(const void *requester, DCVCPage *page);
118 void doCommandAddDirectory(const void *requester, const QString& sysFilePath);
119 void doCommandRenameDirectory(const void *requester, const QString& oldSysFilePath, const QString& newSysFilePath);
120 void doCommandRemoveDirectory(const void *requester, const QString& sysFilePath);
122 bool doCommandRenameReceptorName(const void *requester, DCCell *cell, const QString& oldName, const QString& newName, bool doImmediate = false);
125 void slotSceneSelectedPageChanged(const void *requester);
126 void slotSceneSelectedCellObjectChanged(const void *requester);
127 void slotSceneViewScaleChanged(const void *requester);
128 void slotSceneViewAngleChanged(const void *requester);
129 void slotSceneViewCenterChanged(const void *requester);
130 void slotSceneViewSettingChanged(const void *requester);
131 void slotSceneViewEditModeChanged(const void *requester);
134 void contentRootPathChanged(const void *requester, QString rootPath);
135 void sceneChanged(const void *requester, DCScene *scene);
136 void sceneSelectedPageChanged(const void *requester, const DCScene *scene);
137 void sceneSelectedCellChanged(const void *requester, const DCScene *scene);
138 void sceneViewScaleChanged(const void *requester, const DCScene *scene);
139 void sceneViewAngleChanged(const void *requester, const DCScene *scene);
140 void sceneViewCenterChanged(const void *requester, const DCScene *scene);
141 void sceneViewTranslationChanged(const void *requester, const DCScene *scene);
142 void sceneViewSettingChanged(const void *requester, const DCScene *scene);
143 void sceneViewEditModeChanged(const void *requester, const DCScene *scene);
145 void commandExecuted(const QUndoCommand *executedCommand);
148 #endif // DCCREATOR_H