Mercurial > lcfOS
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) |