comparison python/apps/ide.py @ 68:654c5ac4f2c5

Refactor of menus
author windel
date Sat, 13 Oct 2012 16:13:05 +0200
parents 99bf4f7d47f4
children 60cc36ef5a50
comparison
equal deleted inserted replaced
67:99bf4f7d47f4 68:654c5ac4f2c5
114 114
115 class Ide(QMainWindow): 115 class Ide(QMainWindow):
116 def __init__(self, parent=None): 116 def __init__(self, parent=None):
117 super(Ide, self).__init__(parent) 117 super(Ide, self).__init__(parent)
118 self.setWindowTitle('LCFOS IDE') 118 self.setWindowTitle('LCFOS IDE')
119 self.compiler = Compiler()
119 icon = QPixmap() 120 icon = QPixmap()
120 icon.loadFromData(lcfospng) 121 icon.loadFromData(lcfospng)
121 self.setWindowIcon(QIcon(icon)) 122 self.setWindowIcon(QIcon(icon))
122 123
123 # Create menus: 124 # Create menus:
124 self.projectMenu = self.menuBar().addMenu('Project') 125 mb = self.menuBar()
125 self.viewMenu = self.menuBar().addMenu('View') 126 self.projectMenu = mb.addMenu('Project')
126 self.helpMenu = self.menuBar().addMenu('Help') 127 self.viewMenu = mb.addMenu('View')
128 self.helpMenu = mb.addMenu('Help')
127 129
128 # Create mdi area: 130 # Create mdi area:
129 self.mdiArea = QMdiArea() 131 self.mdiArea = QMdiArea()
130 self.setCentralWidget(self.mdiArea) 132 self.setCentralWidget(self.mdiArea)
131 133
132 # Create components: 134 # Create components:
133 self.buildOutput = BuildOutput() 135 def addComponent(name, widget):
134 self.addComponent('Build output', self.buildOutput) 136 dw = QDockWidget(name)
135 137 dw.setWidget(widget)
136 self.astViewer = AstViewer() 138 dw.setObjectName(name)
137 self.addComponent('AST viewer', self.astViewer) 139 self.addDockWidget(Qt.RightDockWidgetArea, dw)
140 self.viewMenu.addAction(dw.toggleViewAction())
141 return widget
142
143 self.buildOutput = addComponent('Build output', BuildOutput())
144 self.astViewer = addComponent('AST viewer', AstViewer())
138 self.astViewer.sigNodeSelected.connect(self.nodeSelected) 145 self.astViewer.sigNodeSelected.connect(self.nodeSelected)
139 146 self.builderrors = addComponent('Build errors', BuildErrors())
140 self.builderrors = BuildErrors()
141 self.addComponent('Build errors', self.builderrors)
142 self.builderrors.sigErrorSelected.connect(self.errorSelected) 147 self.builderrors.sigErrorSelected.connect(self.errorSelected)
143 148 self.projectview = addComponent('Project explorer', ProjectView())
144 self.projectview = ProjectView()
145 self.addComponent('Project explorer', self.projectview)
146 self.projectview.sigLoadFile.connect(self.loadFile) 149 self.projectview.sigLoadFile.connect(self.loadFile)
147 150
148 # About dialog: 151 # About dialog:
149 self.aboutDialog = AboutDialog() 152 self.aboutDialog = AboutDialog()
150 self.aboutDialog.setWindowIcon(QIcon(icon)) 153 self.aboutDialog.setWindowIcon(QIcon(icon))
151 # Create actions: 154 # Create actions:
152 self.newFileAction = QAction("New", self) 155 def addMenuEntry(name, menu, callback, shortcut=None):
153 self.projectMenu.addAction(self.newFileAction) 156 a = QAction(name, self)
154 self.newFileAction.triggered.connect(self.newProject) 157 menu.addAction(a)
155 158 a.triggered.connect(callback)
156 self.openAction = QAction("Open", self) 159 if shortcut:
157 self.openAction.triggered.connect(self.openProject) 160 a.setShortcut(shortcut)
158 self.projectMenu.addAction(self.openAction) 161
159 162 addMenuEntry("New", self.projectMenu, self.newProject)
160 self.saveAction = QAction("Save", self) 163 addMenuEntry("Open", self.projectMenu, self.openProject)
161 self.projectMenu.addAction(self.saveAction) 164 addMenuEntry("Save", self.projectMenu, self.saveProject)
162 self.saveAction.triggered.connect(self.saveProject) 165 addMenuEntry("Close", self.projectMenu, self.closeProject)
163 self.closeAction = QAction("Close", self) 166 addMenuEntry("Build", self.projectMenu, self.buildProject, shortcut=QKeySequence('F7'))
164 self.projectMenu.addAction(self.closeAction)
165 self.closeAction.triggered.connect(self.closeProject)
166 self.buildAction = QAction('Build', self)
167 self.buildAction.setShortcut(QKeySequence('F7'))
168 self.projectMenu.addAction(self.buildAction)
169 self.buildAction.triggered.connect(self.buildProject)
170 167
171 self.helpAction = QAction('Help', self) 168 self.helpAction = QAction('Help', self)
172 self.helpAction.setShortcut(QKeySequence('F1')) 169 self.helpAction.setShortcut(QKeySequence('F1'))
173 self.helpMenu.addAction(self.helpAction) 170 self.helpMenu.addAction(self.helpAction)
174 self.aboutAction = QAction('About', self) 171 addMenuEntry('About', self.helpMenu, self.aboutDialog.open)
175 self.helpMenu.addAction(self.aboutAction) 172
176 self.aboutAction.triggered.connect(self.aboutDialog.open) 173 addMenuEntry('Cascade windows', self.viewMenu, self.mdiArea.cascadeSubWindows)
177 174 addMenuEntry('Tile windows', self.viewMenu, self.mdiArea.tileSubWindows)
178
179 cascadeAction = QAction("Cascade windows", self)
180 cascadeAction.triggered.connect(self.mdiArea.cascadeSubWindows)
181 self.viewMenu.addAction(cascadeAction)
182 tileAction = QAction('Tile windows', self)
183 tileAction.triggered.connect(self.mdiArea.tileSubWindows)
184 self.viewMenu.addAction(tileAction)
185 175
186 # Load settings: 176 # Load settings:
187 self.settings = QSettings('windelsoft', 'lcfoside') 177 self.settings = QSettings('windelsoft', 'lcfoside')
188 self.loadSettings() 178 self.loadSettings()
189
190 def addComponent(self, name, widget):
191 dw = QDockWidget(name)
192 dw.setWidget(widget)
193 dw.setObjectName(name)
194 self.addDockWidget(Qt.RightDockWidgetArea, dw)
195 self.viewMenu.addAction(dw.toggleViewAction())
196 179
197 # File handling: 180 # File handling:
198 def newProject(self): 181 def newProject(self):
199 filename = QFileDialog.getSaveFileName(self, \ 182 filename = QFileDialog.getSaveFileName(self, \
200 "Select new projectfile", "", "lcfos Project files (*.lcp2)") 183 "Select new projectfile", "", "lcfos Project files (*.lcp2)")
297 # Project loading: 280 # Project loading:
298 281
299 # Build recepy: 282 # Build recepy:
300 def buildProject(self): 283 def buildProject(self):
301 """ Build project """ 284 """ Build project """
302 self.saveAll()
303 self.buildOutput.clear() 285 self.buildOutput.clear()
304 self.buildOutput.append(str(self.compiler)) 286 self.buildOutput.append(str(self.compiler))
305 mods = self.compiler.compileProject(self.project) 287 mods = self.compiler.compileProject(self.project)
306 288
307 self.builderrors.setErrorList(self.compiler.errorlist) 289 self.builderrors.setErrorList(self.compiler.errorlist)
308 self.astViewer.setAst(mods[0]) 290 self.astViewer.setAst(mods[0])
309 for err in self.compiler.errorlist: 291 for err in self.compiler.errorlist:
310 self.buildOutput.append(str(err)) 292 self.buildOutput.append(str(err))
311 self.buildOutput.append("Done!") 293 self.buildOutput.append("Done!")
312 294
313
314 if __name__ == '__main__': 295 if __name__ == '__main__':
315 app = QApplication(sys.argv) 296 app = QApplication(sys.argv)
316 ide = Ide() 297 ide = Ide()
317 ide.compiler = Compiler()
318 ide.show() 298 ide.show()
319 app.exec_() 299 app.exec_()
320 300