From 1676b285ae726eb858d4d7ed089496133ce3de4b Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Thu, 28 Jun 2018 17:56:44 +0200 Subject: adapted python-console for easier use --- 3rdparty/python-console/modified/pyconsole.h | 77 ++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 3rdparty/python-console/modified/pyconsole.h (limited to '3rdparty/python-console/modified/pyconsole.h') diff --git a/3rdparty/python-console/modified/pyconsole.h b/3rdparty/python-console/modified/pyconsole.h new file mode 100644 index 00000000..eb2c98a4 --- /dev/null +++ b/3rdparty/python-console/modified/pyconsole.h @@ -0,0 +1,77 @@ +/** +python-console +Copyright (C) 2018 Alex Tsui + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#ifndef PYCONSOLE_H +#define PYCONSOLE_H +#include +#include +#include "ParseHelper.h" +#include "ParseListener.h" + +class QWidget; +class QKeyEvent; + +class PythonConsole : public QTextEdit, ParseListener +{ + Q_OBJECT + + public: + PythonConsole(QWidget *parent = 0); + + void displayPrompt(); + void displayString(QString text); + + protected: + // override QTextEdit + virtual void keyPressEvent(QKeyEvent *e); + + virtual void handleReturnKeyPress(); + + /** + Handle a compilable chunk of Python user input. + */ + virtual void parseEvent(const ParseMessage &message); + + QString getLine(); + bool cursorIsOnInputLine(); + bool inputLineIsEmpty(); + bool canBackspace(); + bool canGoLeft(); + void autocomplete(); + void previousHistory(); + void nextHistory(); + void moveCursorToEnd(); + + static const QString PROMPT; + static const QString MULTILINE_PROMPT; + + static const QColor NORMAL_COLOR; + static const QColor ERROR_COLOR; + static const QColor OUTPUT_COLOR; + + ParseHelper m_parseHelper; + std::list m_historyBuffer; + std::list::const_iterator m_historyIt; +}; + +#endif // PYCONSOLE_H -- cgit v1.2.3