~mapclient.devs/mapclient/stable

« back to all changes in this revision

Viewing changes to mapclient/widgets/mainwindow.py

  • Committer: musculoskeletal
  • Date: 2014-06-25 05:38:05 UTC
  • mfrom: (1.6.35 testing)
  • Revision ID: musculoskeletal@bioeng1033-20140625053805-jkqhi5oq74vmlntl
Merging testing into stable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
from PySide import QtGui
22
22
 
23
 
from widgets.ui_mainwindow import Ui_MainWindow
24
 
# from mountpoints.stackedwidget import StackedWidgetMountPoint
25
 
from widgets.workflowwidget import WorkflowWidget
26
 
from settings.info import DEFAULT_WORKFLOW_ANNOTATION_FILENAME
 
23
from mapclient.widgets.ui_mainwindow import Ui_MainWindow
 
24
# from mapclient.mountpoints.stackedwidget import StackedWidgetMountPoint
 
25
from mapclient.widgets.workflowwidget import WorkflowWidget
 
26
from mapclient.settings.info import DEFAULT_WORKFLOW_ANNOTATION_FILENAME
27
27
 
28
28
class MainWindow(QtGui.QMainWindow):
29
29
    '''
40
40
 
41
41
        self._ui = Ui_MainWindow()
42
42
        self._ui.setupUi(self)
 
43
        self._setupMenus()
 
44
        self.setMenuBar(self.menubar)
43
45
        self._makeConnections()
44
46
 
45
 
        self._createUndoAction(self._ui.menu_Edit)
46
 
        self._createRedoAction(self._ui.menu_Edit)
 
47
        self._createUndoAction(self.menu_Edit)
 
48
        self._createRedoAction(self.menu_Edit)
47
49
 
48
50
        self._model.readSettings()
49
51
        self.resize(self._model.size())
57
59
 
58
60
        self._pluginManagerDlg = None
59
61
 
 
62
    def _setupMenus(self):
 
63
        '''
 
64
        Because of OS X we have to setup the menubar with no parent so we do
 
65
        it manually here instead of through designer.
 
66
        '''
 
67
        self.menubar = QtGui.QMenuBar()
 
68
        self.menubar.setObjectName("menubar")
 
69
        self.menu_Help = QtGui.QMenu(self.menubar)
 
70
        self.menu_Help.setObjectName("menu_Help")
 
71
        self.menu_File = QtGui.QMenu(self.menubar)
 
72
        self.menu_File.setObjectName("menu_File")
 
73
        self.menu_Edit = QtGui.QMenu(self.menubar)
 
74
        self.menu_Edit.setObjectName("menu_Edit")
 
75
        self.menu_Project = QtGui.QMenu(self.menubar)
 
76
        self.menu_Project.setObjectName("menu_Project")
 
77
        self.menu_Tools = QtGui.QMenu(self.menubar)
 
78
        self.menu_Tools.setObjectName("menu_Tools")
 
79
        self.action_About = QtGui.QAction(self)
 
80
        self.action_About.setObjectName("action_About")
 
81
        self.action_Quit = QtGui.QAction(self)
 
82
        self.action_Quit.setObjectName("action_Quit")
 
83
        self.actionPluginManager = QtGui.QAction(self)
 
84
        self.actionPluginManager.setObjectName("actionPluginManager")
 
85
        self.actionPMR = QtGui.QAction(self)
 
86
        self.actionPMR.setObjectName("actionPMR")
 
87
        self.actionAnnotation = QtGui.QAction(self)
 
88
        self.actionAnnotation.setObjectName("actionAnnotation")
 
89
        self.actionPluginWizard = QtGui.QAction(self)
 
90
        self.actionPluginWizard.setObjectName("actionPluginWizard")
 
91
        self.menu_Help.addAction(self.action_About)
 
92
        self.menu_File.addSeparator()
 
93
        self.menu_File.addAction(self.action_Quit)
 
94
        self.menu_Tools.addAction(self.actionPluginManager)
 
95
        self.menu_Tools.addAction(self.actionPluginWizard)
 
96
        self.menu_Tools.addAction(self.actionPMR)
 
97
        self.menu_Tools.addAction(self.actionAnnotation)
 
98
        self.menubar.addAction(self.menu_File.menuAction())
 
99
        self.menubar.addAction(self.menu_Edit.menuAction())
 
100
        self.menubar.addAction(self.menu_Project.menuAction())
 
101
        self.menubar.addAction(self.menu_Tools.menuAction())
 
102
        self.menubar.addAction(self.menu_Help.menuAction())
 
103
 
 
104
        self._retranslateUi()
 
105
 
 
106
    def _retranslateUi(self):
 
107
        self.menu_Help.setTitle(QtGui.QApplication.translate("MainWindow", "&Help", None, QtGui.QApplication.UnicodeUTF8))
 
108
        self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8))
 
109
        self.menu_Edit.setTitle(QtGui.QApplication.translate("MainWindow", "&Edit", None, QtGui.QApplication.UnicodeUTF8))
 
110
        self.menu_Project.setTitle(QtGui.QApplication.translate("MainWindow", "&Project", None, QtGui.QApplication.UnicodeUTF8))
 
111
        self.menu_Tools.setTitle(QtGui.QApplication.translate("MainWindow", "&Tools", None, QtGui.QApplication.UnicodeUTF8))
 
112
        self.action_About.setText(QtGui.QApplication.translate("MainWindow", "&About", None, QtGui.QApplication.UnicodeUTF8))
 
113
        self.action_Quit.setText(QtGui.QApplication.translate("MainWindow", "&Quit", None, QtGui.QApplication.UnicodeUTF8))
 
114
        self.action_Quit.setStatusTip(QtGui.QApplication.translate("MainWindow", "Quit the application", None, QtGui.QApplication.UnicodeUTF8))
 
115
        self.action_Quit.setShortcut(QtGui.QApplication.translate("MainWindow", "Ctrl+Q", None, QtGui.QApplication.UnicodeUTF8))
 
116
        self.actionPluginManager.setText(QtGui.QApplication.translate("MainWindow", "Plugin &Manager", None, QtGui.QApplication.UnicodeUTF8))
 
117
        self.actionPMR.setText(QtGui.QApplication.translate("MainWindow", "&PMR", None, QtGui.QApplication.UnicodeUTF8))
 
118
        self.actionAnnotation.setText(QtGui.QApplication.translate("MainWindow", "&Annotation", None, QtGui.QApplication.UnicodeUTF8))
 
119
        self.actionPluginWizard.setText(QtGui.QApplication.translate("MainWindow", "Plugin Wi&zard", None, QtGui.QApplication.UnicodeUTF8))
 
120
 
60
121
    def _createUndoAction(self, parent):
61
122
        self.undoAction = QtGui.QAction('Undo', parent)
62
123
        self.undoAction.setShortcut(QtGui.QKeySequence('Ctrl+Z'))
85
146
        return self._model
86
147
 
87
148
    def _makeConnections(self):
88
 
        self._ui.action_Quit.triggered.connect(self.quitApplication)
89
 
        self._ui.action_About.triggered.connect(self.about)
90
 
        self._ui.actionPluginManager.triggered.connect(self.pluginManager)
91
 
        self._ui.actionPluginWizard.triggered.connect(self.pluginWizard)
92
 
        self._ui.actionPMR.triggered.connect(self.pmr)
93
 
        self._ui.actionAnnotation.triggered.connect(self.annotationTool)
 
149
        self.action_Quit.triggered.connect(self.quitApplication)
 
150
        self.action_About.triggered.connect(self.about)
 
151
        self.actionPluginManager.triggered.connect(self.pluginManager)
 
152
        self.actionPluginWizard.triggered.connect(self.pluginWizard)
 
153
        self.actionPMR.triggered.connect(self.pmr)
 
154
        self.actionAnnotation.triggered.connect(self.annotationTool)
94
155
 
95
156
    def setCurrentUndoRedoStack(self, stack):
96
157
        current_stack = self._model.undoManager().currentStack()
112
173
        self.undoAction.setEnabled(canUndo)
113
174
 
114
175
    def execute(self):
115
 
        self._ui.stackedWidget.setCurrentWidget(self._workflowWidget)
116
 
        self.setCurrentUndoRedoStack(self._workflowWidget.undoRedoStack())
 
176
        if self._ui.stackedWidget.currentWidget() != self._workflowWidget:
 
177
            self._ui.stackedWidget.setCurrentWidget(self._workflowWidget)
 
178
            self.setCurrentUndoRedoStack(self._workflowWidget.undoRedoStack())
117
179
        self.model().workflowManager().execute()
118
180
 
119
181
    def setCurrentWidget(self, widget):
141
203
        QtGui.qApp.quit()
142
204
 
143
205
    def about(self):
144
 
        from widgets.aboutdialog import AboutDialog
 
206
        from mapclient.widgets.aboutdialog import AboutDialog
145
207
        dlg = AboutDialog(self)
146
208
        dlg.setModal(True)
147
209
        dlg.exec_()
148
210
 
149
211
    def pluginManager(self):
150
 
        from tools.pluginmanagerdialog import PluginManagerDialog
 
212
        from mapclient.tools.pluginmanagerdialog import PluginManagerDialog
 
213
        pm = self._model.pluginManager()
151
214
        dlg = PluginManagerDialog(self)
152
215
        self._pluginManagerDlg = dlg
153
 
        dlg.setDirectories(self._model.pluginManager().directories())
154
 
        dlg.setLoadDefaultPlugins(self._model.pluginManager().loadDefaultPlugins())
 
216
        dlg.setDirectories(pm.directories())
 
217
        dlg.setLoadDefaultPlugins(pm.loadDefaultPlugins())
155
218
        dlg.reloadPlugins = self._pluginManagerReloadPlugins
156
219
 
157
220
        dlg.setModal(True)
158
221
        if dlg.exec_():
159
 
            self._model.pluginManager().setDirectories(dlg.directories())
160
 
            self._model.pluginManager().setLoadDefaultPlugins(dlg.loadDefaultPlugins())
161
 
            if self._model.pluginManager().pluginsModified():
162
 
                self._model.pluginManager().load()
 
222
            directories_modified = pm.setDirectories(dlg.directories())
 
223
            defaults_modified = pm.setLoadDefaultPlugins(dlg.loadDefaultPlugins())
 
224
            if directories_modified or defaults_modified:
 
225
                pm.load()
163
226
                self._workflowWidget.updateStepTree()
164
227
 
165
228
        self._pluginManagerDlg = None
168
231
        '''
169
232
        Callback from the plugin manager to reload the current plugins.
170
233
        '''
171
 
        self._model.pluginManager().setDirectories(self._pluginManagerDlg.directories())
172
 
        self._model.pluginManager().setLoadDefaultPlugins(self._pluginManagerDlg.loadDefaultPlugins())
173
 
        self._model.pluginManager().load()
 
234
        pm = self._model.pluginManager()
 
235
        pm.setDirectories(self._pluginManagerDlg.directories())
 
236
        pm.setLoadDefaultPlugins(self._pluginManagerDlg.loadDefaultPlugins())
 
237
        pm.load()
174
238
        self._workflowWidget.updateStepTree()
175
239
 
176
240
    def pluginWizard(self):
177
 
        from tools.pluginwizard.wizarddialog import WizardDialog
178
 
        from tools.pluginwizard.skeleton import Skeleton
 
241
        from mapclient.tools.pluginwizard.wizarddialog import WizardDialog
 
242
        from mapclient.tools.pluginwizard.skeleton import Skeleton
179
243
        dlg = WizardDialog(self)
180
244
 
181
245
        dlg.setModal(True)
188
252
                QtGui.QMessageBox.critical(self, 'Error Writing Step', 'There was an error writing the step, perhaps the step already exists.')
189
253
 
190
254
    def pmr(self):
191
 
        from tools.pmr.pmrsearchdialog import PMRSearchDialog
 
255
        from mapclient.tools.pmr.pmrsearchdialog import PMRSearchDialog
192
256
        dlg = PMRSearchDialog(self)
193
257
        dlg.setModal(True)
194
258
        dlg.exec_()
195
259
 
196
260
    def annotationTool(self):
197
 
        from tools.annotation.annotationdialog import AnnotationDialog
 
261
        from mapclient.tools.annotation.annotationdialog import AnnotationDialog
198
262
        location = self._model.workflowManager().location()
199
263
        dlg = AnnotationDialog(location, DEFAULT_WORKFLOW_ANNOTATION_FILENAME, self)
200
264
        dlg.setModal(True)