mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-16 00:03:12 -04:00
[FEATURE] - Sharing snippets code from PyQGIS console
- now you can share snippets code by codepad.org - added much more actions in contextual menu
This commit is contained in:
parent
744314d153
commit
b1d7a155bc
BIN
images/console/iconCodepadConsole.png
Normal file
BIN
images/console/iconCodepadConsole.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 919 B |
@ -480,6 +480,7 @@
|
|||||||
<file>console/iconQtGuiConsole.png</file>
|
<file>console/iconQtGuiConsole.png</file>
|
||||||
<file>console/iconRunConsole.png</file>
|
<file>console/iconRunConsole.png</file>
|
||||||
<file>console/iconAboutConsole.png</file>
|
<file>console/iconAboutConsole.png</file>
|
||||||
|
<file>console/iconCodepadConsole.png</file>
|
||||||
<file>flags/sr_Cyrl.png</file>
|
<file>flags/sr_Cyrl.png</file>
|
||||||
<file>flags/sr_Latn.png</file>
|
<file>flags/sr_Latn.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
|
@ -24,7 +24,6 @@ from PyQt4.QtGui import *
|
|||||||
from PyQt4.Qsci import (QsciScintilla,
|
from PyQt4.Qsci import (QsciScintilla,
|
||||||
QsciScintillaBase,
|
QsciScintillaBase,
|
||||||
QsciLexerPython)
|
QsciLexerPython)
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
class writeOut:
|
class writeOut:
|
||||||
@ -107,15 +106,19 @@ class EditorOutput(QsciScintilla):
|
|||||||
#self.setEdgeMode(QsciScintilla.EdgeLine)
|
#self.setEdgeMode(QsciScintilla.EdgeLine)
|
||||||
#self.setEdgeColumn(80)
|
#self.setEdgeColumn(80)
|
||||||
#self.setEdgeColor(QColor("#FF0000"))
|
#self.setEdgeColor(QColor("#FF0000"))
|
||||||
|
|
||||||
self.setWrapMode(QsciScintilla.WrapCharacter)
|
self.setWrapMode(QsciScintilla.WrapCharacter)
|
||||||
self.SendScintilla(QsciScintilla.SCI_SETHSCROLLBAR, 0)
|
self.SendScintilla(QsciScintilla.SCI_SETHSCROLLBAR, 0)
|
||||||
|
|
||||||
self.runShortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_E), self)
|
self.runShortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_E), self)
|
||||||
self.runShortcut.activated.connect(self.enteredSelected)
|
self.runShortcut.activated.connect(self.enteredSelected)
|
||||||
# Reimplemeted copy action to prevent paste prompt (>>>,...) in command view
|
# Reimplemeted copy action to prevent paste prompt (>>>,...) in command view
|
||||||
self.copyShortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_C), self)
|
self.copyShortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_C), self)
|
||||||
self.copyShortcut.activated.connect(self.copy)
|
self.copyShortcut.activated.connect(self.copy)
|
||||||
|
self.selectAllShortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_A), self)
|
||||||
|
self.selectAllShortcut.activated.connect(self.selectAll)
|
||||||
|
self.pastebinShortcut = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_V), self)
|
||||||
|
self.pastebinShortcut.activated.connect(self.pastebin)
|
||||||
|
|
||||||
def refreshLexerProperties(self):
|
def refreshLexerProperties(self):
|
||||||
self.setLexers()
|
self.setLexers()
|
||||||
@ -153,14 +156,25 @@ class EditorOutput(QsciScintilla):
|
|||||||
def contextMenuEvent(self, e):
|
def contextMenuEvent(self, e):
|
||||||
menu = QMenu(self)
|
menu = QMenu(self)
|
||||||
iconRun = QIcon(":/images/console/iconRunConsole.png")
|
iconRun = QIcon(":/images/console/iconRunConsole.png")
|
||||||
|
iconPastebin = QIcon(":/images/console/iconCodepadConsole.png")
|
||||||
|
iconClear = QIcon(":/images/console/iconClearConsole.png")
|
||||||
runAction = menu.addAction(iconRun, "Enter Selected", self.enteredSelected, QKeySequence(Qt.CTRL + Qt.Key_E))
|
runAction = menu.addAction(iconRun, "Enter Selected", self.enteredSelected, QKeySequence(Qt.CTRL + Qt.Key_E))
|
||||||
|
clearAction = menu.addAction(iconClear, "Clear console", self.clearConsole)
|
||||||
menu.addSeparator()
|
menu.addSeparator()
|
||||||
copyAction = menu.addAction("Copy", self.copy, QKeySequence.Copy)
|
copyAction = menu.addAction("Copy", self.copy, QKeySequence.Copy)
|
||||||
|
pastebinAction = menu.addAction(iconPastebin, "Share on codepad", self.pastebin, QKeySequence.Paste)
|
||||||
|
menu.addSeparator()
|
||||||
|
selectAllAction = menu.addAction("Select All", self.selectAll, QKeySequence.SelectAll)
|
||||||
runAction.setEnabled(False)
|
runAction.setEnabled(False)
|
||||||
copyAction.setEnabled(False)
|
copyAction.setEnabled(False)
|
||||||
|
pastebinAction.setEnabled(False)
|
||||||
|
selectAllAction.setEnabled(False)
|
||||||
if self.hasSelectedText():
|
if self.hasSelectedText():
|
||||||
runAction.setEnabled(True)
|
runAction.setEnabled(True)
|
||||||
copyAction.setEnabled(True)
|
copyAction.setEnabled(True)
|
||||||
|
pastebinAction.setEnabled(True)
|
||||||
|
if not self.text() == '':
|
||||||
|
selectAllAction.setEnabled(True)
|
||||||
action = menu.exec_(self.mapToGlobal(e.pos()))
|
action = menu.exec_(self.mapToGlobal(e.pos()))
|
||||||
|
|
||||||
def copy(self):
|
def copy(self):
|
||||||
@ -188,3 +202,35 @@ class EditorOutput(QsciScintilla):
|
|||||||
else:
|
else:
|
||||||
# possible shortcut key sequence, accept it
|
# possible shortcut key sequence, accept it
|
||||||
e.accept()
|
e.accept()
|
||||||
|
|
||||||
|
def pastebin(self):
|
||||||
|
import urllib2, urllib
|
||||||
|
#listText = self.getTextFromEditor()
|
||||||
|
listText = self.selectedText().split('\n')
|
||||||
|
getCmd = []
|
||||||
|
for s in listText:
|
||||||
|
if s[0:3] in (">>>", "..."):
|
||||||
|
if not s[4] == "_":
|
||||||
|
s.replace(">>> ", "").replace("... ", "")
|
||||||
|
getCmd.append(unicode(s))
|
||||||
|
pasteText= u"\n".join(getCmd)
|
||||||
|
url = 'http://codepad.org'
|
||||||
|
values = {'lang' : 'Python',
|
||||||
|
'code' : pasteText,
|
||||||
|
'submit':'Submit'}
|
||||||
|
try:
|
||||||
|
response = urllib2.urlopen(url, urllib.urlencode(values))
|
||||||
|
url = response.read()
|
||||||
|
for href in url.split("</a>"):
|
||||||
|
if "Link:" in href:
|
||||||
|
ind=href.index('Link:')
|
||||||
|
found = href[ind+5:]
|
||||||
|
for i in found.split('">'):
|
||||||
|
if '<a href=' in i:
|
||||||
|
link = i.replace('<a href="',"").strip()
|
||||||
|
if link:
|
||||||
|
QApplication.clipboard().setText(link)
|
||||||
|
print "## URL copied to clipboard ##"
|
||||||
|
except urllib2.URLError, e:
|
||||||
|
print "## Connection error ##"
|
||||||
|
print "## " + str(e.args) + " ##"
|
||||||
|
@ -412,8 +412,11 @@ class PythonEdit(QsciScintilla, code.InteractiveInterpreter):
|
|||||||
copyAction = menu.addAction("Copy", self.copy, QKeySequence.Copy)
|
copyAction = menu.addAction("Copy", self.copy, QKeySequence.Copy)
|
||||||
pasteAction = menu.addAction("Paste", self.paste, QKeySequence.Paste)
|
pasteAction = menu.addAction("Paste", self.paste, QKeySequence.Paste)
|
||||||
copyAction.setEnabled(False)
|
copyAction.setEnabled(False)
|
||||||
|
pasteAction.setEnabled(False)
|
||||||
if self.hasSelectedText():
|
if self.hasSelectedText():
|
||||||
copyAction.setEnabled(True)
|
copyAction.setEnabled(True)
|
||||||
|
if QApplication.clipboard().text() != "":
|
||||||
|
pasteAction.setEnabled(True)
|
||||||
action = menu.exec_(self.mapToGlobal(e.pos()))
|
action = menu.exec_(self.mapToGlobal(e.pos()))
|
||||||
|
|
||||||
def mousePressEvent(self, e):
|
def mousePressEvent(self, e):
|
||||||
@ -509,7 +512,6 @@ class PythonEdit(QsciScintilla, code.InteractiveInterpreter):
|
|||||||
selCmdLenght = self.text(line).length()
|
selCmdLenght = self.text(line).length()
|
||||||
self.setSelection(line, 0, line, selCmdLenght)
|
self.setSelection(line, 0, line, selCmdLenght)
|
||||||
self.removeSelectedText()
|
self.removeSelectedText()
|
||||||
#self.SendScintilla(QsciScintilla.SCI_NEWLINE)
|
|
||||||
if cmd in ('_save', '_clear', '_clearAll', '_pyqgis', '_api'):
|
if cmd in ('_save', '_clear', '_clearAll', '_pyqgis', '_api'):
|
||||||
if cmd == '_save':
|
if cmd == '_save':
|
||||||
self.writeHistoryFile()
|
self.writeHistoryFile()
|
||||||
@ -520,18 +522,10 @@ class PythonEdit(QsciScintilla, code.InteractiveInterpreter):
|
|||||||
print QCoreApplication.translate("PythonConsole",
|
print QCoreApplication.translate("PythonConsole",
|
||||||
"## History cleared successfully ##")
|
"## History cleared successfully ##")
|
||||||
elif cmd == '_clearAll':
|
elif cmd == '_clearAll':
|
||||||
res = QMessageBox.question(self, "Python Console",
|
|
||||||
QCoreApplication.translate("PythonConsole",
|
|
||||||
"Are you sure you want to completely\n"
|
|
||||||
"delete the command history ?"),
|
|
||||||
QMessageBox.Yes | QMessageBox.No)
|
|
||||||
if res == QMessageBox.No:
|
|
||||||
self.SendScintilla(QsciScintilla.SCI_DELETEBACK)
|
|
||||||
return
|
|
||||||
self.history = QStringList()
|
self.history = QStringList()
|
||||||
self.clearHistoryFile()
|
self.clearHistoryFile()
|
||||||
print QCoreApplication.translate("PythonConsole",
|
print QCoreApplication.translate("PythonConsole",
|
||||||
"## History cleared successfully ##")
|
"## Session and file history cleared successfully ##")
|
||||||
elif cmd == '_pyqgis':
|
elif cmd == '_pyqgis':
|
||||||
webbrowser.open( "http://www.qgis.org/pyqgis-cookbook/" )
|
webbrowser.open( "http://www.qgis.org/pyqgis-cookbook/" )
|
||||||
elif cmd == '_api':
|
elif cmd == '_api':
|
||||||
|
Loading…
x
Reference in New Issue
Block a user