Skip to content

Commit a05a970

Browse files
committedAug 17, 2015
Add open in external editor to console
1 parent 5fb52fa commit a05a970

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed
 

‎python/console/console.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@
1818
***************************************************************************/
1919
Some portions of code were taken from https://code.google.com/p/pydee/
2020
"""
21+
import os
2122

22-
from PyQt4.QtCore import Qt, QTimer, QSettings, QCoreApplication, QSize, QByteArray, QFileInfo, SIGNAL
23-
from PyQt4.QtGui import QDockWidget, QToolBar, QToolButton, QWidget, QSplitter, QTreeWidget, QAction, QFileDialog, QCheckBox, QSizePolicy, QMenu, QGridLayout, QApplication
23+
from PyQt4.QtCore import Qt, QTimer, QSettings, QCoreApplication, QSize, QByteArray, QFileInfo, SIGNAL, QUrl
24+
from PyQt4.QtGui import QDockWidget, QToolBar, QToolButton, QWidget,\
25+
QSplitter, QTreeWidget, QAction, QFileDialog, QCheckBox, QSizePolicy, QMenu, QGridLayout, QApplication, \
26+
QDesktopServices
2427
from PyQt4.QtGui import QVBoxLayout
2528
from PyQt4 import pyqtconfig
2629
from qgis.utils import iface
@@ -168,6 +171,16 @@ def __init__(self, parent=None):
168171
self.openFileButton.setIconVisibleInMenu(True)
169172
self.openFileButton.setToolTip(openFileBt)
170173
self.openFileButton.setText(openFileBt)
174+
175+
openExtEditorBt = QCoreApplication.translate("PythonConsole", "Open in external editor")
176+
self.openInEditorButton = QAction(self)
177+
self.openInEditorButton.setCheckable(False)
178+
self.openInEditorButton.setEnabled(True)
179+
self.openInEditorButton.setIcon(QgsApplication.getThemeIcon("console/iconShowEditorConsole.png"))
180+
self.openInEditorButton.setMenuRole(QAction.PreferencesRole)
181+
self.openInEditorButton.setIconVisibleInMenu(True)
182+
self.openInEditorButton.setToolTip(openExtEditorBt)
183+
self.openInEditorButton.setText(openExtEditorBt)
171184
## Action for Save File
172185
saveFileBt = QCoreApplication.translate("PythonConsole", "Save")
173186
self.saveFileButton = QAction(self)
@@ -389,6 +402,7 @@ def __init__(self, parent=None):
389402
self.toolBarEditor.setMovable(False)
390403
self.toolBarEditor.setFloatable(False)
391404
self.toolBarEditor.addAction(self.openFileButton)
405+
self.toolBarEditor.addAction(self.openInEditorButton)
392406
self.toolBarEditor.addSeparator()
393407
self.toolBarEditor.addAction(self.saveFileButton)
394408
self.toolBarEditor.addAction(self.saveAsFileButton)
@@ -519,6 +533,7 @@ def __init__(self, parent=None):
519533
self.loadQtGuiButton.triggered.connect(self.qtGui)
520534
self.runButton.triggered.connect(self.shell.entered)
521535
self.openFileButton.triggered.connect(self.openScriptFile)
536+
self.openInEditorButton.triggered.connect(self.openScriptFileExtEditor)
522537
self.saveFileButton.triggered.connect(self.saveScriptFile)
523538
self.saveAsFileButton.triggered.connect(self.saveAsScriptFile)
524539
self.helpButton.triggered.connect(self.openHelp)
@@ -602,6 +617,15 @@ def commentCode(self):
602617
def uncommentCode(self):
603618
self.tabEditorWidget.currentWidget().newEditor.commentEditorCode(False)
604619

620+
def openScriptFileExtEditor(self):
621+
tabWidget = self.tabEditorWidget.currentWidget()
622+
path = tabWidget.path
623+
import subprocess
624+
try:
625+
subprocess.Popen([os.environ['EDITOR'], path])
626+
except KeyError:
627+
QDesktopServices.openUrl(QUrl.fromLocalFile(path))
628+
605629
def openScriptFile(self):
606630
lastDirPath = self.settings.value("pythonConsole/lastDirPath", "")
607631
openFileTr = QCoreApplication.translate("PythonConsole", "Open File")

0 commit comments

Comments
 (0)
Please sign in to comment.