From 47771171579f382c92f253ad0777fde7d15f027f Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Fri, 28 Nov 2014 17:09:55 +0100 Subject: [PATCH 1/4] Make whitespace consistent (tabs->spaces) --- pyqt4/qtermwidget.sip | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/pyqt4/qtermwidget.sip b/pyqt4/qtermwidget.sip index a03e214..76a7dbc 100644 --- a/pyqt4/qtermwidget.sip +++ b/pyqt4/qtermwidget.sip @@ -11,25 +11,24 @@ class QTermWidget : QWidget { %End public: - QTermWidget(int startnow = 1, QWidget *parent = 0); - ~QTermWidget(); - enum ScrollBarPosition + QTermWidget(int startnow = 1, QWidget *parent = 0); + ~QTermWidget(); + enum ScrollBarPosition { NoScrollBar=0, ScrollBarLeft=1, ScrollBarRight=2 }; - void setTerminalFont(QFont &font); - void setArgs(QStringList &args); - void setTextCodec(QTextCodec *codec); - void setColorScheme(const QString & name); - void setSize(int h, int v); - void setHistorySize(int lines); - void setScrollBarPosition(ScrollBarPosition); - void sendText(QString &text); + void setTerminalFont(QFont &font); + void setArgs(QStringList &args); + void setTextCodec(QTextCodec *codec); + void setColorScheme(const QString & name); + void setSize(int h, int v); + void setHistorySize(int lines); + void setScrollBarPosition(ScrollBarPosition); + void sendText(QString &text); protected: - void resizeEvent(QResizeEvent *e); + void resizeEvent(QResizeEvent *e); private: - void *createTermWidget(int startnow, void *parent); - + void *createTermWidget(int startnow, void *parent); }; From 5f3ac4672246ff5c0eedb66db1c3934d17fd1e42 Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Sat, 29 Nov 2014 21:50:46 +0100 Subject: [PATCH 2/4] Expose more functionality through the python bindings (#23) 'getSelectionEnd' is still missing, depends on #32 --- pyqt4/qtermwidget.sip | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/pyqt4/qtermwidget.sip b/pyqt4/qtermwidget.sip index 76a7dbc..fa3df80 100644 --- a/pyqt4/qtermwidget.sip +++ b/pyqt4/qtermwidget.sip @@ -11,22 +11,53 @@ class QTermWidget : QWidget { %End public: - QTermWidget(int startnow = 1, QWidget *parent = 0); - ~QTermWidget(); enum ScrollBarPosition { NoScrollBar=0, ScrollBarLeft=1, ScrollBarRight=2 }; + + QTermWidget(int startnow = 1, QWidget *parent = 0); + ~QTermWidget(); + + QSize sizeHint() const; + void startShellProgram(); + int getShellPID(); + void changeDir(const QString & dir); void setTerminalFont(QFont &font); + QFont getTerminalFont(); + void setTerminalOpacity(qreal level); + void setEnvironment(const QStringList & environment); + void setShellProgram(const QString & progname); + void setWorkingDirectory(const QString & dir); + QString workingDirectory(); void setArgs(QStringList &args); void setTextCodec(QTextCodec *codec); void setColorScheme(const QString & name); + static QStringList availableColorSchemes(); void setSize(int h, int v); void setHistorySize(int lines); void setScrollBarPosition(ScrollBarPosition); + void scrollToEnd(); void sendText(QString &text); + void setFlowControlEnabled(bool enabled); + bool flowControlEnabled(); + void setFlowControlWarningEnabled(bool enabled); + static QStringList availableKeyBindings(); + QString keyBindings(); + void setMotionAfterPasting(int); + int historyLinesCount(); + int screenColumnsCount(); + void setSelectionStart(int row, int column); + void getSelectionStart(int& row, int& column); + // TODO wait for https://github.com/qterminal/qtermwidget/pull/32 + //void setSelectionEnd(int row, int column); + //void getSelectionEnd(int& row, int& column); + QString selectedText(bool preserveLineBreaks = true); + void setMonitorActivity(bool); + void setMonitorSilence(bool); + void setSilenceTimeout(int seconds); protected: void resizeEvent(QResizeEvent *e); private: From 11a00b9ee60828f0c033fbfbf3f25f674e941cfb Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Sun, 7 Dec 2014 14:46:17 +0100 Subject: [PATCH 3/4] Get/set selection end in python bindings --- pyqt4/qtermwidget.sip | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/pyqt4/qtermwidget.sip b/pyqt4/qtermwidget.sip index fa3df80..3f0b7f3 100644 --- a/pyqt4/qtermwidget.sip +++ b/pyqt4/qtermwidget.sip @@ -50,10 +50,9 @@ public: int historyLinesCount(); int screenColumnsCount(); void setSelectionStart(int row, int column); + void setSelectionEnd(int row, int column); void getSelectionStart(int& row, int& column); - // TODO wait for https://github.com/qterminal/qtermwidget/pull/32 - //void setSelectionEnd(int row, int column); - //void getSelectionEnd(int& row, int& column); + void getSelectionEnd(int& row, int& column); QString selectedText(bool preserveLineBreaks = true); void setMonitorActivity(bool); void setMonitorSilence(bool); From 0ee95f7104207fefd81dce4ddadbad6cf4d48ac7 Mon Sep 17 00:00:00 2001 From: Arnout Engelen Date: Sun, 7 Dec 2014 15:14:06 +0100 Subject: [PATCH 4/4] Also expose signals and slots to pyqt Demo in test.py (quit QT when the shell finishes) --- pyqt4/qtermwidget.sip | 19 +++++++++++++++++++ pyqt4/test.py | 2 ++ 2 files changed, 21 insertions(+) diff --git a/pyqt4/qtermwidget.sip b/pyqt4/qtermwidget.sip index 3f0b7f3..f57ccc9 100644 --- a/pyqt4/qtermwidget.sip +++ b/pyqt4/qtermwidget.sip @@ -57,6 +57,25 @@ public: void setMonitorActivity(bool); void setMonitorSilence(bool); void setSilenceTimeout(int seconds); +signals: + void finished(); + void copyAvailable(bool); + void termGetFocus(); + void termLostFocus(); + void termKeyPressed(QKeyEvent *); + void urlActivated(const QUrl&); + void bell(const QString& message); + void activity(); + void silence(); +public slots: + void copyClipboard(); + void pasteClipboard(); + void pasteSelection(); + void zoomIn(); + void zoomOut(); + void setKeyBindings(const QString & kb); + void clear(); + void toggleShowSearchBar(); protected: void resizeEvent(QResizeEvent *e); private: diff --git a/pyqt4/test.py b/pyqt4/test.py index 5c20eef..59bfb10 100755 --- a/pyqt4/test.py +++ b/pyqt4/test.py @@ -21,6 +21,7 @@ import sys, signal from PyQt4 import Qt +from PyQt4.QtCore import SIGNAL, SLOT import QTermWidget signal.signal(signal.SIGINT, signal.SIG_DFL) @@ -29,4 +30,5 @@ a = Qt.QApplication(sys.argv) w = QTermWidget.QTermWidget() w.show() +w.connect(w, SIGNAL('finished()'), a, SLOT('quit()')) a.exec_()