Add open in external editor to console

This commit is contained in:
Nathan Woodrow 2015-08-17 23:25:26 +10:00
parent 5fb52fa1ed
commit a05a970dff

View File

@ -18,9 +18,12 @@ email : lrssvtml (at) gmail (dot) com
***************************************************************************/ ***************************************************************************/
Some portions of code were taken from https://code.google.com/p/pydee/ Some portions of code were taken from https://code.google.com/p/pydee/
""" """
import os
from PyQt4.QtCore import Qt, QTimer, QSettings, QCoreApplication, QSize, QByteArray, QFileInfo, SIGNAL from PyQt4.QtCore import Qt, QTimer, QSettings, QCoreApplication, QSize, QByteArray, QFileInfo, SIGNAL, QUrl
from PyQt4.QtGui import QDockWidget, QToolBar, QToolButton, QWidget, QSplitter, QTreeWidget, QAction, QFileDialog, QCheckBox, QSizePolicy, QMenu, QGridLayout, QApplication from PyQt4.QtGui import QDockWidget, QToolBar, QToolButton, QWidget,\
QSplitter, QTreeWidget, QAction, QFileDialog, QCheckBox, QSizePolicy, QMenu, QGridLayout, QApplication, \
QDesktopServices
from PyQt4.QtGui import QVBoxLayout from PyQt4.QtGui import QVBoxLayout
from PyQt4 import pyqtconfig from PyQt4 import pyqtconfig
from qgis.utils import iface from qgis.utils import iface
@ -168,6 +171,16 @@ class PythonConsoleWidget(QWidget):
self.openFileButton.setIconVisibleInMenu(True) self.openFileButton.setIconVisibleInMenu(True)
self.openFileButton.setToolTip(openFileBt) self.openFileButton.setToolTip(openFileBt)
self.openFileButton.setText(openFileBt) self.openFileButton.setText(openFileBt)
openExtEditorBt = QCoreApplication.translate("PythonConsole", "Open in external editor")
self.openInEditorButton = QAction(self)
self.openInEditorButton.setCheckable(False)
self.openInEditorButton.setEnabled(True)
self.openInEditorButton.setIcon(QgsApplication.getThemeIcon("console/iconShowEditorConsole.png"))
self.openInEditorButton.setMenuRole(QAction.PreferencesRole)
self.openInEditorButton.setIconVisibleInMenu(True)
self.openInEditorButton.setToolTip(openExtEditorBt)
self.openInEditorButton.setText(openExtEditorBt)
## Action for Save File ## Action for Save File
saveFileBt = QCoreApplication.translate("PythonConsole", "Save") saveFileBt = QCoreApplication.translate("PythonConsole", "Save")
self.saveFileButton = QAction(self) self.saveFileButton = QAction(self)
@ -389,6 +402,7 @@ class PythonConsoleWidget(QWidget):
self.toolBarEditor.setMovable(False) self.toolBarEditor.setMovable(False)
self.toolBarEditor.setFloatable(False) self.toolBarEditor.setFloatable(False)
self.toolBarEditor.addAction(self.openFileButton) self.toolBarEditor.addAction(self.openFileButton)
self.toolBarEditor.addAction(self.openInEditorButton)
self.toolBarEditor.addSeparator() self.toolBarEditor.addSeparator()
self.toolBarEditor.addAction(self.saveFileButton) self.toolBarEditor.addAction(self.saveFileButton)
self.toolBarEditor.addAction(self.saveAsFileButton) self.toolBarEditor.addAction(self.saveAsFileButton)
@ -519,6 +533,7 @@ class PythonConsoleWidget(QWidget):
self.loadQtGuiButton.triggered.connect(self.qtGui) self.loadQtGuiButton.triggered.connect(self.qtGui)
self.runButton.triggered.connect(self.shell.entered) self.runButton.triggered.connect(self.shell.entered)
self.openFileButton.triggered.connect(self.openScriptFile) self.openFileButton.triggered.connect(self.openScriptFile)
self.openInEditorButton.triggered.connect(self.openScriptFileExtEditor)
self.saveFileButton.triggered.connect(self.saveScriptFile) self.saveFileButton.triggered.connect(self.saveScriptFile)
self.saveAsFileButton.triggered.connect(self.saveAsScriptFile) self.saveAsFileButton.triggered.connect(self.saveAsScriptFile)
self.helpButton.triggered.connect(self.openHelp) self.helpButton.triggered.connect(self.openHelp)
@ -602,6 +617,15 @@ class PythonConsoleWidget(QWidget):
def uncommentCode(self): def uncommentCode(self):
self.tabEditorWidget.currentWidget().newEditor.commentEditorCode(False) self.tabEditorWidget.currentWidget().newEditor.commentEditorCode(False)
def openScriptFileExtEditor(self):
tabWidget = self.tabEditorWidget.currentWidget()
path = tabWidget.path
import subprocess
try:
subprocess.Popen([os.environ['EDITOR'], path])
except KeyError:
QDesktopServices.openUrl(QUrl.fromLocalFile(path))
def openScriptFile(self): def openScriptFile(self):
lastDirPath = self.settings.value("pythonConsole/lastDirPath", "") lastDirPath = self.settings.value("pythonConsole/lastDirPath", "")
openFileTr = QCoreApplication.translate("PythonConsole", "Open File") openFileTr = QCoreApplication.translate("PythonConsole", "Open File")