]>
git.siccegge.de Git - frida/frida.git/blob - src/gui/widgets/ScriptingDock.cxx
1 #include "ScriptingDock.hxx"
2 #include "FridaDock.hxx"
4 #include "bindings/Interpreter.hxx"
8 ScriptingDock::ScriptingDock(Interpreter
* interpreter
, FridaDock
* parent
)
10 , logger(log4cxx::Logger::getLogger("gui.ScriptingDock"))
11 , interpreter(interpreter
) {
12 setLayout(layout
= new QGridLayout
);
13 layout
->addWidget(browser
= new QTextBrowser
, 0, 0, 1, 0);
14 layout
->addWidget(line
= new QLineEdit
, 1, 0);
15 layout
->addWidget(button
= new QPushButton(tr("Evaluate")), 1, 1);
16 connect(button
, SIGNAL(released()), this, SLOT(doEvaluate()));
17 connect(line
, SIGNAL(returnPressed()), this, SLOT(doEvaluate()));
21 void ScriptingDock::doEvaluate() {
22 std::stringstream stdout
, stderr
;
25 QString text
= line
->text();
28 LOG4CXX_INFO(logger
, "Evaluating String \"" << text
.toStdString() << "\"");
29 browser
->append(QString("> ") + text
);
31 interpreter
->evaluate(text
.toStdString(), stdout
, stderr
, result
);
33 output
= stdout
.str().c_str();
34 if (output
.endsWith("\n")) output
.chop(1);
35 if (output
!= "") browser
->append(output
);
37 output
= stderr
.str().c_str();
38 if (output
.endsWith("\n")) output
.chop(1);
39 if (output
!= "") browser
->append(output
);
41 browser
->append(result
.c_str());