]> git.siccegge.de Git - frida/frida.git/blob - src/gui/widgets/ScriptingDock.hxx
Properly handle errors in sceme
[frida/frida.git] / src / gui / widgets / ScriptingDock.hxx
1 #ifndef INCLUDE__ScriptingDock_hxx
2 #define INCLUDE__ScriptingDock_hxx
3 #include "gui/qt.hxx"
4 #include <libguile.h>
5 #include <log4cxx/logger.h>
6
7 class ScriptingDock : public QDockWidget {
8 Q_OBJECT
9
10 public:
11 ScriptingDock(const QString& title, QWidget * parent = 0)
12 : logger(log4cxx::Logger::getLogger("ScriptingDock")) {
13 QDockWidget(title, parent);
14 QWidget * widget = new QWidget;
15 widget->setLayout(layout = new QGridLayout(this));
16 layout->addWidget(browser = new QTextBrowser, 0, 0, 1, 0);
17 layout->addWidget(line = new QLineEdit, 1, 0);
18 layout->addWidget(button = new QPushButton(tr("Evaluate")), 1, 1);
19 setWidget(widget);
20 connect(button, SIGNAL(released()), this, SLOT(doEvaluate()));
21 connect(line, SIGNAL(returnPressed()), this, SLOT(doEvaluate()));
22 scm_init_guile();
23 guile_output_port = scm_open_output_string();
24 guile_error_port = scm_open_output_string();
25 scm_set_current_output_port(guile_output_port);
26 scm_set_current_error_port(guile_error_port);
27 }
28 private:
29 log4cxx::LoggerPtr logger;
30
31 QTextBrowser * browser;
32 QGridLayout * layout;
33 QPushButton * button;
34 QLineEdit * line;
35
36 SCM guile_output_port;
37 SCM guile_error_port;
38 private slots:
39 void doEvaluate();
40 };
41
42 #endif