Skip to content

Commit cba952c

Browse files
committedApr 16, 2013
[pyqgis-console] added new toolbar for side editor
1 parent 2c1f7e3 commit cba952c

File tree

6 files changed

+169
-63
lines changed

6 files changed

+169
-63
lines changed
 
Loading
Loading
Loading
Loading
Loading

‎python/console/console.py

Lines changed: 169 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -110,19 +110,96 @@ def __init__(self, parent=None):
110110
self.splitter.setChildrenCollapsible(False)
111111
self.splitter.addWidget(self.shellOut)
112112
self.splitter.addWidget(self.shell)
113-
self.splitterEditor.addWidget(self.tabEditorWidget)
114-
113+
#self.splitterEditor.addWidget(self.tabEditorWidget)
114+
115+
self.widgetEditor = QWidget(self.splitterEditor)
116+
115117
# Hide side editor on start up
116-
self.tabEditorWidget.hide()
117-
118+
self.widgetEditor.hide()
119+
118120
# List for tab script
119121
self.settings = QSettings()
120122
storedTabScripts = self.settings.value("pythonConsole/tabScripts")
121123
self.tabListScript = storedTabScripts.toList()
122-
124+
123125
sizes = self.splitter.sizes()
124126
self.splitter.setSizes(sizes)
125127

128+
##------------------Toolbar Editor-------------------------------------
129+
130+
## Action for Open File
131+
openFileBt = QCoreApplication.translate("PythonConsole", "Open file")
132+
self.openFileButton = QAction(parent)
133+
self.openFileButton.setCheckable(False)
134+
self.openFileButton.setEnabled(False)
135+
self.openFileButton.setIcon(QgsApplication.getThemeIcon("console/iconOpenConsole.png"))
136+
self.openFileButton.setMenuRole(QAction.PreferencesRole)
137+
self.openFileButton.setIconVisibleInMenu(True)
138+
self.openFileButton.setToolTip(openFileBt)
139+
self.openFileButton.setText(openFileBt)
140+
## Action for Save File
141+
saveFileBt = QCoreApplication.translate("PythonConsole", "Save")
142+
self.saveFileButton = QAction(parent)
143+
self.saveFileButton.setCheckable(False)
144+
self.saveFileButton.setEnabled(False)
145+
self.saveFileButton.setIcon(QgsApplication.getThemeIcon("console/iconSaveConsole.png"))
146+
self.saveFileButton.setMenuRole(QAction.PreferencesRole)
147+
self.saveFileButton.setIconVisibleInMenu(True)
148+
self.saveFileButton.setToolTip(saveFileBt)
149+
self.saveFileButton.setText(saveFileBt)
150+
## Action for Save File As
151+
saveAsFileBt = QCoreApplication.translate("PythonConsole", "Save As..")
152+
self.saveAsFileButton = QAction(parent)
153+
self.saveAsFileButton.setCheckable(False)
154+
self.saveAsFileButton.setEnabled(False)
155+
self.saveAsFileButton.setIcon(QgsApplication.getThemeIcon("console/iconSaveAsConsole.png"))
156+
self.saveAsFileButton.setMenuRole(QAction.PreferencesRole)
157+
self.saveAsFileButton.setIconVisibleInMenu(True)
158+
self.saveAsFileButton.setToolTip(saveAsFileBt)
159+
self.saveAsFileButton.setText(saveAsFileBt)
160+
## Action Cut
161+
cutEditorBt = QCoreApplication.translate("PythonConsole", "Cut")
162+
self.cutEditorButton = QAction(parent)
163+
self.cutEditorButton.setCheckable(False)
164+
self.cutEditorButton.setEnabled(True)
165+
self.cutEditorButton.setIcon(QgsApplication.getThemeIcon("console/iconCutEditorConsole.png"))
166+
self.cutEditorButton.setMenuRole(QAction.PreferencesRole)
167+
self.cutEditorButton.setIconVisibleInMenu(True)
168+
self.cutEditorButton.setToolTip(cutEditorBt)
169+
self.cutEditorButton.setText(cutEditorBt)
170+
## Action Copy
171+
copyEditorBt = QCoreApplication.translate("PythonConsole", "Copy")
172+
self.copyEditorButton = QAction(parent)
173+
self.copyEditorButton.setCheckable(False)
174+
self.copyEditorButton.setEnabled(True)
175+
self.copyEditorButton.setIcon(QgsApplication.getThemeIcon("console/iconCopyEditorConsole.png"))
176+
self.copyEditorButton.setMenuRole(QAction.PreferencesRole)
177+
self.copyEditorButton.setIconVisibleInMenu(True)
178+
self.copyEditorButton.setToolTip(copyEditorBt)
179+
self.copyEditorButton.setText(copyEditorBt)
180+
## Action Paste
181+
pasteEditorBt = QCoreApplication.translate("PythonConsole", "Paste")
182+
self.pasteEditorButton = QAction(parent)
183+
self.pasteEditorButton.setCheckable(False)
184+
self.pasteEditorButton.setEnabled(True)
185+
self.pasteEditorButton.setIcon(QgsApplication.getThemeIcon("console/iconPasteEditorConsole.png"))
186+
self.pasteEditorButton.setMenuRole(QAction.PreferencesRole)
187+
self.pasteEditorButton.setIconVisibleInMenu(True)
188+
self.pasteEditorButton.setToolTip(pasteEditorBt)
189+
self.pasteEditorButton.setText(pasteEditorBt)
190+
## Action Run Script (subprocess)
191+
runScriptEditorBt = QCoreApplication.translate("PythonConsole", "Run script")
192+
self.runScriptEditorButton = QAction(parent)
193+
self.runScriptEditorButton.setCheckable(False)
194+
self.runScriptEditorButton.setEnabled(True)
195+
self.runScriptEditorButton.setIcon(QgsApplication.getThemeIcon("console/iconRunScriptConsole.png"))
196+
self.runScriptEditorButton.setMenuRole(QAction.PreferencesRole)
197+
self.runScriptEditorButton.setIconVisibleInMenu(True)
198+
self.runScriptEditorButton.setToolTip(runScriptEditorBt)
199+
self.runScriptEditorButton.setText(runScriptEditorBt)
200+
201+
##----------------Toolbar Console-------------------------------------
202+
126203
## Action Show Editor
127204
showEditor = QCoreApplication.translate("PythonConsole", "Show editor")
128205
self.showEditorButton = QAction(parent)
@@ -165,15 +242,15 @@ def __init__(self, parent=None):
165242
self.actionClass.setToolTip(actionClassBt)
166243
self.actionClass.setText(actionClassBt)
167244
## Action menu Open/Save script
168-
actionScriptBt = QCoreApplication.translate("PythonConsole", "Manage Script")
169-
self.actionScript = QAction(parent)
170-
self.actionScript.setCheckable(False)
171-
self.actionScript.setEnabled(True)
172-
self.actionScript.setIcon(QgsApplication.getThemeIcon("console/iconScriptConsole.png"))
173-
self.actionScript.setMenuRole(QAction.PreferencesRole)
174-
self.actionScript.setIconVisibleInMenu(True)
175-
self.actionScript.setToolTip(actionScriptBt)
176-
self.actionScript.setText(actionScriptBt)
245+
# actionScriptBt = QCoreApplication.translate("PythonConsole", "Manage Script")
246+
# self.actionScript = QAction(parent)
247+
# self.actionScript.setCheckable(False)
248+
# self.actionScript.setEnabled(True)
249+
# self.actionScript.setIcon(QgsApplication.getThemeIcon("console/iconScriptConsole.png"))
250+
# self.actionScript.setMenuRole(QAction.PreferencesRole)
251+
# self.actionScript.setIconVisibleInMenu(True)
252+
# self.actionScript.setToolTip(actionScriptBt)
253+
# self.actionScript.setText(actionScriptBt)
177254
## Import Sextante class
178255
loadSextanteBt = QCoreApplication.translate("PythonConsole", "Import Sextante class")
179256
self.loadSextanteButton = QAction(parent)
@@ -204,36 +281,6 @@ def __init__(self, parent=None):
204281
self.loadQtGuiButton.setIconVisibleInMenu(True)
205282
self.loadQtGuiButton.setToolTip(loadQtGuiBt)
206283
self.loadQtGuiButton.setText(loadQtGuiBt)
207-
## Action for Open File
208-
openFileBt = QCoreApplication.translate("PythonConsole", "Open file")
209-
self.openFileButton = QAction(parent)
210-
self.openFileButton.setCheckable(False)
211-
self.openFileButton.setEnabled(False)
212-
self.openFileButton.setIcon(QgsApplication.getThemeIcon("console/iconOpenConsole.png"))
213-
self.openFileButton.setMenuRole(QAction.PreferencesRole)
214-
self.openFileButton.setIconVisibleInMenu(True)
215-
self.openFileButton.setToolTip(openFileBt)
216-
self.openFileButton.setText(openFileBt)
217-
## Action for Save File
218-
saveFileBt = QCoreApplication.translate("PythonConsole", "Save")
219-
self.saveFileButton = QAction(parent)
220-
self.saveFileButton.setCheckable(False)
221-
self.saveFileButton.setEnabled(False)
222-
self.saveFileButton.setIcon(QgsApplication.getThemeIcon("console/iconSaveConsole.png"))
223-
self.saveFileButton.setMenuRole(QAction.PreferencesRole)
224-
self.saveFileButton.setIconVisibleInMenu(True)
225-
self.saveFileButton.setToolTip(saveFileBt)
226-
self.saveFileButton.setText(saveFileBt)
227-
## Action for Save File As
228-
saveAsFileBt = QCoreApplication.translate("PythonConsole", "Save As..")
229-
self.saveAsFileButton = QAction(parent)
230-
self.saveAsFileButton.setCheckable(False)
231-
self.saveAsFileButton.setEnabled(False)
232-
#self.saveAsFileButton.setIcon(QgsApplication.getThemeIcon("console/iconSaveConsole.png"))
233-
self.saveAsFileButton.setMenuRole(QAction.PreferencesRole)
234-
self.saveAsFileButton.setIconVisibleInMenu(True)
235-
self.saveAsFileButton.setToolTip(saveAsFileBt)
236-
self.saveAsFileButton.setText(saveAsFileBt)
237284
## Action for Run script
238285
runBt = QCoreApplication.translate("PythonConsole", "Run command")
239286
self.runButton = QAction(parent)
@@ -269,39 +316,70 @@ def __init__(self, parent=None):
269316
self.toolBar.addAction(self.runButton)
270317
self.toolBar.addSeparator()
271318
self.toolBar.addAction(self.showEditorButton)
272-
self.toolBar.addAction(self.actionScript)
319+
# self.toolBar.addAction(self.actionScript)
273320
self.toolBar.addSeparator()
274321
self.toolBar.addAction(self.optionsButton)
275322
self.toolBar.addAction(self.helpButton)
276323

324+
self.toolBarEditor = QToolBar()
325+
self.toolBarEditor.setStyleSheet('background-color: rgb(200, 200, 200);\
326+
border-right: 1px solid rgb(155, 155, 155);')
327+
self.toolBarEditor.setEnabled(True)
328+
self.toolBarEditor.setFocusPolicy(Qt.NoFocus)
329+
self.toolBarEditor.setContextMenuPolicy(Qt.DefaultContextMenu)
330+
self.toolBarEditor.setLayoutDirection(Qt.LeftToRight)
331+
self.toolBarEditor.setIconSize(QSize(18, 18))
332+
self.toolBarEditor.setOrientation(Qt.Vertical)
333+
self.toolBarEditor.setMovable(True)
334+
self.toolBarEditor.setFloatable(True)
335+
self.toolBarEditor.addAction(self.openFileButton)
336+
self.toolBarEditor.addSeparator()
337+
self.toolBarEditor.addAction(self.saveFileButton)
338+
self.toolBarEditor.addAction(self.saveAsFileButton)
339+
self.toolBarEditor.addSeparator()
340+
self.toolBarEditor.addAction(self.cutEditorButton)
341+
self.toolBarEditor.addAction(self.copyEditorButton)
342+
self.toolBarEditor.addAction(self.pasteEditorButton)
343+
self.toolBarEditor.addSeparator()
344+
self.toolBarEditor.addAction(self.runScriptEditorButton)
345+
277346
## Menu Import Class
278-
self.classMenu = QMenu(self)
279-
self.classMenu.addAction(self.loadSextanteButton)
280-
self.classMenu.addAction(self.loadQtCoreButton)
281-
self.classMenu.addAction(self.loadQtGuiButton)
282-
cM = self.toolBar.widgetForAction(self.actionClass)
283-
cM.setMenu(self.classMenu)
284-
cM.setPopupMode(QToolButton.InstantPopup)
285-
## Menu Manage Script
286-
self.scriptMenu = QMenu(self)
287-
self.scriptMenu.addAction(self.openFileButton)
288-
self.scriptMenu.addAction(self.saveFileButton)
289-
self.scriptMenu.addAction(self.saveAsFileButton)
290-
sM = self.toolBar.widgetForAction(self.actionScript)
291-
sM.setMenu(self.scriptMenu)
292-
sM.setPopupMode(QToolButton.InstantPopup)
347+
# self.classMenu = QMenu(self)
348+
# self.classMenu.addAction(self.loadSextanteButton)
349+
# self.classMenu.addAction(self.loadQtCoreButton)
350+
# self.classMenu.addAction(self.loadQtGuiButton)
351+
# cM = self.toolBar.widgetForAction(self.actionClass)
352+
# cM.setMenu(self.classMenu)
353+
# cM.setPopupMode(QToolButton.InstantPopup)
354+
# ## Menu Manage Script
355+
# self.scriptMenu = QMenu(self)
356+
# self.scriptMenu.addAction(self.openFileButton)
357+
# self.scriptMenu.addAction(self.saveFileButton)
358+
# self.scriptMenu.addAction(self.saveAsFileButton)
359+
# sM = self.toolBar.widgetForAction(self.actionScript)
360+
# sM.setMenu(self.scriptMenu)
361+
# sM.setPopupMode(QToolButton.InstantPopup)
293362

294363
self.widgetButton = QWidget()
295364
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
296365
sizePolicy.setHorizontalStretch(0)
297366
sizePolicy.setVerticalStretch(0)
298367
sizePolicy.setHeightForWidth(self.widgetButton.sizePolicy().hasHeightForWidth())
299368
self.widgetButton.setSizePolicy(sizePolicy)
369+
370+
self.widgetButtonEditor = QWidget(self.splitterEditor)
371+
sizePolicy = QSizePolicy(QSizePolicy.Fixed, QSizePolicy.Preferred)
372+
sizePolicy.setHorizontalStretch(0)
373+
sizePolicy.setVerticalStretch(0)
374+
sizePolicy.setHeightForWidth(self.widgetButtonEditor.sizePolicy().hasHeightForWidth())
375+
self.widgetButtonEditor.setSizePolicy(sizePolicy)
376+
300377
sizePolicy = QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
301378
sizePolicy.setHorizontalStretch(0)
302379
sizePolicy.setVerticalStretch(0)
303380
sizePolicy.setHeightForWidth(self.shellOut.sizePolicy().hasHeightForWidth())
304381
self.shellOut.setSizePolicy(sizePolicy)
382+
305383
self.shellOut.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
306384
self.shell.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
307385

@@ -311,18 +389,34 @@ def __init__(self, parent=None):
311389
self.mainLayout.setMargin(0)
312390
self.mainLayout.setSpacing(0)
313391
self.mainLayout.addWidget(self.widgetButton, 0, 0, 1, 1)
314-
self.mainLayout.addWidget(self.splitterEditor, 0, 1, 1, 1)
392+
self.mainLayout.addWidget(self.widgetButtonEditor, 0, 1, 1, 1)
393+
self.mainLayout.addWidget(self.splitterEditor, 0, 2, 1, 1)
394+
395+
self.layoutEditor = QGridLayout(self.widgetEditor)
396+
self.layoutEditor.setMargin(0)
397+
self.layoutEditor.setSpacing(0)
398+
self.layoutEditor.addWidget(self.widgetButtonEditor, 0, 0, 1, 1)
399+
self.layoutEditor.addWidget(self.tabEditorWidget, 0, 1, 1, 1)
400+
315401
self.toolBarLayout = QGridLayout(self.widgetButton)
316402
self.toolBarLayout.setMargin(0)
317403
self.toolBarLayout.setSpacing(0)
318404
self.toolBarLayout.addWidget(self.toolBar)
405+
self.toolBarEditorLayout = QGridLayout(self.widgetButtonEditor)
406+
self.toolBarEditorLayout.setMargin(0)
407+
self.toolBarEditorLayout.setSpacing(0)
408+
self.toolBarEditorLayout.addWidget(self.toolBarEditor)
319409

320410
##------------ Add first Tab in Editor -------------------------------
321411

322412
#self.tabEditorWidget.newTabEditor(tabName='first', filename=None)
323413

324414
##------------ Signal -------------------------------
325415

416+
self.runScriptEditorButton.triggered.connect(self.runScriptEditor)
417+
self.cutEditorButton.triggered.connect(self.cutEditor)
418+
self.copyEditorButton.triggered.connect(self.copyEditor)
419+
self.pasteEditorButton.triggered.connect(self.pasteEditor)
326420
self.showEditorButton.toggled.connect(self.toggleEditor)
327421
self.clearButton.triggered.connect(self.shellOut.clearConsole)
328422
self.optionsButton.triggered.connect(self.openSettings)
@@ -347,10 +441,22 @@ def qtGui(self):
347441
self.shell.commandConsole('qtGui')
348442

349443
def toggleEditor(self, checked):
350-
self.tabEditorWidget.show() if checked else self.tabEditorWidget.hide()
444+
self.widgetEditor.show() if checked else self.widgetEditor.hide()
351445
self.openFileButton.setEnabled(checked)
352446
self.saveFileButton.setEnabled(checked)
353447
self.saveAsFileButton.setEnabled(checked)
448+
449+
def pasteEditor(self):
450+
self.tabEditorWidget.currentWidget().newEditor.paste()
451+
452+
def cutEditor(self):
453+
self.tabEditorWidget.currentWidget().newEditor.cut()
454+
455+
def copyEditor(self):
456+
self.tabEditorWidget.currentWidget().newEditor.copy()
457+
458+
def runScriptEditor(self):
459+
self.tabEditorWidget.currentWidget().newEditor.runScriptCode()
354460

355461
# def openScriptFile(self):
356462
# settings = QSettings()
@@ -427,7 +533,7 @@ def saveAsScriptFile(self):
427533
return
428534
filename = QFileDialog.getSaveFileName(self,
429535
"Save File As",
430-
tabWidget.path, "Script file (*.py)")
536+
"*.py", "Script file (*.py)")
431537
if not filename.isEmpty():
432538
self.tabListScript.remove(tabWidget.path)
433539
tabWidget.path = filename

0 commit comments

Comments
 (0)
Please sign in to comment.