From e1dc0d0b7750cd218963ace001c3b548fd37f5ba Mon Sep 17 00:00:00 2001 From: Joseph Mirabel <jmirabel@laas.fr> Date: Tue, 6 Mar 2018 13:30:26 +0100 Subject: [PATCH] Save history of PythonQt console --- include/gepetto/gui/pythonwidget.hh | 4 ++++ src/gui/pythonwidget.cc | 27 +++++++++++++++++++++++++++ src/gui/settings.cc | 6 ++++++ 3 files changed, 37 insertions(+) diff --git a/include/gepetto/gui/pythonwidget.hh b/include/gepetto/gui/pythonwidget.hh index 443e58c..f2309f8 100644 --- a/include/gepetto/gui/pythonwidget.hh +++ b/include/gepetto/gui/pythonwidget.hh @@ -28,6 +28,7 @@ #include <QDockWidget> #include <QLayout> #include <QPushButton> +#include <QSettings> class PythonQtObjectPtr; class PythonQtScriptingConsole; @@ -98,6 +99,9 @@ namespace gepetto { const QVariantList& args = QVariantList(), const QVariantMap& kwargs = QVariantMap()) const; + void saveHistory (QSettings& settings); + void restoreHistory (QSettings& settings); + public slots: /// Load a plugin by importing a module /// diff --git a/src/gui/pythonwidget.cc b/src/gui/pythonwidget.cc index 612f8e3..bfd33c3 100644 --- a/src/gui/pythonwidget.cc +++ b/src/gui/pythonwidget.cc @@ -18,6 +18,7 @@ #include <QAction> #include <QFileDialog> +#include <QSettings> #include <PythonQt.h> #include <PythonQt_QtAll.h> #include <gui/PythonQtScriptingConsole.h> @@ -119,6 +120,32 @@ namespace gepetto { fd->deleteLater(); } + void PythonWidget::saveHistory (QSettings& settings) + { + settings.beginGroup("pythonqt"); + QStringList history = console_->history (); + int limit = 200; + int start = std::max(history.length() - limit, 0); + QList<QVariant> h; + foreach (QString s, history.mid(start)) { + h << s; + } + settings.setValue("history", h); + settings.endGroup(); + } + + void PythonWidget::restoreHistory (QSettings& settings) + { + settings.beginGroup("pythonqt"); + QList<QVariant> h = settings.value("history").toList(); + QStringList history; + foreach(QVariant v, h) { + history << v.toString(); + } + console_->setHistory (history); + settings.endGroup(); + } + void PythonWidget::loadScriptPlugin(QString moduleName, QString fileName) { PythonQt* pqt = PythonQt::self(); diff --git a/src/gui/settings.cc b/src/gui/settings.cc index 8d7a28a..3474a11 100644 --- a/src/gui/settings.cc +++ b/src/gui/settings.cc @@ -212,6 +212,9 @@ namespace gepetto { mw->restoreState (settings.value("state").toByteArray()); mw->centralWidget()->setVisible (settings.value("centralWidgetVisibility", true).toBool()); settings.endGroup(); +#if GEPETTO_GUI_HAS_PYTHONQT + mw->pythonWidget()->restoreHistory(settings); +#endif } } @@ -228,6 +231,9 @@ namespace gepetto { settings.setValue("state" , mw->saveState()); settings.setValue("centralWidgetVisibility", mw->centralWidget()->isVisible ()); settings.endGroup(); +#if GEPETTO_GUI_HAS_PYTHONQT + mw->pythonWidget()->saveHistory(settings); +#endif } } -- GitLab