From bfee82fa2c3509214332f97cfcc1d8a776fb4f8e Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 19 Feb 2019 12:50:49 +0100 Subject: [PATCH] Debugger: Add dumper for QSizePolicy Change-Id: Ib4d2597229f2808fcf79e76a9590b0e07989bfb9 Reviewed-by: hjk Reviewed-by: Christian Stenger --- share/qtcreator/debugger/dumper.py | 11 +++++++++-- share/qtcreator/debugger/qttypes.py | 27 ++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 2d2cba492cd..e1d04a03f79 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -833,6 +833,14 @@ class DumperBase: self.putType('int') self.putNumChild(0) + def putEnumItem(self, name, ival, typish): + buf = bytearray(struct.pack('i', ival)) + val = self.Value(self) + val.ldata = bytes(buf) + val.type = self.createType(typish) + with SubItem(self, name): + self.putItem(val) + def putBoolItem(self, name, value): with SubItem(self, name): self.putValue(value) @@ -855,8 +863,7 @@ class DumperBase: self.putField('keyencoded', key.encoding) self.putValue(value.value, value.encoding) - def putEnumValue(self, value, vals): - ival = value.integer() + def putEnumValue(self, ival, vals): nice = vals.get(ival, None) display = ('%d' % ival) if nice is None else ('%s (%d)' % (nice, ival)) self.putValue(display) diff --git a/share/qtcreator/debugger/qttypes.py b/share/qtcreator/debugger/qttypes.py index 2901c104010..91e38feaacc 100644 --- a/share/qtcreator/debugger/qttypes.py +++ b/share/qtcreator/debugger/qttypes.py @@ -194,7 +194,7 @@ def qdump_X_QModelIndex(d, value): #gdb.execute('call free($mi)') def qdump__Qt__ItemDataRole(d, value): - d.putEnumValue(value, { + d.putEnumValue(value.integer(), { 0 : "Qt::DisplayRole", 1 : "Qt::DecorationRole", 2 : "Qt::EditRole", @@ -1412,6 +1412,31 @@ def qdump__QSizeF(d, value): d.putPlainChildren(value) +def qdump__QSizePolicy__Policy(d, value): + d.putEnumValue(value.integer(), { + 0 : 'QSizePolicy::Fixed', + 1 : 'QSizePolicy::GrowFlag', + 2 : 'QSizePolicy::ExpandFlag', + 3 : 'QSizePolicy::MinimumExpanding (GrowFlag|ExpandFlag)', + 4 : 'QSizePolicy::ShrinkFlag', + 5 : 'QSizePolicy::Preferred (GrowFlag|ShrinkFlag)', + 7 : 'QSizePolicy::Expanding (GrowFlag|ShrinkFlag|ExpandFlag)', + 8 : 'QSizePolicy::IgnoreFlag', + 13 : 'QSizePolicy::Ignored (ShrinkFlag|GrowFlag|IgnoreFlag)', + }) + +def qdump__QSizePolicy(d, value): + bits = value.integer() + d.putEmptyValue(-99) + d.putNumChild(1) + if d.isExpanded(): + with Children(d): + d.putIntItem('horStretch', (bits >> 0) & 0xff) + d.putIntItem('verStretch', (bits >> 8) & 0xff) + d.putEnumItem('horPolicy', (bits >> 16) & 0xf, "QSizePolicy::Policy") + d.putEnumItem('verPolicy', (bits >> 20) & 0xf, "QSizePolicy::Policy") + + def qform__QStack(): return arrayForms()