#include "ScriptingDock.hxx"
+#include "FridaDock.hxx"
+
#include "bindings/Interpreter.hxx"
#include <sstream>
-ScriptingDock::ScriptingDock(Interpreter* interpreter, const QString& title, QWidget * parent)
- : QDockWidget(title, parent)
- , logger(log4cxx::Logger::getLogger("ScriptingDock"))
+namespace {
+ class ScriptingLineEdit : public QObject, public QLineEdit {
+ public:
+ void keyPressEvent(QKeyEvent* event) {
+ if (event->key() == Qt::Key_Up) {
+ setText(backlog);
+ }
+ QLineEdit::keyPressEvent(event);
+ }
+
+ void clear() {
+ backlog = text();
+ QLineEdit::clear();
+ }
+ private:
+ QString backlog;
+ };
+}
+
+ScriptingDock::ScriptingDock(Interpreter* interpreter, FridaDock* parent)
+ : QWidget(parent)
+ , logger(log4cxx::Logger::getLogger("gui.ScriptingDock"))
, interpreter(interpreter) {
- QTabWidget * tab = new QTabWidget;
- QWidget * widget = new QWidget;
- widget->setLayout(layout = new QGridLayout);
+ setLayout(layout = new QGridLayout);
layout->addWidget(browser = new QTextBrowser, 0, 0, 1, 0);
- layout->addWidget(line = new QLineEdit, 1, 0);
+ layout->addWidget(line = new ScriptingLineEdit, 1, 0);
layout->addWidget(button = new QPushButton(tr("Evaluate")), 1, 1);
- tab->addTab(widget, "GUILE");
- ((QDockWidget*)this)->setWidget(tab);
connect(button, SIGNAL(released()), this, SLOT(doEvaluate()));
connect(line, SIGNAL(returnPressed()), this, SLOT(doEvaluate()));
}
QString output;
QString text = line->text();
- line->clear();
+ ((ScriptingLineEdit*)line)->clear();
LOG4CXX_INFO(logger, "Evaluating String \"" << text.toStdString() << "\"");
browser->append(QString("> ") + text);