Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 0.9.1-beta
  • 0.9.2-rc1
  • 1.0.0
  • 1.1
  • 1.2
  • 1.2.90
  • 1.3
  • 1.3.0
  • 1.3.0-beta
  • 1.3.1
  • 2.0
  • 2.0.0
  • 2.0.0-beta
  • 2.0.1
  • 2.1
  • 2.1.0
  • 2.2
  • 2.3
  • 2.4
  • 2.5
  • 2.6
  • 2.7
  • 2.8
  • 3.0
  • 3.1
  • 3.2
  • 3.3
  • 3.4
  • 3.5
  • 3.6
  • 4.0
  • 4.1
  • 4.2
  • 4.3
  • 4.4
  • 4.5
  • at-3.4
  • at-3.5
  • at-3.6
  • at-master
  • csa-3.3
  • csa-3.4
  • csa-3.5
  • csa-3.6
  • csa-master
  • master
  • qp-2.8
  • qp-3.0
  • qp-3.1
  • qp-3.2
  • qp-3.3
  • qp-3.4
  • qp-3.5
  • qp-3.6
  • qp-master
  • wip/boostbuildprojectmanager
  • wip/clang-query
  • wip/vcproj
  • at-v3.4.0
  • at-v3.4.0-beta1
  • at-v3.4.0-rc1
  • at-v3.4.1
  • at-v3.4.2
  • at-v3.5.0
  • at-v3.5.0-beta1
  • at-v3.5.0-rc1
  • at-v3.5.1
  • at-v3.6.0
  • at-v3.6.0-beta1
  • at-v3.6.0-rc1
  • csa-v3.3.0
  • csa-v3.3.0-beta1
  • csa-v3.3.0-rc1
  • csa-v3.3.1
  • csa-v3.3.2
  • csa-v3.4.0
  • csa-v3.4.0-beta1
  • csa-v3.4.0-rc1
  • csa-v3.4.1
  • csa-v3.4.2
  • csa-v3.5.0
  • csa-v3.5.0-beta1
  • csa-v3.5.0-rc1
  • csa-v3.5.1
  • csa-v3.6.0
  • csa-v3.6.0-beta1
  • csa-v3.6.0-rc1
  • qp-v3.1.0
  • qp-v3.1.0-beta1
  • qp-v3.2.0
  • qp-v3.2.0-beta1
  • qp-v3.2.1
  • qp-v3.2.2
  • qp-v3.3.0
  • qp-v3.3.0-beta1
  • qp-v3.3.0-rc1
  • qp-v3.3.1
  • qp-v3.3.2
  • qp-v3.4.0
  • qp-v3.4.0-rc1
  • qp-v3.4.1
  • qp-v3.4.2
  • qp-v3.5.0
  • qp-v3.5.0-beta1
  • qp-v3.5.0-rc1
  • qp-v3.5.1
  • qp-v3.6.0
  • qp-v3.6.0-beta1
  • qp-v3.6.0-rc1
  • tqtc/v2.6.0
  • tqtc/v2.6.0-rc
  • tqtc/v2.6.1
  • tqtc/v2.7.0
  • tqtc/v2.7.0-rc
  • tqtc/v2.7.2
  • tqtc/v2.8.0
  • tqtc/v2.8.0-beta
  • v1.0.0
  • v1.1.0
  • v1.1.0-rc1
  • v1.1.1
  • v1.2.0
  • v1.2.1
  • v1.2.90
  • v1.3.0
  • v1.3.0-beta
  • v1.3.0-rc1
  • v1.3.1
  • v2.0.0
  • v2.0.0-alpha
  • v2.0.0-beta
  • v2.0.0-rc1
  • v2.0.1
  • v2.1.0
  • v2.1.0-beta
  • v2.1.0-beta2
  • v2.1.0-rc1
  • v2.2.0
  • v2.2.0-beta
  • v2.2.0-rc1
  • v2.2.1
  • v2.3.0
  • v2.3.0-beta
  • v2.3.0-rc
  • v2.3.1
  • v2.4.0
  • v2.4.0-beta
  • v2.4.0-rc
  • v2.4.1
  • v2.5.0
  • v2.5.0-beta
  • v2.5.0-rc
  • v2.5.1
  • v2.5.2
  • v2.6.0
  • v2.6.0-beta
  • v2.6.0-rc
  • v2.6.1
158 results

Target

Select target project
  • tohunger/qt-creator
1 result
Select Git revision
  • 0.9.1-beta
  • 0.9.2-rc1
  • 1.0.0
  • 1.1
  • 1.2
  • 1.2.90
  • 1.3
  • 1.3.0
  • 1.3.0-beta
  • 1.3.1
  • 2.0
  • 2.0.0
  • 2.0.0-beta
  • 2.0.1
  • 2.1
  • 2.1.0
  • 2.2
  • 2.3
  • 2.4
  • 2.5
  • 2.6
  • 2.7
  • 2.8
  • 3.0
  • 3.1
  • 3.2
  • 3.3
  • 3.4
  • 3.5
  • 3.6
  • 4.0
  • 4.1
  • 4.2
  • 4.3
  • 4.4
  • 4.5
  • at-3.4
  • at-3.5
  • at-3.6
  • at-master
  • csa-3.3
  • csa-3.4
  • csa-3.5
  • csa-3.6
  • csa-master
  • master
  • qp-2.8
  • qp-3.0
  • qp-3.1
  • qp-3.2
  • qp-3.3
  • qp-3.4
  • qp-3.5
  • qp-3.6
  • qp-master
  • wip/boostbuildprojectmanager
  • wip/clang-query
  • wip/vcproj
  • at-v3.4.0
  • at-v3.4.0-beta1
  • at-v3.4.0-rc1
  • at-v3.4.1
  • at-v3.4.2
  • at-v3.5.0
  • at-v3.5.0-beta1
  • at-v3.5.0-rc1
  • at-v3.5.1
  • at-v3.6.0
  • at-v3.6.0-beta1
  • at-v3.6.0-rc1
  • csa-v3.3.0
  • csa-v3.3.0-beta1
  • csa-v3.3.0-rc1
  • csa-v3.3.1
  • csa-v3.3.2
  • csa-v3.4.0
  • csa-v3.4.0-beta1
  • csa-v3.4.0-rc1
  • csa-v3.4.1
  • csa-v3.4.2
  • csa-v3.5.0
  • csa-v3.5.0-beta1
  • csa-v3.5.0-rc1
  • csa-v3.5.1
  • csa-v3.6.0
  • csa-v3.6.0-beta1
  • csa-v3.6.0-rc1
  • qp-v3.1.0
  • qp-v3.1.0-beta1
  • qp-v3.2.0
  • qp-v3.2.0-beta1
  • qp-v3.2.1
  • qp-v3.2.2
  • qp-v3.3.0
  • qp-v3.3.0-beta1
  • qp-v3.3.0-rc1
  • qp-v3.3.1
  • qp-v3.3.2
  • qp-v3.4.0
  • qp-v3.4.0-rc1
  • qp-v3.4.1
  • qp-v3.4.2
  • qp-v3.5.0
  • qp-v3.5.0-beta1
  • qp-v3.5.0-rc1
  • qp-v3.5.1
  • qp-v3.6.0
  • qp-v3.6.0-beta1
  • qp-v3.6.0-rc1
  • tqtc/v2.6.0
  • tqtc/v2.6.0-rc
  • tqtc/v2.6.1
  • tqtc/v2.7.0
  • tqtc/v2.7.0-rc
  • tqtc/v2.7.2
  • tqtc/v2.8.0
  • tqtc/v2.8.0-beta
  • v1.0.0
  • v1.1.0
  • v1.1.0-rc1
  • v1.1.1
  • v1.2.0
  • v1.2.1
  • v1.2.90
  • v1.3.0
  • v1.3.0-beta
  • v1.3.0-rc1
  • v1.3.1
  • v2.0.0
  • v2.0.0-alpha
  • v2.0.0-beta
  • v2.0.0-rc1
  • v2.0.1
  • v2.1.0
  • v2.1.0-beta
  • v2.1.0-beta2
  • v2.1.0-rc1
  • v2.2.0
  • v2.2.0-beta
  • v2.2.0-rc1
  • v2.2.1
  • v2.3.0
  • v2.3.0-beta
  • v2.3.0-rc
  • v2.3.1
  • v2.4.0
  • v2.4.0-beta
  • v2.4.0-rc
  • v2.4.1
  • v2.5.0
  • v2.5.0-beta
  • v2.5.0-rc
  • v2.5.1
  • v2.5.2
  • v2.6.0
  • v2.6.0-beta
  • v2.6.0-rc
  • v2.6.1
158 results
Show changes
Commits on Source (165)
Showing
with 1261 additions and 1547 deletions
Qt Creator 1.3.82
Qt Creator 1.3.83
===============
Qt Creator is a crossplatform C++ IDE for development with the Qt framework.
......
......@@ -36,7 +36,7 @@ Editing
the syntax highlighting.
CodePaster
* Implemented new protocol of pastebin.com including list functionality\
* Implemented new protocol of pastebin.com including list functionality
C++ Support
* Recognize *.cu as C files
......
......@@ -12,7 +12,7 @@
\title Qt Creator Manual
\section1 Version 1.3.82
\section1 Version 1.3.83 (2.0.0 Beta)
Qt Creator provides integrated tools for both application designers
and developers to create applications for multiple desktop and mobile device
......@@ -251,7 +251,7 @@
\o Mac OS X
\o Yes
\o No
\o No
\o Yes
\endtable
*/
......@@ -3340,7 +3340,7 @@
specified in the \c CMake project file.
Known issues for the current version can be found
\l{Known Issues of version 1.3.82}{here}.
\l{Known Issues of version 1.3.83}{here}.
\section1 Adding External Libraries to a CMake Project
......@@ -3703,7 +3703,7 @@
For more information about MADDE pertaining to its
installation, configuration, and deployment on the device, see
\l{http://wiki.maemo.org/MADDE}{Introdution to MADDE}.
\l{http://wiki.maemo.org/MADDE}{Introduction to MADDE}.
\o An IP address for the device.
......@@ -3718,18 +3718,14 @@
following:
\list
\o The Nokia USB drivers that come, for example with, PC Suite.
\o Qt installed on the device. A simple technique to
install Qt is to run the Maemo device \gui{Application Manager} and
download any application using Qt Creator. Running the Maemo device
\gui{Application Manager} and downloading an application with Qt
Creator installs all dependencies required for Qt Creator at the same
time.
\o Qt installed on the device. Recent images should have Qt pre-installed.
\endlist
The Qt Creator/MADDE integration is supported on the following platforms:
\list
\o Linux (32 bit and 64 bit)
\o Windows (32 bit and 64 bit)
\o MacOS 10.5 ("Leopard") or higher
\endlist
\section1 Setting Up the N900
......@@ -3742,8 +3738,7 @@
diagnostics functions but is essential for creating connections between the
device and your workstation.
For the workstation, you need to set up a network port that detects the
Maemo device as a network device
For the workstation, you need to set up the N900 as a network device.
\note If you use the device's USB network functionality and plan to
connect your development PC to the N900 via a common WLAN network, you can
......@@ -3754,7 +3749,7 @@
To install Mad Developer on your device, you need to add an application
catalogue (repository) to the list of catalogues your device checks for
installable software, and install the actual Mad Developer software
package using root privileges. This is done according to the following
package. This is done according to the following
steps:
\list 1
\o Start the application manager
......@@ -3854,11 +3849,11 @@
\l{http://wiki.maemo.org/MADDE}{here}, execute it and follow the
instructions. The package will be installed. Then run:
\c{mad-admin list targets} to see which targets are available.
Install the targets that starts with "fremantle" by using the command:
Install the target that starts with "fremantle" by using the command:
\c{mad-admin create fremantle-qt-xxx}
When you have installed the target, you have a toolchain and a sysroot
environment for cross-compiling
environment for cross-compiling.
\section1 Setting Up Qt Creator
......@@ -3948,6 +3943,9 @@
\list
\o \l{http://www.forum.nokia.com/main/resources/tools_and_sdks/S60SDK/}
{S60 Platform SDK 3rd Edition FP1 or higher}.
\o \l{http://www.forum.nokia.com/main/resources/technologies/openc_cpp/}
{Open C/C++ v1.6.0 or higher}
(install this into all S60 SDKs you plan to use Qt with).
\o Either the GCCE ARM Toolchain that is included in the S60 Platform
SDKs, or RVCT 2.2 [build 686] or later (which is not available free
of charge)(Your environment needs to find the compiler in the PATH).
......@@ -4996,9 +4994,13 @@
There are some known issues with Qt Creator.
The development team is aware of them, there is no need to report them as bugs.
\section1 Known Issues of Version 1.3.82
\section1 Known Issues of Version 1.3.83
\list
\o On Windows, debugging a MinGW-built console application (with \gui{Run in terminal}
checked) using gdb does not work due to a bug in gdb related to attaching to
stopped processes (see \l{http://bugreports.qt.nokia.com/browse/QTCREATORBUG-1020}).
\o Debugging Helper does not work while performing On-Device Debugging.
\o QML Preview (Run Project) only works if built against Qt with
......
......@@ -19,16 +19,16 @@ sources.fileextensions = "qtcreator.qdoc addressbook-sdk.qdoc"
qhp.projects = QtCreator
qhp.QtCreator.file = qtcreator.qhp
qhp.QtCreator.namespace = com.nokia.qtcreator.1382
qhp.QtCreator.namespace = com.nokia.qtcreator.1383
qhp.QtCreator.virtualFolder = doc
qhp.QtCreator.indexTitle = Qt Creator
qhp.QtCreator.indexRoot =
qhp.QtCreator.extraFiles = classic.css \
images/qt-logo.png \
images/qtcreator-screenshots.png
qhp.QtCreator.filterAttributes = qtcreator 1.3.82
qhp.QtCreator.customFilters.QtCreator.name = Qt Creator 1.3.82
qhp.QtCreator.customFilters.QtCreator.filterAttributes = qtcreator 1.3.82
qhp.QtCreator.filterAttributes = qtcreator 1.3.83
qhp.QtCreator.customFilters.QtCreator.name = Qt Creator 1.3.83
qhp.QtCreator.customFilters.QtCreator.filterAttributes = qtcreator 1.3.83
# macros.qdocconf
......@@ -213,5 +213,5 @@ HTML.footer = "<p /><address><hr /><div align=\"center\">\n" \
"<table width=\"100%\" cellspacing=\"0\" border=\"0\"><tr class=\"address\">\n" \
"<td width=\"40%\" align=\"left\">Copyright &copy; 2010 Nokia Corporation and/or its subsidiary(-ies)</td>\n" \
"<td width=\"20%\" align=\"center\"><a href=\"trademarks.html\">Trademarks</a></td>\n" \
"<td width=\"40%\" align=\"right\"><div align=\"right\">Qt Creator 1.3.82</div></td>\n" \
"<td width=\"40%\" align=\"right\"><div align=\"right\">Qt Creator 1.3.83</div></td>\n" \
"</tr></table></div></address>"
from __future__ import with_statement
#Note: Keep name-type-value-numchild-extra order
#return
......@@ -53,21 +53,26 @@ verbosity = 1
# Encodings
Unencoded8Bit, \
Base64Encoded8BitWithQuotes, \
Base64Encoded16BitWithQuotes, \
Base64Encoded32BitWithQuotes, \
Base64Encoded16Bit, \
Base64Encoded8Bit, \
Hex2EncodedLatin1, \
Hex4EncodedLittleEndian, \
Hex8EncodedLittleEndian, \
Hex2EncodedUtf8, \
Hex8EncodedBigEndian, \
Hex4EncodedBigEndian \
= range(12)
Base64Encoded8BitWithQuotes, \
Base64Encoded16BitWithQuotes, \
Base64Encoded32BitWithQuotes, \
Base64Encoded16Bit, \
Base64Encoded8Bit, \
Hex2EncodedLatin1, \
Hex4EncodedLittleEndian, \
Hex8EncodedLittleEndian, \
Hex2EncodedUtf8, \
Hex8EncodedBigEndian, \
Hex4EncodedBigEndian \
= range(12)
# Display modes
StopDisplay, DisplayImage1, DisplayString, DisplayImage, DisplayProcess = range(5)
StopDisplay, \
DisplayImage1, \
DisplayString, \
DisplayImage, \
DisplayProcess \
= range(5)
def select(condition, if_expr, else_expr):
......@@ -119,7 +124,7 @@ def parseAndEvaluate(exp):
def catchCliOutput(command):
file, filename = createTempFile()
filename, file = createTempFile()
gdb.execute("set logging off")
gdb.execute("set logging redirect off")
gdb.execute("set logging file %s" % filename)
......@@ -137,6 +142,134 @@ def catchCliOutput(command):
return lines
def showException(msg, exType, exValue, exTraceback):
warn("**** CAUGHT EXCEPTION: %s ****" % msg)
try:
import traceback
for line in traceback.format_exception(exType, exValue, exTraceback):
warn("%s" % line)
except:
pass
class OutputSafer:
def __init__(self, d, pre = "", post = ""):
self.d = d
self.pre = pre
self.post = post
def __enter__(self):
self.d.put(self.pre)
self.savedOutput = self.d.output
self.d.output = ""
def __exit__(self, exType, exValue, exTraceBack):
self.d.put(self.post)
if self.d.passExceptions and not exType is None:
showException("OUTPUTSAFER", exType, exValue, exTraceBack)
self.d.output = self.savedOutput
else:
self.d.output = self.savedOutput + self.d.output
return False
class SubItem:
def __init__(self, d):
self.d = d
def __enter__(self):
self.d.put('{')
self.savedValue = self.d.currentValue
self.savedValuePriority = self.d.currentValuePriority
self.savedValueEncoding = self.d.currentValueEncoding
self.savedType = self.d.currentType
self.savedTypePriority = self.d.currentTypePriority
self.d.currentValue = ""
self.d.currentValuePriority = -100
self.d.currentValueEncoding = None
self.d.currentType = ""
self.d.currentTypePriority = -100
def __exit__(self, exType, exValue, exTraceBack):
#warn(" CURRENT VALUE: %s %s %s" % (self.d.currentValue,
# self.d.currentValueEncoding, self.d.currentValuePriority))
if self.d.passExceptions and not exType is None:
showException("SUBITEM", exType, exValue, exTraceBack)
try:
#warn("TYPE CURRENT: %s" % self.d.currentType)
type = stripClassTag(str(self.d.currentType))
#warn("TYPE: '%s' DEFAULT: '%s'" % (type, self.d.currentChildType))
if len(type) > 0 and type != self.d.currentChildType:
self.d.put('type="%s",' % type) # str(type.unqualified()) ?
if not self.d.currentValueEncoding is None:
self.d.putField("valueencoded", self.d.currentValueEncoding)
if not self.d.currentValue is None:
self.d.putField("value", self.d.currentValue)
except:
pass
self.d.put('},')
self.d.currentValue = self.savedValue
self.d.currentValuePriority = self.savedValuePriority
self.d.currentValueEncoding = self.savedValueEncoding
self.d.currentType = self.savedType
self.d.currentTypePriority = self.savedTypePriority
return True
class Children:
def __init__(self, d, numChild = 1, childType = None, childNumChild = None):
self.d = d
self.numChild = numChild
self.childType = childType
self.childNumChild = childNumChild
#warn("CHILDREN: %s %s %s" % (numChild, childType, childNumChild))
def __enter__(self):
childType = ""
childNumChild = -1
if type(self.numChild) is list:
numChild = self.numChild[0]
maxNumChild = self.numChild[1]
else:
numChild = self.numChild
maxNumChild = self.numChild
if numChild == 0:
self.childType = None
if not self.childType is None:
childType = stripClassTag(str(self.childType))
self.d.put('childtype="%s",' % childType)
if isSimpleType(self.childType) or isStringType(self.d, self.childType):
self.d.put('childnumchild="0",')
childNumChild = 0
elif self.childType.code == gdb.TYPE_CODE_PTR:
self.d.put('childnumchild="1",')
childNumChild = 1
if not self.childNumChild is None:
self.d.put('childnumchild="%s",' % self.childNumChild)
childNumChild = self.childNumChild
self.savedChildType = self.d.currentChildType
self.savedChildNumChild = self.d.currentChildNumChild
self.savedNumChilds = self.d.currentNumChilds
self.savedMaxNumChilds = self.d.currentNumChilds
self.d.currentChildType = childType
self.d.currentChildNumChild = childNumChild
self.d.currentNumChilds = numChild
self.d.currentMaxNumChilds = maxNumChild
self.d.put("children=[")
def __exit__(self, exType, exValue, exTraceBack):
if self.d.passExceptions and not exType is None:
showException("CHILDREN", exType, exValue, exTraceBack)
if self.d.currentMaxNumChilds < self.d.currentNumChilds:
self.d.putEllipsis();
self.d.currentChildType = self.savedChildType
self.d.currentChildNumChild = self.savedChildNumChild
self.d.currentNumChilds = self.savedNumChilds
self.d.currentMaxNumChilds = self.savedMaxNumChilds
self.d.put('],')
return True
class Breakpoint:
def __init__(self):
self.number = None
......@@ -345,7 +478,7 @@ def listOfLocals(varList):
# like 'Warning: can't find linker symbol for virtual table for
# `std::less<char const*>' value\n\nwarning: found
# `myns::QHashData::shared_null' instead [...]
# that break subsequent parsing. Chicken out and take the
# that break subsequent parsing. Chicken out and take the
# next "usable" line.
continue
items.append(item)
......@@ -447,6 +580,8 @@ movableTypes = set([
def stripClassTag(type):
if type.startswith("class "):
return type[6:]
elif type.startswith("struct "):
return type[7:]
return type
def checkPointerRange(p, n):
......@@ -461,7 +596,11 @@ def call(value, func):
type = "'" + type + "'"
exp = "((%s*)%s)->%s" % (type, value.address, func)
#warn("CALL: %s" % exp)
result = parseAndEvaluate(exp)
result = None
try:
result = parseAndEvaluate(exp)
except:
pass
#warn(" -> %s" % result)
return result
......@@ -570,7 +709,7 @@ def encodeString(value):
check(0 <= size and size <= alloc and alloc <= 100*1000*1000)
if size > 0:
checkAccess(data, 4)
checkAccess(data + size * 2) == 0
checkAccess(data + size) == 0
checkRef(d_ptr["ref"])
p = gdb.Value(d_ptr["data"])
s = ""
......@@ -684,6 +823,7 @@ class FrameCommand(gdb.Command):
# Locals
#
for item in listOfLocals(varList):
with OutputSafer(d, "", ""):
d.anonNumber = -1
#warn("ITEM NAME %s: " % item.name)
try:
......@@ -695,14 +835,13 @@ class FrameCommand(gdb.Command):
pass
except:
# Locals with failing memory access.
d.beginHash()
d.put('iname="%s",' % item.iname)
d.put('name="%s",' % item.name)
d.put('addr="<not accessible>",')
d.put('value="<not accessible>",')
d.put('type="%s",' % item.value.type)
d.put('numchild="0"');
d.endHash()
with SubItem(d):
d.put('iname="%s",' % item.iname)
d.put('name="%s",' % item.name)
d.put('addr="<not accessible>",')
d.put('value="<not accessible>",')
d.put('type="%s",' % item.value.type)
d.put('numchild="0"');
continue
type = item.value.type
......@@ -717,74 +856,56 @@ class FrameCommand(gdb.Command):
p += 1
n += 1
d.beginHash()
d.put('iname="%s",' % item.iname)
d.putName(item.name)
d.putItemCount(select(n <= 100, n, "> 100"))
d.putType(type)
d.putNumChild(n)
if d.isExpanded(item):
p = item.value
d.beginChildren(n)
for i in xrange(n):
value = p.dereference()
d.putItem(Item(value, item.iname, i, None))
p += 1
if n > 100:
d.putEllipsis()
d.endChildren()
d.endHash()
with SubItem(d):
d.put('iname="%s",' % item.iname)
d.putName(item.name)
d.putItemCount(select(n <= 100, n, "> 100"))
d.putType(type)
d.putNumChild(n)
if d.isExpanded(item):
p = item.value
with Children(d, n):
for i in xrange(n):
value = p.dereference()
d.putItem(Item(value, item.iname, i, None))
p += 1
if n > 100:
d.putEllipsis()
else:
# A "normal" local variable or parameter.
try:
addr = cleanAddress(item.value.address)
d.beginHash()
d.put('iname="%s",' % item.iname)
d.put('addr="%s",' % addr)
d.safePutItemHelper(item)
d.endHash()
with SubItem(d):
d.put('iname="%s",' % item.iname)
d.put('addr="%s",' % addr)
d.putItemHelper(item)
except AttributeError:
# Thrown by cleanAddress with message "'NoneType' object
# has no attribute 'cast'" for optimized-out values.
d.beginHash()
d.put('iname="%s",' % item.iname)
d.put('name="%s",' % item.name)
d.put('addr="<optimized out>",')
d.put('value="<optimized out>",')
d.put('type="%s"' % item.value.type)
d.endHash()
d.pushOutput()
locals = d.safeoutput
with SubItem(d):
d.put('iname="%s",' % item.iname)
d.put('name="%s",' % item.name)
d.put('addr="<optimized out>",')
d.put('value="<optimized out>",')
d.put('type="%s"' % item.value.type)
#
# Watchers
#
d.safeoutput = ""
if len(watchers) > 0:
for watcher in watchers.split("##"):
(exp, iname) = watcher.split("#")
self.handleWatch(d, exp, iname)
d.pushOutput()
watchers = d.safeoutput
sep = ""
if len(locals) and len(watchers):
sep = ","
with OutputSafer(d, ",", ""):
if len(watchers) > 0:
for watcher in watchers.split("##"):
(exp, iname) = watcher.split("#")
self.handleWatch(d, exp, iname)
#
# Breakpoints
#
#breakpoints = ""
#d.safeoutput = ""
#listOfBreakpoints(d)
#d.pushOutput()
#breakpoints = d.safeoutput
#print('data=[' + locals + sep + watchers + '],bkpts=[' + breakpoints + ']\n')
print('data=[' + locals + sep + watchers + ']\n')
print('data=[' + d.output + ']')
def handleWatch(self, d, exp, iname):
......@@ -793,49 +914,46 @@ class FrameCommand(gdb.Command):
#warn("HANDLING WATCH %s, INAME: '%s'" % (exp, iname))
if exp.startswith("[") and exp.endswith("]"):
#warn("EVAL: EXP: %s" % exp)
d.beginHash()
with SubItem(d):
d.putField("iname", iname)
d.putField("name", escapedExp)
d.putField("exp", escapedExp)
try:
list = eval(exp)
d.putValue("")
d.putType(" ")
d.putNumChild(len(list))
# This is a list of expressions to evaluate
with Children(d, len(list)):
itemNumber = 0
for item in list:
self.handleWatch(d, item, "%s.%d" % (iname, itemNumber))
itemNumber += 1
except RuntimeError, error:
warn("EVAL: ERROR CAUGHT %s" % error)
d.putValue("<syntax error>")
d.putType(" ")
d.putNumChild(0)
with Children(d, 0):
pass
return
with SubItem(d):
d.putField("iname", iname)
d.putField("name", escapedExp)
d.putField("exp", escapedExp)
try:
list = eval(exp)
d.putValue("")
d.putType(" ")
d.putNumChild(len(list))
# This is a list of expressions to evaluate
d.beginChildren(len(list))
itemNumber = 0
for item in list:
self.handleWatch(d, item, "%s.%d" % (iname, itemNumber))
itemNumber += 1
d.endChildren()
except RuntimeError, error:
warn("EVAL: ERROR CAUGHT %s" % error)
d.putValue("<syntax error>")
d.putType(" ")
d.putNumChild(0)
d.beginChildren(0)
d.endChildren()
d.endHash()
return
d.beginHash()
d.putField("iname", iname)
d.putField("name", escapedExp)
d.putField("exp", escapedExp)
handled = False
if exp == "<Edit>" or len(exp) == 0:
d.put('value=" ",type=" ",numchild="0",')
else:
try:
value = parseAndEvaluate(exp)
item = Item(value, iname, None, None)
if not value is None:
d.putAddress(value.address)
d.putItemHelper(item)
except RuntimeError:
d.put('value="<invalid>",type="<unknown>",numchild="0",')
d.endHash()
handled = False
if exp == "<Edit>" or len(exp) == 0:
d.put('value=" ",type=" ",numchild="0",')
else:
try:
value = parseAndEvaluate(exp)
item = Item(value, iname, None, None)
if not value is None:
d.putAddress(value.address)
d.putItemHelper(item)
except RuntimeError:
d.put('value="<invalid>",type="<unknown>",numchild="0",')
FrameCommand()
......@@ -882,11 +1000,15 @@ SalCommand()
class Dumper:
def __init__(self):
self.output = ""
self.safeoutput = ""
self.childTypes = [""]
self.childNumChilds = [-1]
self.maxNumChilds = [-1]
self.numChilds = [-1]
self.currentChildType = ""
self.currentChildNumChild = -1
self.currentMaxNumChilds = -1
self.currentNumChilds = -1
self.currentValue = None
self.currentValuePriority = -100
self.currentValueEncoding = None
self.currentType = None
self.currentTypePriority = -100
def put(self, value):
self.output += value
......@@ -894,60 +1016,14 @@ class Dumper:
def putField(self, name, value):
self.put('%s="%s",' % (name, value))
def beginHash(self):
self.put('{')
def endHash(self):
self.put('},')
def beginItem(self, name):
self.put('%s="' % name)
def endItem(self):
self.put('",')
def beginChildren(self, numChild_ = 1, childType_ = None, childNumChild_ = None):
childType = ""
childNumChild = -1
if type(numChild_) is list:
numChild = numChild_[0]
maxNumChild = numChild_[1]
else:
numChild = numChild_
maxNumChild = numChild_
if numChild == 0:
childType_ = None
if not childType_ is None:
childType = stripClassTag(str(childType_))
self.put('childtype="%s",' % childType)
if isSimpleType(childType_) or isStringType(self, childType_):
self.put('childnumchild="0",')
childNumChild = 0
elif childType_.code == gdb.TYPE_CODE_PTR:
self.put('childnumchild="1",')
childNumChild = 1
if not childNumChild_ is None:
self.put('childnumchild="%s",' % childNumChild_)
childNumChild = childNumChild_
self.childTypes.append(childType)
self.childNumChilds.append(childNumChild)
self.numChilds.append(numChild)
self.maxNumChilds.append(maxNumChild)
#warn("BEGIN: %s" % self.childTypes)
self.put("children=[")
def endChildren(self):
#warn("END: %s" % self.childTypes)
numChild = self.numChilds.pop()
maxNumChild = self.maxNumChilds.pop()
if maxNumChild < numChild:
self.putEllipsis();
self.childTypes.pop()
self.childNumChilds.pop()
self.put('],')
def childRange(self):
return xrange(qmin(self.maxNumChilds[-1], self.numChilds[-1]))
return xrange(qmin(self.currentMaxNumChilds, self.currentNumChilds))
# convenience
def putItemCount(self, count):
......@@ -956,25 +1032,31 @@ class Dumper:
def putEllipsis(self):
self.put('{name="<incomplete>",value="",type="",numchild="0"},')
def putType(self, type):
#warn("TYPES: '%s' '%s'" % (type, self.childTypes))
#warn(" EQUAL 2: %s " % (str(type) == self.childTypes[-1]))
type = stripClassTag(str(type))
if len(type) > 0 and type != self.childTypes[-1]:
self.put('type="%s",' % type) # str(type.unqualified()) ?
def putType(self, type, priority = 0):
# higher priority values override lower ones
if priority >= self.currentTypePriority:
self.currentType = type
self.currentTypePriority = priority
def putAddress(self, addr):
self.put('addr="%s",' % cleanAddress(addr))
def putNumChild(self, numchild):
#warn("NUM CHILD: '%s' '%s'" % (numchild, self.childNumChilds[-1]))
if numchild != self.childNumChilds[-1]:
#warn("NUM CHILD: '%s' '%s'" % (numchild, self.currentChildNumChild))
if numchild != self.currentChildNumChild:
self.put('numchild="%s",' % numchild)
def putValue(self, value, encoding = None):
if not encoding is None:
self.putField("valueencoded", encoding)
self.putField("value", value)
def putValue(self, value, encoding = None, priority = 0):
# higher priority values override lower ones
if priority >= self.currentValuePriority:
self.currentValue = value
self.currentValuePriority = priority
self.currentValueEncoding = encoding
def putPointerValue(self, value):
# Use a lower priority
self.putValue("0x%x" % value.dereference().cast(
gdb.lookup_type("unsigned long")), None, -1)
def putStringValue(self, value):
if value is None:
......@@ -1010,11 +1092,6 @@ class Dumper:
def isExpandedIName(self, iname):
return iname in self.expandedINames
def unputField(self, name):
pos = self.output.rfind(",")
if self.output[pos + 1:].startswith(name):
self.output = self.output[0:pos]
def stripNamespaceFromType(self, typeobj):
# This breaks for dumpers type names containing '__star'.
# But this should not happen as identifiers containing two
......@@ -1040,29 +1117,18 @@ class Dumper:
return self.stripNamespaceFromType(type) in movableTypes
def putIntItem(self, name, value):
self.beginHash()
self.putName(name)
self.putValue(value)
self.putType("int")
self.putNumChild(0)
self.endHash()
with SubItem(self):
self.putName(name)
self.putValue(value)
self.putType("int")
self.putNumChild(0)
def putBoolItem(self, name, value):
self.beginHash()
self.putName(name)
self.putValue(value)
self.putType("bool")
self.putNumChild(0)
self.endHash()
def pushOutput(self):
#warn("PUSH OUTPUT: %s " % self.output)
self.safeoutput += self.output
self.output = ""
def dumpInnerValueHelper(self, item):
if isSimpleType(item.value.type):
self.safePutItemHelper(item)
with SubItem(self):
self.putName(name)
self.putValue(value)
self.putType("bool")
self.putNumChild(0)
def itemFormat(self, item):
format = self.formats.get(str(cleanAddress(item.value.address)))
......@@ -1070,58 +1136,13 @@ class Dumper:
format = self.typeformats.get(stripClassTag(str(item.value.type)))
return format
def safePutItem(self, item):
self.beginHash()
self.safePutItemHelper(item)
self.endHash()
def safePutItemHelper(self, item):
self.pushOutput()
# This is only used at the top level to ensure continuation
# after failures due to uninitialized or corrupted data.
if self.passExceptions:
# for debugging reasons propagate errors.
self.putItemHelper(item)
else:
try:
self.putItemHelper(item)
except RuntimeError:
self.output = ""
# FIXME: Only catch debugger related exceptions
#exType, exValue, exTraceback = sys.exc_info()
#tb = traceback.format_exception(exType, exValue, exTraceback)
#warn("Exception: %s" % ex.message)
# DeprecationWarning: BaseException.message
# has been deprecated
#warn("Exception.")
#for line in tb:
# warn("%s" % line)
self.putName(item.name)
try:
d.putAddress(item.value.address)
except:
pass
self.putValue("<invalid>")
self.putType(str(item.value.type))
self.putNumChild(0)
#if self.isExpanded(item):
self.beginChildren()
self.endChildren()
self.pushOutput()
def putItem(self, item):
self.beginHash()
self.safePutItemHelper(item)
self.endHash()
with SubItem(self):
self.putItemHelper(item)
def putCallItem(self, name, item, func):
try:
result = call(item.value, func)
self.safePutItem(Item(result, item.iname, name, name))
except:
self.safePutItem(Item(None, item.iname))
result = call(item.value, func)
self.putItem(Item(result, item.iname, name, name))
def putItemHelper(self, item):
name = getattr(item, "name", None)
......@@ -1197,7 +1218,7 @@ class Dumper:
if format == 0:
# Bald pointer.
self.putValue(str(cleanAddress(value.address)))
self.putPointerValue(value.address)
elif format == 1 or format == 2:
# Latin1 or UTF-8
f = select(format == 1, Hex2EncodedLatin1, Hex2EncodedUtf8)
......@@ -1251,12 +1272,12 @@ class Dumper:
#warn("GENERIC AUTODEREF POINTER: %s" % value.address)
innerType = item.value.type.target()
self.putType(innerType)
self.childTypes.append(
stripClassTag(str(innerType)))
savedCurrentChildType = self.currentChildType
self.currentChildType = stripClassTag(str(innerType))
self.putItemHelper(
Item(item.value.dereference(), item.iname, None, None))
self.childTypes.pop()
self.putValue("@%s" % cleanAddress(value.address))
self.currentChildType = savedCurrentChildType
self.putPointerValue(value.address)
isHandled = True
# Fall back to plain pointer printing.
......@@ -1266,11 +1287,10 @@ class Dumper:
self.putAddress(value.address)
self.putNumChild(1)
if self.isExpanded(item):
self.beginChildren()
self.putItem(
Item(item.value.dereference(), item.iname, "*", "*"))
self.endChildren()
self.putValue(cleanAddress(value.address))
with Children(self):
self.putItem(
Item(item.value.dereference(), item.iname, "*", "*"))
self.putPointerValue(value.address)
elif str(type).startswith("<anon"):
# Anonymous union. We need a dummy name to distinguish
......@@ -1278,9 +1298,8 @@ class Dumper:
self.putType(item.value.type)
self.putValue("{...}")
self.anonNumber += 1
self.beginChildren(1)
self.listAnonymous(item, "#%d" % self.anonNumber, type)
self.endChildren()
with Children(self, 1):
self.listAnonymous(item, "#%d" % self.anonNumber, type)
else:
#warn("GENERIC STRUCT: %s" % item.value.type)
......@@ -1321,56 +1340,53 @@ class Dumper:
innerType = None
if len(fields) == 1 and fields[0].name is None:
innerType = value.type.target()
self.beginChildren(1, innerType)
baseNumber = 0
for field in fields:
#warn("FIELD: %s" % field)
#warn(" BITSIZE: %s" % field.bitsize)
#warn(" ARTIFICIAL: %s" % field.artificial)
bitpos = getattr(field, "bitpos", None)
if bitpos is None: # FIXME: Is check correct?
continue # A static class member(?).
if field.name is None:
innerType = value.type.target()
p = value.cast(innerType.pointer())
for i in xrange(value.type.sizeof / innerType.sizeof):
self.putItem(Item(p.dereference(), item.iname, i, None))
p = p + 1
continue
# Ignore vtable pointers for virtual inheritance.
if field.name.startswith("_vptr."):
continue
#warn("FIELD NAME: %s" % field.name)
#warn("FIELD TYPE: %s" % field.type)
if field.name == stripClassTag(str(field.type)):
# Field is base type. We cannot use field.name as part
# of the iname as it might contain spaces and other
# strange characters.
child = Item(value.cast(field.type),
item.iname, "@%d" % baseNumber, field.name)
baseNumber += 1
self.beginHash()
self.putField("iname", child.iname)
self.safePutItemHelper(child)
self.endHash()
elif len(field.name) == 0:
# Anonymous union. We need a dummy name to distinguish
# multiple anonymous unions in the struct.
self.anonNumber += 1
self.listAnonymous(item, "#%d" % self.anonNumber, field.type)
else:
# Named field.
self.beginHash()
child = Item(value[field.name],
item.iname, field.name, field.name)
self.safePutItemHelper(child)
self.endHash()
self.endChildren()
with Children(self, 1, innerType):
baseNumber = 0
for field in fields:
#warn("FIELD: %s" % field)
#warn(" BITSIZE: %s" % field.bitsize)
#warn(" ARTIFICIAL: %s" % field.artificial)
bitpos = getattr(field, "bitpos", None)
if bitpos is None: # FIXME: Is check correct?
continue # A static class member(?).
if field.name is None:
innerType = value.type.target()
p = value.cast(innerType.pointer())
for i in xrange(value.type.sizeof / innerType.sizeof):
self.putItem(Item(p.dereference(), item.iname, i, None))
p = p + 1
continue
# Ignore vtable pointers for virtual inheritance.
if field.name.startswith("_vptr."):
continue
#warn("FIELD NAME: %s" % field.name)
#warn("FIELD TYPE: %s" % field.type)
if field.name == stripClassTag(str(field.type)):
# Field is base type. We cannot use field.name as part
# of the iname as it might contain spaces and other
# strange characters.
child = Item(value.cast(field.type),
item.iname, "@%d" % baseNumber, field.name)
baseNumber += 1
with SubItem(self):
self.putField("iname", child.iname)
self.putItemHelper(child)
elif len(field.name) == 0:
# Anonymous union. We need a dummy name to distinguish
# multiple anonymous unions in the struct.
self.anonNumber += 1
self.listAnonymous(item, "#%d" % self.anonNumber,
field.type)
else:
# Named field.
with SubItem(self):
child = Item(value[field.name],
item.iname, field.name, field.name)
self.putItemHelper(child)
def listAnonymous(self, item, name, type):
for field in type.fields():
......@@ -1378,28 +1394,25 @@ class Dumper:
if len(field.name) > 0:
value = item.value[field.name]
child = Item(value, item.iname, field.name, field.name)
self.beginHash()
self.putAddress(value.address)
self.putItemHelper(child)
self.endHash();
with SubItem(self):
self.putAddress(value.address)
self.putItemHelper(child)
else:
# Further nested.
self.anonNumber += 1
name = "#%d" % self.anonNumber
iname = "%s.%s" % (item.iname, name)
child = Item(item.value, iname, None, name)
self.beginHash()
self.putField("name", name)
self.putField("value", " ")
if str(field.type).endswith("<anonymous union>"):
self.putField("type", "<anonymous union>")
elif str(field.type).endswith("<anonymous struct>"):
self.putField("type", "<anonymous struct>")
else:
self.putField("type", field.type)
self.beginChildren(1)
self.listAnonymous(child, name, field.type)
self.endChildren()
self.endHash()
with SubItem(self):
self.putField("name", name)
self.putField("value", " ")
if str(field.type).endswith("<anonymous union>"):
self.putField("type", "<anonymous union>")
elif str(field.type).endswith("<anonymous struct>"):
self.putField("type", "<anonymous struct>")
else:
self.putField("type", field.type)
with Children(self, 1):
self.listAnonymous(child, name, field.type)
......@@ -7,6 +7,8 @@
#
#######################################################################
from __future__ import with_statement
def qdump__QAtomicInt(d, item):
d.putValue(item.value["_q_value"])
d.putNumChild(0)
......@@ -26,13 +28,12 @@ def qdump__QByteArray(d, item):
if d.isExpanded(item):
innerType = gdb.lookup_type("char")
data = d_ptr['data']
d.beginChildren([size, 1000], innerType)
p = gdb.Value(data.cast(innerType.pointer()))
for i in d.childRange():
d.putItem(Item(p.dereference(), item.iname, i))
p += 1
d.endChildren()
with Children(d, [size, 1000], innerType):
data = d_ptr['data']
p = gdb.Value(data.cast(innerType.pointer()))
for i in d.childRange():
d.putItem(Item(p.dereference(), item.iname, i))
p += 1
def qdump__QChar(d, item):
......@@ -55,25 +56,23 @@ def qdump__QAbstractItem(d, item):
d.putStringValue(call(m, "data(mi, Qt::DisplayRole).toString()"))
d.putNumChild(rowCount * columnCount)
if d.isExpanded(item):
innerType = gdb.lookup_type(d.ns + "QAbstractItem")
d.beginChildren()
for row in xrange(rowCount):
for column in xrange(columnCount):
child = call(m, "index(row, column, mi)")
d.putName("[%s,%s]" % (row, column))
rr = call(m, "rowCount(child)")
cc = call(m, "columnCount(child)")
d.putNumChild(rr * cc)
d.putField("value",
call(m, "data(child, Qt::DisplayRole).toString())"), 6)
d.endHash()
#d.beginHash()
#d.putName("DisplayRole")
#d.putNumChild(0)
#d.putValue(m->data(mi, Qt::DisplayRole).toString(), 2)
#d.putField("type", ns + "QString")
#d.endHash()
d.endChildren()
with Children(d):
innerType = gdb.lookup_type(d.ns + "QAbstractItem")
for row in xrange(rowCount):
for column in xrange(columnCount):
with SubItem(d):
child = call(m, "index(row, column, mi)")
d.putName("[%s,%s]" % (row, column))
rr = call(m, "rowCount(child)")
cc = call(m, "columnCount(child)")
d.putNumChild(rr * cc)
d.putField("value",
call(m, "data(child, Qt::DisplayRole).toString())"), 6)
#with SubItem(d):
# d.putName("DisplayRole")
# d.putNumChild(0)
# d.putValue(m->data(mi, Qt::DisplayRole).toString(), 2)
# d.putField("type", ns + "QString")
#def qdump__QAbstractItemModel(d, item):
......@@ -89,144 +88,136 @@ def qdump__QAbstractItem(d, item):
# d.putValue("(%s,%s)" % (rowCount, columnCount))
# d.putNumChild(1)
# if d.isExpanded(item):
# d.beginChildren(1 + rowCount * columnCount)
# d.beginHash()
# d.putNumChild(1)
# d.putName(d.ns + "QObject")
# d.putStringValue(call(item.value, "objectName()"))
# d.putType(d.ns + "QObject")
# d.put('addr="%s",' % cleanAddress(item.value.address))
# #d.putField("displayedtype", call(item, "m.metaObject()->className()"))
# d.endHash()
# gdb.execute("set variable %s->m=('%sQAbstractItemModel'*)%s" \
# % (dummy, d.ns, item.value.address))
# for row in xrange(rowCount):
# for column in xrange(columnCount):
# gdb.execute("set variable %s->r=-1" % dummy)
# gdb.execute("set variable %s->c=-1" % dummy)
# d.beginHash()
# d.putName("[%s,%s]" % (row, column))
# value = call(item.value, "data(*%s, 0)" % dummy)
# d.putValue(str(value))
# d.putNumChild(0)
# d.putType(" ")
# d.endHash()
# d.endChildren()
# with Children(d, 1 + rowCount * columnCount):
# with SubItem(d):
# d.putNumChild(1)
# d.putName(d.ns + "QObject")
# d.putStringValue(call(item.value, "objectName()"))
# d.putType(d.ns + "QObject")
# d.put('addr="%s",' % cleanAddress(item.value.address))
# #d.putField("displayedtype", call(item, "m.metaObject()->className()"))
# gdb.execute("set variable %s->m=('%sQAbstractItemModel'*)%s" \
# % (dummy, d.ns, item.value.address))
# for row in xrange(rowCount):
# for column in xrange(columnCount):
# gdb.execute("set variable %s->r=-1" % dummy)
# gdb.execute("set variable %s->c=-1" % dummy)
# with SubItem(d):
# d.putName("[%s,%s]" % (row, column))
# value = call(item.value, "data(*%s, 0)" % dummy)
# d.putValue(str(value))
# d.putNumChild(0)
# d.putType(" ")
def qdump__QDateTime(d, item):
d.putStringValue(call(item.value, "toString(%sQt::TextDate)" % d.ns))
d.putStringValue(call(item.value, "toString('%sQt::TextDate')" % d.ns))
d.putNumChild(3)
if d.isExpanded(item):
d.beginChildren(8)
d.putCallItem("isNull", item, "isNull()")
d.putCallItem("toTime_t", item, "toTime_t()")
d.putCallItem("toString",
item, "toString(%sQt::TextDate)" % d.ns)
d.putCallItem("(ISO)",
item, "toString(%sQt::ISODate)" % d.ns)
d.putCallItem("(SystemLocale)",
item, "toString(%sQt::SystemLocaleDate)" % d.ns)
d.putCallItem("(Locale)",
item, "toString(%sQt::LocaleDate)" % d.ns)
d.putCallItem("toUTC",
item, "toTimeSpec(%sQt::UTC)" % d.ns)
d.putCallItem("toLocalTime",
item, "toTimeSpec(%sQt::LocalTime)" % d.ns)
d.endChildren()
with Children(d, 8):
d.putCallItem("isNull", item, "isNull()")
d.putCallItem("toTime_t", item, "toTime_t()")
d.putCallItem("toString",
item, "toString('%sQt::TextDate')" % d.ns)
d.putCallItem("(ISO)",
item, "toString('%sQt::ISODate')" % d.ns)
d.putCallItem("(SystemLocale)",
item, "toString('%sQt::SystemLocaleDate')" % d.ns)
d.putCallItem("(Locale)",
item, "toString('%sQt::LocaleDate')" % d.ns)
d.putCallItem("toUTC",
item, "toTimeSpec('%sQt::UTC')" % d.ns)
d.putCallItem("toLocalTime",
item, "toTimeSpec('%sQt::LocalTime')" % d.ns)
def qdump__QDir(d, item):
d.putStringValue(call(item.value, "path()"))
d.putNumChild(2)
if d.isExpanded(item):
d.beginChildren(2)
d.putCallItem("absolutePath", item, "absolutePath()")
d.putCallItem("canonicalPath", item, "canonicalPath()")
d.endChildren()
with Children(d, 2):
d.putCallItem("absolutePath", item, "absolutePath()")
d.putCallItem("canonicalPath", item, "canonicalPath()")
def qdump__QFile(d, item):
d.putStringValue(call(item.value, "fileName()"))
d.putNumChild(2)
if d.isExpanded(item):
d.beginChildren(2)
d.putCallItem("fileName", item, "fileName()")
d.putCallItem("exists", item, "exists()")
d.endChildren()
with Children(d, 2):
d.putCallItem("fileName", item, "fileName()")
d.putCallItem("exists", item, "exists()")
def qdump__QFileInfo(d, item):
d.putStringValue(call(item.value, "filePath()"))
d.putNumChild(3)
if d.isExpanded(item):
d.beginChildren(10, gdb.lookup_type(d.ns + "QString"))
d.putCallItem("absolutePath", item, "absolutePath()")
d.putCallItem("absoluteFilePath", item, "absoluteFilePath()")
d.putCallItem("canonicalPath", item, "canonicalPath()")
d.putCallItem("canonicalFilePath", item, "canonicalFilePath()")
d.putCallItem("completeBaseName", item, "completeBaseName()")
d.putCallItem("completeSuffix", item, "completeSuffix()")
d.putCallItem("baseName", item, "baseName()")
if False:
#ifdef Q_OS_MACX
d.putCallItem("isBundle", item, "isBundle()")
d.putCallItem("bundleName", item, "bundleName()")
d.putCallItem("fileName", item, "fileName()")
d.putCallItem("filePath", item, "filePath()")
# Crashes gdb (archer-tromey-python, at dad6b53fe)
#d.putCallItem("group", item, "group()")
#d.putCallItem("owner", item, "owner()")
d.putCallItem("path", item, "path()")
d.putCallItem("groupid", item, "groupId()")
d.putCallItem("ownerid", item, "ownerId()")
#QFile::Permissions permissions () const
perms = call(item.value, "permissions()")
if perms is None:
d.putValue("<not available>")
else:
d.beginHash()
d.putName("permissions")
d.putValue(" ")
d.putType(d.ns + "QFile::Permissions")
d.putNumChild(10)
if d.isExpandedIName(item.iname + ".permissions"):
d.beginChildren(10)
d.putBoolItem("ReadOwner", perms & 0x4000)
d.putBoolItem("WriteOwner", perms & 0x2000)
d.putBoolItem("ExeOwner", perms & 0x1000)
d.putBoolItem("ReadUser", perms & 0x0400)
d.putBoolItem("WriteUser", perms & 0x0200)
d.putBoolItem("ExeUser", perms & 0x0100)
d.putBoolItem("ReadGroup", perms & 0x0040)
d.putBoolItem("WriteGroup", perms & 0x0020)
d.putBoolItem("ExeGroup", perms & 0x0010)
d.putBoolItem("ReadOther", perms & 0x0004)
d.putBoolItem("WriteOther", perms & 0x0002)
d.putBoolItem("ExeOther", perms & 0x0001)
d.endChildren()
d.endHash()
#QDir absoluteDir () const
#QDir dir () const
d.putCallItem("caching", item, "caching()")
d.putCallItem("exists", item, "exists()")
d.putCallItem("isAbsolute", item, "isAbsolute()")
d.putCallItem("isDir", item, "isDir()")
d.putCallItem("isExecutable", item, "isExecutable()")
d.putCallItem("isFile", item, "isFile()")
d.putCallItem("isHidden", item, "isHidden()")
d.putCallItem("isReadable", item, "isReadable()")
d.putCallItem("isRelative", item, "isRelative()")
d.putCallItem("isRoot", item, "isRoot()")
d.putCallItem("isSymLink", item, "isSymLink()")
d.putCallItem("isWritable", item, "isWritable()")
d.putCallItem("created", item, "created()")
d.putCallItem("lastModified", item, "lastModified()")
d.putCallItem("lastRead", item, "lastRead()")
d.endChildren()
with Children(d, 10, gdb.lookup_type(d.ns + "QString")):
d.putCallItem("absolutePath", item, "absolutePath()")
d.putCallItem("absoluteFilePath", item, "absoluteFilePath()")
d.putCallItem("canonicalPath", item, "canonicalPath()")
d.putCallItem("canonicalFilePath", item, "canonicalFilePath()")
d.putCallItem("completeBaseName", item, "completeBaseName()")
d.putCallItem("completeSuffix", item, "completeSuffix()")
d.putCallItem("baseName", item, "baseName()")
if False:
#ifdef Q_OS_MACX
d.putCallItem("isBundle", item, "isBundle()")
d.putCallItem("bundleName", item, "bundleName()")
d.putCallItem("fileName", item, "fileName()")
d.putCallItem("filePath", item, "filePath()")
# Crashes gdb (archer-tromey-python, at dad6b53fe)
#d.putCallItem("group", item, "group()")
#d.putCallItem("owner", item, "owner()")
d.putCallItem("path", item, "path()")
d.putCallItem("groupid", item, "groupId()")
d.putCallItem("ownerid", item, "ownerId()")
#QFile::Permissions permissions () const
perms = call(item.value, "permissions()")
if perms is None:
d.putValue("<not available>")
else:
with SubItem(d):
d.putName("permissions")
d.putValue(" ")
d.putType(d.ns + "QFile::Permissions")
d.putNumChild(10)
if d.isExpandedIName(item.iname + ".permissions"):
with Children(d, 10):
perms = perms['i']
d.putBoolItem("ReadOwner", perms & 0x4000)
d.putBoolItem("WriteOwner", perms & 0x2000)
d.putBoolItem("ExeOwner", perms & 0x1000)
d.putBoolItem("ReadUser", perms & 0x0400)
d.putBoolItem("WriteUser", perms & 0x0200)
d.putBoolItem("ExeUser", perms & 0x0100)
d.putBoolItem("ReadGroup", perms & 0x0040)
d.putBoolItem("WriteGroup", perms & 0x0020)
d.putBoolItem("ExeGroup", perms & 0x0010)
d.putBoolItem("ReadOther", perms & 0x0004)
d.putBoolItem("WriteOther", perms & 0x0002)
d.putBoolItem("ExeOther", perms & 0x0001)
#QDir absoluteDir () const
#QDir dir () const
d.putCallItem("caching", item, "caching()")
d.putCallItem("exists", item, "exists()")
d.putCallItem("isAbsolute", item, "isAbsolute()")
d.putCallItem("isDir", item, "isDir()")
d.putCallItem("isExecutable", item, "isExecutable()")
d.putCallItem("isFile", item, "isFile()")
d.putCallItem("isHidden", item, "isHidden()")
d.putCallItem("isReadable", item, "isReadable()")
d.putCallItem("isRelative", item, "isRelative()")
d.putCallItem("isRoot", item, "isRoot()")
d.putCallItem("isSymLink", item, "isSymLink()")
d.putCallItem("isWritable", item, "isWritable()")
d.putCallItem("created", item, "created()")
d.putCallItem("lastModified", item, "lastModified()")
d.putCallItem("lastRead", item, "lastRead()")
def qdump__QFlags(d, item):
......@@ -289,21 +280,19 @@ def qdump__QHash(d, item):
innerType = e_ptr.dereference().type
inner = select(isSimpleKey and isSimpleValue, valueType, innerType)
d.beginChildren([size, 1000], inner)
for i in d.childRange():
it = node.dereference().cast(innerType)
d.beginHash()
key = it["key"]
value = it["value"]
if isSimpleKey and isSimpleValue:
d.putName(key)
d.putItemHelper(Item(value, item.iname, i))
d.putType(valueType)
else:
d.putItemHelper(Item(it, item.iname, i))
d.endHash()
node = hashDataNextNode(node)
d.endChildren()
with Children(d, [size, 1000], inner):
for i in d.childRange():
it = node.dereference().cast(innerType)
with SubItem(d):
key = it["key"]
value = it["value"]
if isSimpleKey and isSimpleValue:
d.putName(key)
d.putItemHelper(Item(value, item.iname, i))
d.putType(valueType)
else:
d.putItemHelper(Item(it, item.iname, i))
node = hashDataNextNode(node)
def qdump__QHashNode(d, item):
......@@ -313,22 +302,19 @@ def qdump__QHashNode(d, item):
value = item.value["value"]
if isSimpleType(keyType) and isSimpleType(valueType):
d.safePutItemHelper(Item(value, "data", item.iname))
d.putItemHelper(Item(value, "data", item.iname))
else:
d.putValue(" ")
d.putNumChild(2)
if d.isExpanded(item):
d.beginChildren()
d.beginHash()
d.putName("key")
d.putItemHelper(Item(key, item.iname, "key"))
d.endHash()
d.beginHash()
d.putName("value")
d.putItemHelper(Item(value, item.iname, "value"))
d.endHash()
d.endChildren()
with Children(d):
with SubItem(d):
d.putName("key")
d.putItemHelper(Item(key, item.iname, "key"))
with SubItem(d):
d.putName("value")
d.putItemHelper(Item(value, item.iname, "value"))
def qdump__QList(d, item):
......@@ -370,15 +356,14 @@ def qdump__QList(d, item):
else:
inner = innerType
# about 0.5s / 1000 items
d.beginChildren([size, 2000], inner)
for i in d.childRange():
if isInternal:
d.putItem(Item(p.dereference(), item.iname, i))
else:
pp = p.cast(innerType.pointer().pointer()).dereference()
d.putItem(Item(pp.dereference(), item.iname, i))
p += 1
d.endChildren()
with Children(d, [size, 2000], inner):
for i in d.childRange():
if isInternal:
d.putItem(Item(p.dereference(), item.iname, i))
else:
pp = p.cast(innerType.pointer().pointer()).dereference()
d.putItem(Item(pp.dereference(), item.iname, i))
p += 1
def qdump__QImage(d, item):
......@@ -396,14 +381,12 @@ def qdump__QImage(d, item):
d.putNumChild(0)
#d.putNumChild(1)
if d.isExpanded(item):
d.beginChildren()
d.beginHash()
d.putName("data")
d.putType(" ");
d.putNumChild(0)
d.putValue("size: %s bytes" % nbytes);
d.endHash()
d.endChildren()
with Children(d):
with SubItem(d):
d.putName("data")
d.putType(" ");
d.putNumChild(0)
d.putValue("size: %s bytes" % nbytes);
format = d.itemFormat(item)
if format == 0:
d.putDisplay(StopDisplay)
......@@ -441,50 +424,45 @@ def qdump__QLinkedList(d, item):
d.putItemCount(n)
d.putNumChild(n)
if d.isExpanded(item):
d.beginChildren([n, 1000], item.value.type.template_argument(0))
p = e_ptr["n"]
for i in d.childRange():
d.safePutItem(Item(p["t"], item.iname, i))
p = p["n"]
d.endChildren()
with Children(d, [n, 1000], item.value.type.template_argument(0)):
p = e_ptr["n"]
for i in d.childRange():
d.putItem(Item(p["t"], item.iname, i))
p = p["n"]
def qdump__QLocale(d, item):
d.putStringValue(call(item.value, "name()"))
d.putNumChild(8)
if d.isExpanded(item):
d.beginChildren(1, gdb.lookup_type(d.ns + "QChar"), 0)
d.putCallItem("country", item, "country()")
d.putCallItem("language", item, "language()")
d.putCallItem("measurementSystem", item, "measurementSystem()")
d.putCallItem("numberOptions", item, "numberOptions()")
d.putCallItem("timeFormat_(short)", item,
"timeFormat(" + d.ns + "QLocale::ShortFormat)")
d.putCallItem("timeFormat_(long)", item,
"timeFormat(" + d.ns + "QLocale::LongFormat)")
d.putCallItem("decimalPoint", item, "decimalPoint()")
d.putCallItem("exponential", item, "exponential()")
d.putCallItem("percent", item, "percent()")
d.putCallItem("zeroDigit", item, "zeroDigit()")
d.putCallItem("groupSeparator", item, "groupSeparator()")
d.putCallItem("negativeSign", item, "negativeSign()")
d.endChildren()
with Children(d, 1, gdb.lookup_type(d.ns + "QChar"), 0):
d.putCallItem("country", item, "country()")
d.putCallItem("language", item, "language()")
d.putCallItem("measurementSystem", item, "measurementSystem()")
d.putCallItem("numberOptions", item, "numberOptions()")
d.putCallItem("timeFormat_(short)", item,
"timeFormat(" + d.ns + "QLocale::ShortFormat)")
d.putCallItem("timeFormat_(long)", item,
"timeFormat(" + d.ns + "QLocale::LongFormat)")
d.putCallItem("decimalPoint", item, "decimalPoint()")
d.putCallItem("exponential", item, "exponential()")
d.putCallItem("percent", item, "percent()")
d.putCallItem("zeroDigit", item, "zeroDigit()")
d.putCallItem("groupSeparator", item, "groupSeparator()")
d.putCallItem("negativeSign", item, "negativeSign()")
def qdump__QMapNode(d, item):
d.putValue(" ")
d.putNumChild(2)
if d.isExpanded(item):
d.beginChildren(2)
d.beginHash()
d.putName("key")
d.putItemHelper(Item(item.value["key"], item.iname, "name"))
d.endHash()
d.beginHash()
d.putName("value")
d.putItemHelper(Item(item.value["value"], item.iname, "value"))
d.endHash()
d.endChildren()
with Children(d, 2):
with SubItem(d):
d.putName("key")
d.putItemHelper(Item(item.value["key"], item.iname, "name"))
with SubItem(d):
d.putName("value")
d.putItemHelper(Item(item.value["value"], item.iname, "value"))
def qdump__QMap(d, item):
......@@ -517,25 +495,22 @@ def qdump__QMap(d, item):
innerType = select(isSimpleKey and isSimpleValue, valueType, nodeType)
d.beginChildren(n, innerType)
for i in xrange(n):
itd = it.dereference()
base = it.cast(charPtr) - payloadSize
node = base.cast(nodeType.pointer()).dereference()
d.beginHash()
key = node["key"]
value = node["value"]
#if isSimpleType(item.value.type): # or isStringType(d, item.value.type):
if isSimpleKey and isSimpleValue:
#d.putType(valueType)
d.putName(key)
d.putItemHelper(Item(value, item.iname, i))
else:
d.putItemHelper(Item(node, item.iname, i))
d.endHash()
it = it.dereference()["forward"].dereference()
d.endChildren()
with Children(d, n, innerType):
for i in xrange(n):
itd = it.dereference()
base = it.cast(charPtr) - payloadSize
node = base.cast(nodeType.pointer()).dereference()
with SubItem(d):
key = node["key"]
value = node["value"]
#if isSimpleType(item.value.type): # or isStringType(d, item.value.type):
if isSimpleKey and isSimpleValue:
#d.putType(valueType)
d.putName(key)
d.putItemHelper(Item(value, item.iname, i))
else:
d.putItemHelper(Item(node, item.iname, i))
it = it.dereference()["forward"].dereference()
def qdump__MultiMap(d, item):
......@@ -551,18 +526,21 @@ def qdump__QModelIndex(d, item):
d.putValue("(%s, %s)" % (r, c))
d.putNumChild(5)
if d.isExpanded(item):
d.beginChildren()
d.putIntItem("row", r)
d.putIntItem("column", c)
d.putCallItem("parent", item, "parent()")
d.beginHash()
d.putName("model")
d.putValue(m)
d.putType(d.ns + "QAbstractItemModel*")
d.putNumChild(1)
d.endHash()
d.endChildren()
with Children(d):
d.putIntItem("row", r)
d.putIntItem("column", c)
d.putCallItem("parent", item, "parent()")
with SubItem(d):
d.putValue(m)
d.putType(d.ns + "QAbstractItemModel*")
d.putNumChild(1)
with SubItem(d):
d.putName("model")
d.putValue(m)
d.putType(d.ns + "QAbstractItemModel*")
d.putNumChild(1)
else:
d.putValue("(invalid)")
d.putNumChild(0)
......@@ -610,152 +588,136 @@ def qdump__QObject(d, item):
#warn("METADATA: %s " % metaData)
#warn("STRINGDATA: %s " % metaStringData)
#warn("TYPE: %s " % item.value.type)
#warn("INAME: %s " % item.iname)
#d.putValue("")
d.putStringValue(objectName)
#QSignalMapper::staticMetaObject
#checkRef(d_ptr["ref"])
d.putNumChild(4)
if d.isExpanded(item):
d.beginChildren()
with Children(d):
# Parent and children.
d.putItem(Item(d_ptr["parent"], item.iname, "parent", "parent"))
d.putItem(Item(d_ptr["children"], item.iname, "children", "children"))
# Properties.
d.beginHash()
#propertyCount = metaData[6]
# FIXME: Replace with plain memory accesses.
propertyCount = int(call(mo, "propertyCount()"))
warn("PROPERTY COUNT: %s" % propertyCount)
propertyData = metaData[7]
d.putName("properties")
d.putItemCount(propertyCount)
d.putType(" ")
d.putNumChild(propertyCount)
if d.isExpandedIName(item.iname + ".properties"):
d.beginChildren()
for property in xrange(propertyCount):
d.beginHash()
offset = propertyData + 3 * property
propertyName = extractCString(metaStringData, metaData[offset])
propertyType = extractCString(metaStringData, metaData[offset + 1])
d.putName(propertyName)
#flags = metaData[offset + 2]
#warn("FLAGS: %s " % flags)
#warn("PROPERTY: %s %s " % (propertyType, propertyName))
# #exp = '((\'%sQObject\'*)%s)->property("%s")' \
# % (d.ns, item.value.address, propertyName)
#exp = '"((\'%sQObject\'*)%s)"' % (d.ns, item.value.address,)
#warn("EXPRESSION: %s" % exp)
value = call(item.value, 'property("%s")' % propertyName)
val, inner, innert = qdumpHelper__QVariant(d, value)
if len(inner):
# Build-in types.
d.putType(inner)
d.putItemHelper(Item(val, item.iname + ".properties",
propertyName, propertyName))
else:
# User types.
# func = "typeToName(('%sQVariant::Type')%d)" % (d.ns, variantType)
# type = str(call(item.value, func))
# type = type[type.find('"') + 1 : type.rfind('"')]
# type = type.replace("Q", d.ns + "Q") # HACK!
# data = call(item.value, "constData()")
# tdata = data.cast(gdb.lookup_type(type).pointer()).dereference()
# d.putValue("(%s)" % tdata.type)
# d.putType(tdata.type)
# d.putNumChild(1)
# if d.isExpanded(item):
# d.beginChildren()
# d.putItem(Item(tdata, item.iname, "data", "data"))
# d.endChildren()
warn("FIXME: CUSTOM QOBJECT PROPERTIES NOT IMPLEMENTED: %s %s"
% (propertyType, innert))
d.putType(propertyType)
d.putValue("...")
d.putNumChild(0)
d.endHash()
d.endChildren()
# connections
d.beginHash()
connectionCount = 0
d.putName("connections")
d.putItemCount(connectionCount)
d.putType(" ")
d.putNumChild(connectionCount)
if connectionCount:
d.putField("childtype", "")
d.putField("childnumchild", "0")
if d.isExpandedIName(item.iname + ".connections"):
d.beginChildren()
connectionLists = d_ptr["connectionLists"]
warn("CONNECTIONLISTS: %s " % connectionLists)
for connection in xrange(connectionCount):
d.beginHash()
d.putField("iname", "%s.connections.%d" % (item.iname, connection))
d.putName("connection %d" % connection)
d.putValue("")
d.endHash()
d.endChildren()
d.endHash()
with SubItem(d):
#propertyCount = metaData[6]
# FIXME: Replace with plain memory accesses.
propertyCount = call(mo, "propertyCount()")
#warn("PROPERTY COUNT: %s" % propertyCount)
propertyData = metaData[7]
d.putName("properties")
d.putItemCount(propertyCount)
d.putType(" ")
d.putNumChild(propertyCount)
if d.isExpandedIName(item.iname + ".properties"):
with Children(d):
for property in xrange(propertyCount):
with SubItem(d):
offset = propertyData + 3 * property
propertyName = extractCString(metaStringData, metaData[offset])
propertyType = extractCString(metaStringData, metaData[offset + 1])
d.putName(propertyName)
#flags = metaData[offset + 2]
#warn("FLAGS: %s " % flags)
#warn("PROPERTY: %s %s " % (propertyType, propertyName))
# #exp = '((\'%sQObject\'*)%s)->property("%s")' \
# % (d.ns, item.value.address, propertyName)
#exp = '"((\'%sQObject\'*)%s)"' % (d.ns, item.value.address,)
#warn("EXPRESSION: %s" % exp)
value = call(item.value, 'property("%s")' % propertyName)
val, inner, innert = qdumpHelper__QVariant(d, value)
if len(inner):
# Build-in types.
d.putType(inner)
d.putItemHelper(Item(val, item.iname + ".properties",
propertyName, propertyName))
else:
# User types.
# func = "typeToName(('%sQVariant::Type')%d)" % (d.ns, variantType)
# type = str(call(item.value, func))
# type = type[type.find('"') + 1 : type.rfind('"')]
# type = type.replace("Q", d.ns + "Q") # HACK!
# data = call(item.value, "constData()")
# tdata = data.cast(gdb.lookup_type(type).pointer()).dereference()
# d.putValue("(%s)" % tdata.type)
# d.putType(tdata.type)
# d.putNumChild(1)
# if d.isExpanded(item):
# with Children(d):
# d.putItem(Item(tdata, item.iname, "data", "data"))
warn("FIXME: CUSTOM QOBJECT PROPERTIES NOT IMPLEMENTED: %s %s"
% (propertyType, innert))
d.putType(propertyType)
d.putValue("...")
d.putNumChild(0)
# connections
with SubItem(d):
connectionCount = 0
d.putName("connections")
d.putItemCount(connectionCount)
d.putType(" ")
d.putNumChild(connectionCount)
if connectionCount:
d.putField("childtype", "")
d.putField("childnumchild", "0")
if d.isExpandedIName(item.iname + ".connections"):
with Children(d):
connectionLists = d_ptr["connectionLists"]
warn("CONNECTIONLISTS: %s " % connectionLists)
for connection in xrange(connectionCount):
with SubItem(d):
d.putField("iname", "%s.connections.%d"
% (item.iname, connection))
d.putName("connection %d" % connection)
d.putValue("")
# Signals
signalCount = metaData[13]
d.beginHash()
d.putName("signals")
d.putItemCount(signalCount)
d.putType(" ")
d.putNumChild(signalCount)
if signalCount:
# FIXME: empty type does not work for childtype
#d.putField("childtype", ".")
d.putField("childnumchild", "0")
if d.isExpandedIName(item.iname + ".signals"):
d.beginChildren()
for signal in xrange(signalCount):
d.beginHash()
offset = metaData[14 + 5 * signal]
d.putField("iname", "%s.signals.%d" % (item.iname, signal))
d.putName("signal %d" % signal)
d.putType(" ")
d.putValue(extractCString(metaStringData, offset))
d.endHash()
d.endChildren()
d.endHash()
with SubItem(d):
d.putName("signals")
d.putItemCount(signalCount)
d.putType(" ")
d.putNumChild(signalCount)
if signalCount:
# FIXME: empty type does not work for childtype
#d.putField("childtype", ".")
d.putField("childnumchild", "0")
if d.isExpandedIName(item.iname + ".signals"):
with Children(d):
for signal in xrange(signalCount):
with SubItem(d):
offset = metaData[14 + 5 * signal]
d.putField("iname", "%s.signals.%d" % (item.iname, signal))
d.putName("signal %d" % signal)
d.putType(" ")
d.putValue(extractCString(metaStringData, offset))
# Slots
d.beginHash()
slotCount = metaData[4] - signalCount
d.putName("slots")
d.putItemCount(slotCount)
d.putType(" ")
d.putNumChild(slotCount)
if slotCount:
#d.putField("childtype", ".")
d.putField("childnumchild", "0")
if d.isExpandedIName(item.iname + ".slots"):
d.beginChildren()
for slot in xrange(slotCount):
d.beginHash()
offset = metaData[14 + 5 * (signalCount + slot)]
d.putField("iname", "%s.slots.%d" % (item.iname, slot))
d.putName("slot %d" % slot)
d.putType(" ")
d.putValue(extractCString(metaStringData, offset))
d.endHash()
d.endChildren()
d.endHash()
d.endChildren()
with SubItem(d):
slotCount = metaData[4] - signalCount
d.putName("slots")
d.putItemCount(slotCount)
d.putType(" ")
d.putNumChild(slotCount)
if slotCount:
#d.putField("childtype", ".")
d.putField("childnumchild", "0")
if d.isExpandedIName(item.iname + ".slots"):
with Children(d):
for slot in xrange(slotCount):
with SubItem(d):
offset = metaData[14 + 5 * (signalCount + slot)]
d.putField("iname", "%s.slots.%d" % (item.iname, slot))
d.putName("slot %d" % slot)
d.putType(" ")
d.putValue(extractCString(metaStringData, offset))
# QObject
......@@ -871,57 +833,49 @@ def qdump__QObject(d, item):
# signalCount += (mt == QMetaMethod::Signal)
# slotCount += (mt == QMetaMethod::Slot)
# }
# d.beginChildren()
# d.beginHash()
# d.putName("properties")
# // using 'addr' does not work in gdb as 'exp' is recreated as
# // (type *)addr, and here we have different 'types':
# // QObject vs QObjectPropertyList!
# d.putField("addr", d.data)
# d.putField("type", d.ns + "QObjectPropertyList")
# d.putItemCount(mo->propertyCount())
# d.putField("numchild", mo->propertyCount())
# d.endHash()
# d.beginHash()
# d.putName("signals")
# d.putField("addr", d.data)
# d.putField("type", d.ns + "QObjectSignalList")
# d.putItemCount(signalCount)
# d.putField("numchild", signalCount)
# d.endHash()
# d.beginHash()
# d.putName("slots")
# d.putField("addr", d.data)
# d.putField("type", d.ns + "QObjectSlotList")
# d.putItemCount(slotCount)
# d.putField("numchild", slotCount)
# d.endHash()
# const QObjectList objectChildren = ob->children()
# if !objectChildren.empty()) {
# d.beginHash()
# d.putName("children")
# d.putField("addr", d.data)
# d.putField("type", ns + "QObjectChildList")
# d.putItemCount(objectChildren.size())
# d.putField("numchild", objectChildren.size())
# d.endHash()
# }
# d.beginHash()
# d.putName("parent")
# dumpInnerValueHelper(d, ns + "QObject *", ob->parent())
# d.endHash()
# #if 1
# d.beginHash()
# d.putName("className")
# d.putValue(ob->metaObject()->className())
# d.putField("type", "")
# d.putField("numchild", "0")
# d.endHash()
# #endif
# d.endChildren()
# with Children(d):
# with SubItem(d):
# d.putName("properties")
# // using 'addr' does not work in gdb as 'exp' is recreated as
# // (type *)addr, and here we have different 'types':
# // QObject vs QObjectPropertyList!
# d.putField("addr", d.data)
# d.putField("type", d.ns + "QObjectPropertyList")
# d.putItemCount(mo->propertyCount())
# d.putField("numchild", mo->propertyCount())
# with SubItem(d):
# d.putName("signals")
# d.putField("addr", d.data)
# d.putField("type", d.ns + "QObjectSignalList")
# d.putItemCount(signalCount)
# d.putField("numchild", signalCount)
# with SubItem(d):
# d.putName("slots")
# d.putField("addr", d.data)
# d.putField("type", d.ns + "QObjectSlotList")
# d.putItemCount(slotCount)
# d.putField("numchild", slotCount)
# const QObjectList objectChildren = ob->children()
# if !objectChildren.empty()) {
# with SubItem(d):
# d.putName("children")
# d.putField("addr", d.data)
# d.putField("type", ns + "QObjectChildList")
# d.putItemCount(objectChildren.size())
# d.putField("numchild", objectChildren.size())
# with SubItem(d):
# d.putName("parent")
# if isSimpleType(item.value.type):
# d.putItemHelper(d, ns + "QObject *", ob->parent())
# #if 1
# with SubItem(d):
# d.putName("className")
# d.putValue(ob->metaObject()->className())
# d.putField("type", "")
# d.putField("numchild", "0")
# #endif
# #if USE_QT_GUI
# static const char *sizePolicyEnumValue(QSizePolicy::Policy p)
# {
# switch (p) {
......@@ -1029,25 +983,19 @@ def qdump__QObject(d, item):
# if d.isExpanded(item):
# d.putField("childtype", ns + "QMetaMethod::Method")
# d.putField("childnumchild", "0")
# d.beginChildren()
# for (int i = 0; i != mo->methodCount(); ++i) {
# const QMetaMethod & method = mo->method(i)
# int mt = method.methodType()
# d.beginHash()
# d.beginItem("name")
# d.put(i).put(" ").put(mo->indexOfMethod(method.signature()))
# d.put(" ").put(method.signature())
# d.endItem()
# d.beginItem("value")
# d.put((mt == QMetaMethod::Signal ? "<Signal>" : "<Slot>"))
# d.put(" (").put(mt).put(")")
# d.endItem()
# d.endHash()
# }
# d.endChildren()
# }
# d.disarm()
# }
# with Children(d):
# for (int i = 0; i != mo->methodCount(); ++i) {
# const QMetaMethod & method = mo->method(i)
# int mt = method.methodType()
# with SubItem(d):
# d.beginItem("name")
# d.put(i).put(" ").put(mo->indexOfMethod(method.signature()))
# d.put(" ").put(method.signature())
# d.endItem()
# d.beginItem("value")
# d.put((mt == QMetaMethod::Signal ? "<Signal>" : "<Slot>"))
# d.put(" (").put(mt).put(")")
# d.endItem()
#
# def qConnectionType(type):
# Qt::ConnectionType connType = static_cast<Qt::ConnectionType>(type)
......@@ -1087,19 +1035,18 @@ def qdump__QObject(d, item):
# const QObject *partner,
# int number, const char *namePostfix)
# {
# d.beginHash()
# d.beginItem("name")
# d.put(number).put(namePostfix)
# d.endItem()
# if partner == owner) {
# d.putValue("<this>")
# d.putField("type", owner->metaObject()->className())
# d.putField("numchild", 0)
# d.putField("addr", owner)
# } else {
# dumpInnerValueHelper(d, ns + "QObject *", partner)
# }
# d.endHash()
# with SubItem(d):
# d.beginItem("name")
# d.put(number).put(namePostfix)
# d.endItem()
# if partner == owner) {
# d.putValue("<this>")
# d.putField("type", owner->metaObject()->className())
# d.putField("numchild", 0)
# d.putField("addr", owner)
# } else {
# if isSimpleType(item.value.type):
# d.putItemHelper(ns + "QObject *", partner)
#
# static void dumpQObjectSignal(QDumper &d)
# {
......@@ -1112,34 +1059,30 @@ def qdump__QObject(d, item):
# #if QT_VERSION >= 0x040400
# if d.isExpanded(item):
# const QObject *ob = reinterpret_cast<const QObject *>(d.data)
# d.beginChildren()
# const ConnectionList &connList = qConnectionList(ob, signalNumber)
# for (int i = 0; i != connList.size(); ++i) {
# const Connection &conn = connectionAt(connList, i)
# dumpQObjectConnectionPart(d, ob, conn.receiver, i, " receiver")
# d.beginHash()
# d.beginItem("name")
# d.put(i).put(" slot")
# d.endItem()
# d.putField("type", "")
# if conn.receiver)
# d.putValue(conn.receiver->metaObject()->method(conn.method).signature())
# else
# d.putValue("<invalid receiver>")
# d.putField("numchild", "0")
# d.endHash()
# d.beginHash()
# d.beginItem("name")
# d.put(i).put(" type")
# d.endItem()
# d.putField("type", "")
# d.beginItem("value")
# d.put("<").put(qConnectionType(conn.connectionType)).put(" connection>")
# d.endItem()
# d.putField("numchild", "0")
# d.endHash()
# }
# d.endChildren()
# with Children(d):
# const ConnectionList &connList = qConnectionList(ob, signalNumber)
# for (int i = 0; i != connList.size(); ++i) {
# const Connection &conn = connectionAt(connList, i)
# dumpQObjectConnectionPart(d, ob, conn.receiver, i, " receiver")
# with SubItem(d):
# d.beginItem("name")
# d.put(i).put(" slot")
# d.endItem()
# d.putField("type", "")
# if conn.receiver)
# d.putValue(conn.receiver->metaObject()->method(conn.method).signature())
# else
# d.putValue("<invalid receiver>")
# d.putField("numchild", "0")
# with SubItem(d):
# d.beginItem("name")
# d.put(i).put(" type")
# d.endItem()
# d.putField("type", "")
# d.beginItem("value")
# d.put("<").put(qConnectionType(conn.connectionType)).put(" connection>")
# d.endItem()
# d.putField("numchild", "0")
# d.putField("numchild", connList.size())
# #endif
#
......@@ -1157,19 +1100,18 @@ def qdump__QObject(d, item):
# d.putField("numchild", count)
# #if QT_VERSION >= 0x040400
# if d.isExpanded(item):
# d.beginChildren()
# with Children(d):
# for (int i = 0; i != methodCount; ++i) {
# const QMetaMethod & method = mo->method(i)
# if method.methodType() == QMetaMethod::Signal) {
# int k = mo->indexOfSignal(method.signature())
# const ConnectionList &connList = qConnectionList(ob, k)
# d.beginHash()
# d.putName(k)
# d.putValue(method.signature())
# d.putField("numchild", connList.size())
# d.putField("addr", d.data)
# d.putField("type", ns + "QObjectSignal")
# d.endHash()
# with SubItem(d):
# d.putName(k)
# d.putValue(method.signature())
# d.putField("numchild", connList.size())
# d.putField("addr", d.data)
# d.putField("type", ns + "QObjectSignal")
# #endif
#
# static void dumpQObjectSlot(QDumper &d)
......@@ -1182,51 +1124,48 @@ def qdump__QObject(d, item):
#
# #if QT_VERSION >= 0x040400
# if d.isExpanded(item):
# d.beginChildren()
# int numchild = 0
# const QObject *ob = reinterpret_cast<const QObject *>(d.data)
# const ObjectPrivate *p = reinterpret_cast<const ObjectPrivate *>(dfunc(ob))
# #if QT_VERSION >= 0x040600
# int s = 0
# for (SenderList senderList = p->senders; senderList != 0
# senderList = senderList->next, ++s) {
# const QObject *sender = senderList->sender
# int signal = senderList->method; // FIXME: 'method' is wrong.
# #else
# for (int s = 0; s != p->senders.size(); ++s) {
# const QObject *sender = senderAt(p->senders, s)
# int signal = signalAt(p->senders, s)
# #endif
# const ConnectionList &connList = qConnectionList(sender, signal)
# for (int i = 0; i != connList.size(); ++i) {
# const Connection &conn = connectionAt(connList, i)
# if conn.receiver == ob and conn.method == slotNumber) {
# ++numchild
# const QMetaMethod &method = sender->metaObject()->method(signal)
# dumpQObjectConnectionPart(d, ob, sender, s, " sender")
# d.beginHash()
# d.beginItem("name")
# d.put(s).put(" signal")
# d.endItem()
# d.putField("type", "")
# d.putValue(method.signature())
# d.putField("numchild", "0")
# d.endHash()
# d.beginHash()
# d.beginItem("name")
# d.put(s).put(" type")
# d.endItem()
# d.putField("type", "")
# d.beginItem("value")
# d.put("<").put(qConnectionType(conn.method))
# d.put(" connection>")
# d.endItem()
# d.putField("numchild", "0")
# d.endHash()
# with Children(d):
# int numchild = 0
# const QObject *ob = reinterpret_cast<const QObject *>(d.data)
# const ObjectPrivate *p = reinterpret_cast<const ObjectPrivate *>(dfunc(ob))
# #####if QT_VERSION >= 0x040600
# int s = 0
# for (SenderList senderList = p->senders; senderList != 0
# senderList = senderList->next, ++s) {
# const QObject *sender = senderList->sender
# int signal = senderList->method; // FIXME: 'method' is wrong.
# #####else
# for (int s = 0; s != p->senders.size(); ++s) {
# const QObject *sender = senderAt(p->senders, s)
# int signal = signalAt(p->senders, s)
# #####endif
# const ConnectionList &connList = qConnectionList(sender, signal)
# for (int i = 0; i != connList.size(); ++i) {
# const Connection &conn = connectionAt(connList, i)
# if conn.receiver == ob and conn.method == slotNumber) {
# ++numchild
# const QMetaMethod &method = sender->metaObject()->method(signal)
# dumpQObjectConnectionPart(d, ob, sender, s, " sender")
# with SubItem(d):
# d.beginItem("name")
# d.put(s).put(" signal")
# d.endItem()
# d.putField("type", "")
# d.putValue(method.signature())
# d.putField("numchild", "0")
# with SubItem(d):
# d.beginItem("name")
# d.put(s).put(" type")
# d.endItem()
# d.putField("type", "")
# d.beginItem("value")
# d.put("<").put(qConnectionType(conn.method))
# d.put(" connection>")
# d.endItem()
# d.putField("numchild", "0")
# }
# }
# }
# }
# d.endChildren()
# d.putField("numchild", numchild)
# }
# #endif
......@@ -1250,44 +1189,42 @@ def qdump__QObject(d, item):
# d.putItemCount(count)
# d.putField("type", ns + "QObjectSlotList")
# if d.isExpanded(item):
# d.beginChildren()
# #if QT_VERSION >= 0x040400
# for (int i = 0; i != methodCount; ++i) {
# const QMetaMethod & method = mo->method(i)
# if method.methodType() == QMetaMethod::Slot) {
# d.beginHash()
# int k = mo->indexOfSlot(method.signature())
# d.putName(k)
# d.putValue(method.signature())
# with Children(d):
# #if QT_VERSION >= 0x040400
# for (int i = 0; i != methodCount; ++i) {
# const QMetaMethod & method = mo->method(i)
# if method.methodType() == QMetaMethod::Slot) {
# with SubItem(d):
# int k = mo->indexOfSlot(method.signature())
# d.putName(k)
# d.putValue(method.signature())
#
# // count senders. expensive...
# int numchild = 0
# #if QT_VERSION >= 0x040600
# int s = 0
# for (SenderList senderList = p->senders; senderList != 0
# senderList = senderList->next, ++s) {
# const QObject *sender = senderList->sender
# int signal = senderList->method; // FIXME: 'method' is wrong.
# #else
# for (int s = 0; s != p->senders.size(); ++s) {
# const QObject *sender = senderAt(p->senders, s)
# int signal = signalAt(p->senders, s)
# #endif
# const ConnectionList &connList = qConnectionList(sender, signal)
# for (int c = 0; c != connList.size(); ++c) {
# const Connection &conn = connectionAt(connList, c)
# if conn.receiver == ob and conn.method == k)
# ++numchild
# }
# }
# d.putField("numchild", numchild)
# d.putField("addr", d.data)
# d.putField("type", ns + "QObjectSlot")
# d.endHash()
# }
# }
# #endif
# d.endChildren()
# // count senders. expensive...
# int numchild = 0
# #if QT_VERSION >= 0x040600
# int s = 0
# for (SenderList senderList = p->senders; senderList != 0
# senderList = senderList->next, ++s) {
# const QObject *sender = senderList->sender
# int signal = senderList->method; // FIXME: 'method' is wrong.
# #else
# for (int s = 0; s != p->senders.size(); ++s) {
# const QObject *sender = senderAt(p->senders, s)
# int signal = signalAt(p->senders, s)
# #endif
# const ConnectionList &connList = qConnectionList(sender, signal)
# for (int c = 0; c != connList.size(); ++c) {
# const Connection &conn = connectionAt(connList, c)
# if conn.receiver == ob and conn.method == k)
# ++numchild
# }
# }
# d.putField("numchild", numchild)
# d.putField("addr", d.data)
# d.putField("type", ns + "QObjectSlot")
# }
# }
# #endif
#
# #endif // QT_BOOTSTRAPPED
......@@ -1313,10 +1250,9 @@ def qdump__QPoint(d, item):
d.putValue("(%s, %s)" % (x, y))
d.putNumChild(2)
if d.isExpanded(item):
d.beginChildren(2, x.type.strip_typedefs())
d.putItem(Item(x, None, None, "x"))
d.putItem(Item(y, None, None, "y"))
d.endChildren()
with Children(d, 2, x.type.strip_typedefs()):
d.putItem(Item(x, None, None, "x"))
d.putItem(Item(y, None, None, "y"))
def qdump__QPointF(d, item):
......@@ -1334,12 +1270,11 @@ def qdump__QRect(d, item):
d.putValue("%sx%s%s%s" % (w, h, pp(x1), pp(y1)))
d.putNumChild(4)
if d.isExpanded(item):
d.beginChildren(4, x1.type.strip_typedefs())
d.putItem(Item(x1, None, None, "x1"))
d.putItem(Item(y1, None, None, "y1"))
d.putItem(Item(x2, None, None, "x2"))
d.putItem(Item(y2, None, None, "y2"))
d.endChildren()
with Children(d, 4, x1.type.strip_typedefs()):
d.putItem(Item(x1, None, None, "x1"))
d.putItem(Item(y1, None, None, "y1"))
d.putItem(Item(x2, None, None, "x2"))
d.putItem(Item(y2, None, None, "y2"))
def qdump__QRectF(d, item):
......@@ -1356,12 +1291,11 @@ def qdump__QRectF(d, item):
d.putValue("%sx%s%s%s" % (w, h, pp(x), pp(y)))
d.putNumChild(4)
if d.isExpanded(item):
d.beginChildren(4, x.type.strip_typedefs())
d.putItem(Item(x, None, None, "x"))
d.putItem(Item(y, None, None, "y"))
d.putItem(Item(w, None, None, "w"))
d.putItem(Item(h, None, None, "h"))
d.endChildren()
with Children(d, 4, x.type.strip_typedefs()):
d.putItem(Item(x, None, None, "x"))
d.putItem(Item(y, None, None, "y"))
d.putItem(Item(w, None, None, "w"))
d.putItem(Item(h, None, None, "h"))
def qdump__QSet(d, item):
......@@ -1411,19 +1345,17 @@ def qdump__QSet(d, item):
isSimpleKey = isSimpleType(keyType)
node = hashDataFirstNode(item.value)
innerType = e_ptr.dereference().type
d.beginChildren([size, 1000], keyType)
for i in xrange(size):
it = node.dereference().cast(innerType)
d.beginHash()
key = it["key"]
if isSimpleKey:
d.putType(keyType)
d.putItemHelper(Item(key, None, None))
else:
d.putItemHelper(Item(key, item.iname, i))
d.endHash()
node = hashDataNextNode(node)
d.endChildren()
with Children(d, [size, 1000], keyType):
for i in xrange(size):
it = node.dereference().cast(innerType)
with SubItem(d):
key = it["key"]
if isSimpleKey:
d.putType(keyType)
d.putItemHelper(Item(key, None, None))
else:
d.putItemHelper(Item(key, item.iname, i))
node = hashDataNextNode(node)
def qdump__QSharedPointer(d, item):
......@@ -1436,10 +1368,9 @@ def qdump__QSize(d, item):
d.putValue("(%s, %s)" % (w, h))
d.putNumChild(2)
if d.isExpanded(item):
d.beginChildren(2, w.type)
d.putItem(Item(w, item.iname, "w", "w"))
d.putItem(Item(h, item.iname, "h", "h"))
d.endChildren()
with Children(d, 2, w.type):
d.putItem(Item(w, item.iname, "w", "w"))
d.putItem(Item(h, item.iname, "h", "h"))
def qdump__QSizeF(d, item):
......@@ -1470,11 +1401,10 @@ def qdump__QStringList(d, item):
if d.isExpanded(item):
innerType = gdb.lookup_type(d.ns + "QString")
ptr = gdb.Value(d_ptr["array"]).cast(innerType.pointer())
d.beginChildren([size, 1000], innerType)
for i in d.childRange():
d.putItem(Item(ptr.dereference(), item.iname, i))
ptr += 1
d.endChildren()
with Children(d, [size, 1000], innerType):
for i in d.childRange():
d.putItem(Item(ptr.dereference(), item.iname, i))
ptr += 1
def qdump__QTemporaryFile(d, item):
......@@ -1486,10 +1416,9 @@ def qdump__QTextCodec(d, item):
d.putValue(encodeByteArray(value), 6)
d.putNumChild(2)
if d.isExpanded(item):
d.beginChildren()
d.putCallItem("name", item, "name()")
d.putCallItem("mibEnum", item, "mibEnum()")
d.endChildren()
with Children(d):
d.putCallItem("name", item, "name()")
d.putCallItem("mibEnum", item, "mibEnum()")
def qdumpHelper__QVariant(d, value):
#warn("VARIANT TYPE: %s : " % variantType)
......@@ -1639,12 +1568,12 @@ def qdump__QVariant(d, item):
if len(inner):
# Build-in types.
d.putValue("(%s)" % innert)
#d.putValue("(%s)" % innert)
d.putType("%sQVariant (%s)" % (d.ns, innert))
d.putNumChild(1)
if d.isExpanded(item):
d.beginChildren()
d.putItem(Item(val, item.iname, "data", "data"))
d.endChildren()
with Children(d):
d.putItem(Item(val, item.iname, "data", "data"))
else:
# User types.
d_member = item.value["d"]
......@@ -1654,13 +1583,11 @@ def qdump__QVariant(d, item):
type = type.replace("Q", d.ns + "Q") # HACK!
data = call(item.value, "constData()")
tdata = data.cast(gdb.lookup_type(type).pointer()).dereference()
d.putValue("(%s)" % tdata.type)
d.putType(tdata.type)
d.putType("%sQVariant (%s)" % (d.ns, tdata.type))
d.putNumChild(1)
if d.isExpanded(item):
d.beginChildren()
d.putItem(Item(tdata, item.iname, "data", "data"))
d.endChildren()
with Children(d):
d.putItem(Item(tdata, item.iname, "data", "data"))
def qdump__QVector(d, item):
......@@ -1677,11 +1604,10 @@ def qdump__QVector(d, item):
d.putNumChild(size)
if d.isExpanded(item):
p = gdb.Value(p_ptr["array"]).cast(innerType.pointer())
d.beginChildren([size, 2000], innerType)
for i in d.childRange():
d.safePutItem(Item(p.dereference(), item.iname, i))
p += 1
d.endChildren()
with Children(d, [size, 2000], innerType):
for i in d.childRange():
d.putItem(Item(p.dereference(), item.iname, i))
p += 1
def qdump__QWeakPointer(d, item):
......@@ -1709,11 +1635,10 @@ def qdump__QWeakPointer(d, item):
d.putNumChild(3)
if d.isExpanded(item):
d.beginChildren(3)
d.putItem(Item(value.dereference(), item.iname, "data", "data"))
d.putIntItem("weakref", weakref)
d.putIntItem("strongref", strongref)
d.endChildren()
with Children(d, 3):
d.putItem(Item(value.dereference(), item.iname, "data", "data"))
d.putIntItem("weakref", weakref)
d.putIntItem("strongref", strongref)
......@@ -1733,21 +1658,20 @@ def qdump__std__deque(d, item):
innerType = item.value.type.template_argument(0)
innerSize = innerType.sizeof
bufsize = select(innerSize < 512, 512 / innerSize, 1)
d.beginChildren([size, 2000], innerType)
pcur = start["_M_cur"]
pfirst = start["_M_first"]
plast = start["_M_last"]
pnode = start["_M_node"]
for i in d.childRange():
d.safePutItem(Item(pcur.dereference(), item.iname, i))
pcur += 1
if pcur == plast:
newnode = pnode + 1
pnode = newnode
pfirst = newnode.dereference()
plast = pfirst + bufsize
pcur = pfirst
d.endChildren()
with Children(d, [size, 2000], innerType):
pcur = start["_M_cur"]
pfirst = start["_M_first"]
plast = start["_M_last"]
pnode = start["_M_node"]
for i in d.childRange():
d.putItem(Item(pcur.dereference(), item.iname, i))
pcur += 1
if pcur == plast:
newnode = pnode + 1
pnode = newnode
pfirst = newnode.dereference()
plast = pfirst + bufsize
pcur = pfirst
def qdump__std__list(d, item):
......@@ -1766,13 +1690,12 @@ def qdump__std__list(d, item):
if d.isExpanded(item):
p = node["_M_next"]
innerType = item.value.type.template_argument(0)
d.beginChildren([size, 1000], innerType)
for i in d.childRange():
innerPointer = innerType.pointer()
value = (p + 1).cast(innerPointer).dereference()
d.safePutItem(Item(value, item.iname, i))
p = p["_M_next"]
d.endChildren()
with Children(d, [size, 1000], innerType):
for i in d.childRange():
innerPointer = innerType.pointer()
value = (p + 1).cast(innerPointer).dereference()
d.putItem(Item(value, item.iname, i))
p = p["_M_next"]
def qdump__std__map(d, item):
......@@ -1791,39 +1714,36 @@ def qdump__std__map(d, item):
innerType = select(isSimpleKey and isSimpleValue, valueType, pairType)
pairPointer = pairType.pointer()
node = impl["_M_header"]["_M_left"]
d.beginChildren([size, 1000], select(size > 0, innerType, pairType),
select(isSimpleKey and isSimpleValue, None, 2))
for i in d.childRange():
pair = (node + 1).cast(pairPointer).dereference()
d.beginHash()
if isSimpleKey and isSimpleValue:
d.putName(str(pair["first"]))
d.putItemHelper(Item(pair["second"], item.iname, i))
else:
d.putValue(" ")
if d.isExpandedIName("%s.%d" % (item.iname, i)):
d.beginChildren(2, None)
iname = "%s.%d" % (item.iname, i)
keyItem = Item(pair["first"], iname, "first", "first")
valueItem = Item(pair["second"], iname, "second", "second")
d.putItem(keyItem)
d.putItem(valueItem)
d.endChildren()
d.endHash()
if isNull(node["_M_right"]):
parent = node["_M_parent"]
while node == parent["_M_right"]:
node = parent
parent = parent["_M_parent"]
if node["_M_right"] != parent:
node = parent
else:
node = node["_M_right"]
while not isNull(node["_M_left"]):
node = node["_M_left"]
d.endChildren()
with Children(d, [size, 1000], select(size > 0, innerType, pairType),
select(isSimpleKey and isSimpleValue, None, 2)):
for i in d.childRange():
pair = (node + 1).cast(pairPointer).dereference()
with SubItem(d):
if isSimpleKey and isSimpleValue:
d.putName(str(pair["first"]))
d.putItemHelper(Item(pair["second"], item.iname, i))
else:
d.putValue(" ")
if d.isExpandedIName("%s.%d" % (item.iname, i)):
with Children(d, 2, None):
iname = "%s.%d" % (item.iname, i)
keyItem = Item(pair["first"], iname, "first", "first")
valueItem = Item(pair["second"], iname, "second", "second")
d.putItem(keyItem)
d.putItem(valueItem)
if isNull(node["_M_right"]):
parent = node["_M_parent"]
while node == parent["_M_right"]:
node = parent
parent = parent["_M_parent"]
if node["_M_right"] != parent:
node = parent
else:
node = node["_M_right"]
while not isNull(node["_M_left"]):
node = node["_M_left"]
def qdump__std__set(d, item):
......@@ -1835,23 +1755,22 @@ def qdump__std__set(d, item):
if d.isExpanded(item):
valueType = item.value.type.template_argument(0)
node = impl["_M_header"]["_M_left"]
d.beginChildren([size, 1000], valueType)
for i in d.childRange():
element = (node + 1).cast(valueType.pointer()).dereference()
d.putItem(Item(element, item.iname, i))
if isNull(node["_M_right"]):
parent = node["_M_parent"]
while node == parent["_M_right"]:
node = parent
parent = parent["_M_parent"]
if node["_M_right"] != parent:
node = parent
else:
node = node["_M_right"]
while not isNull(node["_M_left"]):
node = node["_M_left"]
d.endChildren()
with Children(d, [size, 1000], valueType):
for i in d.childRange():
element = (node + 1).cast(valueType.pointer()).dereference()
d.putItem(Item(element, item.iname, i))
if isNull(node["_M_right"]):
parent = node["_M_parent"]
while node == parent["_M_right"]:
node = parent
parent = parent["_M_parent"]
if node["_M_right"] != parent:
node = parent
else:
node = node["_M_right"]
while not isNull(node["_M_left"]):
node = node["_M_left"]
def qdump__std__string(d, item):
......@@ -1864,15 +1783,13 @@ def qdump__std__string(d, item):
alloc = rep['_M_capacity']
check(rep['_M_refcount'] >= 0)
check(0 <= size and size <= alloc and alloc <= 100*1000*1000)
d.unputField("type")
p = gdb.Value(data.cast(charType.pointer()))
s = ""
# Override "std::basic_string<...>
if str(charType) == "char":
d.putType("std::string")
d.putType("std::string", 1)
elif str(charType) == "wchar_t":
d.putType("std::wstring")
else:
d.putType(baseType)
d.putType("std::wstring", 1)
n = qmin(size, 1000)
if charType.sizeof == 1:
......@@ -1880,7 +1797,7 @@ def qdump__std__string(d, item):
for i in xrange(size):
s += format % int(p.dereference())
p += 1
d.putValue(s, Hex2EncodedLittleEndian)
d.putValue(s, Hex2EncodedLatin1)
d.putNumChild(0)
elif charType.sizeof == 2:
format = "%02x%02x"
......@@ -1919,12 +1836,11 @@ def qdump__std__vector(d, item):
d.putItemCount(size)
d.putNumChild(size)
if d.isExpanded(item):
p = start
d.beginChildren([size, 10000], item.value.type.template_argument(0))
for i in d.childRange():
d.safePutItem(Item(p.dereference(), item.iname, i))
p += 1
d.endChildren()
with Children(d, [size, 10000], item.value.type.template_argument(0)):
p = start
for i in d.childRange():
d.putItem(Item(p.dereference(), item.iname, i))
p += 1
def qdump__string(d, item):
......
For Linux, MinGW:
FSF 7.1 release
+ gdb-increased-dcache-line-size.patch
For Maemo targets:
(--target=arm-none-linux-gnueabi)
FSF 7.1 release
+ gdb-increased-dcache-line-size.patch
+ gdb-stepping-for-maemo.patch
For Symbian targets:
(--target=arm-none-symbianelf)
CS 4.4-164 release
+ gdb-increased-dcache-line-size.patch
+ gdb-work-around-trk-single-step.patch
Experimental for performance (don't apply):
gdb-without-dwarf-name-canonicalization.patch
--- a/gdb/infrun.c
+++ b/gdb/infrun.c
@@ -4126,7 +4127,9 @@ infrun: not switching back to stepped thread, it has vanished\n");
if (execution_direction != EXEC_REVERSE
&& ecs->event_thread->step_over_calls == STEP_OVER_UNDEBUGGABLE
- && in_solib_dynsym_resolve_code (stop_pc))
+ && in_solib_dynsym_resolve_code (stop_pc)
+ && !(ecs->event_thread->step_range_start > 1
+ && in_solib_dynsym_resolve_code (ecs->event_thread->step_range_start)))
{
CORE_ADDR pc_after_resolver =
gdbarch_skip_solib_resolver (gdbarch, stop_pc);
------------------------------------------------------------------------
NOTE: This relates to http://sourceware.org/bugzilla/show_bug.cgi?id=11497
<?xml version="1.0" encoding="UTF-8"?>
<module>
<type name="QAbstractScrollArea" extends="QFrame">
<property name="verticalScrollBarPolicy" type="Qt.ScrollBarPolicy"/>
<property name="horizontalScrollBarPolicy" type="Qt.ScrollBarPolicy"/>
</type>
<type name="QAction" extends="Qt.QtObject">
<enum name="MenuRole">
<enumerator name="NoRole" value="0"/>
......@@ -52,13 +48,6 @@
<signal name="toggled">
<param type="bool"/>
</signal>
<signal name="activated">
<param type="int"/>
</signal>
<signal name="activated"/>
<method name="setOn">
<param name="b" type="bool"/>
</method>
<method name="trigger"/>
<method name="hover"/>
<method name="setChecked">
......@@ -75,6 +64,15 @@
<param type="bool"/>
</method>
</type>
<type name="QDeclarativeAnchorSet" extends="Qt.QtObject">
<property name="left" type="QDeclarativeAnchorLine"/>
<property name="right" type="QDeclarativeAnchorLine"/>
<property name="horizontalCenter" type="QDeclarativeAnchorLine"/>
<property name="top" type="QDeclarativeAnchorLine"/>
<property name="bottom" type="QDeclarativeAnchorLine"/>
<property name="verticalCenter" type="QDeclarativeAnchorLine"/>
<property name="baseline" type="QDeclarativeAnchorLine"/>
</type>
<type name="QDeclarativeAnchors" extends="Qt.QtObject">
<property name="left" type="QDeclarativeAnchorLine"/>
<property name="right" type="QDeclarativeAnchorLine"/>
......@@ -126,6 +124,13 @@
<property name="x" type="qreal"/>
<property name="y" type="qreal"/>
</type>
<type name="QDeclarativeFlickableVisibleArea" extends="Qt.QtObject">
<property name="xPosition" type="qreal"/>
<property name="yPosition" type="qreal"/>
<property name="widthRatio" type="qreal"/>
<property name="heightRatio" type="qreal"/>
<signal name="pageChanged"/>
</type>
<type name="QDeclarativeImageBase" extends="Qt.Item">
<enum name="Status">
<enumerator name="Null" value="0"/>
......@@ -137,9 +142,11 @@
<property name="source" type="QUrl"/>
<property name="progress" type="qreal"/>
<property name="asynchronous" type="bool"/>
<property name="sourceSize" type="QSize"/>
<signal name="sourceChanged">
<param type="QUrl"/>
</signal>
<signal name="sourceSizeChanged"/>
<signal name="statusChanged">
<param type="Status"/>
</signal>
......@@ -161,6 +168,11 @@
<type name="QDeclarativePathElement" extends="Qt.QtObject">
<signal name="changed"/>
</type>
<type name="QDeclarativePen" extends="Qt.QtObject">
<property name="width" type="int"/>
<property name="color" type="QColor"/>
<signal name="penChanged"/>
</type>
<type name="QDeclarativeScaleGrid" extends="Qt.QtObject">
<property name="left" type="int"/>
<property name="top" type="int"/>
......@@ -223,28 +235,6 @@
<property name="localStorageDatabaseEnabled" type="bool"/>
<property name="localContentCanAccessRemoteUrls" type="bool"/>
</type>
<type name="QFrame" extends="QWidget">
<enum name="Shape">
<enumerator name="NoFrame" value="0"/>
<enumerator name="Box" value="1"/>
<enumerator name="Panel" value="2"/>
<enumerator name="WinPanel" value="3"/>
<enumerator name="HLine" value="4"/>
<enumerator name="VLine" value="5"/>
<enumerator name="StyledPanel" value="6"/>
</enum>
<enum name="Shadow">
<enumerator name="Plain" value="16"/>
<enumerator name="Raised" value="32"/>
<enumerator name="Sunken" value="48"/>
</enum>
<property name="frameShape" type="Shape"/>
<property name="frameShadow" type="Shadow"/>
<property name="lineWidth" type="int"/>
<property name="midLineWidth" type="int"/>
<property name="frameWidth" type="int"/>
<property name="frameRect" type="QRect"/>
</type>
<type name="QGraphicsEffect" extends="Qt.QtObject">
<enum name="ChangeFlags">
<enumerator name="SourceAttached" value="1"/>
......@@ -273,6 +263,9 @@
<property name="rotation" type="qreal"/>
<property name="scale" type="qreal"/>
<property name="transformOriginPoint" type="QPointF"/>
<property name="children" type="QGraphicsObject" isList="true"/>
<property name="width" type="qreal"/>
<property name="height" type="qreal"/>
<signal name="parentChanged"/>
<signal name="opacityChanged"/>
<signal name="visibleChanged"/>
......@@ -282,114 +275,11 @@
<signal name="zChanged"/>
<signal name="rotationChanged"/>
<signal name="scaleChanged"/>
</type>
<type name="QGraphicsScene" extends="Qt.QtObject">
<property name="backgroundBrush" type="QBrush"/>
<property name="foregroundBrush" type="QBrush"/>
<property name="itemIndexMethod" type="ItemIndexMethod"/>
<property name="sceneRect" type="QRectF"/>
<property name="bspTreeDepth" type="int"/>
<property name="palette" type="QPalette"/>
<property name="font" type="QFont"/>
<property name="sortCacheEnabled" type="bool"/>
<property name="stickyFocus" type="bool"/>
<signal name="changed">
<param name="region" type="QList&lt;QRectF&gt;"/>
</signal>
<signal name="sceneRectChanged">
<param name="rect" type="QRectF"/>
</signal>
<signal name="selectionChanged"/>
<method name="update">
<param name="rect" type="QRectF"/>
</method>
<method name="update"/>
<method name="invalidate">
<param name="rect" type="QRectF"/>
<param name="layers" type="SceneLayers"/>
</method>
<method name="invalidate">
<param name="rect" type="QRectF"/>
</method>
<method name="invalidate"/>
<method name="advance"/>
<method name="clearSelection"/>
<method name="clear"/>
<signal name="childrenChanged"/>
<signal name="widthChanged"/>
<signal name="heightChanged"/>
</type>
<type name="QGraphicsTransform" extends="Qt.QtObject"/>
<type name="QGraphicsView" extends="QAbstractScrollArea">
<enum name="ViewportAnchor">
<enumerator name="NoAnchor" value="0"/>
<enumerator name="AnchorViewCenter" value="1"/>
<enumerator name="AnchorUnderMouse" value="2"/>
</enum>
<enum name="CacheMode">
<enumerator name="CacheNone" value="0"/>
<enumerator name="CacheBackground" value="1"/>
</enum>
<enum name="DragMode">
<enumerator name="NoDrag" value="0"/>
<enumerator name="ScrollHandDrag" value="1"/>
<enumerator name="RubberBandDrag" value="2"/>
</enum>
<enum name="ViewportUpdateMode">
<enumerator name="FullViewportUpdate" value="0"/>
<enumerator name="MinimalViewportUpdate" value="1"/>
<enumerator name="SmartViewportUpdate" value="2"/>
<enumerator name="NoViewportUpdate" value="3"/>
<enumerator name="BoundingRectViewportUpdate" value="4"/>
</enum>
<enum name="OptimizationFlags">
<enumerator name="DontClipPainter" value="1"/>
<enumerator name="DontSavePainterState" value="2"/>
<enumerator name="DontAdjustForAntialiasing" value="4"/>
<enumerator name="IndirectPainting" value="8"/>
</enum>
<property name="backgroundBrush" type="QBrush"/>
<property name="foregroundBrush" type="QBrush"/>
<property name="interactive" type="bool"/>
<property name="sceneRect" type="QRectF"/>
<property name="alignment" type="Qt.Alignment"/>
<property name="renderHints" type="QPainter.RenderHints"/>
<property name="dragMode" type="DragMode"/>
<property name="cacheMode" type="CacheMode"/>
<property name="transformationAnchor" type="ViewportAnchor"/>
<property name="resizeAnchor" type="ViewportAnchor"/>
<property name="viewportUpdateMode" type="ViewportUpdateMode"/>
<property name="rubberBandSelectionMode" type="Qt.ItemSelectionMode"/>
<property name="optimizationFlags" type="OptimizationFlags"/>
<method name="updateScene">
<param name="rects" type="QList&lt;QRectF&gt;"/>
</method>
<method name="invalidateScene">
<param name="rect" type="QRectF"/>
<param name="layers" type="QGraphicsScene.SceneLayers"/>
</method>
<method name="invalidateScene">
<param name="rect" type="QRectF"/>
</method>
<method name="invalidateScene"/>
<method name="updateSceneRect">
<param name="rect" type="QRectF"/>
</method>
</type>
<type name="QGraphicsWidget" extends="QGraphicsObject">
<property name="palette" type="QPalette"/>
<property name="font" type="QFont"/>
<property name="layoutDirection" type="Qt.LayoutDirection"/>
<property name="size" type="QSizeF"/>
<property name="minimumSize" type="QSizeF"/>
<property name="preferredSize" type="QSizeF"/>
<property name="maximumSize" type="QSizeF"/>
<property name="sizePolicy" type="QSizePolicy"/>
<property name="focusPolicy" type="Qt.FocusPolicy"/>
<property name="windowFlags" type="Qt.WindowFlags"/>
<property name="windowTitle" type="string"/>
<property name="geometry" type="QRectF"/>
<property name="autoFillBackground" type="bool"/>
<signal name="geometryChanged"/>
<method name="close" type="bool"/>
</type>
<type name="QListModelInterface" extends="Qt.QtObject">
<signal name="itemsInserted">
<param name="index" type="int"/>
......@@ -411,104 +301,6 @@
</signal>
</type>
<type name="QValidator" extends="Qt.QtObject"/>
<type name="QWidget" extends="Qt.QtObject">
<property name="modal" type="bool"/>
<property name="windowModality" type="Qt.WindowModality"/>
<property name="enabled" type="bool"/>
<property name="geometry" type="QRect"/>
<property name="frameGeometry" type="QRect"/>
<property name="normalGeometry" type="QRect"/>
<property name="x" type="int"/>
<property name="y" type="int"/>
<property name="pos" type="QPoint"/>
<property name="frameSize" type="QSize"/>
<property name="size" type="QSize"/>
<property name="width" type="int"/>
<property name="height" type="int"/>
<property name="rect" type="QRect"/>
<property name="childrenRect" type="QRect"/>
<property name="childrenRegion" type="QRegion"/>
<property name="sizePolicy" type="QSizePolicy"/>
<property name="minimumSize" type="QSize"/>
<property name="maximumSize" type="QSize"/>
<property name="minimumWidth" type="int"/>
<property name="minimumHeight" type="int"/>
<property name="maximumWidth" type="int"/>
<property name="maximumHeight" type="int"/>
<property name="sizeIncrement" type="QSize"/>
<property name="baseSize" type="QSize"/>
<property name="palette" type="QPalette"/>
<property name="font" type="QFont"/>
<property name="cursor" type="QCursor"/>
<property name="mouseTracking" type="bool"/>
<property name="isActiveWindow" type="bool"/>
<property name="focusPolicy" type="Qt.FocusPolicy"/>
<property name="focus" type="bool"/>
<property name="contextMenuPolicy" type="Qt.ContextMenuPolicy"/>
<property name="updatesEnabled" type="bool"/>
<property name="visible" type="bool"/>
<property name="minimized" type="bool"/>
<property name="maximized" type="bool"/>
<property name="fullScreen" type="bool"/>
<property name="sizeHint" type="QSize"/>
<property name="minimumSizeHint" type="QSize"/>
<property name="acceptDrops" type="bool"/>
<property name="windowTitle" type="string"/>
<property name="windowIcon" type="QIcon"/>
<property name="windowIconText" type="string"/>
<property name="windowOpacity" type="double"/>
<property name="windowModified" type="bool"/>
<property name="toolTip" type="string"/>
<property name="statusTip" type="string"/>
<property name="whatsThis" type="string"/>
<property name="accessibleName" type="string"/>
<property name="accessibleDescription" type="string"/>
<property name="layoutDirection" type="Qt.LayoutDirection"/>
<property name="autoFillBackground" type="bool"/>
<property name="styleSheet" type="string"/>
<property name="locale" type="QLocale"/>
<property name="windowFilePath" type="string"/>
<property name="inputMethodHints" type="Qt.InputMethodHints"/>
<signal name="customContextMenuRequested">
<param name="pos" type="QPoint"/>
</signal>
<method name="setEnabled">
<param type="bool"/>
</method>
<method name="setDisabled">
<param type="bool"/>
</method>
<method name="setWindowModified">
<param type="bool"/>
</method>
<method name="setWindowTitle">
<param type="string"/>
</method>
<method name="setStyleSheet">
<param name="styleSheet" type="string"/>
</method>
<method name="setFocus"/>
<method name="update"/>
<method name="repaint"/>
<method name="setVisible">
<param name="visible" type="bool"/>
</method>
<method name="setHidden">
<param name="hidden" type="bool"/>
</method>
<method name="show"/>
<method name="hide"/>
<method name="setShown">
<param name="shown" type="bool"/>
</method>
<method name="showMinimized"/>
<method name="showMaximized"/>
<method name="showFullScreen"/>
<method name="showNormal"/>
<method name="close" type="bool"/>
<method name="raise"/>
<method name="lower"/>
</type>
<type name="Qt">
<enum name="GlobalColor">
<enumerator name="color0" value="0"/>
......@@ -626,44 +418,6 @@
<enumerator name="WindowCancelButtonHint" value="1048576"/>
<enumerator name="WindowSoftkeysVisibleHint" value="1073741824"/>
<enumerator name="WindowSoftkeysRespondHint" value="-2147483648"/>
<enumerator name="WMouseNoMask" value="524288"/>
<enumerator name="WDestructiveClose" value="1048576"/>
<enumerator name="WStaticContents" value="2097152"/>
<enumerator name="WGroupLeader" value="4194304"/>
<enumerator name="WShowModal" value="8388608"/>
<enumerator name="WNoMousePropagation" value="16777216"/>
<enumerator name="WType_TopLevel" value="1"/>
<enumerator name="WType_Dialog" value="3"/>
<enumerator name="WType_Popup" value="9"/>
<enumerator name="WType_Desktop" value="17"/>
<enumerator name="WType_Mask" value="255"/>
<enumerator name="WStyle_Customize" value="0"/>
<enumerator name="WStyle_NormalBorder" value="0"/>
<enumerator name="WStyle_DialogBorder" value="256"/>
<enumerator name="WStyle_NoBorder" value="2048"/>
<enumerator name="WStyle_Title" value="4096"/>
<enumerator name="WStyle_SysMenu" value="8192"/>
<enumerator name="WStyle_Minimize" value="16384"/>
<enumerator name="WStyle_Maximize" value="32768"/>
<enumerator name="WStyle_MinMax" value="49152"/>
<enumerator name="WStyle_Tool" value="11"/>
<enumerator name="WStyle_StaysOnTop" value="262144"/>
<enumerator name="WStyle_ContextHelp" value="65536"/>
<enumerator name="WPaintDesktop" value="0"/>
<enumerator name="WPaintClever" value="0"/>
<enumerator name="WX11BypassWM" value="1024"/>
<enumerator name="WWinOwnDC" value="512"/>
<enumerator name="WMacSheet" value="5"/>
<enumerator name="WMacDrawer" value="7"/>
<enumerator name="WStyle_Splash" value="15"/>
<enumerator name="WNoAutoErase" value="0"/>
<enumerator name="WRepaintNoErase" value="0"/>
<enumerator name="WNorthWestGravity" value="2097152"/>
<enumerator name="WType_Modal" value="8388611"/>
<enumerator name="WStyle_Dialog" value="3"/>
<enumerator name="WStyle_NoBorderEx" value="2048"/>
<enumerator name="WResizeNoErase" value="0"/>
<enumerator name="WMacNoSheet" value="0"/>
</enum>
<enum name="WindowFlags">
<enumerator name="Widget" value="0"/>
......@@ -699,44 +453,6 @@
<enumerator name="WindowCancelButtonHint" value="1048576"/>
<enumerator name="WindowSoftkeysVisibleHint" value="1073741824"/>
<enumerator name="WindowSoftkeysRespondHint" value="-2147483648"/>
<enumerator name="WMouseNoMask" value="524288"/>
<enumerator name="WDestructiveClose" value="1048576"/>
<enumerator name="WStaticContents" value="2097152"/>
<enumerator name="WGroupLeader" value="4194304"/>
<enumerator name="WShowModal" value="8388608"/>
<enumerator name="WNoMousePropagation" value="16777216"/>
<enumerator name="WType_TopLevel" value="1"/>
<enumerator name="WType_Dialog" value="3"/>
<enumerator name="WType_Popup" value="9"/>
<enumerator name="WType_Desktop" value="17"/>
<enumerator name="WType_Mask" value="255"/>
<enumerator name="WStyle_Customize" value="0"/>
<enumerator name="WStyle_NormalBorder" value="0"/>
<enumerator name="WStyle_DialogBorder" value="256"/>
<enumerator name="WStyle_NoBorder" value="2048"/>
<enumerator name="WStyle_Title" value="4096"/>
<enumerator name="WStyle_SysMenu" value="8192"/>
<enumerator name="WStyle_Minimize" value="16384"/>
<enumerator name="WStyle_Maximize" value="32768"/>
<enumerator name="WStyle_MinMax" value="49152"/>
<enumerator name="WStyle_Tool" value="11"/>
<enumerator name="WStyle_StaysOnTop" value="262144"/>
<enumerator name="WStyle_ContextHelp" value="65536"/>
<enumerator name="WPaintDesktop" value="0"/>
<enumerator name="WPaintClever" value="0"/>
<enumerator name="WX11BypassWM" value="1024"/>
<enumerator name="WWinOwnDC" value="512"/>
<enumerator name="WMacSheet" value="5"/>
<enumerator name="WMacDrawer" value="7"/>
<enumerator name="WStyle_Splash" value="15"/>
<enumerator name="WNoAutoErase" value="0"/>
<enumerator name="WRepaintNoErase" value="0"/>
<enumerator name="WNorthWestGravity" value="2097152"/>
<enumerator name="WType_Modal" value="8388611"/>
<enumerator name="WStyle_Dialog" value="3"/>
<enumerator name="WStyle_NoBorderEx" value="2048"/>
<enumerator name="WResizeNoErase" value="0"/>
<enumerator name="WMacNoSheet" value="0"/>
</enum>
<enum name="WindowState">
<enumerator name="WindowNoState" value="0"/>
......@@ -864,7 +580,8 @@
<enumerator name="WA_TouchPadAcceptSingleTouchEvents" value="123"/>
<enumerator name="WA_MergeSoftkeys" value="124"/>
<enumerator name="WA_MergeSoftkeysRecursively" value="125"/>
<enumerator name="WA_AttributeCount" value="126"/>
<enumerator name="WA_X11DoNotAcceptFocus" value="132"/>
<enumerator name="WA_AttributeCount" value="133"/>
</enum>
<enum name="ApplicationAttribute">
<enumerator name="AA_ImmediateWidgetCreation" value="0"/>
......@@ -1473,28 +1190,6 @@
<enumerator name="ScrollBarAlwaysOff" value="1"/>
<enumerator name="ScrollBarAlwaysOn" value="2"/>
</enum>
<enum name="BackgroundMode">
<enumerator name="FixedColor" value="0"/>
<enumerator name="FixedPixmap" value="1"/>
<enumerator name="NoBackground" value="2"/>
<enumerator name="PaletteForeground" value="3"/>
<enumerator name="PaletteButton" value="4"/>
<enumerator name="PaletteLight" value="5"/>
<enumerator name="PaletteMidlight" value="6"/>
<enumerator name="PaletteDark" value="7"/>
<enumerator name="PaletteMid" value="8"/>
<enumerator name="PaletteText" value="9"/>
<enumerator name="PaletteBrightText" value="10"/>
<enumerator name="PaletteBase" value="11"/>
<enumerator name="PaletteBackground" value="12"/>
<enumerator name="PaletteShadow" value="13"/>
<enumerator name="PaletteHighlight" value="14"/>
<enumerator name="PaletteHighlightedText" value="15"/>
<enumerator name="PaletteButtonText" value="16"/>
<enumerator name="PaletteLink" value="17"/>
<enumerator name="PaletteLinkVisited" value="18"/>
<enumerator name="X11ParentRelative" value="19"/>
</enum>
<enum name="CaseSensitivity">
<enumerator name="CaseInsensitive" value="0"/>
<enumerator name="CaseSensitive" value="1"/>
......@@ -1681,23 +1376,18 @@
</type>
<type name="Qt.AnchorChanges" version="4.6" extends="QDeclarativeStateOperation">
<property name="target" type="Qt.Item"/>
<property name="reset" type="string"/>
<property name="left" type="QDeclarativeAnchorLine"/>
<property name="right" type="QDeclarativeAnchorLine"/>
<property name="horizontalCenter" type="QDeclarativeAnchorLine"/>
<property name="top" type="QDeclarativeAnchorLine"/>
<property name="bottom" type="QDeclarativeAnchorLine"/>
<property name="verticalCenter" type="QDeclarativeAnchorLine"/>
<property name="baseline" type="QDeclarativeAnchorLine"/>
<property name="anchors" type="QDeclarativeAnchorSet"/>
</type>
<type name="Qt.AnimatedImage" version="4.6" extends="Qt.Image">
<property name="playing" type="bool"/>
<property name="paused" type="bool"/>
<property name="currentFrame" type="int"/>
<property name="frameCount" type="int"/>
<property name="sourceSize" type="QSize"/>
<signal name="playingChanged"/>
<signal name="pausedChanged"/>
<signal name="frameChanged"/>
<signal name="sourceSizeChanged"/>
</type>
<type name="Qt.Animation" version="4.6" extends="Qt.QtObject">
<enum name="Loops">
......@@ -1825,6 +1515,16 @@
<property name="target" type="Qt.QtObject"/>
<signal name="targetChanged"/>
</type>
<type name="Qt.DoubleValidator" version="4.7" extends="QValidator">
<enum name="Notation">
<enumerator name="StandardNotation" value="0"/>
<enumerator name="ScientificNotation" value="1"/>
</enum>
<property name="bottom" type="double"/>
<property name="top" type="double"/>
<property name="decimals" type="int"/>
<property name="notation" type="Notation"/>
</type>
<type name="Qt.Drag" version="4.6" extends="Qt.QtObject">
<enum name="Axis">
<enumerator name="XAxis" value="1"/>
......@@ -1882,25 +1582,6 @@
<param name="color" type="QColor"/>
</method>
</type>
<type name="Qt.EaseFollow" version="4.6" extends="Qt.QtObject">
<enum name="ReversingMode">
<enumerator name="Eased" value="0"/>
<enumerator name="Immediate" value="1"/>
<enumerator name="Sync" value="2"/>
</enum>
<property name="source" type="qreal"/>
<property name="velocity" type="qreal"/>
<property name="duration" type="qreal"/>
<property name="reversingMode" type="ReversingMode"/>
<property name="enabled" type="bool"/>
<property name="maximumEasingTime" type="qreal"/>
<signal name="sourceChanged"/>
<signal name="velocityChanged"/>
<signal name="durationChanged"/>
<signal name="reversingModeChanged"/>
<signal name="enabledChanged"/>
<signal name="maximumEasingTimeChanged"/>
</type>
<type name="Qt.Easing" version="4.6" extends="QDeclarativeValueType">
<enum name="Type">
<enumerator name="Linear" value="0"/>
......@@ -1979,9 +1660,9 @@
<property name="atYEnd" type="bool"/>
<property name="atXBeginning" type="bool"/>
<property name="atYBeginning" type="bool"/>
<property name="visibleArea" type="Qt.VisibleArea"/>
<property name="visibleArea" type="QDeclarativeFlickableVisibleArea"/>
<property name="flickableData" type="Qt.QtObject" isList="true"/>
<property name="flickableChildren" type="Qt.Item" isList="true"/>
<property name="flickableChildren" type="QGraphicsObject" isList="true"/>
<signal name="contentWidthChanged"/>
<signal name="contentHeightChanged"/>
<signal name="contentXChanged"/>
......@@ -2008,8 +1689,8 @@
<enumerator name="Front" value="0"/>
<enumerator name="Back" value="1"/>
</enum>
<property name="front" type="Qt.Item"/>
<property name="back" type="Qt.Item"/>
<property name="front" type="QGraphicsObject"/>
<property name="back" type="QGraphicsObject"/>
<property name="side" type="Side"/>
<signal name="sideChanged"/>
</type>
......@@ -2075,10 +1756,6 @@
<property name="position" type="qreal"/>
<property name="color" type="QColor"/>
</type>
<type name="Qt.GraphicsObjectContainer" version="4.6" extends="Qt.Item">
<property name="graphicsObject" type="QGraphicsObject"/>
<property name="synchronizedResizing" type="bool"/>
</type>
<type name="Qt.Grid" version="4.6" extends="QDeclarativeBasePositioner">
<property name="rows" type="int"/>
<property name="columns" type="int"/>
......@@ -2115,6 +1792,7 @@
<property name="highlight" type="Qt.Component"/>
<property name="highlightItem" type="Qt.Item"/>
<property name="highlightFollowsCurrentItem" type="bool"/>
<property name="highlightMoveDuration" type="int"/>
<property name="preferredHighlightBegin" type="qreal"/>
<property name="preferredHighlightEnd" type="qreal"/>
<property name="highlightRangeMode" type="HighlightRangeMode"/>
......@@ -2133,6 +1811,7 @@
<signal name="preferredHighlightBeginChanged"/>
<signal name="preferredHighlightEndChanged"/>
<signal name="highlightRangeModeChanged"/>
<signal name="highlightMoveDurationChanged"/>
<signal name="modelChanged"/>
<signal name="delegateChanged"/>
<signal name="flowChanged"/>
......@@ -2169,6 +1848,10 @@
<signal name="fillModeChanged"/>
<signal name="paintedGeometryChanged"/>
</type>
<type name="Qt.IntValidator" version="4.6" extends="QValidator">
<property name="bottom" type="int"/>
<property name="top" type="int"/>
</type>
<type name="Qt.Item" version="4.6" extends="QGraphicsObject">
<enum name="TransformOrigin">
<enumerator name="TopLeft" value="0"/>
......@@ -2183,13 +1866,10 @@
</enum>
<property name="parent" type="Qt.Item"/>
<property name="data" type="Qt.QtObject" isList="true"/>
<property name="children" type="Qt.Item" isList="true"/>
<property name="resources" type="Qt.QtObject" isList="true"/>
<property name="states" type="Qt.State" isList="true"/>
<property name="transitions" type="Qt.Transition" isList="true"/>
<property name="state" type="string"/>
<property name="width" type="qreal"/>
<property name="height" type="qreal"/>
<property name="childrenRect" type="QRectF"/>
<property name="anchors" type="QDeclarativeAnchors"/>
<property name="left" type="QDeclarativeAnchorLine"/>
......@@ -2207,12 +1887,6 @@
<property name="transformOrigin" type="TransformOrigin"/>
<property name="smooth" type="bool"/>
<property name="effect" type="QGraphicsEffect"/>
<signal name="widthChanged">
<param type="qreal"/>
</signal>
<signal name="heightChanged">
<param type="qreal"/>
</signal>
<signal name="childrenChanged"/>
<signal name="childrenRectChanged">
<param type="QRectF"/>
......@@ -2397,9 +2071,7 @@
<type name="Qt.ListElement" version="4.6" extends="Qt.QtObject"/>
<type name="Qt.ListModel" version="4.6" extends="QListModelInterface">
<property name="count" type="int"/>
<signal name="countChanged">
<param type="int"/>
</signal>
<signal name="countChanged"/>
<method name="clear"/>
<method name="remove">
<param name="index" type="int"/>
......@@ -2461,7 +2133,9 @@
<property name="highlightItem" type="Qt.Item"/>
<property name="highlightFollowsCurrentItem" type="bool"/>
<property name="highlightMoveSpeed" type="qreal"/>
<property name="highlightMoveDuration" type="int"/>
<property name="highlightResizeSpeed" type="qreal"/>
<property name="highlightResizeDuration" type="int"/>
<property name="preferredHighlightBegin" type="qreal"/>
<property name="preferredHighlightEnd" type="qreal"/>
<property name="highlightRangeMode" type="HighlightRangeMode"/>
......@@ -2480,7 +2154,9 @@
<signal name="currentIndexChanged"/>
<signal name="currentSectionChanged"/>
<signal name="highlightMoveSpeedChanged"/>
<signal name="highlightMoveDurationChanged"/>
<signal name="highlightResizeSpeedChanged"/>
<signal name="highlightResizeDurationChanged"/>
<signal name="highlightChanged"/>
<signal name="highlightItemChanged"/>
<signal name="modelChanged"/>
......@@ -2635,23 +2311,44 @@
<property name="controlY" type="qreal"/>
</type>
<type name="Qt.PathView" version="4.6" extends="Qt.Item">
<enum name="HighlightRangeMode">
<enumerator name="NoHighlightRange" value="0"/>
<enumerator name="ApplyRange" value="1"/>
<enumerator name="StrictlyEnforceRange" value="2"/>
</enum>
<property name="model" type="QVariant"/>
<property name="path" type="Qt.Path"/>
<property name="currentIndex" type="int"/>
<property name="offset" type="qreal"/>
<property name="snapPosition" type="qreal"/>
<property name="highlight" type="Qt.Component"/>
<property name="highlightItem" type="Qt.Item"/>
<property name="preferredHighlightBegin" type="qreal"/>
<property name="preferredHighlightEnd" type="qreal"/>
<property name="highlightRangeMode" type="HighlightRangeMode"/>
<property name="highlightMoveDuration" type="int"/>
<property name="dragMargin" type="qreal"/>
<property name="flickDeceleration" type="qreal"/>
<property name="interactive" type="bool"/>
<property name="count" type="int"/>
<property name="delegate" type="Qt.Component"/>
<property name="pathItemCount" type="int"/>
<signal name="currentIndexChanged"/>
<signal name="offsetChanged"/>
<signal name="modelChanged"/>
<signal name="countChanged"/>
<signal name="pathChanged"/>
<signal name="preferredHighlightBeginChanged"/>
<signal name="preferredHighlightEndChanged"/>
<signal name="highlightRangeModeChanged"/>
<signal name="dragMarginChanged"/>
<signal name="snapPositionChanged"/>
<signal name="delegateChanged"/>
<signal name="pathItemCountChanged"/>
<signal name="flickDecelerationChanged"/>
<signal name="interactiveChanged"/>
<signal name="highlightChanged"/>
<signal name="highlightItemChanged"/>
<signal name="highlightMoveDurationChanged"/>
</type>
<type name="Qt.PauseAnimation" version="4.6" extends="Qt.Animation">
<property name="duration" type="int"/>
......@@ -2659,11 +2356,6 @@
<param type="int"/>
</signal>
</type>
<type name="Qt.Pen" version="4.6" extends="Qt.QtObject">
<property name="width" type="int"/>
<property name="color" type="QColor"/>
<signal name="penChanged"/>
</type>
<type name="Qt.PropertyAction" version="4.6" extends="Qt.Animation">
<property name="target" type="Qt.QtObject"/>
<property name="property" type="string"/>
......@@ -2717,23 +2409,6 @@
<property name="restoreEntryValues" type="bool"/>
<property name="explicit" type="bool"/>
</type>
<type name="Qt.QDoubleValidator" version="4.7" extends="QValidator">
<enum name="Notation">
<enumerator name="StandardNotation" value="0"/>
<enumerator name="ScientificNotation" value="1"/>
</enum>
<property name="bottom" type="double"/>
<property name="top" type="double"/>
<property name="decimals" type="int"/>
<property name="notation" type="Notation"/>
</type>
<type name="Qt.QIntValidator" version="4.6" extends="QValidator">
<property name="bottom" type="int"/>
<property name="top" type="int"/>
</type>
<type name="Qt.QRegExpValidator" version="4.7" extends="QValidator">
<property name="regExp" type="QRegExp"/>
</type>
<type name="Qt.QtObject" version="4.6">
<property name="objectName" type="string"/>
<signal name="destroyed">
......@@ -2745,11 +2420,14 @@
<type name="Qt.Rectangle" version="4.6" extends="Qt.Item">
<property name="color" type="QColor"/>
<property name="gradient" type="Qt.Gradient"/>
<property name="border" type="Qt.Pen"/>
<property name="border" type="QDeclarativePen"/>
<property name="radius" type="qreal"/>
<signal name="colorChanged"/>
<signal name="radiusChanged"/>
</type>
<type name="Qt.RegExpValidator" version="4.7" extends="QValidator">
<property name="regExp" type="QRegExp"/>
</type>
<type name="Qt.Repeater" version="4.6" extends="Qt.Item">
<property name="model" type="QVariant"/>
<property name="delegate" type="Qt.Component"/>
......@@ -2792,8 +2470,39 @@
<property name="scriptName" type="string"/>
</type>
<type name="Qt.SequentialAnimation" version="4.6" extends="QDeclarativeAnimationGroup"/>
<type name="Qt.SmoothedAnimation" version="4.6" extends="Qt.NumberAnimation">
<enum name="ReversingMode">
<enumerator name="Eased" value="0"/>
<enumerator name="Immediate" value="1"/>
<enumerator name="Sync" value="2"/>
</enum>
<property name="velocity" type="qreal"/>
<property name="reversingMode" type="ReversingMode"/>
<property name="maximumEasingTime" type="qreal"/>
<signal name="velocityChanged"/>
<signal name="reversingModeChanged"/>
<signal name="maximumEasingTimeChanged"/>
</type>
<type name="Qt.SmoothedFollow" version="4.6" extends="Qt.QtObject">
<enum name="ReversingMode">
<enumerator name="Eased" value="0"/>
<enumerator name="Immediate" value="1"/>
<enumerator name="Sync" value="2"/>
</enum>
<property name="to" type="qreal"/>
<property name="velocity" type="qreal"/>
<property name="duration" type="int"/>
<property name="reversingMode" type="ReversingMode"/>
<property name="maximumEasingTime" type="qreal"/>
<property name="enabled" type="bool"/>
<signal name="velocityChanged"/>
<signal name="durationChanged"/>
<signal name="reversingModeChanged"/>
<signal name="maximumEasingTimeChanged"/>
<signal name="enabledChanged"/>
</type>
<type name="Qt.SpringFollow" version="4.6" extends="Qt.QtObject">
<property name="source" type="qreal"/>
<property name="to" type="qreal"/>
<property name="velocity" type="qreal"/>
<property name="spring" type="qreal"/>
<property name="damping" type="qreal"/>
......@@ -2881,6 +2590,12 @@
<enumerator name="ElideMiddle" value="2"/>
<enumerator name="ElideNone" value="3"/>
</enum>
<enum name="WrapMode">
<enumerator name="NoWrap" value="0"/>
<enumerator name="WordWrap" value="1"/>
<enumerator name="WrapAnywhere" value="3"/>
<enumerator name="WrapAtWordBoundaryOrAnywhere" value="4"/>
</enum>
<property name="text" type="string"/>
<property name="font" type="QFont"/>
<property name="color" type="QColor"/>
......@@ -2888,6 +2603,7 @@
<property name="styleColor" type="QColor"/>
<property name="horizontalAlignment" type="HAlignment"/>
<property name="verticalAlignment" type="VAlignment"/>
<property name="wrapMode" type="WrapMode"/>
<property name="wrap" type="bool"/>
<property name="textFormat" type="TextFormat"/>
<property name="elide" type="TextElideMode"/>
......@@ -2915,9 +2631,7 @@
<signal name="verticalAlignmentChanged">
<param name="alignment" type="VAlignment"/>
</signal>
<signal name="wrapChanged">
<param name="wrap" type="bool"/>
</signal>
<signal name="wrapModeChanged"/>
<signal name="textFormatChanged">
<param name="textFormat" type="TextFormat"/>
</signal>
......@@ -2941,6 +2655,12 @@
<enumerator name="RichText" value="1"/>
<enumerator name="AutoText" value="2"/>
</enum>
<enum name="WrapMode">
<enumerator name="NoWrap" value="0"/>
<enumerator name="WordWrap" value="1"/>
<enumerator name="WrapAnywhere" value="3"/>
<enumerator name="WrapAtWordBoundaryOrAnywhere" value="4"/>
</enum>
<property name="text" type="string"/>
<property name="color" type="QColor"/>
<property name="selectionColor" type="QColor"/>
......@@ -2949,6 +2669,7 @@
<property name="horizontalAlignment" type="HAlignment"/>
<property name="verticalAlignment" type="VAlignment"/>
<property name="wrap" type="bool"/>
<property name="wrapMode" type="WrapMode"/>
<property name="textFormat" type="TextFormat"/>
<property name="readOnly" type="bool"/>
<property name="cursorVisible" type="bool"/>
......@@ -2986,9 +2707,7 @@
<signal name="verticalAlignmentChanged">
<param name="alignment" type="VAlignment"/>
</signal>
<signal name="wrapChanged">
<param name="isWrapped" type="bool"/>
</signal>
<signal name="wrapModeChanged"/>
<signal name="textFormatChanged">
<param name="textFormat" type="TextFormat"/>
</signal>
......@@ -3043,6 +2762,9 @@
<property name="acceptableInput" type="bool"/>
<property name="echoMode" type="EchoMode"/>
<property name="focusOnPress" type="bool"/>
<property name="passwordCharacter" type="string"/>
<property name="displayText" type="string"/>
<property name="autoScroll" type="bool"/>
<signal name="textChanged"/>
<signal name="cursorPositionChanged"/>
<signal name="selectionStartChanged"/>
......@@ -3082,13 +2804,23 @@
<signal name="echoModeChanged">
<param name="echoMode" type="EchoMode"/>
</signal>
<signal name="passwordCharacterChanged"/>
<signal name="displayTextChanged">
<param name="text" type="string"/>
</signal>
<signal name="focusOnPressChanged">
<param name="focusOnPress" type="bool"/>
</signal>
<signal name="autoScrollChanged">
<param name="autoScroll" type="bool"/>
</signal>
<method name="selectAll"/>
<method name="xToPos" type="int">
<method name="xToPosition" type="int">
<param name="x" type="int"/>
</method>
<method name="moveCursorSelection">
<param name="pos" type="int"/>
</method>
</type>
<type name="Qt.Timer" version="4.6" extends="Qt.QtObject">
<property name="interval" type="int"/>
......@@ -3113,6 +2845,11 @@
<signal name="toChanged"/>
<signal name="reversibleChanged"/>
</type>
<type name="Qt.Translate" version="4.6" extends="QGraphicsTransform">
<property name="x" type="qreal"/>
<property name="y" type="qreal"/>
<signal name="positionChanged"/>
</type>
<type name="Qt.Vector3dAnimation" version="4.6" extends="Qt.PropertyAnimation">
<property name="from" type="QVector3D"/>
<property name="to" type="QVector3D"/>
......@@ -3128,13 +2865,6 @@
<signal name="changed"/>
<signal name="delegateChanged"/>
</type>
<type name="Qt.VisibleArea" version="4.6" extends="Qt.QtObject">
<property name="xPosition" type="qreal"/>
<property name="yPosition" type="qreal"/>
<property name="widthRatio" type="qreal"/>
<property name="heightRatio" type="qreal"/>
<signal name="pageChanged"/>
</type>
<type name="Qt.VisualDataModel" version="4.6" extends="QDeclarativeVisualModel">
<property name="model" type="QVariant"/>
<property name="delegate" type="Qt.Component"/>
......@@ -3180,7 +2910,7 @@
<property name="roles" type="Qt.XmlRole" isList="true"/>
<property name="count" type="int"/>
<signal name="statusChanged">
<param type="Status"/>
<param type="QDeclarativeXmlListModel.Status"/>
</signal>
<signal name="progressChanged">
<param name="progress" type="qreal"/>
......@@ -3415,15 +3145,24 @@
<property name="spacing" type="qreal"/>
</type>
<type name="Qt.widgets.QGraphicsLinearLayoutStretchItem" version="4.6" extends="Qt.QtObject"/>
<type name="Qt.widgets.QGraphicsScene" version="4.6" extends="QGraphicsScene">
<property name="children" type="Qt.QtObject" isList="true"/>
</type>
<type name="Qt.widgets.QGraphicsView" version="4.6" extends="QGraphicsView">
<property name="scene" type="QGraphicsScene"/>
</type>
<type name="Qt.widgets.QGraphicsWidget" version="4.6" extends="QGraphicsWidget">
<property name="children" type="QGraphicsItem" isList="true"/>
<type name="Qt.widgets.QGraphicsWidget" version="4.6" extends="QGraphicsObject">
<property name="palette" type="QPalette"/>
<property name="font" type="QFont"/>
<property name="layoutDirection" type="Qt.LayoutDirection"/>
<property name="size" type="QSizeF"/>
<property name="minimumSize" type="QSizeF"/>
<property name="preferredSize" type="QSizeF"/>
<property name="maximumSize" type="QSizeF"/>
<property name="sizePolicy" type="QSizePolicy"/>
<property name="focusPolicy" type="Qt.FocusPolicy"/>
<property name="windowFlags" type="Qt.WindowFlags"/>
<property name="windowTitle" type="string"/>
<property name="geometry" type="QRectF"/>
<property name="autoFillBackground" type="bool"/>
<property name="layout" type="QGraphicsLayout"/>
<signal name="geometryChanged"/>
<signal name="layoutChanged"/>
<method name="close" type="bool"/>
</type>
<type name="org.webkit.WebView" version="1.0" extends="QDeclarativePaintedItem">
<enum name="Status">
......
import Qt 4.6
Rectangle {
property var label: "Button"
property variant label: "Button"
signal clicked
width: 75
......
......@@ -5,9 +5,9 @@ QWidget { //This is a special checkBox that does color coding for states
id: checkBox;
property var backendValue;
property variant backendValue;
property var baseStateFlag;
property variant baseStateFlag;
property alias checkable: localCheckBox.checkable
property alias text: localLabel.text
......
......@@ -4,14 +4,14 @@ import Bauhaus 1.0
QExtGroupBox {
id: colorGroupBox
property var finished;
property var backendColor
property var color: (backendColor === undefined || backendColor.value === undefined) ? "#000000" : backendColor.value
property var oldMaximumHeight;
property var startupCollapse: selectionChanged === undefined ? false : selectionChanged;
property var firstTime: true;
property var caption: ""
property variant finished;
property variant backendColor
property variant color: (backendColor === undefined || backendColor.value === undefined) ? "#000000" : backendColor.value
property variant oldMaximumHeight;
property variant startupCollapse: selectionChanged === undefined ? false : selectionChanged;
property variant firstTime: true;
property variant caption: ""
smooth: false
onFinishedChanged: {
......@@ -32,14 +32,14 @@ QExtGroupBox {
}
property var baseStateFlag: isBaseState
property variant baseStateFlag: isBaseState
onBaseStateFlagChanged: {
evaluate();
}
onBackendColorChanged: {
evaluate();
}
property var isEnabled: colorGroupBox.enabled
property variant isEnabled: colorGroupBox.enabled
onIsEnabledChanged: {
evaluate();
}
......@@ -143,7 +143,7 @@ QExtGroupBox {
ColorBox {
id: colorControl;
property var backendColor: colorGroupBox.color;
property variant backendColor: colorGroupBox.color;
color: colorGroupBox.color;
onColorChanged: if (colorGroupBox.color != color) {
colorGroupBox.backendColor.value = color;
......
......@@ -3,10 +3,10 @@ import Bauhaus 1.0
Item {
id: colorScheme
property var disabledColor: "gray";
property var defaultColor: "white";
property var boldTextColor: "#dedede";
property var changedBaseColor: "#9999ff";
property var changedStateColor: "#99ccff";
property var optionsColor: "white";
property variant disabledColor: "gray";
property variant defaultColor: "white";
property variant boldTextColor: "#dedede";
property variant changedBaseColor: "#9999ff";
property variant changedStateColor: "#99ccff";
property variant optionsColor: "white";
}
......@@ -5,8 +5,8 @@ QWidget {
id: comboBox
property var backendValue;
property var baseStateFlag;
property variant backendValue;
property variant baseStateFlag;
property alias enabled: box.enabled;
property alias items: box.items;
......@@ -17,7 +17,7 @@ QWidget {
evaluate();
}
property var isEnabled: comboBox.enabled
property variant isEnabled: comboBox.enabled
onIsEnabledChanged: {
evaluate();
}
......@@ -47,7 +47,7 @@ QWidget {
layout: HorizontalLayout {
QComboBox {
id: box
property var backendValue: comboBox.backendValue
property variant backendValue: comboBox.backendValue
onCurrentTextChanged: { backendValue.value = currentText; evaluate(); }
ExtendedFunctionButton {
backendValue: comboBox.backendValue;
......
......@@ -5,8 +5,8 @@ QWidget { //This is a special doubleSpinBox that does color coding for states
id: doubleSpinBox;
property var backendValue;
property var baseStateFlag;
property variant backendValue;
property variant baseStateFlag;
property alias singleStep: box.singleStep
property alias minimum: box.minimum
property alias maximum: box.maximum
......
......@@ -8,7 +8,7 @@ QWidget {
width: frame.width - 22
height: 40
property bool active: false
property var backendValue;
property variant backendValue;
onActiveChanged: {
......
......@@ -8,8 +8,8 @@ GroupBox {
layout: VerticalLayout{
property var effect: backendValues.effect
property var complexNode: effect.complexNode
property variant effect: backendValues.effect
property variant complexNode: effect.complexNode
QWidget {
maximumHeight: 40;
......@@ -19,8 +19,8 @@ GroupBox {
}
QComboBox {
enabled: isBaseState;
property var type: backendValues.effect.complexNode.type
property var dirty;
property variant type: backendValues.effect.complexNode.type
property variant dirty;
id: effectComboBox;
items : { [
"None",
......@@ -60,7 +60,7 @@ GroupBox {
}
}// QWidget
property var properties: complexNode == null ? null : complexNode.properties
property variant properties: complexNode == null ? null : complexNode.properties
QWidget {
minimumHeight: 20;
......@@ -101,7 +101,7 @@ GroupBox {
visible: effectComboBox.currentText == "Colorize";
layout: QVBoxLayout {
property var colorProp: properties == null ? null : properties.color
property variant colorProp: properties == null ? null : properties.color
ColorLabel {
......
......@@ -4,7 +4,7 @@ import Bauhaus 1.0
QToolButton {
id: extendedFunctionButton
property var backendValue
property variant backendValue
function setIcon() {
if (backendValue == null)
......
......@@ -6,9 +6,9 @@ QFrame {
focusPolicy: "Qt::NoFocus"
id: extendedSwitches;
property bool active: false;
property var backendValue;
property variant backendValue;
styleSheetFile: "switch.css";
property var specialModeIcon;
property variant specialModeIcon;
specialModeIcon: "images/standard.png";
opacity: 0;
......
......@@ -5,8 +5,8 @@ QWidget {
id: fontComboBox
property alias currentFont: fontSelector.currentFont
property var backendValue
property var baseStateFlag;
property variant backendValue
property variant baseStateFlag;
property alias enabled: fontSelector.enabled
onBaseStateFlagChanged: {
......@@ -17,7 +17,7 @@ QWidget {
evaluate();
}
property var isEnabled: fontComboBox.enabled
property variant isEnabled: fontComboBox.enabled
onIsEnabledChanged: {
evaluate();
}
......@@ -59,7 +59,7 @@ QWidget {
id: fontSelector
currentFont.family: backendValue.value
property var fontFamily: currentFont.family
property variant fontFamily: currentFont.family
onFontFamilyChanged: {
if (backendValue === undefined)
return;
......