]> git.siccegge.de Git - frida/frida.git/blob - src/gui/widgets/BasicBlockWidget.cxx
Use QGraphicsProxyWidget
[frida/frida.git] / src / gui / widgets / BasicBlockWidget.cxx
1 #include "BasicBlockWidget.hxx"
2
3 BasicBlockWidget::BasicBlockWidget(const QString& name, BasicBlock * block)
4 : width(270), height(45)
5 , name(name), block(block)
6 , _proxy(this) {
7 next[0] = NULL; next[1] = NULL;
8 _proxy.setWidget(&_widget);
9 _widget.setTextInteractionFlags(Qt::TextSelectableByMouse|Qt::LinksAccessibleByMouse);
10
11 _proxy.setPos(5, 20);
12
13 if (width < 270) width = 270;
14 }
15
16 void BasicBlockWidget::addItem(uint8_t* bytes, size_t num_bytes,
17 const QString& line) {
18 QString bytestring;
19
20 for (size_t i(0); i < num_bytes; ++i) {
21 const char * hexdigits = "0123456789ABCDEF";
22 bytestring += hexdigits[(bytes[i] >> 4) & 0xF];
23 bytestring += hexdigits[bytes[i] & 0xF];
24 bytestring += ' ';
25 }
26
27 QString old_text = _widget.text();
28 if (old_text == "") {
29 old_text = "<table style=\"background-color: #ddddff;\">";
30 }
31 QString new_text =
32 old_text.remove("</table>") +
33 "<tr><td>" + bytestring +
34 "</td><td>" + line +
35 "</td><td>" + "" +
36 "</td></tr></table>";
37
38 _widget.setText(new_text);
39 _widget.resize(_widget.sizeHint().width(), _widget.sizeHint().height());
40 width = 12 + _widget.sizeHint().width();
41 height = 25 + _widget.sizeHint().height();
42
43 if (width < 250) width = 250;
44 }