comparison python/apps/ide.py @ 67:99bf4f7d47f4

Changed project storage
author windel
date Fri, 12 Oct 2012 16:11:31 +0200
parents bcd55a341512
children 654c5ac4f2c5
comparison
equal deleted inserted replaced
66:bcd55a341512 67:99bf4f7d47f4
66 root = model.invisibleRootItem() 66 root = model.invisibleRootItem()
67 pitem = QStandardItem(self.projectIcon, project.name) 67 pitem = QStandardItem(self.projectIcon, project.name)
68 pitem.setEditable(False) 68 pitem.setEditable(False)
69 pitem.setData(project) 69 pitem.setData(project)
70 root.appendRow(pitem) 70 root.appendRow(pitem)
71 for f in self.project.files: 71 for el in self.project.elements:
72 fitem = QStandardItem(f) 72 fitem = QStandardItem(el)
73 pitem.appendRow(fitem) 73 pitem.appendRow(fitem)
74 fitem.setEditable(False) 74 fitem.setEditable(False)
75 fitem.setData(f) 75 fitem.setData(el)
76 self.treeview.setModel(model) 76 self.treeview.setModel(model)
77 self.treeview.expandAll() 77 self.treeview.expandAll()
78 def contextMenu(self, pos): 78 def contextMenu(self, pos):
79 idx = self.treeview.indexAt(pos) 79 idx = self.treeview.indexAt(pos)
80 if not idx.isValid(): 80 if not idx.isValid():
119 icon = QPixmap() 119 icon = QPixmap()
120 icon.loadFromData(lcfospng) 120 icon.loadFromData(lcfospng)
121 self.setWindowIcon(QIcon(icon)) 121 self.setWindowIcon(QIcon(icon))
122 122
123 # Create menus: 123 # Create menus:
124 self.fileMenu = self.menuBar().addMenu('File') 124 self.projectMenu = self.menuBar().addMenu('Project')
125 self.viewMenu = self.menuBar().addMenu('View') 125 self.viewMenu = self.menuBar().addMenu('View')
126 self.projectMenu = self.menuBar().addMenu('Project')
127 self.helpMenu = self.menuBar().addMenu('Help') 126 self.helpMenu = self.menuBar().addMenu('Help')
128 127
129 # Create mdi area: 128 # Create mdi area:
130 self.mdiArea = QMdiArea() 129 self.mdiArea = QMdiArea()
131 self.setCentralWidget(self.mdiArea) 130 self.setCentralWidget(self.mdiArea)
141 self.builderrors = BuildErrors() 140 self.builderrors = BuildErrors()
142 self.addComponent('Build errors', self.builderrors) 141 self.addComponent('Build errors', self.builderrors)
143 self.builderrors.sigErrorSelected.connect(self.errorSelected) 142 self.builderrors.sigErrorSelected.connect(self.errorSelected)
144 143
145 self.projectview = ProjectView() 144 self.projectview = ProjectView()
146 self.addComponent('Project', self.projectview) 145 self.addComponent('Project explorer', self.projectview)
147 self.projectview.sigLoadFile.connect(self.loadFile) 146 self.projectview.sigLoadFile.connect(self.loadFile)
148 147
149 # About dialog: 148 # About dialog:
150 self.aboutDialog = AboutDialog() 149 self.aboutDialog = AboutDialog()
151 self.aboutDialog.setWindowIcon(QIcon(icon)) 150 self.aboutDialog.setWindowIcon(QIcon(icon))
152 # Create actions: 151 # Create actions:
153 self.buildAction = QAction('Build!', self) 152 self.newFileAction = QAction("New", self)
153 self.projectMenu.addAction(self.newFileAction)
154 self.newFileAction.triggered.connect(self.newProject)
155
156 self.openAction = QAction("Open", self)
157 self.openAction.triggered.connect(self.openProject)
158 self.projectMenu.addAction(self.openAction)
159
160 self.saveAction = QAction("Save", self)
161 self.projectMenu.addAction(self.saveAction)
162 self.saveAction.triggered.connect(self.saveProject)
163 self.closeAction = QAction("Close", self)
164 self.projectMenu.addAction(self.closeAction)
165 self.closeAction.triggered.connect(self.closeProject)
166 self.buildAction = QAction('Build', self)
154 self.buildAction.setShortcut(QKeySequence('F7')) 167 self.buildAction.setShortcut(QKeySequence('F7'))
155 self.projectMenu.addAction(self.buildAction) 168 self.projectMenu.addAction(self.buildAction)
156 self.buildAction.triggered.connect(self.buildFile) 169 self.buildAction.triggered.connect(self.buildProject)
157 self.openProjectAction = QAction("Open project", self) 170
158 self.openProjectAction.triggered.connect(self.openProject)
159 self.projectMenu.addAction(self.openProjectAction)
160 self.helpAction = QAction('Help', self) 171 self.helpAction = QAction('Help', self)
161 self.helpAction.setShortcut(QKeySequence('F1')) 172 self.helpAction.setShortcut(QKeySequence('F1'))
162 self.helpMenu.addAction(self.helpAction) 173 self.helpMenu.addAction(self.helpAction)
163 self.aboutAction = QAction('About', self) 174 self.aboutAction = QAction('About', self)
164 self.helpMenu.addAction(self.aboutAction) 175 self.helpMenu.addAction(self.aboutAction)
165 self.aboutAction.triggered.connect(self.aboutDialog.open) 176 self.aboutAction.triggered.connect(self.aboutDialog.open)
166 177
167 self.newFileAction = QAction("New File", self)
168 self.fileMenu.addAction(self.newFileAction)
169 self.newFileAction.triggered.connect(self.newFile)
170 self.saveFileAction = QAction("Save File", self)
171 self.fileMenu.addAction(self.saveFileAction)
172 self.saveFileAction.triggered.connect(self.saveFile)
173 self.closeFileAction = QAction("Close File", self)
174 self.fileMenu.addAction(self.closeFileAction)
175 self.closeFileAction.triggered.connect(self.closeFile)
176 178
177 cascadeAction = QAction("Cascade windows", self) 179 cascadeAction = QAction("Cascade windows", self)
178 cascadeAction.triggered.connect(self.mdiArea.cascadeSubWindows) 180 cascadeAction.triggered.connect(self.mdiArea.cascadeSubWindows)
179 self.viewMenu.addAction(cascadeAction) 181 self.viewMenu.addAction(cascadeAction)
180 tileAction = QAction('Tile windows', self) 182 tileAction = QAction('Tile windows', self)
191 dw.setObjectName(name) 193 dw.setObjectName(name)
192 self.addDockWidget(Qt.RightDockWidgetArea, dw) 194 self.addDockWidget(Qt.RightDockWidgetArea, dw)
193 self.viewMenu.addAction(dw.toggleViewAction()) 195 self.viewMenu.addAction(dw.toggleViewAction())
194 196
195 # File handling: 197 # File handling:
196 def newFile(self): 198 def newProject(self):
197 ce = CodeEdit() 199 filename = QFileDialog.getSaveFileName(self, \
198 w = self.mdiArea.addSubWindow(ce) 200 "Select new projectfile", "", "lcfos Project files (*.lcp2)")
199 ce.show() 201 if filename:
200 202 self.project = Project()
201 def saveFile(self): 203 self.project.filename = filename
202 ac = self.activeMdiChild() 204 self.project.save()
203 if ac: 205
204 ac.saveFile() 206 def saveProject(self):
205 207 self.project.save()
206 def saveAll(self): 208
207 pass 209 def closeProject(self):
208
209 def openFile(self):
210 # TODO
211 pass
212
213 def closeFile(self):
214 ac = self.activeMdiChild() 210 ac = self.activeMdiChild()
215 if ac: 211 if ac:
216 self.mdiArea.removeSubWindow(ac) 212 self.mdiArea.removeSubWindow(ac)
217 213
218 def loadFile(self, filename): 214 def loadFile(self, filename):
227 source = self.project.loadProjectFile(filename) 223 source = self.project.loadProjectFile(filename)
228 ce.setSource(source) 224 ce.setSource(source)
229 self.mdiArea.addSubWindow(ce) 225 self.mdiArea.addSubWindow(ce)
230 ce.show() 226 ce.show()
231 return ce 227 return ce
228
229 def loadProject(self, filename):
230 self.project = Project(filename)
231 self.projectview.setProject(self.project)
232
233 def openProject(self):
234 filename = QFileDialog.getOpenFileName(self, \
235 "Choose project file", "", "lcfos Project files (*.lcp2)")
236 if filename:
237 self.loadProject(filename)
232 238
233 # MDI: 239 # MDI:
234 def activeMdiChild(self): 240 def activeMdiChild(self):
235 aw = self.mdiArea.activeSubWindow() 241 aw = self.mdiArea.activeSubWindow()
236 if aw: 242 if aw:
258 self.restoreState(self.settings.value('mainwindowstate')) 264 self.restoreState(self.settings.value('mainwindowstate'))
259 if self.settings.contains('mainwindowgeometry'): 265 if self.settings.contains('mainwindowgeometry'):
260 self.restoreGeometry(self.settings.value('mainwindowgeometry')) 266 self.restoreGeometry(self.settings.value('mainwindowgeometry'))
261 if self.settings.contains('openedproject'): 267 if self.settings.contains('openedproject'):
262 projectfile = self.settings.value('openedproject') 268 projectfile = self.settings.value('openedproject')
263 self.loadProject(projectfile) 269 #self.loadProject(projectfile)
264 270
265 def closeEvent(self, ev): 271 def closeEvent(self, ev):
266 self.settings.setValue('mainwindowstate', self.saveState()) 272 self.settings.setValue('mainwindowstate', self.saveState())
267 self.settings.setValue('mainwindowgeometry', self.saveGeometry()) 273 self.settings.setValue('mainwindowgeometry', self.saveGeometry())
268 if self.project: 274 if self.project:
287 if not ce: 293 if not ce:
288 return 294 return
289 ce.highlightErrorLocation(row, col) 295 ce.highlightErrorLocation(row, col)
290 296
291 # Project loading: 297 # Project loading:
292 def loadProject(self, filename):
293 self.project = Project(filename)
294 self.projectview.setProject(self.project)
295
296 def openProject(self):
297 filename = QFileDialog.getOpenFileName(self, \
298 "Choose project file", "", "lcfos Project files (*.lcp)")
299 if filename:
300 self.loadProject(filename)
301 298
302 # Build recepy: 299 # Build recepy:
303 def buildFile(self): 300 def buildProject(self):
304 """ Build project """ 301 """ Build project """
305 self.saveAll() 302 self.saveAll()
306 self.buildOutput.clear() 303 self.buildOutput.clear()
307 self.buildOutput.append(str(self.compiler)) 304 self.buildOutput.append(str(self.compiler))
308 mods = self.compiler.compileProject(self.project) 305 mods = self.compiler.compileProject(self.project)