diff --git a/include/gepetto/gui/pythonwidget.hh b/include/gepetto/gui/pythonwidget.hh index 443e58c208d45470337c5fc4721c96f1e695d570..f2309f84db69a1de3b6b5d0966f9cc8a1955dcee 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 612f8e3fcb3a3681c6f24da62f4c06c77a7fd358..bfd33c39f4fe7e4484a3e3bc3f178831216870f6 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 8d7a28ad52ff963c313fbf0bafd1d79d717fd18f..3474a11d07186c652ef0715ba6e4bf8c07b6065f 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 } }