]> git.siccegge.de Git - frida/frida.git/blob - src/gui/widgets/BasicBlockWidget.cxx
Properly color text part of basic block widgets
[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 _widget.setStyleSheet("QLabel { background-color : #ddddff; }");
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>";
30 }
31 QString new_text =
32 old_text.remove("</table>") +
33 "<tr><td>" + bytestring +
34 "</td><td>" + line.toHtmlEscaped() +
35 "</td><td>" + "" +
36 "</td></tr></table>";
37
38 _widget.setText(new_text);
39 width = 12 + _widget.sizeHint().width();
40 height = 25 + _widget.sizeHint().height();
41
42 if (width < 250) width = 250;
43 _widget.resize(width - 12, height - 25);
44 }