diff --git a/examples/examples.pro b/examples/examples.pro index e2f2c617f6a7cebc05a824c4d1b24933e7667840..3c12ee67c43bc4ac59d871ba6ea22035455e977b 100644 --- a/examples/examples.pro +++ b/examples/examples.pro @@ -1,2 +1,2 @@ TEMPLATE = subdirs -SUBDIRS += help designer +SUBDIRS += help designer uitools diff --git a/examples/uitools/multipleinheritance/calculatorform.cpp b/examples/uitools/multipleinheritance/calculatorform.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ae1312f558039b428c47ff5772becb6173fc86d4 --- /dev/null +++ b/examples/uitools/multipleinheritance/calculatorform.cpp @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtWidgets> +#include "calculatorform.h" + + +//! [0] +CalculatorForm::CalculatorForm(QWidget *parent) + : QWidget(parent) +{ + setupUi(this); +} +//! [0] + +//! [1] +void CalculatorForm::on_inputSpinBox1_valueChanged(int value) +{ + outputWidget->setText(QString::number(value + inputSpinBox2->value())); +} +//! [1] + +//! [2] +void CalculatorForm::on_inputSpinBox2_valueChanged(int value) +{ + outputWidget->setText(QString::number(value + inputSpinBox1->value())); +} +//! [2] diff --git a/examples/uitools/multipleinheritance/calculatorform.h b/examples/uitools/multipleinheritance/calculatorform.h new file mode 100644 index 0000000000000000000000000000000000000000..9b8c8880bf767e3cfedcb126d0f1ae25ee9b8565 --- /dev/null +++ b/examples/uitools/multipleinheritance/calculatorform.h @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CALCULATORFORM_H +#define CALCULATORFORM_H + +//! [0] +#include "ui_calculatorform.h" +//! [0] + +//! [1] +class CalculatorForm : public QWidget, private Ui::CalculatorForm +{ + Q_OBJECT + +public: + CalculatorForm(QWidget *parent = 0); + +private slots: + void on_inputSpinBox1_valueChanged(int value); + void on_inputSpinBox2_valueChanged(int value); +}; +//! [1] + +#endif diff --git a/examples/uitools/multipleinheritance/calculatorform.ui b/examples/uitools/multipleinheritance/calculatorform.ui new file mode 100644 index 0000000000000000000000000000000000000000..dda0e62ddd061e575125532a1fdf6beeddd3b348 --- /dev/null +++ b/examples/uitools/multipleinheritance/calculatorform.ui @@ -0,0 +1,303 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>CalculatorForm</class> + <widget class="QWidget" name="CalculatorForm" > + <property name="objectName" > + <string notr="true" >CalculatorForm</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>276</width> + <height>98</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Calculator Builder</string> + </property> + <layout class="QGridLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="0" > + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="objectName" > + <string notr="true" >label</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>1</y> + <width>45</width> + <height>19</height> + </rect> + </property> + <property name="text" > + <string>Input 1</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="inputSpinBox1" > + <property name="objectName" > + <string notr="true" >inputSpinBox1</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>26</y> + <width>45</width> + <height>25</height> + </rect> + </property> + <property name="mouseTracking" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="label_3" > + <property name="objectName" > + <string notr="true" >label_3</string> + </property> + <property name="geometry" > + <rect> + <x>54</x> + <y>1</y> + <width>7</width> + <height>52</height> + </rect> + </property> + <property name="text" > + <string>+</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label_2" > + <property name="objectName" > + <string notr="true" >label_2</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>1</y> + <width>45</width> + <height>19</height> + </rect> + </property> + <property name="text" > + <string>Input 2</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="inputSpinBox2" > + <property name="objectName" > + <string notr="true" >inputSpinBox2</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>26</y> + <width>45</width> + <height>25</height> + </rect> + </property> + <property name="mouseTracking" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="label_3_2" > + <property name="objectName" > + <string notr="true" >label_3_2</string> + </property> + <property name="geometry" > + <rect> + <x>120</x> + <y>1</y> + <width>7</width> + <height>52</height> + </rect> + </property> + <property name="text" > + <string>=</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label_2_2_2" > + <property name="objectName" > + <string notr="true" >label_2_2_2</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>1</y> + <width>37</width> + <height>17</height> + </rect> + </property> + <property name="text" > + <string>Output</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="outputWidget" > + <property name="objectName" > + <string notr="true" >outputWidget</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>24</y> + <width>37</width> + <height>27</height> + </rect> + </property> + <property name="frameShape" > + <enum>QFrame::Box</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + <property name="text" > + <string>0</string> + </property> + <property name="alignment" > + <set>Qt::AlignAbsolute|Qt::AlignBottom|Qt::AlignCenter|Qt::AlignHCenter|Qt::AlignHorizontal_Mask|Qt::AlignJustify|Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing|Qt::AlignVCenter|Qt::AlignVertical_Mask</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item row="1" column="0" > + <spacer> + <property name="objectName" > + <string notr="true" >verticalSpacer</string> + </property> + <property name="geometry" > + <rect> + <x>85</x> + <y>69</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="1" > + <spacer> + <property name="objectName" > + <string notr="true" >horizontalSpacer</string> + </property> + <property name="geometry" > + <rect> + <x>188</x> + <y>26</y> + <width>79</width> + <height>20</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections/> +</ui> diff --git a/examples/uitools/multipleinheritance/main.cpp b/examples/uitools/multipleinheritance/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..56ba8efe53b2d6edd130be54ffa1e2449d061acb --- /dev/null +++ b/examples/uitools/multipleinheritance/main.cpp @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QApplication> +#include "calculatorform.h" + +//! [0] +int main(int argc, char *argv[]) +{ + QApplication app(argc, argv); + CalculatorForm calculator; +#if defined(Q_OS_SYMBIAN) + calculator.showMaximized(); +#else + calculator.show(); +#endif + return app.exec(); +} +//! [0] diff --git a/examples/uitools/multipleinheritance/multipleinheritance.desktop b/examples/uitools/multipleinheritance/multipleinheritance.desktop new file mode 100644 index 0000000000000000000000000000000000000000..7e652f972b8ce011e6c57b7bffe4db7427e2e43e --- /dev/null +++ b/examples/uitools/multipleinheritance/multipleinheritance.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Terminal=false +Name=Multiple Inheritance +Exec=/opt/usr/bin/multipleinheritance +Icon=multipleinheritance +X-Window-Icon= +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable diff --git a/examples/uitools/multipleinheritance/multipleinheritance.pro b/examples/uitools/multipleinheritance/multipleinheritance.pro new file mode 100644 index 0000000000000000000000000000000000000000..7e6496741657ab0e9c89879bf6c5f0118879e2c9 --- /dev/null +++ b/examples/uitools/multipleinheritance/multipleinheritance.pro @@ -0,0 +1,19 @@ +#! [0] +SOURCES = calculatorform.cpp main.cpp +HEADERS = calculatorform.h +FORMS = calculatorform.ui +#! [0] + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools/multipleinheritance +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro +sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools/multipleinheritance +INSTALLS += target sources + +symbian { + TARGET.UID3 = 0xA000D7C1 + CONFIG += qt_example +} +QT += widgets +maemo5: CONFIG += qt_example + diff --git a/examples/uitools/textfinder/main.cpp b/examples/uitools/textfinder/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2fe9b715d1888a8b32b54c682c10953301500cbd --- /dev/null +++ b/examples/uitools/textfinder/main.cpp @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QApplication> +#include "textfinder.h" + +//! [0] +int main(int argc, char *argv[]) +{ + Q_INIT_RESOURCE(textfinder); + QApplication app(argc, argv); + + TextFinder *textFinder = new TextFinder; + textFinder->show(); + + return app.exec(); +} +//! [0] diff --git a/examples/uitools/textfinder/textfinder.cpp b/examples/uitools/textfinder/textfinder.cpp new file mode 100644 index 0000000000000000000000000000000000000000..041c36f218a418315a1cbe0fe41ed79a07176de4 --- /dev/null +++ b/examples/uitools/textfinder/textfinder.cpp @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <QtUiTools> +#include <QtWidgets> +#include "textfinder.h" + +//! [0] +TextFinder::TextFinder(QWidget *parent) + : QWidget(parent) +{ + QWidget *formWidget = loadUiFile(); + +//! [1] + ui_findButton = findChild<QPushButton*>("findButton"); + ui_textEdit = findChild<QTextEdit*>("textEdit"); + ui_lineEdit = findChild<QLineEdit*>("lineEdit"); +//! [0] //! [1] + +//! [2] + QMetaObject::connectSlotsByName(this); +//! [2] + +//! [3a] + loadTextFile(); +//! [3a] + +//! [3b] + QVBoxLayout *layout = new QVBoxLayout; + layout->addWidget(formWidget); + setLayout(layout); +//! [3b] + +//! [3c] + setWindowTitle(tr("Text Finder")); + isFirstTime = true; +} +//! [3c] + +//! [4] +QWidget* TextFinder::loadUiFile() +{ + QUiLoader loader; + + QFile file(":/forms/textfinder.ui"); + file.open(QFile::ReadOnly); + + QWidget *formWidget = loader.load(&file, this); + file.close(); + + return formWidget; +} +//! [4] + +//! [5] +void TextFinder::loadTextFile() +{ + QFile inputFile(":/forms/input.txt"); + inputFile.open(QIODevice::ReadOnly); + QTextStream in(&inputFile); + QString line = in.readAll(); + inputFile.close(); + + ui_textEdit->append(line); + ui_textEdit->setUndoRedoEnabled(false); + ui_textEdit->setUndoRedoEnabled(true); +} +//! [5] + +//! [6] //! [7] +void TextFinder::on_findButton_clicked() +{ + QString searchString = ui_lineEdit->text(); + QTextDocument *document = ui_textEdit->document(); + + bool found = false; + + if (isFirstTime == false) + document->undo(); + + if (searchString.isEmpty()) { + QMessageBox::information(this, tr("Empty Search Field"), + "The search field is empty. Please enter a word and click Find."); + } else { + + QTextCursor highlightCursor(document); + QTextCursor cursor(document); + + cursor.beginEditBlock(); +//! [6] + + QTextCharFormat plainFormat(highlightCursor.charFormat()); + QTextCharFormat colorFormat = plainFormat; + colorFormat.setForeground(Qt::red); + + while (!highlightCursor.isNull() && !highlightCursor.atEnd()) { + highlightCursor = document->find(searchString, highlightCursor, QTextDocument::FindWholeWords); + + if (!highlightCursor.isNull()) { + found = true; + highlightCursor.movePosition(QTextCursor::WordRight, + QTextCursor::KeepAnchor); + highlightCursor.mergeCharFormat(colorFormat); + } + } + +//! [8] + cursor.endEditBlock(); +//! [7] //! [9] + isFirstTime = false; + + if (found == false) { + QMessageBox::information(this, tr("Word Not Found"), + "Sorry, the word cannot be found."); + } + } +} +//! [8] //! [9] diff --git a/examples/uitools/textfinder/textfinder.desktop b/examples/uitools/textfinder/textfinder.desktop new file mode 100644 index 0000000000000000000000000000000000000000..e1911cc61c49f532a293e7342f9dee644264a54e --- /dev/null +++ b/examples/uitools/textfinder/textfinder.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Type=Application +Terminal=false +Name=Text Finder +Exec=/opt/usr/bin/textfinder +Icon=textfinder +X-Window-Icon= +X-HildonDesk-ShowInToolbar=true +X-Osso-Type=application/x-executable diff --git a/examples/uitools/textfinder/textfinder.h b/examples/uitools/textfinder/textfinder.h new file mode 100644 index 0000000000000000000000000000000000000000..c3cd030cb2ce7312b5a1e41b32c179f0d075ad0a --- /dev/null +++ b/examples/uitools/textfinder/textfinder.h @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the examples of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef TEXTFINDER_H +#define TEXTFINDER_H + +#include <QWidget> + +QT_BEGIN_NAMESPACE +class QPushButton; +class QTextEdit; +class QLineEdit; +QT_END_NAMESPACE + +//! [0] +class TextFinder : public QWidget +{ + Q_OBJECT + +public: + TextFinder(QWidget *parent = 0); + +private slots: + void on_findButton_clicked(); + +private: + QWidget* loadUiFile(); + void loadTextFile(); + + QPushButton *ui_findButton; + QTextEdit *ui_textEdit; + QLineEdit *ui_lineEdit; + bool isFirstTime; +}; +//! [0] + +#endif diff --git a/examples/uitools/textfinder/textfinder.pro b/examples/uitools/textfinder/textfinder.pro new file mode 100644 index 0000000000000000000000000000000000000000..337b7216e4b61f159f996288cc23beaaedefcd03 --- /dev/null +++ b/examples/uitools/textfinder/textfinder.pro @@ -0,0 +1,17 @@ +CONFIG += uitools +HEADERS = textfinder.h +RESOURCES = textfinder.qrc +SOURCES = textfinder.cpp main.cpp + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools/textfinder +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS *.pro forms +sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools/textfinder +INSTALLS += target sources + +symbian: CONFIG += qt_example +QT += widgets +maemo5: CONFIG += qt_example + +symbian: warning(This example does not work on Symbian platform) +simulator: warning(This example does not work on Simulator platform) diff --git a/examples/uitools/textfinder/textfinder.qrc b/examples/uitools/textfinder/textfinder.qrc new file mode 100644 index 0000000000000000000000000000000000000000..a4cea8a77d13bd622a09d55b393f44ec401322bf --- /dev/null +++ b/examples/uitools/textfinder/textfinder.qrc @@ -0,0 +1,6 @@ +<!DOCTYPE RCC><RCC version="1.0"> +<qresource> + <file>forms/textfinder.ui</file> + <file>forms/input.txt</file> +</qresource> +</RCC> \ No newline at end of file diff --git a/examples/uitools/uitools.pro b/examples/uitools/uitools.pro new file mode 100644 index 0000000000000000000000000000000000000000..f17de666fbe9878988a85703ebbc12b523d44d33 --- /dev/null +++ b/examples/uitools/uitools.pro @@ -0,0 +1,14 @@ +TEMPLATE = subdirs +SUBDIRS = multipleinheritance + +!wince*:!symbian:contains(QT_BUILD_PARTS, tools): SUBDIRS += textfinder + +# install +target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools +sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS uitools.pro README +sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/uitools +INSTALLS += target sources + +symbian: CONFIG += qt_example +QT += widgets +maemo5: CONFIG += qt_example diff --git a/modules/qt_designer.pri b/modules/qt_designer.pri index 2a2ce8a8679948c0570d56bb6749a1a0f4fc30a9..faf22047b34e53a6c5e62fdbd0e6c5e0e09c882e 100644 --- a/modules/qt_designer.pri +++ b/modules/qt_designer.pri @@ -11,5 +11,7 @@ QT.designer.sources = $$QT_MODULE_BASE/src/designer/src/lib QT.designer.libs = $$QT_MODULE_LIB_BASE QT.designer.plugins = $$QT_MODULE_PLUGIN_BASE QT.designer.imports = $$QT_MODULE_IMPORT_BASE -QT.designer.depends = xml +QT.designer.depends = core xml gui widgets QT.designer.DEFINES = QT_DESIGNER_LIB + +QT_CONFIG += designer diff --git a/modules/qt_uitools.pri b/modules/qt_uitools.pri new file mode 100644 index 0000000000000000000000000000000000000000..a0d08ccc4a658f00861e1d3a733e6e1e5b53e96d --- /dev/null +++ b/modules/qt_uitools.pri @@ -0,0 +1,17 @@ +QT.uitools.VERSION = 5.0.0 +QT.uitools.MAJOR_VERSION = 5 +QT.uitools.MINOR_VERSION = 0 +QT.uitools.PATCH_VERSION = 0 + +QT.uitools.name = QtUiTools +QT.uitools.bins = $$QT_MODULE_BIN_BASE +QT.uitools.includes = $$QT_MODULE_INCLUDE_BASE/QtUiTools +QT.uitools.private_includes = $$QT_MODULE_INCLUDE_BASE/QtUiTools/$$QT.uitools.VERSION +QT.uitools.sources = $$QT_MODULE_BASE/src/designer/src/uitools +QT.uitools.libs = $$QT_MODULE_LIB_BASE +QT.uitools.plugins = $$QT_MODULE_PLUGIN_BASE +QT.uitools.imports = $$QT_MODULE_IMPORT_BASE +QT.uitools.depends = xml +QT.uitools.DEFINES = QT_UITOOLS_LIB + +QT_CONFIG += uitools diff --git a/src/designer/src/lib/lib.pro b/src/designer/src/lib/lib.pro index a23e164178c9566c6f10c0b969a89bb79a949287..7219ad57fb48160eadb7981c1f214927cce681a2 100644 --- a/src/designer/src/lib/lib.pro +++ b/src/designer/src/lib/lib.pro @@ -1,47 +1,30 @@ +MODULE = designer load(qt_module) TARGET = QtDesigner -QT += core-private gui-private widgets widgets-private xml uilib uilib-private +QPRO_PWD = $$PWD +QT += core-private gui-private widgets widgets-private xml -contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols +CONFIG += module +MODULE_PRI = ../../../../modules/qt_designer.pri -#win32|mac: CONFIG += debug_and_release -#DESTDIR = $$QT_BUILD_TREE/lib -#!wince*:DLLDESTDIR = $$QT.designer.bins - -#INCLUDEPATH += $$QT.designer.includes \ -# $$QT.designer.private_includes \ -# $$QT.designer.private_includes/QtDesigner - -#isEmpty(QT_MAJOR_VERSION) { -# VERSION=4.3.0 -#} else { -# VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION} -#} - -unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES += QtXml +unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES += QtXml QtCore QtGui QtWidgets load(qt_module_config) HEADERS += qtdesignerversion.h -!contains(CONFIG, static) { - CONFIG += dll - - DEFINES += \ - QDESIGNER_SDK_LIBRARY \ - QDESIGNER_EXTENSION_LIBRARY \ - QDESIGNER_UILIB_LIBRARY \ - QDESIGNER_SHARED_LIBRARY -} else { - DEFINES += QT_DESIGNER_STATIC -} +#!contains(CONFIG, static) { +# CONFIG += dll -##headers.pri is loaded from the last include path -#LAST_MODULE_INCLUDE=$$INCLUDEPATH -#for(include_path, INCLUDEPATH):LAST_MODULE_INCLUDE=$${include_path} -#HEADERS_PRI = $$LAST_MODULE_INCLUDE/headers.pri -#include($$HEADERS_PRI, "", true)|clear(HEADERS_PRI) +# DEFINES += \ +# QDESIGNER_SDK_LIBRARY \ +# QDESIGNER_EXTENSION_LIBRARY \ +# QDESIGNER_UILIB_LIBRARY \ +# QDESIGNER_SHARED_LIBRARY +#} else { +# DEFINES += QT_DESIGNER_STATIC +#} #mac frameworks mac:CONFIG += explicitlib @@ -64,21 +47,8 @@ mac:!static:contains(QT_CONFIG, qt_framework) { include(extension/extension.pri) include(sdk/sdk.pri) include(shared/shared.pri) +include(uilib/uilib.pri) PRECOMPILED_HEADER=lib_pch.h include(../sharedcomponents.pri) include(../components/component.pri) - -#target.path=$$[QT_INSTALL_LIBS] -#INSTALLS += target -#win32 { -# dlltarget.path=$$[QT_INSTALL_BINS] -# INSTALLS += dlltarget -#} - - -#qt_install_headers { -# designer_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES -# designer_headers.path = $$[QT_INSTALL_HEADERS]/QtDesigner -# INSTALLS += designer_headers -#} diff --git a/src/designer/src/lib/shared/widgetdatabase.cpp b/src/designer/src/lib/shared/widgetdatabase.cpp index 673c7945e40373a87ffe71d0920b9a44aceb2b90..849b475b051ab6c2cd4289e7bb572b8317860e75 100644 --- a/src/designer/src/lib/shared/widgetdatabase.cpp +++ b/src/designer/src/lib/shared/widgetdatabase.cpp @@ -53,7 +53,7 @@ #include <QtDesigner/QExtensionManager> #include <QtDesigner/QDesignerFormEditorInterface> -#include <QtXml/QXmlStreamWriter> +#include <QtCore/QXmlStreamWriter> #include <QtCore/QScopedPointer> #include <QtCore/qdebug.h> diff --git a/src/designer/src/lib/uilib/abstractformbuilder.cpp b/src/designer/src/lib/uilib/abstractformbuilder.cpp new file mode 100644 index 0000000000000000000000000000000000000000..da64a5ee27043b6cfa4a3a2110446675b4ad6cb7 --- /dev/null +++ b/src/designer/src/lib/uilib/abstractformbuilder.cpp @@ -0,0 +1,3154 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +**sw +****************************************************************************/ + +#include "abstractformbuilder.h" +#include "formbuilderextra_p.h" +#include "resourcebuilder_p.h" +#include "textbuilder_p.h" +#include "ui4_p.h" +#include "properties_p.h" + +#include <QtCore/QVariant> +#include <QtCore/QMetaProperty> +#include <QtCore/QFileInfo> +#include <QtCore/QDir> +#include <QtCore/QQueue> +#include <QtCore/QHash> +#include <QtCore/QPair> +#include <QtCore/qdebug.h> +#include <QtCore/QCoreApplication> + +#include <QtGui/QtGui> +#include <QtWidgets/QtWidgets> +#ifndef QFORMINTERNAL_NAMESPACE +# include <private/qlayout_p.h> // Compiling within Designer +#endif + +#include <QtCore/QXmlStreamReader> + +#include <QtCore/qdebug.h> + +#include <limits.h> + +Q_DECLARE_METATYPE(QWidgetList) + +static const char *buttonGroupPropertyC = "buttonGroup"; + +QT_BEGIN_NAMESPACE + +#ifdef QFORMINTERNAL_NAMESPACE +using namespace QFormInternal; +#endif + +class QFriendlyLayout: public QLayout +{ +public: + inline QFriendlyLayout() { Q_ASSERT(0); } + +#ifdef QFORMINTERNAL_NAMESPACE + friend class QFormInternal::QAbstractFormBuilder; +#else + friend class QAbstractFormBuilder; +#endif +}; + +/*! + \class QAbstractFormBuilder + + \brief The QAbstractFormBuilder class provides a default + implementation for classes that create user interfaces at + run-time. + + \inmodule QtDesigner + + QAbstractFormBuilder provides a standard interface and a default + implementation for constructing forms from user interface + files. It is not intended to be instantiated directly. Use the + QFormBuilder class to create user interfaces from UI files at + run-time. For example: + + \snippet doc/src/snippets/code/tools_designer_src_lib_uilib_abstractformbuilder.cpp 0 + + To override certain aspects of the form builder's behavior, + subclass QAbstractFormBuilder and reimplement the relevant virtual + functions: + + \list + \o load() handles reading of UI format files from arbitrary + QIODevices, and construction of widgets from the XML data + that they contain. + \o save() handles saving of widget details in UI format to + arbitrary QIODevices. + \o workingDirectory() and setWorkingDirectory() control the + directory in which forms are held. The form builder looks for + other resources on paths relative to this directory. + \endlist + + The QFormBuilder class is typically used by custom components and + applications that embed \QD. Standalone applications that need to + dynamically generate user interfaces at run-time use the + QUiLoader, found in the QtUiTools module. + + \sa {QtUiTools Module} +*/ + +/*! + Constructs a new form builder.*/ +QAbstractFormBuilder::QAbstractFormBuilder() : d(new QFormBuilderExtra) +{ + setResourceBuilder(new QResourceBuilder()); + setTextBuilder(new QTextBuilder()); +} + +/*! + Destroys the form builder.*/ +QAbstractFormBuilder::~QAbstractFormBuilder() +{ +} + +// Return UI file version from attribute 'version="4.0"' +static QPair<int, int> uiVersion(const QString &attr) +{ + const QStringList versions = attr.split(QLatin1Char('.'), QString::SkipEmptyParts); + if (versions.size() >= 2) { + bool okMajor, okMinor; + const int majorVersion = versions.at(0).toInt(&okMajor); + const int minorVersion = versions.at(1).toInt(&okMinor); + if (okMajor && okMinor) + return QPair<int, int>(majorVersion, minorVersion); + } + return QPair<int, int>(-1, -1); +} + +static inline QString msgXmlError(const QXmlStreamReader &reader) +{ + return QCoreApplication::translate("QAbstractFormBuilder", "An error has occurred while reading the UI file at line %1, column %2: %3") + .arg(reader.lineNumber()).arg(reader.columnNumber()).arg(reader.errorString()); +} + +// Read and check the version and the (optional) language attribute +// of an <ui> element and leave reader positioned at <ui>. +static bool inline readUiAttributes(QXmlStreamReader &reader, const QString &language, QString *errorMessage) +{ + const QString uiElement = QLatin1String("ui"); + // Read up to first element + while (!reader.atEnd()) { + switch (reader.readNext()) { + case QXmlStreamReader::Invalid: + *errorMessage = msgXmlError(reader); + return false; + case QXmlStreamReader::StartElement: + if (reader.name().compare(uiElement, Qt::CaseInsensitive) == 0) { + const QString versionAttribute = QLatin1String("version"); + const QString languageAttribute = QLatin1String("language"); + const QXmlStreamAttributes attributes = reader.attributes(); + if (attributes.hasAttribute(versionAttribute)) { + const QString versionString = attributes.value(versionAttribute).toString(); + if (uiVersion(versionString).first < 4) { + *errorMessage = QCoreApplication::translate("QAbstractFormBuilder", "This file was created using Designer from Qt-%1 and cannot be read.") + .arg(versionString); + return false; + } // version error + } // has version + if (attributes.hasAttribute(languageAttribute)) { + // Check on optional language (Jambi) + const QString formLanguage = attributes.value(languageAttribute).toString(); + if (!formLanguage.isEmpty() && formLanguage.compare(language, Qt::CaseInsensitive)) { + *errorMessage = QCoreApplication::translate("QAbstractFormBuilder", "This file cannot be read because it was created using %1.").arg(formLanguage); + return false; + } // language error + } // has language + return true; + } // <ui> matched + break; + default: + break; + } + } + // No <ui> found. + *errorMessage = QCoreApplication::translate("QAbstractFormBuilder", "Invalid UI file: The root element <ui> is missing."); + return false; +} + +/*! + \fn QWidget *QAbstractFormBuilder::load(QIODevice *device, QWidget *parent) + + Loads an XML representation of a widget from the given \a device, + and constructs a new widget with the specified \a parent. + + \sa save(), errorString() +*/ +QWidget *QAbstractFormBuilder::load(QIODevice *dev, QWidget *parentWidget) +{ + QXmlStreamReader reader(dev); + d->m_errorString.clear(); + if (!readUiAttributes(reader, d->m_language, &d->m_errorString)) { + uiLibWarning(d->m_errorString); + return false; + } + DomUI ui; + ui.read(reader); + if (reader.hasError()) { + d->m_errorString = msgXmlError(reader); + uiLibWarning(d->m_errorString); + return 0; + } + + QWidget *widget = create(&ui, parentWidget); + if (!widget && d->m_errorString.isEmpty()) + d->m_errorString = QCoreApplication::translate("QAbstractFormBuilder", "Invalid UI file"); + return widget; +} + +/*! + \internal +*/ +QWidget *QAbstractFormBuilder::create(DomUI *ui, QWidget *parentWidget) +{ + typedef QFormBuilderExtra::ButtonGroupHash ButtonGroupHash; + + d->clear(); + if (const DomLayoutDefault *def = ui->elementLayoutDefault()) { + d->m_defaultMargin = def->hasAttributeMargin() ? def->attributeMargin() : INT_MIN; + d->m_defaultSpacing = def->hasAttributeSpacing() ? def->attributeSpacing() : INT_MIN; + } + + DomWidget *ui_widget = ui->elementWidget(); + if (!ui_widget) + return 0; + + initialize(ui); + + if (const DomButtonGroups *domButtonGroups = ui->elementButtonGroups()) + d->registerButtonGroups(domButtonGroups); + + if (QWidget *widget = create(ui_widget, parentWidget)) { + // Reparent button groups that were actually created to main container for them to be found in the signal/slot part + const ButtonGroupHash &buttonGroups = d->buttonGroups(); + if (!buttonGroups.empty()) { + const ButtonGroupHash::const_iterator cend = buttonGroups.constEnd(); + for (ButtonGroupHash::const_iterator it = buttonGroups.constBegin(); it != cend; ++it) + if (it.value().second) + it.value().second->setParent(widget); + } + createConnections(ui->elementConnections(), widget); + createResources(ui->elementResources()); // maybe this should go first, before create()... + applyTabStops(widget, ui->elementTabStops()); + d->applyInternalProperties(); + reset(); + d->clear(); + return widget; + } + d->clear(); + return 0; +} + +/*! + \internal + Retrieve relevant information from the custom widgets section. + Called by create(DomUI *, QWidget *); call manually if you + just use create(DomWidget *, QWidget *) on some child widget of DomUI. + */ + +void QAbstractFormBuilder::initialize(const DomUI *ui) +{ + typedef QList<DomCustomWidget*> DomCustomWidgetList; + + DomCustomWidgets *domCustomWidgets = ui->elementCustomWidgets(); + createCustomWidgets(domCustomWidgets); + + if (domCustomWidgets) { + const DomCustomWidgetList customWidgets = domCustomWidgets->elementCustomWidget(); + if (!customWidgets.empty()) { + const DomCustomWidgetList::const_iterator cend = customWidgets.constEnd(); + for (DomCustomWidgetList::const_iterator it = customWidgets.constBegin(); it != cend; ++it) + d->storeCustomWidgetData((*it)->elementClass(), *it); + } + } +} + +/*! + \internal +*/ +QWidget *QAbstractFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget) +{ + QWidget *w = createWidget(ui_widget->attributeClass(), parentWidget, ui_widget->attributeName()); + if (!w) + return 0; + + applyProperties(w, ui_widget->elementProperty()); + + foreach (DomAction *ui_action, ui_widget->elementAction()) { + QAction *child_action = create(ui_action, w); + Q_UNUSED( child_action ); + } + + foreach (DomActionGroup *ui_action_group, ui_widget->elementActionGroup()) { + QActionGroup *child_action_group = create(ui_action_group, w); + Q_UNUSED( child_action_group ); + } + + QWidgetList children; + foreach (DomWidget *ui_child, ui_widget->elementWidget()) { + if (QWidget *child = create(ui_child, w)) { + children += child; + } else { + const QString className = ui_child->elementClass().empty() ? QString() : ui_child->elementClass().front(); + uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "The creation of a widget of the class '%1' failed.").arg(className)); + } + } + + foreach (DomLayout *ui_lay, ui_widget->elementLayout()) { + QLayout *child_lay = create(ui_lay, 0, w); + Q_UNUSED( child_lay ); + } + + const QList<DomActionRef *> addActions = ui_widget->elementAddAction(); + if (!addActions.empty()) { + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + foreach (DomActionRef *ui_action_ref, addActions) { + const QString name = ui_action_ref->attributeName(); + if (name == strings.separator) { + QAction *sep = new QAction(w); + sep->setSeparator(true); + w->addAction(sep); + addMenuAction(sep); + } else if (QAction *a = d->m_actions.value(name)) { + w->addAction(a); + } else if (QActionGroup *g = d->m_actionGroups.value(name)) { + w->addActions(g->actions()); + } else if (QMenu *menu = w->findChild<QMenu*>(name)) { + w->addAction(menu->menuAction()); + addMenuAction(menu->menuAction()); + } + } + } + + loadExtraInfo(ui_widget, w, parentWidget); +#ifndef QT_FORMBUILDER_NO_SCRIPT + QString scriptErrorMessage; + d->formScriptRunner().run(ui_widget, + d->customWidgetScript(ui_widget->attributeClass()), + w, children, &scriptErrorMessage); +#endif + addItem(ui_widget, w, parentWidget); + + if (qobject_cast<QDialog *>(w) && parentWidget) + w->setAttribute(Qt::WA_Moved, false); // So that QDialog::setVisible(true) will center it + + const QStringList zOrderNames = ui_widget->elementZOrder(); + if (!zOrderNames.isEmpty()) { + QList<QWidget *> zOrder = qvariant_cast<QWidgetList>(w->property("_q_zOrder")); + foreach (const QString &widgetName, zOrderNames) { + if (QWidget *child = w->findChild<QWidget*>(widgetName)) { + if (child->parentWidget() == w) { + zOrder.removeAll(child); + zOrder.append(child); + child->raise(); + } + } + } + w->setProperty("_q_zOrder", QVariant::fromValue(zOrder)); + } + + return w; +} + +/*! + \internal +*/ +QAction *QAbstractFormBuilder::create(DomAction *ui_action, QObject *parent) +{ + QAction *a = createAction(parent, ui_action->attributeName()); + if (!a) + return 0; + + d->m_actions.insert(ui_action->attributeName(), a); + applyProperties(a, ui_action->elementProperty()); + return a; +} + +/*! + \internal +*/ +QActionGroup *QAbstractFormBuilder::create(DomActionGroup *ui_action_group, QObject *parent) +{ + QActionGroup *a = createActionGroup(parent, ui_action_group->attributeName()); + if (!a) + return 0; + d->m_actionGroups.insert(ui_action_group->attributeName(), a); + applyProperties(a, ui_action_group->elementProperty()); + + foreach (DomAction *ui_action, ui_action_group->elementAction()) { + QAction *child_action = create(ui_action, a); + Q_UNUSED( child_action ); + } + + foreach (DomActionGroup *g, ui_action_group->elementActionGroup()) { + QActionGroup *child_action_group = create(g, parent); + Q_UNUSED( child_action_group ); + } + + return a; +} + +// figure out the toolbar area of a DOM attrib list. +// By legacy, it is stored as an integer. As of 4.3.0, it is the enumeration value. +Qt::ToolBarArea QAbstractFormBuilder::toolbarAreaFromDOMAttributes(const DomPropertyHash &attributes) { + const DomProperty *attr = attributes.value(QFormBuilderStrings::instance().toolBarAreaAttribute); + if (!attr) + return Qt::TopToolBarArea; + switch(attr->kind()) { + case DomProperty::Number: + return static_cast<Qt::ToolBarArea>(attr->elementNumber()); + case DomProperty::Enum: + return enumKeyOfObjectToValue<QAbstractFormBuilderGadget, Qt::ToolBarArea>("toolBarArea", attr->elementEnum().toLatin1()); + default: + break; + } + return Qt::TopToolBarArea; +} + +/*! + \internal +*/ +bool QAbstractFormBuilder::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget) +{ + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + const DomPropertyHash attributes = propertyMap(ui_widget->elementAttribute()); + + if (parentWidget == 0) + return true; + // Check special cases. First: Custom container + const QString className = QLatin1String(parentWidget->metaObject()->className()); + const QString addPageMethod = d->customWidgetAddPageMethod(className); + if (!addPageMethod.isEmpty()) { + // If this fails ( non-existent or non-slot), use ContainerExtension in Designer, else it can't be helped + return QMetaObject::invokeMethod(parentWidget, addPageMethod.toUtf8().constData(), Qt::DirectConnection, Q_ARG(QWidget*, widget)); + } + + if (QMainWindow *mw = qobject_cast<QMainWindow*>(parentWidget)) { + +#ifndef QT_NO_MENUBAR + // the menubar + if (QMenuBar *menuBar = qobject_cast<QMenuBar*>(widget)) { + mw->setMenuBar(menuBar); + return true; + } +#endif + +#ifndef QT_NO_TOOLBAR + // apply the toolbar's attributes + else if (QToolBar *toolBar = qobject_cast<QToolBar*>(widget)) { + mw->addToolBar(toolbarAreaFromDOMAttributes(attributes), toolBar); + // check break + if (const DomProperty *attr = attributes.value(strings.toolBarBreakAttribute)) + if (attr->elementBool() == strings.trueValue) + mw->insertToolBarBreak (toolBar); + + return true; + } +#endif + +#ifndef QT_NO_STATUSBAR + // statusBar + else if (QStatusBar *statusBar = qobject_cast<QStatusBar*>(widget)) { + mw->setStatusBar(statusBar); + return true; + } +#endif + +#ifndef QT_NO_DOCKWIDGET + // apply the dockwidget's attributes + else if (QDockWidget *dockWidget = qobject_cast<QDockWidget*>(widget)) { + if (const DomProperty *attr = attributes.value(strings.dockWidgetAreaAttribute)) { + Qt::DockWidgetArea area = static_cast<Qt::DockWidgetArea>(attr->elementNumber()); + if (!dockWidget->isAreaAllowed(area)) { + if (dockWidget->isAreaAllowed(Qt::LeftDockWidgetArea)) + area = Qt::LeftDockWidgetArea; + else if (dockWidget->isAreaAllowed(Qt::RightDockWidgetArea)) + area = Qt::RightDockWidgetArea; + else if (dockWidget->isAreaAllowed(Qt::TopDockWidgetArea)) + area = Qt::TopDockWidgetArea; + else if (dockWidget->isAreaAllowed(Qt::BottomDockWidgetArea)) + area = Qt::BottomDockWidgetArea; + } + mw->addDockWidget(area, dockWidget); + } else { + mw->addDockWidget(Qt::LeftDockWidgetArea, dockWidget); + } + return true; + } +#endif + + else if (! mw->centralWidget()) { + mw->setCentralWidget(widget); + return true; + } + } + +#ifndef QT_NO_TABWIDGET + else if (QTabWidget *tabWidget = qobject_cast<QTabWidget*>(parentWidget)) { + widget->setParent(0); + + const int tabIndex = tabWidget->count(); + if (const DomProperty *titleP = attributes.value(strings.titleAttribute, 0)) + tabWidget->addTab(widget, toString(titleP->elementString())); + else + tabWidget->addTab(widget, strings.defaultTitle); + + if (DomProperty *picon = attributes.value(strings.iconAttribute)) { + QVariant v = resourceBuilder()->loadResource(workingDirectory(), picon); + QVariant nativeValue = resourceBuilder()->toNativeValue(v); + tabWidget->setTabIcon(tabIndex, qvariant_cast<QIcon>(nativeValue)); + } + +#ifndef QT_NO_TOOLTIP + if (const DomProperty *ptoolTip = attributes.value(strings.toolTipAttribute)) { + tabWidget->setTabToolTip(tabIndex, toString(ptoolTip->elementString())); + } +#endif + +#ifndef QT_NO_WHATSTHIS + if (const DomProperty *pwhatsThis = attributes.value(strings.whatsThisAttribute)) { + tabWidget->setTabWhatsThis(tabIndex, toString(pwhatsThis->elementString())); + } +#endif + + return true; + } +#endif + +#ifndef QT_NO_TOOLBOX + else if (QToolBox *toolBox = qobject_cast<QToolBox*>(parentWidget)) { + const int tabIndex = toolBox->count(); + if (const DomProperty *labelP = attributes.value(strings.labelAttribute, 0)) + toolBox->addItem(widget, toString(labelP->elementString())); + else + toolBox->addItem(widget, strings.defaultTitle); + + if (DomProperty *picon = attributes.value(strings.iconAttribute)) { + QVariant v = resourceBuilder()->loadResource(workingDirectory(), picon); + QVariant nativeValue = resourceBuilder()->toNativeValue(v); + toolBox->setItemIcon(tabIndex, qvariant_cast<QIcon>(nativeValue)); + } + +#ifndef QT_NO_TOOLTIP + if (const DomProperty *ptoolTip = attributes.value(strings.toolTipAttribute)) { + toolBox->setItemToolTip(tabIndex, toString(ptoolTip->elementString())); + } +#endif + + return true; + } +#endif + +#ifndef QT_NO_STACKEDWIDGET + else if (QStackedWidget *stackedWidget = qobject_cast<QStackedWidget*>(parentWidget)) { + stackedWidget->addWidget(widget); + return true; + } +#endif + +#ifndef QT_NO_SPLITTER + else if (QSplitter *splitter = qobject_cast<QSplitter*>(parentWidget)) { + splitter->addWidget(widget); + return true; + } +#endif + +#ifndef QT_NO_MDIAREA + else if (QMdiArea *mdiArea = qobject_cast<QMdiArea*>(parentWidget)) { + mdiArea->addSubWindow(widget); + return true; + } +#endif + +#ifndef QT_NO_WORKSPACE + else if (QWorkspace *ws = qobject_cast<QWorkspace*>(parentWidget)) { + ws->addWindow(widget); + return true; + } +#endif + +#ifndef QT_NO_DOCKWIDGET + else if (QDockWidget *dockWidget = qobject_cast<QDockWidget*>(parentWidget)) { + dockWidget->setWidget(widget); + return true; + } +#endif + +#ifndef QT_NO_SCROLLAREA + else if (QScrollArea *scrollArea = qobject_cast<QScrollArea*>(parentWidget)) { + scrollArea->setWidget(widget); + return true; + } +#endif + +#ifndef QT_NO_WIZARD + else if (QWizard *wizard = qobject_cast<QWizard *>(parentWidget)) { + QWizardPage *page = qobject_cast<QWizardPage*>(widget); + if (!page) { + uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "Attempt to add child that is not of class QWizardPage to QWizard.")); + return false; + } + wizard->addPage(page); + return true; + } +#endif + return false; +} + +/*! + \internal +*/ +void QAbstractFormBuilder::layoutInfo(DomLayout *ui_layout, QObject *parent, int *margin, int *spacing) +{ + Q_UNUSED(parent) + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + const DomPropertyHash properties = propertyMap(ui_layout->elementProperty()); + + int mar = INT_MIN; + int spac = INT_MIN; + if (const DomProperty *p = properties.value(strings.marginProperty, 0)) + mar = p->elementNumber(); + + if (const DomProperty *p = properties.value(strings.spacingProperty, 0)) + spac = p->elementNumber(); + +#ifdef Q_OS_MAC + // here we recognize UI file < 4.3 (no we don't store margin property) + if (mar != INT_MIN) { + const int defaultMargin = parent->inherits("QLayoutWidget") ? 0 : 9; + if (mar == defaultMargin) + mar = INT_MIN; + if (spac == 6) + spac = INT_MIN; + + if (mar == INT_MIN || spac == INT_MIN) { + QList<DomProperty *> properties = ui_layout->elementProperty(); + QMutableListIterator<DomProperty *> it(properties); + while (it.hasNext()) { + DomProperty *prop = it.next(); + if ((mar == INT_MIN && prop->attributeName() == strings.marginProperty) || + (spac == INT_MIN && prop->attributeName() == strings.spacingProperty)) { + it.remove(); + delete prop; + } + } + ui_layout->setElementProperty(properties); + } + } +#endif + if (margin) + *margin = mar; + if (spacing) + *spacing = spac; +} + +/*! + \internal +*/ +QLayout *QAbstractFormBuilder::create(DomLayout *ui_layout, QLayout *parentLayout, QWidget *parentWidget) +{ + QObject *p = parentLayout; + + if (p == 0) + p = parentWidget; + + Q_ASSERT(p != 0); + + bool tracking = false; + + if (p == parentWidget && parentWidget->layout()) { + tracking = true; + p = parentWidget->layout(); + } + + QLayout *layout = createLayout(ui_layout->attributeClass(), p, ui_layout->hasAttributeName() ? ui_layout->attributeName() : QString()); + + if (layout == 0) + return 0; + + if (tracking && layout->parent() == 0) { + QBoxLayout *box = qobject_cast<QBoxLayout*>(parentWidget->layout()); + if (!box) { // only QBoxLayout is supported + const QString widgetClass = QString::fromUtf8(parentWidget->metaObject()->className()); + const QString layoutClass = QString::fromUtf8(parentWidget->layout()->metaObject()->className()); + const QString msg = QCoreApplication::translate("QAbstractFormBuilder", "Attempt to add a layout to a widget '%1' (%2) which already has a layout of non-box type %3.\n" + "This indicates an inconsistency in the ui-file."). + arg(parentWidget->objectName(), widgetClass, layoutClass); + uiLibWarning(msg); + return 0; + } + box->addLayout(layout); + } + + int margin = INT_MIN, spacing = INT_MIN; + layoutInfo(ui_layout, p, &margin, &spacing); + + if (margin != INT_MIN) { + layout->setMargin(margin); + } else { + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + int left, top, right, bottom; + left = top = right = bottom = -1; + layout->getContentsMargins(&left, &top, &right, &bottom); + + const DomPropertyHash properties = propertyMap(ui_layout->elementProperty()); + + if (const DomProperty *p = properties.value(strings.leftMarginProperty, 0)) + left = p->elementNumber(); + + if (const DomProperty *p = properties.value(strings.topMarginProperty, 0)) + top = p->elementNumber(); + + if (const DomProperty *p = properties.value(strings.rightMarginProperty, 0)) + right = p->elementNumber(); + + if (const DomProperty *p = properties.value(strings.bottomMarginProperty, 0)) + bottom = p->elementNumber(); + + layout->setContentsMargins(left, top, right, bottom); + } + + if (spacing != INT_MIN) { + layout->setSpacing(spacing); + } else { + QGridLayout *grid = qobject_cast<QGridLayout *>(layout); + if (grid) { + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + const DomPropertyHash properties = propertyMap(ui_layout->elementProperty()); + + if (const DomProperty *p = properties.value(strings.horizontalSpacingProperty, 0)) + grid->setHorizontalSpacing(p->elementNumber()); + if (const DomProperty *p = properties.value(strings.verticalSpacingProperty, 0)) + grid->setVerticalSpacing(p->elementNumber()); + } + } + + applyProperties(layout, ui_layout->elementProperty()); + + foreach (DomLayoutItem *ui_item, ui_layout->elementItem()) { + if (QLayoutItem *item = create(ui_item, layout, parentWidget)) { + addItem(ui_item, item, layout); + } + } + // Check the box stretch attributes + if (QBoxLayout *box = qobject_cast<QBoxLayout*>(layout)) { + const QString boxStretch = ui_layout->attributeStretch(); + if (!boxStretch.isEmpty()) + QFormBuilderExtra::setBoxLayoutStretch(boxStretch, box); + } + // Check the grid stretch/minimum size attributes + if (QGridLayout *grid = qobject_cast<QGridLayout*>(layout)) { + // Stretch + const QString gridRowStretch = ui_layout->attributeRowStretch(); + if (!gridRowStretch.isEmpty()) + QFormBuilderExtra::setGridLayoutRowStretch(gridRowStretch, grid); + const QString gridColumnStretch = ui_layout->attributeColumnStretch(); + if (!gridColumnStretch.isEmpty()) + QFormBuilderExtra::setGridLayoutColumnStretch(gridColumnStretch, grid); + // Minimum size + const QString gridColumnMinimumWidth = ui_layout->attributeColumnMinimumWidth(); + if (!gridColumnMinimumWidth.isEmpty()) + QFormBuilderExtra::setGridLayoutColumnMinimumWidth(gridColumnMinimumWidth, grid); + const QString gridRowMinimumHeight = ui_layout->attributeRowMinimumHeight(); + if (!gridRowMinimumHeight.isEmpty()) + QFormBuilderExtra::setGridLayoutRowMinimumHeight(gridRowMinimumHeight, grid); + } + return layout; +} + +#ifndef QT_NO_FORMLAYOUT +static inline QFormLayout::ItemRole formLayoutRole(int column, int colspan) +{ + if (colspan > 1) + return QFormLayout::SpanningRole; + return column == 0 ? QFormLayout::LabelRole : QFormLayout::FieldRole; +} +#endif + +static inline QString alignmentValue(Qt::Alignment a) +{ + QString h,v; + switch (a & Qt::AlignHorizontal_Mask) { + case Qt::AlignLeft: + h = QLatin1String("Qt::AlignLeft"); + break; + case Qt::AlignRight: + h = QLatin1String("Qt::AlignRight"); + break; + case Qt::AlignHCenter: + h = QLatin1String("Qt::AlignHCenter"); + break; + case Qt::AlignJustify: + h = QLatin1String("Qt::AlignJustify"); + break; + } + switch (a & Qt::AlignVertical_Mask) { + case Qt::AlignTop: + v = QLatin1String("Qt::AlignTop"); + break; + case Qt::AlignBottom: + v = QLatin1String("Qt::AlignBottom"); + break; + case Qt::AlignVCenter: + v = QLatin1String("Qt::AlignVCenter"); + break; + } + if (h.isEmpty() && v.isEmpty()) + return QString(); + if (!v.isEmpty()) { + if (!h.isEmpty()) + h += QLatin1Char('|'); + h += v; + } + return h; +} + +static inline Qt::Alignment alignmentFromDom(const QString &in) +{ + Qt::Alignment rc = 0; + if (!in.isEmpty()) { + foreach (const QString &f, in.split(QLatin1Char('|'))) { + if (f == QLatin1String("Qt::AlignLeft")) { + rc |= Qt::AlignLeft; + } else if (f == QLatin1String("Qt::AlignRight")) { + rc |= Qt::AlignRight; + } else if (f == QLatin1String("Qt::AlignHCenter")) { + rc |= Qt::AlignHCenter; + } else if (f == QLatin1String("Qt::AlignJustify")) { + rc |= Qt::AlignJustify; + } else if (f == QLatin1String("Qt::AlignTop")) { + rc |= Qt::AlignTop; + } else if (f == QLatin1String("Qt::AlignBottom")) { + rc |= Qt::AlignBottom; + } else if (f == QLatin1String("Qt::AlignVCenter")) { + rc |= Qt::AlignVCenter; + } + } + } + return rc; +} + +/*! + \internal +*/ +bool QAbstractFormBuilder::addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout) +{ + // Calling addChildWidget(), etc. is required to maintain consistency of the layouts, + // see documentation of addItem(), which should ideally not be used. + if (item->widget()) { + static_cast<QFriendlyLayout*>(layout)->addChildWidget(item->widget()); + } else if (item->layout()) { + static_cast<QFriendlyLayout*>(layout)->addChildLayout(item->layout()); + } else if (item->spacerItem()) { + // nothing to do + } else { + return false; + } + + if (QGridLayout *grid = qobject_cast<QGridLayout*>(layout)) { + const int rowSpan = ui_item->hasAttributeRowSpan() ? ui_item->attributeRowSpan() : 1; + const int colSpan = ui_item->hasAttributeColSpan() ? ui_item->attributeColSpan() : 1; + grid->addItem(item, ui_item->attributeRow(), ui_item->attributeColumn(), + rowSpan, colSpan, item->alignment()); + return true; + } +#ifndef QT_NO_FORMLAYOUT + if (QFormLayout *form = qobject_cast<QFormLayout *>(layout)) { + const int row = ui_item->attributeRow(); + const int colSpan = ui_item->hasAttributeColSpan() ? ui_item->attributeColSpan() : 1; + form->setItem(row, formLayoutRole(ui_item->attributeColumn(), colSpan), item); + return true; + } + +#endif + layout->addItem(item); + return true; +} + +/*! + \internal +*/ +QLayoutItem *QAbstractFormBuilder::create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget) +{ + switch (ui_layoutItem->kind()) { + case DomLayoutItem::Widget: { + if (QWidget *w = create(ui_layoutItem->elementWidget(), parentWidget)) { +#ifdef QFORMINTERNAL_NAMESPACE // uilib + QWidgetItem *item = new QWidgetItemV2(w); +#else // Within Designer: Use factory method that returns special items that refuse to shrink to 0,0 + QWidgetItem *item = QLayoutPrivate::createWidgetItem(layout, w); +#endif + item->setAlignment(alignmentFromDom(ui_layoutItem->attributeAlignment())); + return item; + } + qWarning() << QCoreApplication::translate("QAbstractFormBuilder", "Empty widget item in %1 '%2'.").arg(QString::fromUtf8(layout->metaObject()->className()), layout->objectName()); + return 0; + } + case DomLayoutItem::Spacer: { + QSize size(0, 0); + QSizePolicy::Policy sizeType = QSizePolicy::Expanding; + bool isVspacer = false; + + const DomSpacer *ui_spacer = ui_layoutItem->elementSpacer(); + + const QMetaEnum sizePolicy_enum = metaEnum<QAbstractFormBuilderGadget>("sizeType"); + const QMetaEnum orientation_enum = metaEnum<QAbstractFormBuilderGadget>("orientation"); + + const QList<DomProperty *> spacerProperties = ui_spacer->elementProperty(); + if (!spacerProperties.empty()) { + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + foreach (DomProperty *p, spacerProperties) { + const QVariant v = toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p); // ### remove me + if (v.isNull()) + continue; + if (p->attributeName() == strings.sizeHintProperty && p->kind() == DomProperty::Size) { + size = v.toSize(); // ### remove me + } else if (p->attributeName() == strings.sizeTypeProperty && p->kind() == DomProperty::Enum) { + sizeType = static_cast<QSizePolicy::Policy>(v.toInt()); + } else if (p->attributeName() == strings.orientationProperty && p->kind() == DomProperty::Enum) { + const Qt::Orientation o = static_cast<Qt::Orientation>(v.toInt()); + isVspacer = (o == Qt::Vertical); + } + } + } + + QSpacerItem *spacer = 0; + if (isVspacer) + spacer = new QSpacerItem(size.width(), size.height(), QSizePolicy::Minimum, sizeType); + else + spacer = new QSpacerItem(size.width(), size.height(), sizeType, QSizePolicy::Minimum); + return spacer; } + + case DomLayoutItem::Layout: + return create(ui_layoutItem->elementLayout(), layout, parentWidget); + + default: + break; + } + + return 0; +} + +/*! + \internal +*/ +void QAbstractFormBuilder::applyProperties(QObject *o, const QList<DomProperty*> &properties) +{ + typedef QList<DomProperty*> DomPropertyList; + + if (properties.empty()) + return; + + const DomPropertyList::const_iterator cend = properties.constEnd(); + for (DomPropertyList::const_iterator it = properties.constBegin(); it != cend; ++it) { + const QVariant v = toVariant(o->metaObject(), *it); + if (!v.isNull()) { + const QString attributeName = (*it)->attributeName(); + if (!d->applyPropertyInternally(o, attributeName, v)) + o->setProperty(attributeName.toUtf8(), v); + } + } +} + + +/*! + \internal + Check whether a property is applied internally by QAbstractFormBuilder. Call this + from overwritten applyProperties(). +*/ + +bool QAbstractFormBuilder::applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value) +{ + return d->applyPropertyInternally(o,propertyName, value); +} + +/*! + \internal +*/ + +QVariant QAbstractFormBuilder::toVariant(const QMetaObject *meta, DomProperty *p) +{ + return domPropertyToVariant(this, meta, p); +} + +/*! + \internal +*/ +void QAbstractFormBuilder::setupColorGroup(QPalette &palette, QPalette::ColorGroup colorGroup, + DomColorGroup *group) +{ + // old format + const QList<DomColor*> colors = group->elementColor(); + for (int role = 0; role < colors.size(); ++role) { + const DomColor *color = colors.at(role); + const QColor c(color->elementRed(), color->elementGreen(), color->elementBlue()); + palette.setColor(colorGroup, QPalette::ColorRole(role), c); + } + + // new format + const QMetaEnum colorRole_enum = metaEnum<QAbstractFormBuilderGadget>("colorRole"); + + const QList<DomColorRole*> colorRoles = group->elementColorRole(); + for (int role = 0; role < colorRoles.size(); ++role) { + const DomColorRole *colorRole = colorRoles.at(role); + + if (colorRole->hasAttributeRole()) { + const int r = colorRole_enum.keyToValue(colorRole->attributeRole().toLatin1()); + if (r != -1) { + const QBrush br = setupBrush(colorRole->elementBrush()); + palette.setBrush(colorGroup, static_cast<QPalette::ColorRole>(r), br); + } + } + } +} + +/*! + \internal +*/ +DomColorGroup *QAbstractFormBuilder::saveColorGroup(const QPalette &palette) +{ + + const QMetaEnum colorRole_enum = metaEnum<QAbstractFormBuilderGadget>("colorRole"); + + DomColorGroup *group = new DomColorGroup(); + QList<DomColorRole*> colorRoles; + + const uint mask = palette.resolve(); + for (int role = QPalette::WindowText; role < QPalette::NColorRoles; ++role) { + if (mask & (1 << role)) { + QBrush br = palette.brush(QPalette::ColorRole(role)); + + DomColorRole *colorRole = new DomColorRole(); + colorRole->setElementBrush(saveBrush(br)); + colorRole->setAttributeRole(QLatin1String(colorRole_enum.valueToKey(role))); + colorRoles.append(colorRole); + } + } + + group->setElementColorRole(colorRoles); + return group; +} + +/*! + \internal +*/ +QBrush QAbstractFormBuilder::setupBrush(DomBrush *brush) +{ + QBrush br; + if (!brush->hasAttributeBrushStyle()) + return br; + + const Qt::BrushStyle style = enumKeyOfObjectToValue<QAbstractFormBuilderGadget, Qt::BrushStyle>("brushStyle", brush->attributeBrushStyle().toLatin1()); + + if (style == Qt::LinearGradientPattern || + style == Qt::RadialGradientPattern || + style == Qt::ConicalGradientPattern) { + const QMetaEnum gradientType_enum = metaEnum<QAbstractFormBuilderGadget>("gradientType"); + const QMetaEnum gradientSpread_enum = metaEnum<QAbstractFormBuilderGadget>("gradientSpread"); + const QMetaEnum gradientCoordinate_enum = metaEnum<QAbstractFormBuilderGadget>("gradientCoordinate"); + + const DomGradient *gradient = brush->elementGradient(); + const QGradient::Type type = enumKeyToValue<QGradient::Type>(gradientType_enum, gradient->attributeType().toLatin1()); + + + QGradient *gr = 0; + + if (type == QGradient::LinearGradient) { + gr = new QLinearGradient(QPointF(gradient->attributeStartX(), gradient->attributeStartY()), + QPointF(gradient->attributeEndX(), gradient->attributeEndY())); + } else if (type == QGradient::RadialGradient) { + gr = new QRadialGradient(QPointF(gradient->attributeCentralX(), gradient->attributeCentralY()), + gradient->attributeRadius(), + QPointF(gradient->attributeFocalX(), gradient->attributeFocalY())); + } else if (type == QGradient::ConicalGradient) { + gr = new QConicalGradient(QPointF(gradient->attributeCentralX(), gradient->attributeCentralY()), + gradient->attributeAngle()); + } + if (!gr) + return br; + + const QGradient::Spread spread = enumKeyToValue<QGradient::Spread>(gradientSpread_enum, gradient->attributeSpread().toLatin1()); + gr->setSpread(spread); + + const QGradient::CoordinateMode coord = enumKeyToValue<QGradient::CoordinateMode>(gradientCoordinate_enum, gradient->attributeCoordinateMode().toLatin1()); + gr->setCoordinateMode(coord); + + const QList<DomGradientStop *> stops = gradient->elementGradientStop(); + QListIterator<DomGradientStop *> it(stops); + while (it.hasNext()) { + const DomGradientStop *stop = it.next(); + const DomColor *color = stop->elementColor(); + gr->setColorAt(stop->attributePosition(), QColor::fromRgb(color->elementRed(), + color->elementGreen(), color->elementBlue(), color->attributeAlpha())); + } + br = QBrush(*gr); + delete gr; + } else if (style == Qt::TexturePattern) { + const DomProperty *texture = brush->elementTexture(); + if (texture && texture->kind() == DomProperty::Pixmap) { + br.setTexture(domPropertyToPixmap(texture)); + } + } else { + const DomColor *color = brush->elementColor(); + br.setColor(QColor::fromRgb(color->elementRed(), + color->elementGreen(), color->elementBlue(), color->attributeAlpha())); + br.setStyle((Qt::BrushStyle)style); + } + return br; +} + +/*! + \internal +*/ +DomBrush *QAbstractFormBuilder::saveBrush(const QBrush &br) +{ + const QMetaEnum brushStyle_enum = metaEnum<QAbstractFormBuilderGadget>("brushStyle"); + + DomBrush *brush = new DomBrush(); + const Qt::BrushStyle style = br.style(); + brush->setAttributeBrushStyle(QLatin1String(brushStyle_enum.valueToKey(style))); + if (style == Qt::LinearGradientPattern || + style == Qt::RadialGradientPattern || + style == Qt::ConicalGradientPattern) { + const QMetaEnum gradientType_enum = metaEnum<QAbstractFormBuilderGadget>("gradientType"); + const QMetaEnum gradientSpread_enum = metaEnum<QAbstractFormBuilderGadget>("gradientSpread"); + const QMetaEnum gradientCoordinate_enum = metaEnum<QAbstractFormBuilderGadget>("gradientCoordinate"); + + DomGradient *gradient = new DomGradient(); + const QGradient *gr = br.gradient(); + const QGradient::Type type = gr->type(); + gradient->setAttributeType(QLatin1String(gradientType_enum.valueToKey(type))); + gradient->setAttributeSpread(QLatin1String(gradientSpread_enum.valueToKey(gr->spread()))); + gradient->setAttributeCoordinateMode(QLatin1String(gradientCoordinate_enum.valueToKey(gr->coordinateMode()))); + QList<DomGradientStop *> stops; + QGradientStops st = gr->stops(); + QVectorIterator<QPair<qreal, QColor> > it(st); + while (it.hasNext()) { + const QPair<qreal, QColor> pair = it.next(); + DomGradientStop *stop = new DomGradientStop(); + stop->setAttributePosition(pair.first); + DomColor *color = new DomColor(); + color->setElementRed(pair.second.red()); + color->setElementGreen(pair.second.green()); + color->setElementBlue(pair.second.blue()); + color->setAttributeAlpha(pair.second.alpha()); + stop->setElementColor(color); + stops.append(stop); + } + gradient->setElementGradientStop(stops); + if (type == QGradient::LinearGradient) { + QLinearGradient *lgr = (QLinearGradient *)(gr); + gradient->setAttributeStartX(lgr->start().x()); + gradient->setAttributeStartY(lgr->start().y()); + gradient->setAttributeEndX(lgr->finalStop().x()); + gradient->setAttributeEndY(lgr->finalStop().y()); + } else if (type == QGradient::RadialGradient) { + QRadialGradient *rgr = (QRadialGradient *)(gr); + gradient->setAttributeCentralX(rgr->center().x()); + gradient->setAttributeCentralY(rgr->center().y()); + gradient->setAttributeFocalX(rgr->focalPoint().x()); + gradient->setAttributeFocalY(rgr->focalPoint().y()); + gradient->setAttributeRadius(rgr->radius()); + } else if (type == QGradient::ConicalGradient) { + QConicalGradient *cgr = (QConicalGradient *)(gr); + gradient->setAttributeCentralX(cgr->center().x()); + gradient->setAttributeCentralY(cgr->center().y()); + gradient->setAttributeAngle(cgr->angle()); + } + + brush->setElementGradient(gradient); + } else if (style == Qt::TexturePattern) { + const QPixmap pixmap = br.texture(); + if (!pixmap.isNull()) { + DomProperty *p = new DomProperty; + setPixmapProperty(*p, pixmapPaths(pixmap)); + brush->setElementTexture(p); + } + } else { + QColor c = br.color(); + DomColor *color = new DomColor(); + color->setElementRed(c.red()); + color->setElementGreen(c.green()); + color->setElementBlue(c.blue()); + color->setAttributeAlpha(c.alpha()); + brush->setElementColor(color); + } + return brush; +} + +/*! + \internal +*/ +QWidget *QAbstractFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name) +{ + Q_UNUSED(widgetName); + Q_UNUSED(parentWidget); + Q_UNUSED(name); + return 0; +} + +/*! + \internal +*/ +QLayout *QAbstractFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name) +{ + Q_UNUSED(layoutName); + Q_UNUSED(parent); + Q_UNUSED(name); + return 0; +} + +/*! + \internal +*/ +QAction *QAbstractFormBuilder::createAction(QObject *parent, const QString &name) +{ + QAction *action = new QAction(parent); + action->setObjectName(name); + return action; +} + +/*! + \internal +*/ +QActionGroup *QAbstractFormBuilder::createActionGroup(QObject *parent, const QString &name) +{ + QActionGroup *g = new QActionGroup(parent); + g->setObjectName(name); + return g; +} + +/*! + \fn void QAbstractFormBuilder::save(QIODevice *device, QWidget *widget) + + Saves an XML representation of the given \a widget to the + specified \a device in the standard UI file format. + + \sa load()*/ +void QAbstractFormBuilder::save(QIODevice *dev, QWidget *widget) +{ + DomWidget *ui_widget = createDom(widget, 0); + Q_ASSERT( ui_widget != 0 ); + + DomUI *ui = new DomUI(); + ui->setAttributeVersion(QLatin1String("4.0")); + ui->setElementWidget(ui_widget); + + saveDom(ui, widget); + + QXmlStreamWriter writer(dev); + writer.setAutoFormatting(true); + writer.setAutoFormattingIndent(1); + writer.writeStartDocument(); + ui->write(writer); + writer.writeEndDocument(); + + d->m_laidout.clear(); + + delete ui; +} + +/*! + \internal +*/ +void QAbstractFormBuilder::saveDom(DomUI *ui, QWidget *widget) +{ + ui->setElementClass(widget->objectName()); + + if (DomConnections *ui_connections = saveConnections()) { + ui->setElementConnections(ui_connections); + } + + if (DomCustomWidgets *ui_customWidgets = saveCustomWidgets()) { + ui->setElementCustomWidgets(ui_customWidgets); + } + + if (DomTabStops *ui_tabStops = saveTabStops()) { + ui->setElementTabStops(ui_tabStops); + } + + if (DomResources *ui_resources = saveResources()) { + ui->setElementResources(ui_resources); + } + if (DomButtonGroups *ui_buttonGroups = saveButtonGroups(widget)) + ui->setElementButtonGroups(ui_buttonGroups); +} + +/*! + \internal +*/ +DomConnections *QAbstractFormBuilder::saveConnections() +{ + return new DomConnections; +} + +/*! + \internal +*/ + +DomWidget *QAbstractFormBuilder::createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive) +{ + DomWidget *ui_widget = new DomWidget(); + ui_widget->setAttributeClass(QLatin1String(widget->metaObject()->className())); + ui_widget->setElementProperty(computeProperties(widget)); + + if (recursive) { + if (QLayout *layout = widget->layout()) { + if (DomLayout *ui_layout = createDom(layout, 0, ui_parentWidget)) { + QList<DomLayout*> ui_layouts; + ui_layouts.append(ui_layout); + + ui_widget->setElementLayout(ui_layouts); + } + } + } + + // widgets, actions and action groups + QList<DomWidget*> ui_widgets; + QList<DomAction*> ui_actions; + QList<DomActionGroup*> ui_action_groups; + + QList<QObject*> children; + + // splitters need to store their children in the order specified by child indexes, + // not the order of the child list. +#ifndef QT_NO_SPLITTER + if (const QSplitter *splitter = qobject_cast<const QSplitter*>(widget)) { + const int count = splitter->count(); + for (int i = 0; i < count; ++i) + children.append(splitter->widget(i)); + } else +#endif + { + QList<QObject *> childObjects = widget->children(); + + const QList<QWidget *> list = qvariant_cast<QWidgetList>(widget->property("_q_widgetOrder")); + foreach (QWidget *w, list) { + if (childObjects.contains(w)) { + children.append(w); + childObjects.removeAll(w); + } + } + children += childObjects; + + const QList<QWidget *> zOrder = qvariant_cast<QWidgetList>(widget->property("_q_zOrder")); + if (list != zOrder) { + QStringList zOrderList; + QListIterator<QWidget* > itZOrder(zOrder); + while (itZOrder.hasNext()) + zOrderList.append(itZOrder.next()->objectName()); + ui_widget->setElementZOrder(zOrderList); + } + } + + foreach (QObject *obj, children) { + if (QWidget *childWidget = qobject_cast<QWidget*>(obj)) { + if (d->m_laidout.contains(childWidget) || recursive == false) + continue; + + if (QMenu *menu = qobject_cast<QMenu *>(childWidget)) { + QList<QAction *> actions = menu->parentWidget()->actions(); + QListIterator<QAction *> it(actions); + bool found = false; + while (it.hasNext()) { + if (it.next()->menu() == menu) + found = true; + } + if (!found) + continue; + } + + if (DomWidget *ui_child = createDom(childWidget, ui_widget)) { + ui_widgets.append(ui_child); + } + } else if (QAction *childAction = qobject_cast<QAction*>(obj)) { + if (childAction->actionGroup() != 0) { + // it will be added later. + continue; + } + + if (DomAction *ui_action = createDom(childAction)) { + ui_actions.append(ui_action); + } + } else if (QActionGroup *childActionGroup = qobject_cast<QActionGroup*>(obj)) { + if (DomActionGroup *ui_action_group = createDom(childActionGroup)) { + ui_action_groups.append(ui_action_group); + } + } + } + + // add-action + QList<DomActionRef*> ui_action_refs; + foreach (QAction *action, widget->actions()) { + if (DomActionRef *ui_action_ref = createActionRefDom(action)) { + ui_action_refs.append(ui_action_ref); + } + } + + if (recursive) + ui_widget->setElementWidget(ui_widgets); + + ui_widget->setElementAction(ui_actions); + ui_widget->setElementActionGroup(ui_action_groups); + ui_widget->setElementAddAction(ui_action_refs); + + saveExtraInfo(widget, ui_widget, ui_parentWidget); + + return ui_widget; +} + +/*! + \internal +*/ +DomActionRef *QAbstractFormBuilder::createActionRefDom(QAction *action) +{ + QString name = action->objectName(); + + if (action->menu() != 0) + name = action->menu()->objectName(); + + DomActionRef *ui_action_ref = new DomActionRef(); + if (action->isSeparator()) + ui_action_ref->setAttributeName(QFormBuilderStrings::instance().separator); + else + ui_action_ref->setAttributeName(name); + + return ui_action_ref; +} + +// Struct to store layout item parameters for saving layout items +struct FormBuilderSaveLayoutEntry { + explicit FormBuilderSaveLayoutEntry(QLayoutItem *li = 0) : + item(li), row(-1), column(-1), rowSpan(0), columnSpan(0), alignment(0) {} + + QLayoutItem *item; + int row; + int column; + int rowSpan; + int columnSpan; + Qt::Alignment alignment; +}; + +// Create list from standard box layout +static QList<FormBuilderSaveLayoutEntry> saveLayoutEntries(const QLayout *layout) +{ + QList<FormBuilderSaveLayoutEntry> rc; + if (const int count = layout->count()) { + rc.reserve(count); + for (int idx = 0; idx < count; ++idx) { + QLayoutItem *item = layout->itemAt(idx); + FormBuilderSaveLayoutEntry entry(item); + entry.alignment = item->alignment(); + rc.append(entry); + } + } + return rc; +} + +// Create list from grid layout +static QList<FormBuilderSaveLayoutEntry> saveGridLayoutEntries(QGridLayout *gridLayout) +{ + QList<FormBuilderSaveLayoutEntry> rc; + if (const int count = gridLayout->count()) { + rc.reserve(count); + for (int idx = 0; idx < count; ++idx) { + QLayoutItem *item = gridLayout->itemAt(idx); + FormBuilderSaveLayoutEntry entry(item); + gridLayout->getItemPosition(idx, &entry.row, &entry.column, &entry.rowSpan,&entry.columnSpan); + entry.alignment = item->alignment(); + rc.append(entry); + } + } + return rc; +} + +#ifndef QT_NO_FORMLAYOUT +// Create list from form layout +static QList<FormBuilderSaveLayoutEntry> saveFormLayoutEntries(const QFormLayout *formLayout) +{ + QList<FormBuilderSaveLayoutEntry> rc; + if (const int count = formLayout->count()) { + rc.reserve(count); + for (int idx = 0; idx < count; ++idx) { + QLayoutItem *item = formLayout->itemAt(idx); + QFormLayout::ItemRole role = QFormLayout::LabelRole; + FormBuilderSaveLayoutEntry entry(item); + formLayout->getItemPosition(idx, &entry.row, &role); + switch (role ) { + case QFormLayout::LabelRole: + entry.column = 0; + break; + case QFormLayout::FieldRole: + entry.column = 1; + break; + case QFormLayout::SpanningRole: + entry.column = 0; + entry.columnSpan = 2; + break; + } + rc.push_back(entry); + } + } + return rc; +} +#endif + +/*! + \internal +*/ + +DomLayout *QAbstractFormBuilder::createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget) +{ + Q_UNUSED(ui_layout) + DomLayout *lay = new DomLayout(); + lay->setAttributeClass(QLatin1String(layout->metaObject()->className())); + const QString objectName = layout->objectName(); + if (!objectName.isEmpty()) + lay->setAttributeName(objectName); + lay->setElementProperty(computeProperties(layout)); + + QList<FormBuilderSaveLayoutEntry> newList; + if (QGridLayout *gridLayout = qobject_cast<QGridLayout *>(layout)) { + newList = saveGridLayoutEntries(gridLayout); +#ifndef QT_NO_FORMLAYOUT + } else if (const QFormLayout *formLayout = qobject_cast<const QFormLayout *>(layout)) { + newList = saveFormLayoutEntries(formLayout); +#endif + } else { + newList = saveLayoutEntries(layout); + } + + QList<DomLayoutItem*> ui_items; + foreach (const FormBuilderSaveLayoutEntry &item, newList) { + if (DomLayoutItem *ui_item = createDom(item.item, lay, ui_parentWidget)) { + if (item.row >= 0) + ui_item->setAttributeRow(item.row); + if (item.column >= 0) + ui_item->setAttributeColumn(item.column); + if (item.rowSpan > 1) + ui_item->setAttributeRowSpan(item.rowSpan); + if (item.columnSpan > 1) + ui_item->setAttributeColSpan(item.columnSpan); + if (item.alignment) + ui_item->setAttributeAlignment(alignmentValue(item.alignment)); + ui_items.append(ui_item); + } + } + + lay->setElementItem(ui_items); + + return lay; +} + +/*! + \internal +*/ +DomLayoutItem *QAbstractFormBuilder::createDom(QLayoutItem *item, DomLayout *ui_layout, DomWidget *ui_parentWidget) +{ + DomLayoutItem *ui_item = new DomLayoutItem(); + + if (item->widget()) { + ui_item->setElementWidget(createDom(item->widget(), ui_parentWidget)); + d->m_laidout.insert(item->widget(), true); + } else if (item->layout()) { + ui_item->setElementLayout(createDom(item->layout(), ui_layout, ui_parentWidget)); + } else if (item->spacerItem()) { + ui_item->setElementSpacer(createDom(item->spacerItem(), ui_layout, ui_parentWidget)); + } + + return ui_item; +} + +/*! + \internal +*/ +DomSpacer *QAbstractFormBuilder::createDom(QSpacerItem *spacer, DomLayout *ui_layout, DomWidget *ui_parentWidget) +{ + Q_UNUSED(ui_layout); + Q_UNUSED(ui_parentWidget); + + DomSpacer *ui_spacer = new DomSpacer(); + QList<DomProperty*> properties; + + DomProperty *prop = 0; + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + // sizeHint property + prop = new DomProperty(); + prop->setAttributeName(strings.sizeHintProperty); + prop->setElementSize(new DomSize()); + prop->elementSize()->setElementWidth(spacer->sizeHint().width()); + prop->elementSize()->setElementHeight(spacer->sizeHint().height()); + properties.append(prop); + + // orientation property + prop = new DomProperty(); // ### we don't implemented the case where expandingDirections() is both Vertical and Horizontal + prop->setAttributeName(strings.orientationProperty); + prop->setElementEnum((spacer->expandingDirections() & Qt::Horizontal) ? strings.qtHorizontal : strings.qtVertical); + properties.append(prop); + + ui_spacer->setElementProperty(properties); + return ui_spacer; +} + +/*! + \internal +*/ +DomProperty *QAbstractFormBuilder::createProperty(QObject *obj, const QString &pname, const QVariant &v) +{ + if (!checkProperty(obj, pname)) { + return 0; + } + return variantToDomProperty(this, obj->metaObject(), pname, v); +} + +/*! + \internal +*/ +QList<DomProperty*> QAbstractFormBuilder::computeProperties(QObject *obj) +{ + QList<DomProperty*> lst; + + const QMetaObject *meta = obj->metaObject(); + + QHash<QByteArray, bool> properties; + const int propertyCount = meta->propertyCount(); + for(int i=0; i < propertyCount; ++i) + properties.insert(meta->property(i).name(), true); + + const QList<QByteArray> propertyNames = properties.keys(); + + const int propertyNamesCount = propertyNames.size(); + for(int i=0; i<propertyNamesCount ; ++i) { + const QString pname = QString::fromUtf8(propertyNames.at(i)); + const QMetaProperty prop = meta->property(meta->indexOfProperty(pname.toUtf8())); + + if (!prop.isWritable() || !checkProperty(obj, QLatin1String(prop.name()))) + continue; + + const QVariant v = prop.read(obj); + + DomProperty *dom_prop = 0; + if (v.type() == QVariant::Int) { + dom_prop = new DomProperty(); + + if (prop.isFlagType()) + uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "Flags property are not supported yet.")); + + if (prop.isEnumType()) { + QString scope = QString::fromUtf8(prop.enumerator().scope()); + if (scope.size()) + scope += QString::fromUtf8("::"); + const QString e = QString::fromUtf8(prop.enumerator().valueToKey(v.toInt())); + if (e.size()) + dom_prop->setElementEnum(scope + e); + } else + dom_prop->setElementNumber(v.toInt()); + dom_prop->setAttributeName(pname); + } else { + dom_prop = createProperty(obj, pname, v); + } + + if (!dom_prop || dom_prop->kind() == DomProperty::Unknown) + delete dom_prop; + else + lst.append(dom_prop); + } + + return lst; +} + + +/*! + \internal + \typedef QAbstractFormBuilder::DomPropertyHash + \typedef QAbstractFormBuilder::IconPaths +*/ + + +/*! + \internal +*/ +QAbstractFormBuilder::DomPropertyHash QAbstractFormBuilder::propertyMap(const QList<DomProperty*> &properties) +{ + DomPropertyHash map; + + foreach (DomProperty *p, properties) + map.insert(p->attributeName(), p); + + return map; +} + +/*! + \internal +*/ +bool QAbstractFormBuilder::checkProperty(QObject *obj, const QString &prop) const +{ + Q_UNUSED(obj); + Q_UNUSED(prop); + + return true; +} + +/*! + \internal +*/ +QString QAbstractFormBuilder::toString(const DomString *str) +{ + return str ? str->text() : QString(); +} + +/*! + \internal +*/ +void QAbstractFormBuilder::applyTabStops(QWidget *widget, DomTabStops *tabStops) +{ + if (!tabStops) + return; + + QWidget *lastWidget = 0; + + const QStringList l = tabStops->elementTabStop(); + for (int i=0; i<l.size(); ++i) { + const QString name = l.at(i); + + QWidget *child = widget->findChild<QWidget*>(name); + if (!child) { + uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "While applying tab stops: The widget '%1' could not be found.").arg(name)); + continue; + } + + if (i == 0) { + lastWidget = widget->findChild<QWidget*>(name); + continue; + } else if (!child || !lastWidget) { + continue; + } + + QWidget::setTabOrder(lastWidget, child); + + lastWidget = widget->findChild<QWidget*>(name); + } +} + +/*! + \internal +*/ +DomCustomWidgets *QAbstractFormBuilder::saveCustomWidgets() +{ + return 0; +} + +/*! + \internal +*/ +DomTabStops *QAbstractFormBuilder::saveTabStops() +{ + return 0; +} + +/*! + \internal +*/ +DomResources *QAbstractFormBuilder::saveResources() +{ + return 0; +} + +/*! + \internal + \since 4.5 +*/ + +DomButtonGroups *QAbstractFormBuilder::saveButtonGroups(const QWidget *mainContainer) +{ + // Save fst order buttongroup children of maincontainer + typedef QList<QButtonGroup*> ButtonGroupList; + const QObjectList mchildren = mainContainer->children(); + if (mchildren.empty()) + return 0; + QList<DomButtonGroup*> domGroups; + const QObjectList::const_iterator cend = mchildren.constEnd(); + for (QObjectList::const_iterator it = mchildren.constBegin(); it != cend; ++it) + if (QButtonGroup *bg = qobject_cast<QButtonGroup *>(*it)) + if (DomButtonGroup* dg = createDom(bg)) + domGroups.push_back(dg); + + if (domGroups.empty()) + return 0; + DomButtonGroups *rc = new DomButtonGroups; + rc->setElementButtonGroup(domGroups); + return rc; +} + +// VC6 would not find templated members, so we use statics and this utter hack. +class FriendlyFB : public QAbstractFormBuilder { +public: + using QAbstractFormBuilder::saveResource; + using QAbstractFormBuilder::saveText; + using QAbstractFormBuilder::resourceBuilder; + using QAbstractFormBuilder::textBuilder; + using QAbstractFormBuilder::toVariant; +}; + +template<class T> +static void storeItemFlags(const T *item, QList<DomProperty*> *properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + static const Qt::ItemFlags defaultFlags = T().flags(); + static const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags"); + + if (item->flags() != defaultFlags) { + DomProperty *p = new DomProperty; + p->setAttributeName(strings.flagsAttribute); + p->setElementSet(QString::fromAscii(itemFlags_enum.valueToKeys(item->flags()))); + properties->append(p); + } +} + +#ifndef Q_CC_RVCT +// RVCT does not accept static inline functions if one argument is templated type +// For this reason all necessary function variants are explicityly written for it. +template<class T> +static void storeItemProps(QAbstractFormBuilder *abstractFormBuilder, const T *item, + QList<DomProperty*> *properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder); + + DomProperty *p; + QVariant v; + + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) + if ((p = formBuilder->saveText(it.second, item->data(it.first.second)))) + properties->append(p); + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((v = item->data(it.first)).isValid() && + (p = variantToDomProperty(abstractFormBuilder, + static_cast<const QMetaObject *>(&QAbstractFormBuilderGadget::staticMetaObject), + it.second, v))) + properties->append(p); + + if ((p = formBuilder->saveResource(item->data(Qt::DecorationPropertyRole)))) + properties->append(p); +} + +template<class T> +static void storeItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, const T *item, + QList<DomProperty*> *properties) +{ + storeItemProps<T>(abstractFormBuilder, item, properties); + storeItemFlags<T>(item, properties); +} + +template<class T> +static void loadItemProps(QAbstractFormBuilder *abstractFormBuilder, T *item, + const QHash<QString, DomProperty*> &properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder); + + DomProperty *p; + QVariant v; + + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) + if ((p = properties.value(it.second))) { + v = formBuilder->textBuilder()->loadText(p); + QVariant nativeValue = formBuilder->textBuilder()->toNativeValue(v); + item->setData(it.first.first, qvariant_cast<QString>(nativeValue)); + item->setData(it.first.second, v); + } + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((p = properties.value(it.second)) && + (v = formBuilder->toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p)).isValid()) + item->setData(it.first, v); + + if ((p = properties.value(strings.iconAttribute))) { + v = formBuilder->resourceBuilder()->loadResource(formBuilder->workingDirectory(), p); + QVariant nativeValue = formBuilder->resourceBuilder()->toNativeValue(v); + item->setIcon(qvariant_cast<QIcon>(nativeValue)); + item->setData(Qt::DecorationPropertyRole, v); + } +} + +template<class T> +static void loadItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, T *item, + const QHash<QString, DomProperty*> &properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + static const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags"); + + loadItemProps<T>(abstractFormBuilder, item, properties); + + DomProperty *p; + if ((p = properties.value(strings.flagsAttribute)) && p->kind() == DomProperty::Set) + item->setFlags(enumKeysToValue<Qt::ItemFlags>(itemFlags_enum, p->elementSet().toAscii())); +} + +#else + +static void storeItemProps(QAbstractFormBuilder *abstractFormBuilder, const QTableWidgetItem *item, + QList<DomProperty*> *properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder); + + DomProperty *p; + QVariant v; + + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) + if ((p = formBuilder->saveText(it.second, item->data(it.first.second)))) + properties->append(p); + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((v = item->data(it.first)).isValid() && + (p = variantToDomProperty(abstractFormBuilder, + static_cast<const QMetaObject *>(&QAbstractFormBuilderGadget::staticMetaObject), + it.second, v))) + properties->append(p); + + if ((p = formBuilder->saveResource(item->data(Qt::DecorationPropertyRole)))) + properties->append(p); +} + +static void storeItemProps(QAbstractFormBuilder *abstractFormBuilder, const QListWidgetItem *item, + QList<DomProperty*> *properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder); + + DomProperty *p; + QVariant v; + + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) + if ((p = formBuilder->saveText(it.second, item->data(it.first.second)))) + properties->append(p); + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((v = item->data(it.first)).isValid() && + (p = variantToDomProperty(abstractFormBuilder, + static_cast<const QMetaObject *>(&QAbstractFormBuilderGadget::staticMetaObject), + it.second, v))) + properties->append(p); + + if ((p = formBuilder->saveResource(item->data(Qt::DecorationPropertyRole)))) + properties->append(p); +} + +static void storeItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, const QTableWidgetItem *item, + QList<DomProperty*> *properties) +{ + storeItemProps(abstractFormBuilder, item, properties); + storeItemFlags(item, properties); +} + +static void storeItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, const QListWidgetItem *item, + QList<DomProperty*> *properties) +{ + storeItemProps(abstractFormBuilder, item, properties); + storeItemFlags(item, properties); +} + +static void loadItemProps(QAbstractFormBuilder *abstractFormBuilder, QTableWidgetItem *item, + const QHash<QString, DomProperty*> &properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder); + + DomProperty *p; + QVariant v; + + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) + if ((p = properties.value(it.second))) { + v = formBuilder->textBuilder()->loadText(p); + QVariant nativeValue = formBuilder->textBuilder()->toNativeValue(v); + item->setData(it.first.first, qvariant_cast<QString>(nativeValue)); + item->setData(it.first.second, v); + } + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((p = properties.value(it.second)) && + (v = formBuilder->toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p)).isValid()) + item->setData(it.first, v); + + if ((p = properties.value(strings.iconAttribute))) { + v = formBuilder->resourceBuilder()->loadResource(formBuilder->workingDirectory(), p); + QVariant nativeValue = formBuilder->resourceBuilder()->toNativeValue(v); + item->setIcon(qvariant_cast<QIcon>(nativeValue)); + item->setData(Qt::DecorationPropertyRole, v); + } +} + +static void loadItemProps(QAbstractFormBuilder *abstractFormBuilder, QListWidgetItem *item, + const QHash<QString, DomProperty*> &properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + FriendlyFB * const formBuilder = static_cast<FriendlyFB *>(abstractFormBuilder); + + DomProperty *p; + QVariant v; + + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) + if ((p = properties.value(it.second))) { + v = formBuilder->textBuilder()->loadText(p); + QVariant nativeValue = formBuilder->textBuilder()->toNativeValue(v); + item->setData(it.first.first, qvariant_cast<QString>(nativeValue)); + item->setData(it.first.second, v); + } + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((p = properties.value(it.second)) && + (v = formBuilder->toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p)).isValid()) + item->setData(it.first, v); + + if ((p = properties.value(strings.iconAttribute))) { + v = formBuilder->resourceBuilder()->loadResource(formBuilder->workingDirectory(), p); + QVariant nativeValue = formBuilder->resourceBuilder()->toNativeValue(v); + item->setIcon(qvariant_cast<QIcon>(nativeValue)); + item->setData(Qt::DecorationPropertyRole, v); + } +} + +static void loadItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, QTableWidgetItem *item, + const QHash<QString, DomProperty*> &properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + static const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags"); + + loadItemProps(abstractFormBuilder, item, properties); + + DomProperty *p; + if ((p = properties.value(strings.flagsAttribute)) && p->kind() == DomProperty::Set) + item->setFlags(enumKeysToValue<Qt::ItemFlags>(itemFlags_enum, p->elementSet().toAscii())); +} + +static void loadItemPropsNFlags(QAbstractFormBuilder *abstractFormBuilder, QListWidgetItem *item, + const QHash<QString, DomProperty*> &properties) +{ + static const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + static const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags"); + + loadItemProps(abstractFormBuilder, item, properties); + + DomProperty *p; + if ((p = properties.value(strings.flagsAttribute)) && p->kind() == DomProperty::Set) + item->setFlags(enumKeysToValue<Qt::ItemFlags>(itemFlags_enum, p->elementSet().toAscii())); +} + +#endif + +/*! + \internal +*/ +void QAbstractFormBuilder::saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget) +{ + Q_UNUSED(ui_parentWidget); + + QList<DomColumn*> columns; + DomProperty *p; + QVariant v; + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + // save the header + for (int c = 0; c<treeWidget->columnCount(); ++c) { + DomColumn *column = new DomColumn; + + QList<DomProperty*> properties; + + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) { + p = saveText(it.second, treeWidget->headerItem()->data(c, it.first.second)); + // Prevent uic 4.4.X from crashing if it cannot find a column text + if (!p && it.first.first == Qt::EditRole && it.second == QLatin1String("text")) { + DomString *defaultHeader = new DomString; + defaultHeader->setText(QString::number(c + 1)); + defaultHeader->setAttributeNotr(QLatin1String("true")); + p = new DomProperty; + p->setAttributeName(it.second); + p->setElementString(defaultHeader); + } + if (p) + properties.append(p); + } + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((v = treeWidget->headerItem()->data(c, it.first)).isValid() && + (p = variantToDomProperty(this, &QAbstractFormBuilderGadget::staticMetaObject, it.second, v))) + properties.append(p); + + if ((p = saveResource(treeWidget->headerItem()->data(c, Qt::DecorationPropertyRole)))) + properties.append(p); + + column->setElementProperty(properties); + columns.append(column); + } + + ui_widget->setElementColumn(columns); + + QList<DomItem *> items = ui_widget->elementItem(); + + QQueue<QPair<QTreeWidgetItem *, DomItem *> > pendingQueue; + for (int i = 0; i < treeWidget->topLevelItemCount(); i++) + pendingQueue.enqueue(qMakePair(treeWidget->topLevelItem(i), (DomItem *)0)); + + while (!pendingQueue.isEmpty()) { + const QPair<QTreeWidgetItem *, DomItem *> pair = pendingQueue.dequeue(); + QTreeWidgetItem *item = pair.first; + DomItem *parentDomItem = pair.second; + + DomItem *currentDomItem = new DomItem; + + QList<DomProperty*> properties; + for (int c = 0; c < treeWidget->columnCount(); c++) { + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) + if ((p = saveText(it.second, item->data(c, it.first.second)))) + properties.append(p); + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((v = item->data(c, it.first)).isValid() && + (p = variantToDomProperty(this, &QAbstractFormBuilderGadget::staticMetaObject, it.second, v))) + properties.append(p); + + if ((p = saveResource(item->data(c, Qt::DecorationPropertyRole)))) + properties.append(p); + } + storeItemFlags(item, &properties); + currentDomItem->setElementProperty(properties); + + if (parentDomItem) { + QList<DomItem *> childrenItems = parentDomItem->elementItem(); + childrenItems.append(currentDomItem); + parentDomItem->setElementItem(childrenItems); + } else + items.append(currentDomItem); + + for (int i = 0; i < item->childCount(); i++) + pendingQueue.enqueue(qMakePair(item->child(i), currentDomItem)); + } + + ui_widget->setElementItem(items); +} + +/*! + \internal +*/ +void QAbstractFormBuilder::saveTableWidgetExtraInfo(QTableWidget *tableWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget) +{ + Q_UNUSED(ui_parentWidget); + + // save the horizontal header + QList<DomColumn*> columns; + for (int c = 0; c < tableWidget->columnCount(); c++) { + QList<DomProperty*> properties; + QTableWidgetItem *item = tableWidget->horizontalHeaderItem(c); + if (item) + storeItemProps(this, item, &properties); + + DomColumn *column = new DomColumn; + column->setElementProperty(properties); + columns.append(column); + } + ui_widget->setElementColumn(columns); + + // save the vertical header + QList<DomRow*> rows; + for (int r = 0; r < tableWidget->rowCount(); r++) { + QList<DomProperty*> properties; + QTableWidgetItem *item = tableWidget->verticalHeaderItem(r); + if (item) + storeItemProps(this, item, &properties); + + DomRow *row = new DomRow; + row->setElementProperty(properties); + rows.append(row); + } + ui_widget->setElementRow(rows); + + QList<DomItem *> items = ui_widget->elementItem(); + for (int r = 0; r < tableWidget->rowCount(); r++) + for (int c = 0; c < tableWidget->columnCount(); c++) { + QTableWidgetItem *item = tableWidget->item(r, c); + if (item) { + QList<DomProperty*> properties; + storeItemPropsNFlags(this, item, &properties); + + DomItem *domItem = new DomItem; + domItem->setAttributeRow(r); + domItem->setAttributeColumn(c); + domItem->setElementProperty(properties); + items.append(domItem); + } + } + + ui_widget->setElementItem(items); +} + +/*! + \internal +*/ +void QAbstractFormBuilder::saveListWidgetExtraInfo(QListWidget *listWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget) +{ + Q_UNUSED(ui_parentWidget); + + QList<DomItem*> ui_items = ui_widget->elementItem(); + for (int i=0; i<listWidget->count(); ++i) { + QList<DomProperty*> properties; + storeItemPropsNFlags(this, listWidget->item(i), &properties); + + DomItem *ui_item = new DomItem(); + ui_item->setElementProperty(properties); + ui_items.append(ui_item); + } + + ui_widget->setElementItem(ui_items); +} + +/*! + \internal +*/ +void QAbstractFormBuilder::saveComboBoxExtraInfo(QComboBox *comboBox, DomWidget *ui_widget, DomWidget *ui_parentWidget) +{ + Q_UNUSED(ui_parentWidget); + QList<DomItem*> ui_items = ui_widget->elementItem(); + + const int count = comboBox->count(); + for (int i=0; i < count; ++i) { + // We might encounter items for which both builders return 0 in Designer + // (indicating a custom combo adding items in the constructor). Ignore those. + DomProperty *textProperty = saveText(QFormBuilderStrings::instance().textAttribute, + comboBox->itemData(i, Qt::DisplayPropertyRole)); + DomProperty *iconProperty = saveResource(comboBox->itemData(i, Qt::DecorationPropertyRole)); + if (textProperty || iconProperty) { + QList<DomProperty*> properties; + if (textProperty) + properties.push_back(textProperty); + if (iconProperty) + properties.push_back(iconProperty); + + DomItem *ui_item = new DomItem(); + ui_item->setElementProperty(properties); + ui_items.push_back(ui_item); + } + } + + ui_widget->setElementItem(ui_items); +} + +/*! + \internal + \since 4.5 +*/ + +void QAbstractFormBuilder::saveButtonExtraInfo(const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *) +{ + typedef QList<DomProperty*> DomPropertyList; + if (const QButtonGroup *buttonGroup = widget->group()) { + DomPropertyList attributes = ui_widget->elementAttribute(); + DomString *domString = new DomString(); + domString->setText(buttonGroup->objectName()); + domString->setAttributeNotr(QLatin1String("true")); + DomProperty *domProperty = new DomProperty(); + domProperty->setAttributeName(QLatin1String(buttonGroupPropertyC)); + domProperty->setElementString(domString); + attributes += domProperty; + ui_widget->setElementAttribute(attributes); + } +} + +/*! + \internal + \since 4.5 +*/ +void QAbstractFormBuilder::saveItemViewExtraInfo(const QAbstractItemView *itemView, + DomWidget *ui_widget, DomWidget *) +{ + // + // Special handling for qtableview/qtreeview fake header attributes + // + static QStringList realPropertyNames = + (QStringList() << QLatin1String("visible") + << QLatin1String("cascadingSectionResizes") + << QLatin1String("defaultSectionSize") + << QLatin1String("highlightSections") + << QLatin1String("minimumSectionSize") + << QLatin1String("showSortIndicator") + << QLatin1String("stretchLastSection")); + + if (const QTreeView *treeView = qobject_cast<const QTreeView*>(itemView)) { + QList<DomProperty*> viewProperties = ui_widget->elementAttribute(); + QList<DomProperty*> headerProperties = computeProperties(treeView->header()); + foreach (const QString &realPropertyName, realPropertyNames) { + const QString upperPropertyName = realPropertyName.at(0).toUpper() + + realPropertyName.mid(1); + const QString fakePropertyName = QLatin1String("header") + upperPropertyName; + foreach (DomProperty *property, headerProperties) { + if (property->attributeName() == realPropertyName) { + property->setAttributeName(fakePropertyName); + viewProperties << property; + } + } + } + ui_widget->setElementAttribute(viewProperties); + } else if (const QTableView *tableView = qobject_cast<const QTableView*>(itemView)) { + static QStringList headerPrefixes = + (QStringList() << QLatin1String("horizontalHeader") + << QLatin1String("verticalHeader")); + + QList<DomProperty*> viewProperties = ui_widget->elementAttribute(); + foreach (const QString &headerPrefix, headerPrefixes) { + QList<DomProperty*> headerProperties; + if (headerPrefix == QLatin1String("horizontalHeader")) + headerProperties = computeProperties(tableView->horizontalHeader()); + else + headerProperties = computeProperties(tableView->verticalHeader()); + foreach (const QString &realPropertyName, realPropertyNames) { + const QString upperPropertyName = realPropertyName.at(0).toUpper() + + realPropertyName.mid(1); + const QString fakePropertyName = headerPrefix + upperPropertyName; + foreach (DomProperty *property, headerProperties) { + if (property->attributeName() == realPropertyName) { + property->setAttributeName(fakePropertyName); + viewProperties << property; + } + } + } + } + ui_widget->setElementAttribute(viewProperties); + } +} + +/*! + \internal + \since 4.4 +*/ + +void QAbstractFormBuilder::setResourceBuilder(QResourceBuilder *builder) +{ + d->setResourceBuilder(builder); +} + +/*! + \internal + \since 4.4 +*/ + +QResourceBuilder *QAbstractFormBuilder::resourceBuilder() const +{ + return d->resourceBuilder(); +} + +/*! + \internal + \since 4.5 +*/ + +void QAbstractFormBuilder::setTextBuilder(QTextBuilder *builder) +{ + d->setTextBuilder(builder); +} + +/*! + \internal + \since 4.5 +*/ + +QTextBuilder *QAbstractFormBuilder::textBuilder() const +{ + return d->textBuilder(); +} + +/*! + \internal +*/ +void QAbstractFormBuilder::saveExtraInfo(QWidget *widget, DomWidget *ui_widget, + DomWidget *ui_parentWidget) +{ + if (QListWidget *listWidget = qobject_cast<QListWidget*>(widget)) { + saveListWidgetExtraInfo(listWidget, ui_widget, ui_parentWidget); + } else if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget*>(widget)) { + saveTreeWidgetExtraInfo(treeWidget, ui_widget, ui_parentWidget); + } else if (QTableWidget *tableWidget = qobject_cast<QTableWidget*>(widget)) { + saveTableWidgetExtraInfo(tableWidget, ui_widget, ui_parentWidget); + } else if (QComboBox *comboBox = qobject_cast<QComboBox*>(widget)) { + if (!qobject_cast<QFontComboBox*>(widget)) + saveComboBoxExtraInfo(comboBox, ui_widget, ui_parentWidget); + } else if(QAbstractButton *ab = qobject_cast<QAbstractButton *>(widget)) { + saveButtonExtraInfo(ab, ui_widget, ui_parentWidget); + } + if (QAbstractItemView *itemView = qobject_cast<QAbstractItemView *>(widget)) { + saveItemViewExtraInfo(itemView, ui_widget, ui_parentWidget); + } +} + +/*! + \internal +*/ +void QAbstractFormBuilder::loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget) +{ + Q_UNUSED(parentWidget); + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags"); + + foreach (DomItem *ui_item, ui_widget->elementItem()) { + const DomPropertyHash properties = propertyMap(ui_item->elementProperty()); + QListWidgetItem *item = new QListWidgetItem(listWidget); +#ifndef Q_CC_RVCT + loadItemPropsNFlags<QListWidgetItem>(this, item, properties); +#else + loadItemPropsNFlags(this, item, properties); +#endif + } + + DomProperty *currentRow = propertyMap(ui_widget->elementProperty()).value(strings.currentRowProperty); + if (currentRow) + listWidget->setCurrentRow(currentRow->elementNumber()); +} + +/*! + \internal +*/ +void QAbstractFormBuilder::loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget) +{ + Q_UNUSED(parentWidget); + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + const QMetaEnum itemFlags_enum = metaEnum<QAbstractFormBuilderGadget>("itemFlags"); + const QList<DomColumn*> columns = ui_widget->elementColumn(); + if (columns.count() > 0) + treeWidget->setColumnCount(columns.count()); + + for (int i = 0; i<columns.count(); ++i) { + const DomColumn *c = columns.at(i); + const DomPropertyHash properties = propertyMap(c->elementProperty()); + + DomProperty *p; + QVariant v; + + foreach (const QFormBuilderStrings::RoleNName &it, strings.itemRoles) + if ((p = properties.value(it.second)) && + (v = toVariant(&QAbstractFormBuilderGadget::staticMetaObject, p)).isValid()) + treeWidget->headerItem()->setData(i, it.first, v); + + foreach (const QFormBuilderStrings::TextRoleNName &it, strings.itemTextRoles) + if ((p = properties.value(it.second))) { + v = textBuilder()->loadText(p); + QVariant nativeValue = textBuilder()->toNativeValue(v); + treeWidget->headerItem()->setData(i, it.first.first, qvariant_cast<QString>(nativeValue)); + treeWidget->headerItem()->setData(i, it.first.second, v); + } + + if ((p = properties.value(strings.iconAttribute))) { + v = resourceBuilder()->loadResource(workingDirectory(), p); + QVariant nativeValue = resourceBuilder()->toNativeValue(v); + treeWidget->headerItem()->setIcon(i, qvariant_cast<QIcon>(nativeValue)); + treeWidget->headerItem()->setData(i, Qt::DecorationPropertyRole, v); + } + } + + QQueue<QPair<DomItem *, QTreeWidgetItem *> > pendingQueue; + foreach (DomItem *ui_item, ui_widget->elementItem()) + pendingQueue.enqueue(qMakePair(ui_item, (QTreeWidgetItem *)0)); + + while (!pendingQueue.isEmpty()) { + const QPair<DomItem *, QTreeWidgetItem *> pair = pendingQueue.dequeue(); + const DomItem *domItem = pair.first; + QTreeWidgetItem *parentItem = pair.second; + + QTreeWidgetItem *currentItem = 0; + + if (parentItem) + currentItem = new QTreeWidgetItem(parentItem); + else + currentItem = new QTreeWidgetItem(treeWidget); + + const QList<DomProperty *> properties = domItem->elementProperty(); + int col = -1; + foreach (DomProperty *property, properties) { + if (property->attributeName() == strings.flagsAttribute && !property->elementSet().isEmpty()) { + currentItem->setFlags(enumKeysToValue<Qt::ItemFlags>(itemFlags_enum, property->elementSet().toAscii())); + } else if (property->attributeName() == strings.textAttribute && property->elementString()) { + col++; + QVariant textV = textBuilder()->loadText(property); + QVariant nativeValue = textBuilder()->toNativeValue(textV); + currentItem->setText(col, qvariant_cast<QString>(nativeValue)); + currentItem->setData(col, Qt::DisplayPropertyRole, textV); + } else if (col >= 0) { + if (property->attributeName() == strings.iconAttribute) { + QVariant v = resourceBuilder()->loadResource(workingDirectory(), property); + if (v.isValid()) { + QVariant nativeValue = resourceBuilder()->toNativeValue(v); + currentItem->setIcon(col, qvariant_cast<QIcon>(nativeValue)); + currentItem->setData(col, Qt::DecorationPropertyRole, v); + } + } else { + QVariant v; + int role = strings.treeItemRoleHash.value(property->attributeName(), (Qt::ItemDataRole)-1); + if (role >= 0) { + if ((v = toVariant(&QAbstractFormBuilderGadget::staticMetaObject, property)).isValid()) + currentItem->setData(col, role, v); + } else { + QPair<Qt::ItemDataRole, Qt::ItemDataRole> rolePair = + strings.treeItemTextRoleHash.value(property->attributeName(), + qMakePair((Qt::ItemDataRole)-1, (Qt::ItemDataRole)-1)); + if (rolePair.first >= 0) { + QVariant textV = textBuilder()->loadText(property); + QVariant nativeValue = textBuilder()->toNativeValue(textV); + currentItem->setData(col, rolePair.first, qvariant_cast<QString>(nativeValue)); + currentItem->setData(col, rolePair.second, textV); + } + } + } + } + } + + foreach (DomItem *childItem, domItem->elementItem()) + pendingQueue.enqueue(qMakePair(childItem, currentItem)); + + } +} + +/*! + \internal +*/ +void QAbstractFormBuilder::loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget) +{ + Q_UNUSED(parentWidget); + + const QList<DomColumn*> columns = ui_widget->elementColumn(); + if (columns.count() > 0) + tableWidget->setColumnCount(columns.count()); + for (int i = 0; i< columns.count(); i++) { + DomColumn *c = columns.at(i); + const DomPropertyHash properties = propertyMap(c->elementProperty()); + + if (!properties.isEmpty()) { + QTableWidgetItem *item = new QTableWidgetItem; + loadItemProps(this, item, properties); + tableWidget->setHorizontalHeaderItem(i, item); + } + } + + const QList<DomRow*> rows = ui_widget->elementRow(); + if (rows.count() > 0) + tableWidget->setRowCount(rows.count()); + for (int i = 0; i< rows.count(); i++) { + const DomRow *r = rows.at(i); + const DomPropertyHash properties = propertyMap(r->elementProperty()); + + if (!properties.isEmpty()) { + QTableWidgetItem *item = new QTableWidgetItem; + loadItemProps(this, item, properties); + tableWidget->setVerticalHeaderItem(i, item); + } + } + + foreach (DomItem *ui_item, ui_widget->elementItem()) { + if (ui_item->hasAttributeRow() && ui_item->hasAttributeColumn()) { + const DomPropertyHash properties = propertyMap(ui_item->elementProperty()); + QTableWidgetItem *item = new QTableWidgetItem; + loadItemPropsNFlags(this, item, properties); + tableWidget->setItem(ui_item->attributeRow(), ui_item->attributeColumn(), item); + } + } +} + +/*! + \internal +*/ +void QAbstractFormBuilder::loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget) +{ + Q_UNUSED(parentWidget); + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + foreach (DomItem *ui_item, ui_widget->elementItem()) { + const DomPropertyHash properties = propertyMap(ui_item->elementProperty()); + QString text; + QIcon icon; + QVariant textData; + QVariant iconData; + + DomProperty *p = 0; + + p = properties.value(strings.textAttribute); + if (p && p->elementString()) { + textData = textBuilder()->loadText(p); + text = qvariant_cast<QString>(textBuilder()->toNativeValue(textData)); + } + + p = properties.value(strings.iconAttribute); + if (p) { + iconData = resourceBuilder()->loadResource(workingDirectory(), p); + icon = qvariant_cast<QIcon>(resourceBuilder()->toNativeValue(iconData)); + } + + comboBox->addItem(icon, text); + comboBox->setItemData((comboBox->count()-1), iconData, Qt::DecorationPropertyRole); + comboBox->setItemData((comboBox->count()-1), textData, Qt::DisplayPropertyRole); + } + + DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(strings.currentIndexProperty); + if (currentIndex) + comboBox->setCurrentIndex(currentIndex->elementNumber()); +} + +// Get the button group name out of a widget's attribute list +static QString buttonGroupName(const DomWidget *ui_widget) +{ + typedef QList<DomProperty*> DomPropertyList; + const DomPropertyList attributes = ui_widget->elementAttribute(); + if (attributes.empty()) + return QString(); + const QString buttonGroupProperty = QLatin1String(buttonGroupPropertyC); + const DomPropertyList::const_iterator cend = attributes.constEnd(); + for (DomPropertyList::const_iterator it = attributes.constBegin(); it != cend; ++it) + if ( (*it)->attributeName() == buttonGroupProperty) + return (*it)->elementString()->text(); + return QString(); +} + +/*! + \internal + \since 4.5 +*/ + +void QAbstractFormBuilder::loadButtonExtraInfo(const DomWidget *ui_widget, QAbstractButton *button, QWidget *) +{ + typedef QFormBuilderExtra::ButtonGroupEntry ButtonGroupEntry; + typedef QFormBuilderExtra::ButtonGroupHash ButtonGroupHash; + + const QString groupName = buttonGroupName(ui_widget); + if (groupName.isEmpty()) + return; + // Find entry + ButtonGroupHash &buttonGroups = d->buttonGroups(); + ButtonGroupHash::iterator it = buttonGroups.find(groupName); + if (it == buttonGroups.end()) { +#ifdef QFORMINTERNAL_NAMESPACE // Suppress the warning when copying in Designer + uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "Invalid QButtonGroup reference '%1' referenced by '%2'.").arg(groupName, button->objectName())); +#endif + return; + } + // Create button group on demand? + QButtonGroup *&group = it.value().second; + if (group == 0) { + group = new QButtonGroup; + group->setObjectName(groupName); + applyProperties(group, it.value().first->elementProperty()); + } + group->addButton(button); +} + +/*! + \internal + \since 4.5 +*/ +void QAbstractFormBuilder::loadItemViewExtraInfo(DomWidget *ui_widget, QAbstractItemView *itemView, + QWidget *) +{ + // + // Special handling for qtableview/qtreeview fake header attributes + // + static QStringList realPropertyNames = + (QStringList() << QLatin1String("visible") + << QLatin1String("cascadingSectionResizes") + << QLatin1String("defaultSectionSize") + << QLatin1String("highlightSections") + << QLatin1String("minimumSectionSize") + << QLatin1String("showSortIndicator") + << QLatin1String("stretchLastSection")); + + if (QTreeView *treeView = qobject_cast<QTreeView*>(itemView)) { + QList<DomProperty*> allAttributes = ui_widget->elementAttribute(); + QList<DomProperty*> headerProperties; + foreach (const QString &realPropertyName, realPropertyNames) { + const QString upperPropertyName = realPropertyName.at(0).toUpper() + + realPropertyName.mid(1); + const QString fakePropertyName = QLatin1String("header") + upperPropertyName; + foreach (DomProperty *attr, allAttributes) { + if (attr->attributeName() == fakePropertyName) { + attr->setAttributeName(realPropertyName); + headerProperties << attr; + } + } + } + applyProperties(treeView->header(), headerProperties); + } else if (QTableView *tableView = qobject_cast<QTableView*>(itemView)) { + static QStringList headerPrefixes = + (QStringList() << QLatin1String("horizontalHeader") + << QLatin1String("verticalHeader")); + + QList<DomProperty*> allAttributes = ui_widget->elementAttribute(); + foreach (const QString &headerPrefix, headerPrefixes) { + QList<DomProperty*> headerProperties; + foreach (const QString &realPropertyName, realPropertyNames) { + const QString upperPropertyName = realPropertyName.at(0).toUpper() + + realPropertyName.mid(1); + const QString fakePropertyName = headerPrefix + upperPropertyName; + foreach (DomProperty *attr, allAttributes) { + if (attr->attributeName() == fakePropertyName) { + attr->setAttributeName(realPropertyName); + headerProperties << attr; + } + } + } + if (headerPrefix == QLatin1String("horizontalHeader")) + applyProperties(tableView->horizontalHeader(), headerProperties); + else + applyProperties(tableView->verticalHeader(), headerProperties); + } + } +} + +/*! + \internal +*/ +void QAbstractFormBuilder::loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget) +{ + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + if (0) { +#ifndef QT_NO_LISTWIDGET + } else if (QListWidget *listWidget = qobject_cast<QListWidget*>(widget)) { + loadListWidgetExtraInfo(ui_widget, listWidget, parentWidget); +#endif +#ifndef QT_NO_TREEWIDGET + } else if (QTreeWidget *treeWidget = qobject_cast<QTreeWidget*>(widget)) { + loadTreeWidgetExtraInfo(ui_widget, treeWidget, parentWidget); +#endif +#ifndef QT_NO_TABLEWIDGET + } else if (QTableWidget *tableWidget = qobject_cast<QTableWidget*>(widget)) { + loadTableWidgetExtraInfo(ui_widget, tableWidget, parentWidget); +#endif +#ifndef QT_NO_COMBOBOX + } else if (QComboBox *comboBox = qobject_cast<QComboBox*>(widget)) { + if (!qobject_cast<QFontComboBox *>(widget)) + loadComboBoxExtraInfo(ui_widget, comboBox, parentWidget); +#endif +#ifndef QT_NO_TABWIDGET + } else if (QTabWidget *tabWidget = qobject_cast<QTabWidget*>(widget)) { + const DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(strings.currentIndexProperty); + if (currentIndex) + tabWidget->setCurrentIndex(currentIndex->elementNumber()); +#endif +#ifndef QT_NO_STACKEDWIDGET + } else if (QStackedWidget *stackedWidget = qobject_cast<QStackedWidget*>(widget)) { + const DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(strings.currentIndexProperty); + if (currentIndex) + stackedWidget->setCurrentIndex(currentIndex->elementNumber()); +#endif +#ifndef QT_NO_TOOLBOX + } else if (QToolBox *toolBox = qobject_cast<QToolBox*>(widget)) { + const DomProperty *currentIndex = propertyMap(ui_widget->elementProperty()).value(strings.currentIndexProperty); + if (currentIndex) + toolBox->setCurrentIndex(currentIndex->elementNumber()); + const DomProperty *tabSpacing = propertyMap(ui_widget->elementProperty()).value(strings.tabSpacingProperty); + if (tabSpacing) + toolBox->layout()->setSpacing(tabSpacing->elementNumber()); +#endif + } else if (QAbstractButton *ab = qobject_cast<QAbstractButton *>(widget)) { + loadButtonExtraInfo(ui_widget, ab, parentWidget); + } + if (QAbstractItemView *itemView = qobject_cast<QAbstractItemView *>(widget)) { + loadItemViewExtraInfo(ui_widget, itemView, parentWidget); + } +} + +/*! + Returns the current working directory of the form builder. + + \sa setWorkingDirectory() */ +QDir QAbstractFormBuilder::workingDirectory() const +{ + return d->m_workingDirectory; +} + +/*! + Sets the current working directory of the form builder to the + specified \a directory. + + \sa workingDirectory()*/ +void QAbstractFormBuilder::setWorkingDirectory(const QDir &directory) +{ + d->m_workingDirectory = directory; +} + +/*! + \internal +*/ +DomAction *QAbstractFormBuilder::createDom(QAction *action) +{ + if (action->parentWidget() == action->menu() || action->isSeparator()) + return 0; + + DomAction *ui_action = new DomAction; + ui_action->setAttributeName(action->objectName()); + + const QList<DomProperty*> properties = computeProperties(action); + ui_action->setElementProperty(properties); + + return ui_action; +} + +/*! + \internal + \since 4.5 +*/ + +DomButtonGroup *QAbstractFormBuilder::createDom(QButtonGroup *buttonGroup) +{ + if (buttonGroup->buttons().count() == 0) // Empty group left over on form? + return 0; + DomButtonGroup *domButtonGroup = new DomButtonGroup; + domButtonGroup->setAttributeName(buttonGroup->objectName()); + + QList<DomProperty*> properties = computeProperties(buttonGroup); + domButtonGroup->setElementProperty(properties); + return domButtonGroup; +} + +/*! + \internal +*/ +DomActionGroup *QAbstractFormBuilder::createDom(QActionGroup *actionGroup) +{ + DomActionGroup *ui_action_group = new DomActionGroup; + ui_action_group->setAttributeName(actionGroup->objectName()); + + QList<DomProperty*> properties = computeProperties(actionGroup); + ui_action_group->setElementProperty(properties); + + QList<DomAction*> ui_actions; + + foreach (QAction *action, actionGroup->actions()) { + if (DomAction *ui_action = createDom(action)) { + ui_actions.append(ui_action); + } + } + + ui_action_group->setElementAction(ui_actions); + + return ui_action_group; +} + +/*! + \internal +*/ +void QAbstractFormBuilder::addMenuAction(QAction *action) +{ + Q_UNUSED(action); +} + +/*! + \internal +*/ +void QAbstractFormBuilder::reset() +{ + d->m_laidout.clear(); + d->m_actions.clear(); + d->m_actionGroups.clear(); + d->m_defaultMargin = INT_MIN; + d->m_defaultSpacing = INT_MIN; +} + +/*! + \internal + Access meta enumeration for Qt::ToolBarArea +*/ + +QMetaEnum QAbstractFormBuilder::toolBarAreaMetaEnum() +{ + return metaEnum<QAbstractFormBuilderGadget>("toolBarArea"); +} + +/*! + \internal + Return paths of an icon. +*/ + +QAbstractFormBuilder::IconPaths QAbstractFormBuilder::iconPaths(const QIcon &icon) const +{ + Q_UNUSED(icon); + qWarning() << "QAbstractFormBuilder::iconPaths() is obsoleted"; + return IconPaths(); +} + +/*! + \internal + Return paths of a pixmap. +*/ + +QAbstractFormBuilder::IconPaths QAbstractFormBuilder::pixmapPaths(const QPixmap &pixmap) const +{ + Q_UNUSED(pixmap); + qWarning() << "QAbstractFormBuilder::pixmapPaths() is obsoleted"; + return IconPaths(); +} + +/*! + \internal + Set up a DOM property with icon. +*/ + +void QAbstractFormBuilder::setIconProperty(DomProperty &p, const IconPaths &ip) const +{ + DomResourceIcon *dpi = new DomResourceIcon; + + /* TODO + if (!ip.second.isEmpty()) + pix->setAttributeResource(ip.second); +*/ + dpi->setText(ip.first); + + p.setAttributeName(QFormBuilderStrings::instance().iconAttribute); + p.setElementIconSet(dpi); +} + +/*! + \internal + Set up a DOM property with pixmap. +*/ + +void QAbstractFormBuilder::setPixmapProperty(DomProperty &p, const IconPaths &ip) const +{ + DomResourcePixmap *pix = new DomResourcePixmap; + if (!ip.second.isEmpty()) + pix->setAttributeResource(ip.second); + + pix->setText(ip.first); + + p.setAttributeName(QFormBuilderStrings::instance().pixmapAttribute); + p.setElementPixmap(pix); +} + +/*! + \internal + Convenience. Return DOM property for icon; 0 if icon.isNull(). +*/ + +DomProperty* QAbstractFormBuilder::iconToDomProperty(const QIcon &icon) const +{ + Q_UNUSED(icon); + qWarning() << "QAbstractFormBuilder::iconToDomProperty() is obsoleted"; + return 0; +} + +/*! + \internal + \since 4.4 +*/ + +DomProperty *QAbstractFormBuilder::saveResource(const QVariant &v) const +{ + if (v.isNull()) + return 0; + + DomProperty *p = resourceBuilder()->saveResource(workingDirectory(), v); + if (p) + p->setAttributeName(QFormBuilderStrings::instance().iconAttribute); + return p; +} + +/*! + \internal + \since 4.5 +*/ + +DomProperty *QAbstractFormBuilder::saveText(const QString &attributeName, const QVariant &v) const +{ + if (v.isNull()) + return 0; + + DomProperty *p = textBuilder()->saveText(v); + if (p) + p->setAttributeName(attributeName); + return p; +} + +/*! + \internal + Return the appropriate DOM pixmap for an image dom property. + From 4.4 - unused +*/ + +const DomResourcePixmap *QAbstractFormBuilder::domPixmap(const DomProperty* p) { + switch (p->kind()) { + case DomProperty::IconSet: + qDebug() << "** WARNING QAbstractFormBuilder::domPixmap() called for icon set!"; + break; + case DomProperty::Pixmap: + return p->elementPixmap(); + default: + break; + } + return 0; +} + +/*! + \internal + Create icon from DOM. + From 4.4 - unused +*/ + +QIcon QAbstractFormBuilder::domPropertyToIcon(const DomResourcePixmap *icon) +{ + Q_UNUSED(icon); + qWarning() << "QAbstractFormBuilder::domPropertyToIcon() is obsoleted"; + return QIcon(); +} + +/*! + \internal + Create icon from DOM. Assert if !domPixmap + From 4.4 - unused +*/ + +QIcon QAbstractFormBuilder::domPropertyToIcon(const DomProperty* p) +{ + Q_UNUSED(p); + qWarning() << "QAbstractFormBuilder::domPropertyToIcon() is obsoleted"; + return QIcon(); +} + + +/*! + \internal + Create pixmap from DOM. + From 4.4 - unused +*/ + +QPixmap QAbstractFormBuilder::domPropertyToPixmap(const DomResourcePixmap* pixmap) +{ + Q_UNUSED(pixmap); + qWarning() << "QAbstractFormBuilder::domPropertyToPixmap() is obsoleted"; + return QPixmap(); +} + + +/*! + \internal + Create pixmap from DOM. Assert if !domPixmap + From 4.4 - unused +*/ + +QPixmap QAbstractFormBuilder::domPropertyToPixmap(const DomProperty* p) +{ + Q_UNUSED(p); + qWarning() << "QAbstractFormBuilder::domPropertyToPixmap() is obsoleted"; + return QPixmap(); +} + +/*! + \fn void QAbstractFormBuilder::createConnections ( DomConnections *, QWidget * ) + \internal +*/ + +/*! + \fn void QAbstractFormBuilder::createCustomWidgets ( DomCustomWidgets * ) + \internal +*/ + +/*! + \fn void QAbstractFormBuilder::createResources ( DomResources * ) + \internal +*/ + +/*! + \fn QFormScriptRunner *QAbstractFormBuilder::formScriptRunner() const + \internal + \since 4.3 +*/ +#ifndef QT_FORMBUILDER_NO_SCRIPT +QFormScriptRunner *QAbstractFormBuilder::formScriptRunner() const +{ + return &(d->formScriptRunner()); +} +#endif + +/*! + Sets whether the execution of scripts is enabled to \a enabled. + \since 4.3 + \internal +*/ + +void QAbstractFormBuilder::setScriptingEnabled(bool enabled) +{ +#ifdef QT_FORMBUILDER_NO_SCRIPT + if (enabled) + uiLibWarning(QCoreApplication::translate("QAbstractFormBuilder", "This version of the uitools library is linked without script support.")); +#else + QFormScriptRunner::Options options = formScriptRunner()->options(); + if (enabled) + options &= ~QFormScriptRunner::DisableScripts; + else + options |= QFormScriptRunner::DisableScripts; + formScriptRunner()->setOptions(options); +#endif +} + +/*! + Returns whether the execution of scripts is enabled. + \sa setScriptingEnabled() + \since 4.3 + \internal +*/ + +bool QAbstractFormBuilder::isScriptingEnabled() const +{ +#ifdef QT_FORMBUILDER_NO_SCRIPT + return false; +#else + return !(formScriptRunner()->options() & QFormScriptRunner::DisableScripts); +#endif +} + +/*! + Returns a human-readable description of the last error occurred in load(). + + \since 5.0 + \sa load() +*/ + +QString QAbstractFormBuilder::errorString() const +{ + return d->m_errorString; +} + +QT_END_NAMESPACE diff --git a/src/designer/src/lib/uilib/abstractformbuilder.h b/src/designer/src/lib/uilib/abstractformbuilder.h new file mode 100644 index 0000000000000000000000000000000000000000..d0882500be9fa73435bbf32ca2e35bfed3175e04 --- /dev/null +++ b/src/designer/src/lib/uilib/abstractformbuilder.h @@ -0,0 +1,283 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ABSTRACTFORMBUILDER_H +#define ABSTRACTFORMBUILDER_H + +#include "uilib_global.h" + +#include <QtCore/QList> +#include <QtCore/QHash> +#include <QtCore/QDir> +#include <QtCore/QScopedPointer> + +#include <QtWidgets/QSizePolicy> +#include <QtGui/QPalette> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE +#if 0 +// pragma for syncqt, don't remove. + +#pragma qt_class(QAbstractFormBuilder) +#endif + +class QAction; +class QButtonGroup; +class QActionGroup; +class QComboBox; +class QIODevice; +class QIcon; +class QLayout; +class QLayoutItem; +class QListWidget; +class QObject; +class QSpacerItem; +class QTreeWidget; +class QTableWidget; +class QVariant; +class QWidget; +class QAbstractButton; +class QAbstractItemView; + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +class DomAction; +class DomActionGroup; +class DomButtonGroup; +class DomButtonGroups; +class DomActionRef; +class DomBrush; +class DomColorGroup; +class DomConnections; +class DomCustomWidgets; +class DomLayout; +class DomLayoutItem; +class DomProperty; +class DomResources; +class DomSpacer; +class DomString; +class DomTabStops; +class DomUI; +class DomWidget; +class DomResourcePixmap; + +class QResourceBuilder; +class QTextBuilder; +class QFormBuilderExtra; + +#ifndef QT_FORMBUILDER_NO_SCRIPT +class QFormScriptRunner; +#endif + +class QDESIGNER_UILIB_EXPORT QAbstractFormBuilder +{ +public: + QAbstractFormBuilder(); + virtual ~QAbstractFormBuilder(); + + QDir workingDirectory() const; + void setWorkingDirectory(const QDir &directory); + + virtual QWidget *load(QIODevice *dev, QWidget *parentWidget=0); + virtual void save(QIODevice *dev, QWidget *widget); + + void setScriptingEnabled(bool enabled); + bool isScriptingEnabled() const; + + QString errorString() const; + +protected: +// +// load +// + virtual void loadExtraInfo(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget); + + virtual QWidget *create(DomUI *ui, QWidget *parentWidget); + virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget); + virtual QLayout *create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget); + virtual QLayoutItem *create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget); + + virtual QAction *create(DomAction *ui_action, QObject *parent); + virtual QActionGroup *create(DomActionGroup *ui_action_group, QObject *parent); + virtual void addMenuAction(QAction *action); + + virtual void applyProperties(QObject *o, const QList<DomProperty*> &properties); + bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value); + + virtual void applyTabStops(QWidget *widget, DomTabStops *tabStops); + + virtual QWidget *createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name); + virtual QLayout *createLayout(const QString &layoutName, QObject *parent, const QString &name); + virtual QAction *createAction(QObject *parent, const QString &name); + virtual QActionGroup *createActionGroup(QObject *parent, const QString &name); + + virtual void createCustomWidgets(DomCustomWidgets *) {} + virtual void createConnections(DomConnections *, QWidget *) {} + virtual void createResources(DomResources*) {} + + virtual bool addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout); + virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget); + +// +// save +// + virtual void saveExtraInfo(QWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget); + + virtual void saveDom(DomUI *ui, QWidget *widget); + + virtual DomActionRef *createActionRefDom(QAction *action); + + virtual DomWidget *createDom(QWidget *widget, DomWidget *ui_parentWidget, bool recursive = true); + virtual DomLayout *createDom(QLayout *layout, DomLayout *ui_layout, DomWidget *ui_parentWidget); + virtual DomLayoutItem *createDom(QLayoutItem *item, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget); + virtual DomSpacer *createDom(QSpacerItem *spacer, DomLayout *ui_parentLayout, DomWidget *ui_parentWidget); + + virtual DomAction *createDom(QAction *action); + virtual DomActionGroup *createDom(QActionGroup *actionGroup); + DomButtonGroup *createDom(QButtonGroup *buttonGroup); + + virtual DomConnections *saveConnections(); + virtual DomCustomWidgets *saveCustomWidgets(); + virtual DomTabStops *saveTabStops(); + virtual DomResources *saveResources(); + DomButtonGroups *saveButtonGroups(const QWidget *mainContainer); + virtual QList<DomProperty*> computeProperties(QObject *obj); + virtual bool checkProperty(QObject *obj, const QString &prop) const; + virtual DomProperty *createProperty(QObject *object, const QString &propertyName, const QVariant &value); + + virtual void layoutInfo(DomLayout *layout, QObject *parent, int *margin, int *spacing); + + void loadListWidgetExtraInfo(DomWidget *ui_widget, QListWidget *listWidget, QWidget *parentWidget); + void loadTreeWidgetExtraInfo(DomWidget *ui_widget, QTreeWidget *treeWidget, QWidget *parentWidget); + void loadTableWidgetExtraInfo(DomWidget *ui_widget, QTableWidget *tableWidget, QWidget *parentWidget); + void loadComboBoxExtraInfo(DomWidget *ui_widget, QComboBox *comboBox, QWidget *parentWidget); + void loadButtonExtraInfo(const DomWidget *ui_widget, QAbstractButton *button, QWidget *parentWidget); + void loadItemViewExtraInfo(DomWidget *ui_widget, QAbstractItemView *itemView, QWidget *parentWidget); + + void saveListWidgetExtraInfo(QListWidget *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget); + void saveTreeWidgetExtraInfo(QTreeWidget *treeWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget); + void saveTableWidgetExtraInfo(QTableWidget *tablWidget, DomWidget *ui_widget, DomWidget *ui_parentWidget); + void saveComboBoxExtraInfo(QComboBox *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget); + void saveButtonExtraInfo(const QAbstractButton *widget, DomWidget *ui_widget, DomWidget *ui_parentWidget); + void saveItemViewExtraInfo(const QAbstractItemView *itemView, DomWidget *ui_widget, DomWidget *ui_parentWidget); + + void setResourceBuilder(QResourceBuilder *builder); + QResourceBuilder *resourceBuilder() const; + DomProperty *saveResource(const QVariant &v) const; + + void setTextBuilder(QTextBuilder *builder); + QTextBuilder *textBuilder() const; + DomProperty *saveText(const QString &attributeName, const QVariant &v) const; +// +// utils +// + + QVariant toVariant(const QMetaObject *meta, DomProperty *property); + static QString toString(const DomString *str); + + typedef QHash<QString, DomProperty*> DomPropertyHash; + static DomPropertyHash propertyMap(const QList<DomProperty*> &properties); + + void setupColorGroup(QPalette &palette, QPalette::ColorGroup colorGroup, DomColorGroup *group); + DomColorGroup *saveColorGroup(const QPalette &palette); + QBrush setupBrush(DomBrush *brush); + DomBrush *saveBrush(const QBrush &brush); + + void reset(); + void initialize(const DomUI *ui); + +#ifndef QT_FORMBUILDER_NO_SCRIPT + QFormScriptRunner *formScriptRunner() const; +#endif +// +// utils +// + + static QMetaEnum toolBarAreaMetaEnum(); + +// +// Icon/pixmap stuff +// + // A Pair of icon path/qrc path. + typedef QPair<QString, QString> IconPaths; + + IconPaths iconPaths(const QIcon &) const; + IconPaths pixmapPaths(const QPixmap &) const; + void setIconProperty(DomProperty &, const IconPaths &) const; + void setPixmapProperty(DomProperty &, const IconPaths &) const; + DomProperty* iconToDomProperty(const QIcon &) const; + + static const DomResourcePixmap *domPixmap(const DomProperty* p); + QIcon domPropertyToIcon(const DomResourcePixmap *); + QIcon domPropertyToIcon(const DomProperty* p); + QPixmap domPropertyToPixmap(const DomResourcePixmap* p); + QPixmap domPropertyToPixmap(const DomProperty* p); + +private: +// +// utils +// + static Qt::ToolBarArea toolbarAreaFromDOMAttributes(const DomPropertyHash &attributeMap); + + QAbstractFormBuilder(const QAbstractFormBuilder &other); + void operator = (const QAbstractFormBuilder &other); + + friend QDESIGNER_UILIB_EXPORT DomProperty *variantToDomProperty(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const QString &propertyName, const QVariant &value); + friend QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(QAbstractFormBuilder *abstractFormBuilder,const QMetaObject *meta, const DomProperty *property); + +protected: + QScopedPointer<QFormBuilderExtra> d; +}; + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // ABSTRACTFORMBUILDER_H diff --git a/src/designer/src/lib/uilib/container.h b/src/designer/src/lib/uilib/container.h new file mode 100644 index 0000000000000000000000000000000000000000..cf670edafb8f856e8f61b78aa93fde1f4c50db22 --- /dev/null +++ b/src/designer/src/lib/uilib/container.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CONTAINER_H +#define CONTAINER_H + +#include <QtDesigner/extension.h> +#include <QtCore/QObject> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QWidget; + +class QDesignerContainerExtension +{ +public: + virtual ~QDesignerContainerExtension() {} + + virtual int count() const = 0; + virtual QWidget *widget(int index) const = 0; + + virtual int currentIndex() const = 0; + virtual void setCurrentIndex(int index) = 0; + + virtual void addWidget(QWidget *widget) = 0; + virtual void insertWidget(int index, QWidget *widget) = 0; + virtual void remove(int index) = 0; + + virtual bool canAddWidget() const + // ### Qt6 remove body, provided in Qt5 for source compatibility to Qt4. + { return true; } + virtual bool canRemove(int index) const + // ### Qt6 remove body, provided in Qt5 for source compatibility to Qt4. + { Q_UNUSED(index); return true; } +}; +Q_DECLARE_EXTENSION_INTERFACE(QDesignerContainerExtension, "com.trolltech.Qt.Designer.Container") + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // CONTAINER_H diff --git a/src/designer/src/lib/uilib/container.qdoc b/src/designer/src/lib/uilib/container.qdoc new file mode 100644 index 0000000000000000000000000000000000000000..8f7a07d30ce030cd0f1641e56a0291df23157023 --- /dev/null +++ b/src/designer/src/lib/uilib/container.qdoc @@ -0,0 +1,199 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** GNU Free Documentation License +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms +** and conditions contained in a signed written agreement between you +** and Nokia. +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QDesignerContainerExtension + \brief The QDesignerContainerExtension class allows you to add pages to + a custom multi-page container in Qt Designer's workspace. + \inmodule QtDesigner + + QDesignerContainerExtension provide an interface for creating + custom container extensions. A container extension consists of a + collection of functions that \QD needs to manage a multi-page + container plugin, and a list of the container's pages. + + \image containerextension-example.png + + \warning This is \e not an extension for container plugins in + general, only custom \e multi-page containers. + + To create a container extension, your extension class must inherit + from both QObject and QDesignerContainerExtension. For example: + + \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 6 + + Since we are implementing an interface, we must ensure that it's + made known to the meta object system using the Q_INTERFACES() + macro. This enables \QD to use the qobject_cast() function to + query for supported interfaces using nothing but a QObject + pointer. + + You must reimplement several functions to enable \QD to manage a + custom multi-page container widget: \QD uses count() to keep track + of the number pages in your container, widget() to return the page + at a given index in the list of the container's pages, and + currentIndex() to return the list index of the selected page. \QD + uses the addWidget() function to add a given page to the + container, expecting it to be appended to the list of pages, while + it expects the insertWidget() function to add a given page to the + container by inserting it at a given index. + + In \QD the extensions are not created until they are + required. For that reason you must also create a + QExtensionFactory, i.e a class that is able to make an instance of + your extension, and register it using \QD's \l + {QExtensionManager}{extension manager}. + + When a container extension is required, \QD's \l + {QExtensionManager}{extension manager} will run through all its + registered factories calling QExtensionFactory::createExtension() + for each until the first one that is able to create a container + extension, is found. This factory will then create the extension + for the plugin. + + There are four available types of extensions in \QD: + QDesignerContainerExtension , QDesignerMemberSheetExtension, + QDesignerPropertySheetExtension and QDesignerTaskMenuExtension. + \QD's behavior is the same whether the requested extension is + associated with a multi page container, a member sheet, a property + sheet or a task menu. + + The QExtensionFactory class provides a standard extension factory, + and can also be used as an interface for custom extension + factories. You can either create a new QExtensionFactory and + reimplement the QExtensionFactory::createExtension() function. For + example: + + \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 7 + + Or you can use an existing factory, expanding the + QExtensionFactory::createExtension() function to make the factory + able to create a container extension as well. For example: + + \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 8 + + For a complete example using the QDesignerContainerExtension + class, see the \l {designer/containerextension}{Container + Extension example}. The example shows how to create a custom + multi-page plugin for \QD. + + \sa QExtensionFactory, QExtensionManager, {Creating Custom Widget + Extensions} +*/ + +/*! + \fn QDesignerContainerExtension::~QDesignerContainerExtension() + + Destroys the extension. +*/ + +/*! + \fn int QDesignerContainerExtension::count() const + + Returns the number of pages in the container. +*/ + +/*! + \fn QWidget *QDesignerContainerExtension::widget(int index) const + + Returns the page at the given \a index in the extension's list of + pages. + + \sa addWidget(), insertWidget() +*/ + +/*! + \fn int QDesignerContainerExtension::currentIndex() const + + Returns the index of the currently selected page in the + container. + + \sa setCurrentIndex() +*/ + +/*! + \fn void QDesignerContainerExtension::setCurrentIndex(int index) + + Sets the currently selected page in the container to be the + page at the given \a index in the extension's list of pages. + + \sa currentIndex() +*/ + +/*! + \fn void QDesignerContainerExtension::addWidget(QWidget *page) + + Adds the given \a page to the container by appending it to the + extension's list of pages. + + \sa insertWidget(), remove(), widget() +*/ + +/*! + \fn void QDesignerContainerExtension::insertWidget(int index, QWidget *page) + + Adds the given \a page to the container by inserting it at the + given \a index in the extension's list of pages. + + \sa addWidget(), remove(), widget() +*/ + +/*! + \fn void QDesignerContainerExtension::remove(int index) + + Removes the page at the given \a index from the extension's list + of pages. + + \sa addWidget(), insertWidget() +*/ + +/*! + \fn bool QDesignerContainerExtension::canAddWidget() const + + Returns whether a widget can be added. This determines whether + the context menu options to add or insert pages are enabled. + + This should return false for containers that have a single, fixed + page, for example QScrollArea or QDockWidget. + + \since 5.0 + \sa addWidget(), canRemove() +*/ + +/*! + \fn bool QDesignerContainerExtension::canRemove(int index) const + + Returns whether the widget at the given \a index can be removed. + This determines whether the context menu option to remove the current + page is enabled. + + This should return false for containers that have a single, fixed + page, for example QScrollArea or QDockWidget. + + \since 5.0 + \sa remove(), canAddWidget() +*/ diff --git a/src/designer/src/lib/uilib/customwidget.h b/src/designer/src/lib/uilib/customwidget.h new file mode 100644 index 0000000000000000000000000000000000000000..43cc055046374ea3e4fb4ce807b0ef41f5ef6a2c --- /dev/null +++ b/src/designer/src/lib/uilib/customwidget.h @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef CUSTOMWIDGET_H +#define CUSTOMWIDGET_H + +#include "extension.h" +#include <QtCore/QObject> +#include <QtCore/QString> +#include <QtWidgets/QIcon> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QWidget; +class QDesignerFormEditorInterface; + +class QDesignerCustomWidgetInterface +{ +public: + virtual ~QDesignerCustomWidgetInterface() {} + + virtual QString name() const = 0; + virtual QString group() const = 0; + virtual QString toolTip() const = 0; + virtual QString whatsThis() const = 0; + virtual QString includeFile() const = 0; + virtual QIcon icon() const = 0; + + virtual bool isContainer() const = 0; + + virtual QWidget *createWidget(QWidget *parent) = 0; + + virtual bool isInitialized() const { return false; } + virtual void initialize(QDesignerFormEditorInterface *core) { Q_UNUSED(core); } + + virtual QString domXml() const + { + return QString::fromUtf8("<widget class=\"%1\" name=\"%2\"/>") + .arg(name()).arg(name().toLower()); + } + + virtual QString codeTemplate() const { return QString(); } +}; +Q_DECLARE_INTERFACE(QDesignerCustomWidgetInterface, "com.trolltech.Qt.Designer.CustomWidget") + + +class QDesignerCustomWidgetCollectionInterface +{ +public: + virtual ~QDesignerCustomWidgetCollectionInterface() {} + + virtual QList<QDesignerCustomWidgetInterface*> customWidgets() const = 0; +}; +Q_DECLARE_INTERFACE(QDesignerCustomWidgetCollectionInterface, + "com.trolltech.Qt.Designer.CustomWidgetCollection") + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // CUSTOMWIDGET_H diff --git a/src/designer/src/lib/uilib/customwidget.qdoc b/src/designer/src/lib/uilib/customwidget.qdoc new file mode 100644 index 0000000000000000000000000000000000000000..9c3bfdd9dfebd2918ac35e364b2b407048a78f63 --- /dev/null +++ b/src/designer/src/lib/uilib/customwidget.qdoc @@ -0,0 +1,295 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:FDL$ +** GNU Free Documentation License +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms +** and conditions contained in a signed written agreement between you +** and Nokia. +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +/*! + \class QDesignerCustomWidgetInterface + + \brief The QDesignerCustomWidgetInterface class enables Qt Designer + to access and construct custom widgets. + + \inmodule QtDesigner + + QDesignerCustomWidgetInterface provides a custom widget with an + interface. The class contains a set of functions that must be subclassed + to return basic information about the widget, such as its class name and + the name of its header file. Other functions must be implemented to + initialize the plugin when it is loaded, and to construct instances of + the custom widget for \QD to use. + + When implementing a custom widget you must subclass + QDesignerCustomWidgetInterface to expose your widget to \QD. For + example, this is the declaration for the plugin used in the + \l{Custom Widget Plugin Example}{Custom Widget Plugin example} that + enables an analog clock custom widget to be used by \QD: + + \snippet examples/designer/customwidgetplugin/customwidgetplugin.h 0 + + Note that the only part of the class definition that is specific + to this particular custom widget is the class name. In addition, + since we are implementing an interface, we must ensure that it's + made known to the meta object system using the Q_INTERFACES() + macro. This enables \QD to use the qobject_cast() function to + query for supported interfaces using nothing but a QObject + pointer. + + After \QD loads a custom widget plugin, it calls the interface's + initialize() function to enable it to set up any resources that it + may need. This function is called with a QDesignerFormEditorInterface + parameter that provides the plugin with a gateway to all of \QD's API. + + \QD constructs instances of the custom widget by calling the plugin's + createWidget() function with a suitable parent widget. Plugins must + construct and return an instance of a custom widget with the specified + parent widget. + + In the implementation of the class you must remember to export + your custom widget plugin to \QD using the Q_EXPORT_PLUGIN2() + macro. For example, if a library called \c libcustomwidgetplugin.so + (on Unix) or \c libcustomwidget.dll (on Windows) contains a widget + class called \c MyCustomWidget, we can export it by adding the + following line to the file containing the plugin implementation: + + \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 14 + + This macro ensures that \QD can access and construct the custom widget. + Without this macro, there is no way for \QD to use it. + + When implementing a custom widget plugin, you build it as a + separate library. If you want to include several custom widget + plugins in the same library, you must in addition subclass + QDesignerCustomWidgetCollectionInterface. + + \warning If your custom widget plugin contains QVariant + properties, be aware that only the following \l + {QVariant::Type}{types} are supported: + + \list + \o QVariant::ByteArray + \o QVariant::Bool + \o QVariant::Color + \o QVariant::Cursor + \o QVariant::Date + \o QVariant::DateTime + \o QVariant::Double + \o QVariant::Int + \o QVariant::Point + \o QVariant::Rect + \o QVariant::Size + \o QVariant::SizePolicy + \o QVariant::String + \o QVariant::Time + \o QVariant::UInt + \endlist + + For a complete example using the QDesignerCustomWidgetInterface + class, see the \l {designer/customwidgetplugin}{Custom Widget + Example}. The example shows how to create a custom widget plugin + for \QD. + + \sa QDesignerCustomWidgetCollectionInterface {Creating Custom + Widgets for Qt Designer} +*/ + +/*! + \fn QDesignerCustomWidgetInterface::~QDesignerCustomWidgetInterface() + + Destroys the custom widget interface. +*/ + +/*! + \fn QString QDesignerCustomWidgetInterface::name() const + + Returns the class name of the custom widget supplied by the interface. + + The name returned \e must be identical to the class name used for the + custom widget. +*/ + +/*! + \fn QString QDesignerCustomWidgetInterface::group() const + + Returns the name of the group to which the custom widget belongs. +*/ + +/*! + \fn QString QDesignerCustomWidgetInterface::toolTip() const + + Returns a short description of the widget that can be used by \QD + in a tool tip. +*/ + +/*! + \fn QString QDesignerCustomWidgetInterface::whatsThis() const + + Returns a description of the widget that can be used by \QD in + "What's This?" help for the widget. +*/ + +/*! + \fn QString QDesignerCustomWidgetInterface::includeFile() const + + Returns the path to the include file that \l uic uses when + creating code for the custom widget. +*/ + +/*! + \fn QIcon QDesignerCustomWidgetInterface::icon() const + + Returns the icon used to represent the custom widget in \QD's + widget box. +*/ + +/*! + \fn bool QDesignerCustomWidgetInterface::isContainer() const + + Returns true if the custom widget is intended to be used as a + container; otherwise returns false. + + Most custom widgets are not used to hold other widgets, so their + implementations of this function will return false, but custom + containers will return true to ensure that they behave correctly + in \QD. +*/ + +/*! + \fn QWidget *QDesignerCustomWidgetInterface::createWidget(QWidget *parent) + + Returns a new instance of the custom widget, with the given \a + parent. +*/ + +/*! + \fn bool QDesignerCustomWidgetInterface::isInitialized() const + + Returns true if the widget has been initialized; otherwise returns + false. + + \sa initialize() +*/ + +/*! + \fn void QDesignerCustomWidgetInterface::initialize(QDesignerFormEditorInterface *formEditor) + + Initializes the widget for use with the specified \a formEditor + interface. + + \sa isInitialized() +*/ + +/*! + \fn QString QDesignerCustomWidgetInterface::domXml() const + + Returns the XML that is used to describe the custom widget's + properties to \QD. +*/ + +/*! + \fn QString QDesignerCustomWidgetInterface::codeTemplate() const + + This function is reserved for future use by \QD. + + \omit + Returns the code template that \QD includes in forms that contain + the custom widget when they are saved. + \endomit +*/ + +/*! + \macro QDESIGNER_WIDGET_EXPORT + \relates QDesignerCustomWidgetInterface + \since 4.1 + + This macro is used when defining custom widgets to ensure that they are + correctly exported from plugins for use with \QD. + + On some platforms, the symbols required by \QD to create new widgets + are removed from plugins by the build system, making them unusable. + Using this macro ensures that the symbols are retained on those platforms, + and has no side effects on other platforms. + + For example, the \l{designer/worldtimeclockplugin}{World Time Clock Plugin} + example exports a custom widget class with the following declaration: + + \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 0 + \dots + \snippet examples/designer/worldtimeclockplugin/worldtimeclock.h 2 + + \sa {Creating Custom Widgets for Qt Designer} +*/ + + + + + +/*! + \class QDesignerCustomWidgetCollectionInterface + + \brief The QDesignerCustomWidgetCollectionInterface class allows + you to include several custom widgets in one single library. + + \inmodule QtDesigner + + When implementing a custom widget plugin, you build it as a + separate library. If you want to include several custom widget + plugins in the same library, you must in addition subclass + QDesignerCustomWidgetCollectionInterface. + + QDesignerCustomWidgetCollectionInterface contains one single + function returning a list of the collection's + QDesignerCustomWidgetInterface objects. For example, if you have + several custom widgets \c CustomWidgetOne, \c CustomWidgetTwo and + \c CustomWidgetThree, the class definition may look like this: + + \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 12 + + In the class constructor you add the interfaces to your custom + widgets to the list which you return in the customWidgets() + function: + + \snippet doc/src/snippets/code/doc_src_qtdesigner.cpp 13 + + Note that instead of exporting each custom widget plugin using the + Q_EXPORT_PLUGIN2() macro, you export the entire collection. The + Q_EXPORT_PLUGIN2() macro ensures that \QD can access and construct + the custom widgets. Without this macro, there is no way for \QD to + use them. + + \sa QDesignerCustomWidgetInterface, {Creating Custom Widgets for + Qt Designer} +*/ + +/*! + \fn QDesignerCustomWidgetCollectionInterface::~QDesignerCustomWidgetCollectionInterface() { + + Destroys the custom widget collection interface. +*/ + +/*! + \fn QList<QDesignerCustomWidgetInterface*> QDesignerCustomWidgetCollectionInterface::customWidgets() const + + Returns a list of interfaces to the collection's custom widgets. +*/ diff --git a/src/designer/src/lib/uilib/extension.h b/src/designer/src/lib/uilib/extension.h new file mode 100644 index 0000000000000000000000000000000000000000..9d6754e9e1153f1c9abac1b2bfbfe281de1283f7 --- /dev/null +++ b/src/designer/src/lib/uilib/extension.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef EXTENSION_H +#define EXTENSION_H + +#include <QtCore/QString> +#include <QtCore/QObject> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +#define Q_TYPEID(IFace) QLatin1String(IFace##_iid) + +class QAbstractExtensionFactory +{ +public: + virtual ~QAbstractExtensionFactory() {} + + virtual QObject *extension(QObject *object, const QString &iid) const = 0; +}; +Q_DECLARE_INTERFACE(QAbstractExtensionFactory, "com.trolltech.Qt.QAbstractExtensionFactory") + +class QAbstractExtensionManager +{ +public: + virtual ~QAbstractExtensionManager() {} + + virtual void registerExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0; + virtual void unregisterExtensions(QAbstractExtensionFactory *factory, const QString &iid) = 0; + + virtual QObject *extension(QObject *object, const QString &iid) const = 0; +}; +Q_DECLARE_INTERFACE(QAbstractExtensionManager, "com.trolltech.Qt.QAbstractExtensionManager") + +#if defined(Q_CC_MSVC) && (_MSC_VER < 1300) + +template <class T> +inline T qt_extension_helper(QAbstractExtensionManager *, QObject *, T) +{ return 0; } + +template <class T> +inline T qt_extension(QAbstractExtensionManager* manager, QObject *object) +{ return qt_extension_helper(manager, object, T(0)); } + +#define Q_DECLARE_EXTENSION_INTERFACE(IFace, IId) \ +const char * const IFace##_iid = IId; \ +Q_DECLARE_INTERFACE(IFace, IId) \ +template <> inline IFace *qt_extension_helper<IFace *>(QAbstractExtensionManager *manager, QObject *object, IFace *) \ +{ QObject *extension = manager->extension(object, Q_TYPEID(IFace)); return (IFace *)(extension ? extension->qt_metacast(IFace##_iid) : 0); } + +#else + +template <class T> +inline T qt_extension(QAbstractExtensionManager* manager, QObject *object) +{ return 0; } + +#define Q_DECLARE_EXTENSION_INTERFACE(IFace, IId) \ +const char * const IFace##_iid = IId; \ +Q_DECLARE_INTERFACE(IFace, IId) \ +template <> inline IFace *qt_extension<IFace *>(QAbstractExtensionManager *manager, QObject *object) \ +{ QObject *extension = manager->extension(object, Q_TYPEID(IFace)); return extension ? static_cast<IFace *>(extension->qt_metacast(IFace##_iid)) : static_cast<IFace *>(0); } + +#endif + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // EXTENSION_H diff --git a/src/designer/src/lib/uilib/formbuilder.cpp b/src/designer/src/lib/uilib/formbuilder.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5e22ddb998b04b9f0623e248ce765b5e73d5ff72 --- /dev/null +++ b/src/designer/src/lib/uilib/formbuilder.cpp @@ -0,0 +1,550 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "customwidget.h" +#include "formbuilder.h" +#include "formbuilderextra_p.h" +#include "ui4_p.h" + +#include <QtGui/QtGui> +#include <QtWidgets/QtWidgets> +#include <QtCore/QCoreApplication> + +QT_BEGIN_NAMESPACE + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal { +#endif + +/*! + \class QFormBuilder + + \brief The QFormBuilder class is used to dynamically construct + user interfaces from UI files at run-time. + + \inmodule QtDesigner + + The QFormBuilder class provides a mechanism for dynamically + creating user interfaces at run-time, based on UI files + created with \QD. For example: + + \snippet doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp 0 + + By including the user interface in the example's resources (\c + myForm.qrc), we ensure that it will be present when the example is + run: + + \snippet doc/src/snippets/code/tools_designer_src_lib_uilib_formbuilder.cpp 1 + + QFormBuilder extends the QAbstractFormBuilder base class with a + number of functions that are used to support custom widget + plugins: + + \list + \o pluginPaths() returns the list of paths that the form builder + searches when loading custom widget plugins. + \o addPluginPath() allows additional paths to be registered with + the form builder. + \o setPluginPath() is used to replace the existing list of paths + with a list obtained from some other source. + \o clearPluginPaths() removes all paths registered with the form + builder. + \o customWidgets() returns a list of interfaces to plugins that + can be used to create new instances of registered custom widgets. + \endlist + + The QFormBuilder class is typically used by custom components and + applications that embed \QD. Standalone applications that need to + dynamically generate user interfaces at run-time use the + QUiLoader class, found in the QtUiTools module. + + \sa QAbstractFormBuilder, {QtUiTools Module} +*/ + +/*! + \fn QFormBuilder::QFormBuilder() + + Constructs a new form builder. +*/ + +QFormBuilder::QFormBuilder() +{ +} + +/*! + Destroys the form builder. +*/ +QFormBuilder::~QFormBuilder() +{ +} + +/*! + \internal +*/ +QWidget *QFormBuilder::create(DomWidget *ui_widget, QWidget *parentWidget) +{ + if (!d->parentWidgetIsSet()) + d->setParentWidget(parentWidget); + // Is this a QLayoutWidget with a margin of 0: Not a known page-based + // container and no method for adding pages registered. + d->setProcessingLayoutWidget(false); + if (ui_widget->attributeClass() == QFormBuilderStrings::instance().qWidgetClass && !ui_widget->hasAttributeNative() + && parentWidget +#ifndef QT_NO_MAINWINDOW + && !qobject_cast<QMainWindow *>(parentWidget) +#endif +#ifndef QT_NO_TOOLBOX + && !qobject_cast<QToolBox *>(parentWidget) +#endif +#ifndef QT_NO_STACKEDWIDGET + && !qobject_cast<QStackedWidget *>(parentWidget) +#endif +#ifndef QT_NO_STACKEDWIDGET + && !qobject_cast<QTabWidget *>(parentWidget) +#endif +#ifndef QT_NO_SCROLLAREA + && !qobject_cast<QScrollArea *>(parentWidget) +#endif +#ifndef QT_NO_MDIAREA + && !qobject_cast<QMdiArea *>(parentWidget) +#endif +#ifndef QT_NO_DOCKWIDGET + && !qobject_cast<QDockWidget *>(parentWidget) +#endif + ) { + const QString parentClassName = QLatin1String(parentWidget->metaObject()->className()); + if (!d->isCustomWidgetContainer(parentClassName)) + d->setProcessingLayoutWidget(true); + } + return QAbstractFormBuilder::create(ui_widget, parentWidget); +} + + +/*! + \internal +*/ +QWidget *QFormBuilder::createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name) +{ + if (widgetName.isEmpty()) { + //: Empty class name passed to widget factory method + qWarning() << QCoreApplication::translate("QFormBuilder", "An empty class name was passed on to %1 (object name: '%2').").arg(QString::fromUtf8(Q_FUNC_INFO), name); + return 0; + } + + QWidget *w = 0; + +#ifndef QT_NO_TABWIDGET + if (qobject_cast<QTabWidget*>(parentWidget)) + parentWidget = 0; +#endif +#ifndef QT_NO_STACKEDWIDGET + if (qobject_cast<QStackedWidget*>(parentWidget)) + parentWidget = 0; +#endif +#ifndef QT_NO_TOOLBOX + if (qobject_cast<QToolBox*>(parentWidget)) + parentWidget = 0; +#endif + + // ### special-casing for Line (QFrame) -- fix for 4.2 + do { + if (widgetName == QFormBuilderStrings::instance().lineClass) { + w = new QFrame(parentWidget); + static_cast<QFrame*>(w)->setFrameStyle(QFrame::HLine | QFrame::Sunken); + break; + } + const QByteArray widgetNameBA = widgetName.toUtf8(); + const char *widgetNameC = widgetNameBA.constData(); + if (w) { // symmetry for macro + } + +#define DECLARE_LAYOUT(L, C) +#define DECLARE_COMPAT_WIDGET(W, C) +#define DECLARE_WIDGET(W, C) else if (!qstrcmp(widgetNameC, #W)) { Q_ASSERT(w == 0); w = new W(parentWidget); } +#define DECLARE_WIDGET_1(W, C) else if (!qstrcmp(widgetNameC, #W)) { Q_ASSERT(w == 0); w = new W(0, parentWidget); } + +#include "widgets.table" + +#undef DECLARE_COMPAT_WIDGET +#undef DECLARE_LAYOUT +#undef DECLARE_WIDGET +#undef DECLARE_WIDGET_1 + + if (w) + break; + + // try with a registered custom widget + QDesignerCustomWidgetInterface *factory = d->m_customWidgets.value(widgetName); + if (factory != 0) + w = factory->createWidget(parentWidget); + } while(false); + + if (w == 0) { // Attempt to instantiate base class of promoted/custom widgets + const QString baseClassName = d->customWidgetBaseClass(widgetName); + if (!baseClassName.isEmpty()) { + qWarning() << QCoreApplication::translate("QFormBuilder", "QFormBuilder was unable to create a custom widget of the class '%1'; defaulting to base class '%2'.").arg(widgetName, baseClassName); + return createWidget(baseClassName, parentWidget, name); + } + } + + if (w == 0) { // nothing to do + qWarning() << QCoreApplication::translate("QFormBuilder", "QFormBuilder was unable to create a widget of the class '%1'.").arg(widgetName); + return 0; + } + + w->setObjectName(name); + + if (qobject_cast<QDialog *>(w)) + w->setParent(parentWidget); + + return w; +} + +/*! + \internal +*/ +QLayout *QFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name) +{ + QLayout *l = 0; + + QWidget *parentWidget = qobject_cast<QWidget*>(parent); + QLayout *parentLayout = qobject_cast<QLayout*>(parent); + + Q_ASSERT(parentWidget || parentLayout); + +#define DECLARE_WIDGET(W, C) +#define DECLARE_COMPAT_WIDGET(W, C) + +#define DECLARE_LAYOUT(L, C) \ + if (layoutName == QLatin1String(#L)) { \ + Q_ASSERT(l == 0); \ + l = parentLayout \ + ? new L() \ + : new L(parentWidget); \ + } + +#include "widgets.table" + +#undef DECLARE_LAYOUT +#undef DECLARE_COMPAT_WIDGET +#undef DECLARE_WIDGET + + if (l) { + l->setObjectName(name); + } else { + qWarning() << QCoreApplication::translate("QFormBuilder", "The layout type `%1' is not supported.").arg(layoutName); + } + + return l; +} + +/*! + \internal +*/ +bool QFormBuilder::addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout) +{ + return QAbstractFormBuilder::addItem(ui_item, item, layout); +} + +/*! + \internal +*/ +bool QFormBuilder::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget) +{ + return QAbstractFormBuilder::addItem(ui_widget, widget, parentWidget); +} + +/*! + \internal +*/ +QWidget *QFormBuilder::widgetByName(QWidget *topLevel, const QString &name) +{ + Q_ASSERT(topLevel); + if (topLevel->objectName() == name) + return topLevel; + + return topLevel->findChild<QWidget*>(name); +} + +static QObject *objectByName(QWidget *topLevel, const QString &name) +{ + Q_ASSERT(topLevel); + if (topLevel->objectName() == name) + return topLevel; + + return topLevel->findChild<QObject*>(name); +} + +/*! + \internal +*/ +void QFormBuilder::createConnections(DomConnections *ui_connections, QWidget *widget) +{ + typedef QList<DomConnection*> DomConnectionList; + Q_ASSERT(widget != 0); + + if (ui_connections == 0) + return; + + const DomConnectionList connections = ui_connections->elementConnection(); + if (!connections.empty()) { + const DomConnectionList::const_iterator cend = connections.constEnd(); + for (DomConnectionList::const_iterator it = connections.constBegin(); it != cend; ++it) { + + QObject *sender = objectByName(widget, (*it)->elementSender()); + QObject *receiver = objectByName(widget, (*it)->elementReceiver()); + if (!sender || !receiver) + continue; + + QByteArray sig = (*it)->elementSignal().toUtf8(); + sig.prepend("2"); + QByteArray sl = (*it)->elementSlot().toUtf8(); + sl.prepend("1"); + QObject::connect(sender, sig, receiver, sl); + } + } +} + +/*! + \internal +*/ +QWidget *QFormBuilder::create(DomUI *ui, QWidget *parentWidget) +{ + return QAbstractFormBuilder::create(ui, parentWidget); +} + +/*! + \internal +*/ +QLayout *QFormBuilder::create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget) +{ + // Is this a temporary layout widget used to represent QLayout hierarchies in Designer? + // Set its margins to 0. + bool layoutWidget = d->processingLayoutWidget(); + QLayout *l = QAbstractFormBuilder::create(ui_layout, layout, parentWidget); + if (layoutWidget) { + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + int left, top, right, bottom; + left = top = right = bottom = 0; + const DomPropertyHash properties = propertyMap(ui_layout->elementProperty()); + + if (DomProperty *prop = properties.value(strings.leftMarginProperty)) + left = prop->elementNumber(); + + if (DomProperty *prop = properties.value(strings.topMarginProperty)) + top = prop->elementNumber(); + + if (DomProperty *prop = properties.value(strings.rightMarginProperty)) + right = prop->elementNumber(); + + if (DomProperty *prop = properties.value(strings.bottomMarginProperty)) + bottom = prop->elementNumber(); + + l->setContentsMargins(left, top, right, bottom); + d->setProcessingLayoutWidget(false); + } + return l; +} + +/*! + \internal +*/ +QLayoutItem *QFormBuilder::create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget) +{ + return QAbstractFormBuilder::create(ui_layoutItem, layout, parentWidget); +} + +/*! + \internal +*/ +QAction *QFormBuilder::create(DomAction *ui_action, QObject *parent) +{ + return QAbstractFormBuilder::create(ui_action, parent); +} + +/*! + \internal +*/ +QActionGroup *QFormBuilder::create(DomActionGroup *ui_action_group, QObject *parent) +{ + return QAbstractFormBuilder::create(ui_action_group, parent); +} + +/*! + Returns the list of paths the form builder searches for plugins. + + \sa addPluginPath() +*/ +QStringList QFormBuilder::pluginPaths() const +{ + return d->m_pluginPaths; +} + +/*! + Clears the list of paths that the form builder uses to search for + custom widget plugins. + + \sa pluginPaths() +*/ +void QFormBuilder::clearPluginPaths() +{ + d->m_pluginPaths.clear(); + updateCustomWidgets(); +} + +/*! + Adds a new plugin path specified by \a pluginPath to the list of + paths that will be searched by the form builder when loading a + custom widget plugin. + + \sa setPluginPath(), clearPluginPaths() +*/ +void QFormBuilder::addPluginPath(const QString &pluginPath) +{ + d->m_pluginPaths.append(pluginPath); + updateCustomWidgets(); +} + +/*! + Sets the list of plugin paths to the list specified by \a pluginPaths. + + \sa addPluginPath() +*/ +void QFormBuilder::setPluginPath(const QStringList &pluginPaths) +{ + d->m_pluginPaths = pluginPaths; + updateCustomWidgets(); +} + +static void insertPlugins(QObject *o, QMap<QString, QDesignerCustomWidgetInterface*> *customWidgets) +{ + // step 1) try with a normal plugin + if (QDesignerCustomWidgetInterface *iface = qobject_cast<QDesignerCustomWidgetInterface *>(o)) { + customWidgets->insert(iface->name(), iface); + return; + } + // step 2) try with a collection of plugins + if (QDesignerCustomWidgetCollectionInterface *c = qobject_cast<QDesignerCustomWidgetCollectionInterface *>(o)) { + foreach (QDesignerCustomWidgetInterface *iface, c->customWidgets()) + customWidgets->insert(iface->name(), iface); + } +} + +/*! + \internal +*/ +void QFormBuilder::updateCustomWidgets() +{ + d->m_customWidgets.clear(); + + foreach (const QString &path, d->m_pluginPaths) { + const QDir dir(path); + const QStringList candidates = dir.entryList(QDir::Files); + + foreach (const QString &plugin, candidates) { + if (!QLibrary::isLibrary(plugin)) + continue; + + QString loaderPath = path; + loaderPath += QLatin1Char('/'); + loaderPath += plugin; + + QPluginLoader loader(loaderPath); + if (loader.load()) + insertPlugins(loader.instance(), &d->m_customWidgets); + } + } + // Check statically linked plugins + const QObjectList staticPlugins = QPluginLoader::staticInstances(); + if (!staticPlugins.empty()) + foreach (QObject *o, staticPlugins) + insertPlugins(o, &d->m_customWidgets); +} + +/*! + \fn QList<QDesignerCustomWidgetInterface*> QFormBuilder::customWidgets() const + + Returns a list of the available plugins. +*/ +QList<QDesignerCustomWidgetInterface*> QFormBuilder::customWidgets() const +{ + return d->m_customWidgets.values(); +} + +/*! + \internal +*/ + +void QFormBuilder::applyProperties(QObject *o, const QList<DomProperty*> &properties) +{ + typedef QList<DomProperty*> DomPropertyList; + + if (properties.empty()) + return; + + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + + const DomPropertyList::const_iterator cend = properties.constEnd(); + for (DomPropertyList::const_iterator it = properties.constBegin(); it != cend; ++it) { + const QVariant v = toVariant(o->metaObject(), *it); + if (v.isNull()) + continue; + + const QString attributeName = (*it)->attributeName(); + const bool isWidget = o->isWidgetType(); + if (isWidget && o->parent() == d->parentWidget() && attributeName == strings.geometryProperty) { + // apply only the size part of a geometry for the root widget + static_cast<QWidget*>(o)->resize(qvariant_cast<QRect>(v).size()); + } else if (d->applyPropertyInternally(o, attributeName, v)) { + } else if (isWidget && !qstrcmp("QFrame", o->metaObject()->className ()) && attributeName == strings.orientationProperty) { + // ### special-casing for Line (QFrame) -- try to fix me + o->setProperty("frameShape", v); // v is of QFrame::Shape enum + } else { + o->setProperty(attributeName.toUtf8(), v); + } + } +} + +#ifdef QFORMINTERNAL_NAMESPACE +} // namespace QFormInternal +#endif + +QT_END_NAMESPACE diff --git a/src/designer/src/lib/uilib/formbuilder.h b/src/designer/src/lib/uilib/formbuilder.h new file mode 100644 index 0000000000000000000000000000000000000000..b94db06ebd1f673da432c88c10e176c8e4285344 --- /dev/null +++ b/src/designer/src/lib/uilib/formbuilder.h @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef FORMBUILDER_H +#define FORMBUILDER_H + +#include "uilib_global.h" +#include "abstractformbuilder.h" + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE +#if 0 +// pragma for syncqt, don't remove. + +#pragma qt_class(QFormBuilder) +#endif + +class QDesignerCustomWidgetInterface; + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +class QDESIGNER_UILIB_EXPORT QFormBuilder: public QAbstractFormBuilder +{ +public: + QFormBuilder(); + virtual ~QFormBuilder(); + + QStringList pluginPaths() const; + + void clearPluginPaths(); + void addPluginPath(const QString &pluginPath); + void setPluginPath(const QStringList &pluginPaths); + + QList<QDesignerCustomWidgetInterface*> customWidgets() const; + +protected: + virtual QWidget *create(DomUI *ui, QWidget *parentWidget); + virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget); + virtual QLayout *create(DomLayout *ui_layout, QLayout *layout, QWidget *parentWidget); + virtual QLayoutItem *create(DomLayoutItem *ui_layoutItem, QLayout *layout, QWidget *parentWidget); + virtual QAction *create(DomAction *ui_action, QObject *parent); + virtual QActionGroup *create(DomActionGroup *ui_action_group, QObject *parent); + + virtual QWidget *createWidget(const QString &widgetName, QWidget *parentWidget, const QString &name); + virtual QLayout *createLayout(const QString &layoutName, QObject *parent, const QString &name); + + virtual void createConnections(DomConnections *connections, QWidget *widget); + + virtual bool addItem(DomLayoutItem *ui_item, QLayoutItem *item, QLayout *layout); + virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget); + + virtual void updateCustomWidgets(); + virtual void applyProperties(QObject *o, const QList<DomProperty*> &properties); + + static QWidget *widgetByName(QWidget *topLevel, const QString &name); + +private: +}; + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // FORMBUILDER_H diff --git a/src/designer/src/lib/uilib/formbuilderextra.cpp b/src/designer/src/lib/uilib/formbuilderextra.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3d34a20bffae306386258092879ec635ce28f56f --- /dev/null +++ b/src/designer/src/lib/uilib/formbuilderextra.cpp @@ -0,0 +1,533 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "formbuilderextra_p.h" +#include "abstractformbuilder.h" +#include "resourcebuilder_p.h" +#include "textbuilder_p.h" +#include "ui4_p.h" + +#include <QtWidgets/QLabel> +#include <QtWidgets/QBoxLayout> +#include <QtWidgets/QGridLayout> + +#include <QtCore/QVariant> +#include <QtCore/qdebug.h> +#include <QtCore/QTextStream> +#include <QtCore/QStringList> +#include <QtCore/QCoreApplication> + +#include <limits.h> + +QT_BEGIN_NAMESPACE + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal { +#endif + +void uiLibWarning(const QString &message) { + qWarning("Designer: %s", qPrintable(message)); +} + + +QFormBuilderExtra::CustomWidgetData::CustomWidgetData() : + isContainer(false) +{ +} + +QFormBuilderExtra::CustomWidgetData::CustomWidgetData(const DomCustomWidget *dcw) : + addPageMethod(dcw->elementAddPageMethod()), + baseClass(dcw->elementExtends()), + isContainer(dcw->hasElementContainer() && dcw->elementContainer() != 0) +{ +#ifndef QT_FORMBUILDER_NO_SCRIPT + if (const DomScript *domScript = dcw->elementScript()) + script = domScript->text(); +#endif +} + +QFormBuilderExtra::QFormBuilderExtra() : + m_defaultMargin(INT_MIN), + m_defaultSpacing(INT_MIN), + m_language(QLatin1String("c++")), + m_layoutWidget(false), + m_resourceBuilder(0), + m_textBuilder(0) +{ +} + +QFormBuilderExtra::~QFormBuilderExtra() +{ + clearResourceBuilder(); + clearTextBuilder(); +} + +void QFormBuilderExtra::clear() +{ + m_buddies.clear(); + m_parentWidget = 0; + m_parentWidgetIsSet = false; +#ifndef QT_FORMBUILDER_NO_SCRIPT + m_FormScriptRunner.clearErrors(); +#endif + m_customWidgetDataHash.clear(); + m_buttonGroups.clear(); +} + + +bool QFormBuilderExtra::applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value) +{ + // Store buddies and apply them later on as the widgets might not exist yet. + QLabel *label = qobject_cast<QLabel*>(o); + if (!label || propertyName != QFormBuilderStrings::instance().buddyProperty) + return false; + + m_buddies.insert(label, value.toString()); + return true; +} + +void QFormBuilderExtra::applyInternalProperties() const +{ + if (m_buddies.empty()) + return; + + const BuddyHash::const_iterator cend = m_buddies.constEnd(); + for (BuddyHash::const_iterator it = m_buddies.constBegin(); it != cend; ++it ) + applyBuddy(it.value(), BuddyApplyAll, it.key()); +} + +bool QFormBuilderExtra::applyBuddy(const QString &buddyName, BuddyMode applyMode, QLabel *label) +{ + if (buddyName.isEmpty()) { + label->setBuddy(0); + return false; + } + + const QWidgetList widgets = label->topLevelWidget()->findChildren<QWidget*>(buddyName); + if (widgets.empty()) { + label->setBuddy(0); + return false; + } + + const QWidgetList::const_iterator cend = widgets.constEnd(); + for ( QWidgetList::const_iterator it = widgets.constBegin(); it != cend; ++it) { + if (applyMode == BuddyApplyAll || !(*it)->isHidden()) { + label->setBuddy(*it); + return true; + } + } + + label->setBuddy(0); + return false; +} + +const QPointer<QWidget> &QFormBuilderExtra::parentWidget() const +{ + return m_parentWidget; +} + +bool QFormBuilderExtra::parentWidgetIsSet() const +{ + return m_parentWidgetIsSet; +} + +void QFormBuilderExtra::setParentWidget(const QPointer<QWidget> &w) +{ + // Parent widget requires special handling of the geometry property. + m_parentWidget = w; + m_parentWidgetIsSet = true; +} + +#ifndef QT_FORMBUILDER_NO_SCRIPT +QFormScriptRunner &QFormBuilderExtra::formScriptRunner() +{ + return m_FormScriptRunner; +} + +QString QFormBuilderExtra::customWidgetScript(const QString &className) const +{ + const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className); + if (it != m_customWidgetDataHash.constEnd()) + return it.value().script; + return QString(); +} + +#endif + +void QFormBuilderExtra::storeCustomWidgetData(const QString &className, const DomCustomWidget *d) +{ + if (d) + m_customWidgetDataHash.insert(className, CustomWidgetData(d)); +} + +QString QFormBuilderExtra::customWidgetBaseClass(const QString &className) const +{ + const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className); + if (it != m_customWidgetDataHash.constEnd()) + return it.value().baseClass; + return QString(); +} + +QString QFormBuilderExtra::customWidgetAddPageMethod(const QString &className) const +{ + const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className); + if (it != m_customWidgetDataHash.constEnd()) + return it.value().addPageMethod; + return QString(); +} + +bool QFormBuilderExtra::isCustomWidgetContainer(const QString &className) const +{ + const QHash<QString, CustomWidgetData>::const_iterator it = m_customWidgetDataHash.constFind(className); + if (it != m_customWidgetDataHash.constEnd()) + return it.value().isContainer; + return false; +} + +void QFormBuilderExtra::setProcessingLayoutWidget(bool processing) +{ + m_layoutWidget = processing; +} + + bool QFormBuilderExtra::processingLayoutWidget() const +{ + return m_layoutWidget; +} +void QFormBuilderExtra::setResourceBuilder(QResourceBuilder *builder) +{ + if (m_resourceBuilder == builder) + return; + clearResourceBuilder(); + m_resourceBuilder = builder; +} + +QResourceBuilder *QFormBuilderExtra::resourceBuilder() const +{ + return m_resourceBuilder; +} + +void QFormBuilderExtra::clearResourceBuilder() +{ + if (m_resourceBuilder) { + delete m_resourceBuilder; + m_resourceBuilder = 0; + } +} + +void QFormBuilderExtra::setTextBuilder(QTextBuilder *builder) +{ + if (m_textBuilder == builder) + return; + clearTextBuilder(); + m_textBuilder = builder; +} + +QTextBuilder *QFormBuilderExtra::textBuilder() const +{ + return m_textBuilder; +} + +void QFormBuilderExtra::clearTextBuilder() +{ + if (m_textBuilder) { + delete m_textBuilder; + m_textBuilder = 0; + } +} + +void QFormBuilderExtra::registerButtonGroups(const DomButtonGroups *domGroups) +{ + typedef QList<DomButtonGroup*> DomButtonGroupList; + const DomButtonGroupList domGroupList = domGroups->elementButtonGroup(); + const DomButtonGroupList::const_iterator cend = domGroupList.constEnd(); + for (DomButtonGroupList::const_iterator it = domGroupList.constBegin(); it != cend; ++it) { + DomButtonGroup *domGroup = *it; + m_buttonGroups.insert(domGroup->attributeName(), ButtonGroupEntry(domGroup, 0)); + } +} + +// Utilities for parsing per-cell integer properties that have setters and +// getters of the form 'setX(int idx, int value)' and 'x(int index)' +// (converting them to comma-separated string lists and back). +// Used for layout stretch and grid per-row/column properties. + +// Format a list of cell-properties of one dimension as a ','-separated list +template <class Layout> +inline QString perCellPropertyToString(const Layout *l, int count, int (Layout::*getter)(int) const) +{ + if (count == 0) + return QString(); + QString rc; + { + QTextStream str(&rc); + for (int i = 0; i < count; i++) { + if (i) + str << QLatin1Char(','); + str << (l->*getter)(i); + } + } + return rc; +} + +// Clear the property, set all cells to 0 + +template <class Layout> +inline void clearPerCellValue(Layout *l, int count, void (Layout::*setter)(int,int), int value = 0) +{ + for (int i = 0; i < count; i++) + (l->*setter)(i, value); +} + +// Parse and set the property from a comma-separated list + +template <class Layout> +inline bool parsePerCellProperty(Layout *l, int count, void (Layout::*setter)(int,int), const QString &s, int defaultValue = 0) +{ + if (s.isEmpty()) { + clearPerCellValue(l, count, setter, defaultValue); + return true; + } + const QStringList list = s.split(QLatin1Char(',')); + if (list.empty()) { + clearPerCellValue(l, count, setter, defaultValue); + return true; + } + // Apply all values contained in list + const int ac = qMin(count, list.size()); + bool ok; + int i = 0; + for ( ; i < ac; i++) { + const int value = list.at(i).toInt(&ok); + if (!ok || value < 0) + return false; + (l->*setter)(i, value); + } + // Clear rest + for ( ; i < count; i++) + (l->*setter)(i, defaultValue); + return true; +} + +// Read and write stretch +static QString msgInvalidStretch(const QString &objectName, const QString &stretch) +{ + //: Parsing layout stretch values + return QCoreApplication::translate("FormBuilder", "Invalid stretch value for '%1': '%2'").arg(objectName, stretch); +} + +QString QFormBuilderExtra::boxLayoutStretch(const QBoxLayout *box) +{ + return perCellPropertyToString(box, box->count(), &QBoxLayout::stretch); +} + +bool QFormBuilderExtra::setBoxLayoutStretch(const QString &s, QBoxLayout *box) +{ + const bool rc = parsePerCellProperty(box, box->count(), &QBoxLayout::setStretch, s); + if (!rc) + uiLibWarning(msgInvalidStretch(box->objectName(), s)); + return rc; +} + +void QFormBuilderExtra::clearBoxLayoutStretch(QBoxLayout *box) +{ + clearPerCellValue(box, box->count(), &QBoxLayout::setStretch); +} + +QString QFormBuilderExtra::gridLayoutRowStretch(const QGridLayout *grid) +{ + return perCellPropertyToString(grid, grid->rowCount(), &QGridLayout::rowStretch); +} + +bool QFormBuilderExtra::setGridLayoutRowStretch(const QString &s, QGridLayout *grid) +{ + const bool rc = parsePerCellProperty(grid, grid->rowCount(), &QGridLayout::setRowStretch, s); + if (!rc) + uiLibWarning(msgInvalidStretch(grid->objectName(), s)); + return rc; +} + +void QFormBuilderExtra::clearGridLayoutRowStretch(QGridLayout *grid) +{ + clearPerCellValue(grid, grid->rowCount(), &QGridLayout::setRowStretch); +} + +QString QFormBuilderExtra::gridLayoutColumnStretch(const QGridLayout *grid) +{ + return perCellPropertyToString(grid, grid->columnCount(), &QGridLayout::columnStretch); +} + +bool QFormBuilderExtra::setGridLayoutColumnStretch(const QString &s, QGridLayout *grid) +{ + const bool rc = parsePerCellProperty(grid, grid->columnCount(), &QGridLayout::setColumnStretch, s); + if (!rc) + uiLibWarning(msgInvalidStretch(grid->objectName(), s)); + return rc; +} + +void QFormBuilderExtra::clearGridLayoutColumnStretch(QGridLayout *grid) +{ + clearPerCellValue(grid, grid->columnCount(), &QGridLayout::setColumnStretch); +} + +// Read and write grid layout row/column size limits + +static QString msgInvalidMinimumSize(const QString &objectName, const QString &ms) +{ + //: Parsing grid layout minimum size values + return QCoreApplication::translate("FormBuilder", "Invalid minimum size for '%1': '%2'").arg(objectName, ms); +} + +QString QFormBuilderExtra::gridLayoutRowMinimumHeight(const QGridLayout *grid) +{ + return perCellPropertyToString(grid, grid->rowCount(), &QGridLayout::rowMinimumHeight); +} + +bool QFormBuilderExtra::setGridLayoutRowMinimumHeight(const QString &s, QGridLayout *grid) +{ + const bool rc = parsePerCellProperty(grid, grid->rowCount(), &QGridLayout::setRowMinimumHeight, s); + if (!rc) + uiLibWarning(msgInvalidMinimumSize(grid->objectName(), s)); + return rc; +} + +void QFormBuilderExtra::clearGridLayoutRowMinimumHeight(QGridLayout *grid) +{ + clearPerCellValue(grid, grid->rowCount(), &QGridLayout::setRowMinimumHeight); +} + +QString QFormBuilderExtra::gridLayoutColumnMinimumWidth(const QGridLayout *grid) +{ + return perCellPropertyToString(grid, grid->columnCount(), &QGridLayout::columnMinimumWidth); +} + +bool QFormBuilderExtra::setGridLayoutColumnMinimumWidth(const QString &s, QGridLayout *grid) +{ + const bool rc = parsePerCellProperty(grid, grid->columnCount(), &QGridLayout::setColumnMinimumWidth, s); + if (!rc) + uiLibWarning(msgInvalidMinimumSize(grid->objectName(), s)); + return rc; +} + +void QFormBuilderExtra::clearGridLayoutColumnMinimumWidth(QGridLayout *grid) +{ + clearPerCellValue(grid, grid->columnCount(), &QGridLayout::setColumnMinimumWidth); +} + +// ------------ QFormBuilderStrings + +QFormBuilderStrings::QFormBuilderStrings() : + buddyProperty(QLatin1String("buddy")), + cursorProperty(QLatin1String("cursor")), + objectNameProperty(QLatin1String("objectName")), + trueValue(QLatin1String("true")), + falseValue(QLatin1String("false")), + horizontalPostFix(QLatin1String("Horizontal")), + separator(QLatin1String("separator")), + defaultTitle(QLatin1String("Page")), + titleAttribute(QLatin1String("title")), + labelAttribute(QLatin1String("label")), + toolTipAttribute(QLatin1String("toolTip")), + whatsThisAttribute(QLatin1String("whatsThis")), + flagsAttribute(QLatin1String("flags")), + iconAttribute(QLatin1String("icon")), + pixmapAttribute(QLatin1String("pixmap")), + textAttribute(QLatin1String("text")), + currentIndexProperty(QLatin1String("currentIndex")), + toolBarAreaAttribute(QLatin1String("toolBarArea")), + toolBarBreakAttribute(QLatin1String("toolBarBreak")), + dockWidgetAreaAttribute(QLatin1String("dockWidgetArea")), + marginProperty(QLatin1String("margin")), + spacingProperty(QLatin1String("spacing")), + leftMarginProperty(QLatin1String("leftMargin")), + topMarginProperty(QLatin1String("topMargin")), + rightMarginProperty(QLatin1String("rightMargin")), + bottomMarginProperty(QLatin1String("bottomMargin")), + horizontalSpacingProperty(QLatin1String("horizontalSpacing")), + verticalSpacingProperty(QLatin1String("verticalSpacing")), + sizeHintProperty(QLatin1String("sizeHint")), + sizeTypeProperty(QLatin1String("sizeType")), + orientationProperty(QLatin1String("orientation")), + styleSheetProperty(QLatin1String("styleSheet")), + qtHorizontal(QLatin1String("Qt::Horizontal")), + qtVertical(QLatin1String("Qt::Vertical")), + currentRowProperty(QLatin1String("currentRow")), + tabSpacingProperty(QLatin1String("tabSpacing")), + qWidgetClass(QLatin1String("QWidget")), + lineClass(QLatin1String("Line")), + geometryProperty(QLatin1String("geometry")), + scriptWidgetVariable(QLatin1String("widget")), + scriptChildWidgetsVariable(QLatin1String("childWidgets")) +{ + itemRoles.append(qMakePair(Qt::FontRole, QString::fromLatin1("font"))); + itemRoles.append(qMakePair(Qt::TextAlignmentRole, QString::fromLatin1("textAlignment"))); + itemRoles.append(qMakePair(Qt::BackgroundRole, QString::fromLatin1("background"))); + itemRoles.append(qMakePair(Qt::ForegroundRole, QString::fromLatin1("foreground"))); + itemRoles.append(qMakePair(Qt::CheckStateRole, QString::fromLatin1("checkState"))); + + foreach (const RoleNName &it, itemRoles) + treeItemRoleHash.insert(it.second, it.first); + + itemTextRoles.append(qMakePair(qMakePair(Qt::EditRole, Qt::DisplayPropertyRole), + textAttribute)); // This must be first for the loop below + itemTextRoles.append(qMakePair(qMakePair(Qt::ToolTipRole, Qt::ToolTipPropertyRole), + toolTipAttribute)); + itemTextRoles.append(qMakePair(qMakePair(Qt::StatusTipRole, Qt::StatusTipPropertyRole), + QString::fromLatin1("statusTip"))); + itemTextRoles.append(qMakePair(qMakePair(Qt::WhatsThisRole, Qt::WhatsThisPropertyRole), + whatsThisAttribute)); + + // Note: this skips the first item! + QList<TextRoleNName>::const_iterator it = itemTextRoles.constBegin(), end = itemTextRoles.constEnd(); + while (++it != end) + treeItemTextRoleHash.insert(it->second, it->first); +} + +const QFormBuilderStrings &QFormBuilderStrings::instance() +{ + static const QFormBuilderStrings rc; + return rc; +} + +#ifdef QFORMINTERNAL_NAMESPACE +} // namespace QFormInternal +#endif + +QT_END_NAMESPACE diff --git a/src/designer/src/lib/uilib/formbuilderextra_p.h b/src/designer/src/lib/uilib/formbuilderextra_p.h new file mode 100644 index 0000000000000000000000000000000000000000..20516a5489d558a39260c3a5e4b8d162198a6c92 --- /dev/null +++ b/src/designer/src/lib/uilib/formbuilderextra_p.h @@ -0,0 +1,276 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef ABSTRACTFORMBUILDERPRIVATE_H +#define ABSTRACTFORMBUILDERPRIVATE_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "uilib_global.h" + +#ifndef QT_FORMBUILDER_NO_SCRIPT +# include "formscriptrunner_p.h" +#endif + +#include <QtCore/QHash> +#include <QtCore/QPointer> +#include <QtCore/QStringList> +#include <QtCore/QMap> +#include <QtCore/QDir> + +QT_BEGIN_NAMESPACE + +class QDesignerCustomWidgetInterface; +class QObject; +class QVariant; +class QWidget; +class QObject; +class QLabel; +class QButtonGroup; +class QBoxLayout; +class QGridLayout; +class QAction; +class QActionGroup; + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +class DomButtonGroups; +class DomButtonGroup; +class DomCustomWidget; + +class QAbstractFormBuilder; +class QResourceBuilder; +class QTextBuilder; + +class QDESIGNER_UILIB_EXPORT QFormBuilderExtra +{ +public: + QFormBuilderExtra(); + ~QFormBuilderExtra(); + + struct CustomWidgetData { + CustomWidgetData(); + explicit CustomWidgetData(const DomCustomWidget *dc); + + QString addPageMethod; + QString script; + QString baseClass; + bool isContainer; + }; + + void clear(); + + bool applyPropertyInternally(QObject *o, const QString &propertyName, const QVariant &value); + + enum BuddyMode { BuddyApplyAll, BuddyApplyVisibleOnly }; + + void applyInternalProperties() const; + static bool applyBuddy(const QString &buddyName, BuddyMode applyMode, QLabel *label); + + const QPointer<QWidget> &parentWidget() const; + bool parentWidgetIsSet() const; + void setParentWidget(const QPointer<QWidget> &w); + +#ifndef QT_FORMBUILDER_NO_SCRIPT + QFormScriptRunner &formScriptRunner(); + QString customWidgetScript(const QString &className) const; +#endif + + void setProcessingLayoutWidget(bool processing); + bool processingLayoutWidget() const; + + void setResourceBuilder(QResourceBuilder *builder); + QResourceBuilder *resourceBuilder() const; + + void setTextBuilder(QTextBuilder *builder); + QTextBuilder *textBuilder() const; + + void storeCustomWidgetData(const QString &className, const DomCustomWidget *d); + QString customWidgetAddPageMethod(const QString &className) const; + QString customWidgetBaseClass(const QString &className) const; + bool isCustomWidgetContainer(const QString &className) const; + + // --- Hash used in creating button groups on demand. Store a map of name and pair of dom group and real group + void registerButtonGroups(const DomButtonGroups *groups); + + typedef QPair<DomButtonGroup *, QButtonGroup*> ButtonGroupEntry; + typedef QHash<QString, ButtonGroupEntry> ButtonGroupHash; + const ButtonGroupHash &buttonGroups() const { return m_buttonGroups; } + ButtonGroupHash &buttonGroups() { return m_buttonGroups; } + + // return stretch as a comma-separated list + static QString boxLayoutStretch(const QBoxLayout*); + // apply stretch + static bool setBoxLayoutStretch(const QString &, QBoxLayout*); + static void clearBoxLayoutStretch(QBoxLayout*); + + static QString gridLayoutRowStretch(const QGridLayout *); + static bool setGridLayoutRowStretch(const QString &, QGridLayout *); + static void clearGridLayoutRowStretch(QGridLayout *); + + static QString gridLayoutColumnStretch(const QGridLayout *); + static bool setGridLayoutColumnStretch(const QString &, QGridLayout *); + static void clearGridLayoutColumnStretch(QGridLayout *); + + // return the row/column sizes as comma-separated lists + static QString gridLayoutRowMinimumHeight(const QGridLayout *); + static bool setGridLayoutRowMinimumHeight(const QString &, QGridLayout *); + static void clearGridLayoutRowMinimumHeight(QGridLayout *); + + static QString gridLayoutColumnMinimumWidth(const QGridLayout *); + static bool setGridLayoutColumnMinimumWidth(const QString &, QGridLayout *); + static void clearGridLayoutColumnMinimumWidth(QGridLayout *); + + QStringList m_pluginPaths; + QMap<QString, QDesignerCustomWidgetInterface*> m_customWidgets; + + QHash<QObject*, bool> m_laidout; + QHash<QString, QAction*> m_actions; + QHash<QString, QActionGroup*> m_actionGroups; + int m_defaultMargin; + int m_defaultSpacing; + QDir m_workingDirectory; + QString m_errorString; + QString m_language; + +private: + void clearResourceBuilder(); + void clearTextBuilder(); + + typedef QHash<QLabel*, QString> BuddyHash; + BuddyHash m_buddies; + +#ifndef QT_FORMBUILDER_NO_SCRIPT + QFormScriptRunner m_FormScriptRunner; +#endif + + QHash<QString, CustomWidgetData> m_customWidgetDataHash; + + ButtonGroupHash m_buttonGroups; + + bool m_layoutWidget; + QResourceBuilder *m_resourceBuilder; + QTextBuilder *m_textBuilder; + + QPointer<QWidget> m_parentWidget; + bool m_parentWidgetIsSet; +}; + +void uiLibWarning(const QString &message); + +// Struct with static accessor that provides most strings used in the form builder. +struct QDESIGNER_UILIB_EXPORT QFormBuilderStrings { + QFormBuilderStrings(); + + static const QFormBuilderStrings &instance(); + + const QString buddyProperty; + const QString cursorProperty; + const QString objectNameProperty; + const QString trueValue; + const QString falseValue; + const QString horizontalPostFix; + const QString separator; + const QString defaultTitle; + const QString titleAttribute; + const QString labelAttribute; + const QString toolTipAttribute; + const QString whatsThisAttribute; + const QString flagsAttribute; + const QString iconAttribute; + const QString pixmapAttribute; + const QString textAttribute; + const QString currentIndexProperty; + const QString toolBarAreaAttribute; + const QString toolBarBreakAttribute; + const QString dockWidgetAreaAttribute; + const QString marginProperty; + const QString spacingProperty; + const QString leftMarginProperty; + const QString topMarginProperty; + const QString rightMarginProperty; + const QString bottomMarginProperty; + const QString horizontalSpacingProperty; + const QString verticalSpacingProperty; + const QString sizeHintProperty; + const QString sizeTypeProperty; + const QString orientationProperty; + const QString styleSheetProperty; + const QString qtHorizontal; + const QString qtVertical; + const QString currentRowProperty; + const QString tabSpacingProperty; + const QString qWidgetClass; + const QString lineClass; + const QString geometryProperty; + const QString scriptWidgetVariable; + const QString scriptChildWidgetsVariable; + + typedef QPair<Qt::ItemDataRole, QString> RoleNName; + QList<RoleNName> itemRoles; + QHash<QString, Qt::ItemDataRole> treeItemRoleHash; + + // first.first is primary role, first.second is shadow role. + // Shadow is used for either the translation source or the designer + // representation of the string value. + typedef QPair<QPair<Qt::ItemDataRole, Qt::ItemDataRole>, QString> TextRoleNName; + QList<TextRoleNName> itemTextRoles; + QHash<QString, QPair<Qt::ItemDataRole, Qt::ItemDataRole> > treeItemTextRoleHash; +}; +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +#endif // ABSTRACTFORMBUILDERPRIVATE_H diff --git a/src/designer/src/lib/uilib/formscriptrunner.cpp b/src/designer/src/lib/uilib/formscriptrunner.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8efb12f9e3c9b57367aab18a4cf9d7eac4965a5d --- /dev/null +++ b/src/designer/src/lib/uilib/formscriptrunner.cpp @@ -0,0 +1,208 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "formscriptrunner_p.h" +#include "formbuilderextra_p.h" +#include "ui4_p.h" + +#include <QtScript/QScriptEngine> +#include <QtWidgets/QWidget> +#include <QtCore/QDebug> +#include <QtCore/QCoreApplication> + +QT_BEGIN_NAMESPACE + +namespace { + enum { debugFormScriptRunner = 0 }; +} + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal { +#endif + +class QFormScriptRunner::QFormScriptRunnerPrivate { +public: + QFormScriptRunnerPrivate() : m_options(DisableScripts) {} + void clearErrors() { m_errors.clear(); } + + bool run(const QString &script, QWidget *widget, const WidgetList &children, QString *errorMessage); + + static void initializeEngine(QWidget *w, const WidgetList &children, QScriptEngine &scriptEngine); + static QString engineError(QScriptEngine &scriptEngine); + + Options options() const { return m_options; } + void setOptions(Options options) { m_options = options; } + + Errors errors() const { return m_errors; } +private: + QScriptEngine m_scriptEngine; + Options m_options; + Errors m_errors; +}; + +bool QFormScriptRunner::QFormScriptRunnerPrivate::run(const QString &script, QWidget *widget, const WidgetList &children, QString *errorMessage) { + bool rc = false; + initializeEngine(widget, children, m_scriptEngine); + + do { + m_scriptEngine.evaluate(script); + if (m_scriptEngine.hasUncaughtException ()) { + *errorMessage = QCoreApplication::tr("Exception at line %1: %2").arg(m_scriptEngine.uncaughtExceptionLineNumber()).arg(engineError(m_scriptEngine)); + break; + } + rc = true; + } while (false); + m_scriptEngine.popContext(); + + if (!rc) { + Error error; + error.objectName = widget->objectName(); + error.script = script; + error.errorMessage = *errorMessage; + m_errors.push_back(error); + } + return rc; +} + +void QFormScriptRunner::QFormScriptRunnerPrivate::initializeEngine(QWidget *w, const WidgetList &children, QScriptEngine &scriptEngine) { + // Populate the script variables. This pushes a context which must be popped. + QScriptContext *ctx = scriptEngine.pushContext(); + QScriptValue widgetObject = scriptEngine.newQObject(w); + QScriptValue childrenArray = scriptEngine.newArray (children.size()); + + for(int i = 0; i < children.size(); i++) { + childrenArray.setProperty(i, scriptEngine.newQObject(children[i])); + } + + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + ctx ->activationObject().setProperty(strings.scriptWidgetVariable, widgetObject); + ctx ->activationObject().setProperty(strings.scriptChildWidgetsVariable, childrenArray); +} + +QString QFormScriptRunner::QFormScriptRunnerPrivate::engineError(QScriptEngine &scriptEngine) { + QScriptValue error = scriptEngine.evaluate(QLatin1String("Error")); + if (error.isValid()) + return error.toString(); + return QCoreApplication::tr("Unknown error"); +} +// -- QFormScriptRunner + +QFormScriptRunner::QFormScriptRunner() : m_impl(new QFormScriptRunnerPrivate) +{ +} + +QFormScriptRunner::~QFormScriptRunner() +{ + delete m_impl; +} + +bool QFormScriptRunner::run(const DomWidget *domWidget, + const QString &customWidgetScript, + QWidget *widget, const WidgetList &children, + QString *errorMessage) +{ + typedef QList<DomScript*> DomScripts; + + const Options scriptOptions = m_impl->options(); + if (scriptOptions & DisableScripts) + return true; + // get list + const DomScripts domScripts = domWidget->elementScript(); + // Concatenate snippets, starting with custom widget script + QString script = customWidgetScript; + if (script.isEmpty() && domScripts.empty()) + return true; + + foreach (const DomScript *scriptSnippet, domScripts) { + // Ensure new line + if (!script.isEmpty() && !script.endsWith(QLatin1Char('\n'))) + script += QLatin1Char('\n'); + script += scriptSnippet->text(); + } + + if (script.isEmpty()) + return true; + + const bool rc = m_impl->run(script, widget, children, errorMessage); + + if (debugFormScriptRunner) { + qDebug() << "For " << widget << " with " << children.size() << " children, ran: " << script; + if (!rc) + qDebug() << *errorMessage; + } + + if (!rc) { + if (!(scriptOptions & DisableWarnings)) { + const QString message = QCoreApplication::tr("An error occurred while running the script for %1: %2\nScript: %3"). + arg(widget->objectName()).arg(*errorMessage).arg(script); + qWarning() << message; + } + } + return rc; +} + +QFormScriptRunner::Options QFormScriptRunner::options() const +{ + return m_impl->options(); +} + +void QFormScriptRunner::setOptions(Options options) +{ + m_impl->setOptions(options); +} + + +QFormScriptRunner::Errors QFormScriptRunner::errors() const +{ + return m_impl->errors(); +} + +void QFormScriptRunner::clearErrors() +{ + m_impl->clearErrors(); +} + + +#ifdef QFORMINTERNAL_NAMESPACE +} // namespace QFormInternal +#endif + +QT_END_NAMESPACE diff --git a/src/designer/src/lib/uilib/formscriptrunner_p.h b/src/designer/src/lib/uilib/formscriptrunner_p.h new file mode 100644 index 0000000000000000000000000000000000000000..f0a6a368c7fbb5a2ddaeb55be388795143761e83 --- /dev/null +++ b/src/designer/src/lib/uilib/formscriptrunner_p.h @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef FORMSCRIPTRUNNER_H +#define FORMSCRIPTRUNNER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "uilib_global.h" +#include <QtCore/QList> +#include <QtCore/QFlags> +#include <QtCore/QString> + +QT_BEGIN_NAMESPACE + +class QWidget; + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +class DomWidget; + +class QDESIGNER_UILIB_EXPORT QFormScriptRunner +{ +public: + QFormScriptRunner(); + ~QFormScriptRunner(); + + typedef QList<QWidget*> WidgetList; + + bool run(const DomWidget *domWidget, + const QString &customWidgetScript, + QWidget *widget, const WidgetList &children, + QString *errorMessage); + + struct Error { + QString objectName; + QString script; + QString errorMessage; + }; + typedef QList<Error> Errors; + Errors errors() const; + void clearErrors(); + + enum Option { + NoOptions = 0x0, + DisableWarnings = 0x1, + DisableScripts = 02 + }; + Q_DECLARE_FLAGS(Options, Option) + + Options options() const; + void setOptions(Options options); + +private: + class QFormScriptRunnerPrivate; + QFormScriptRunnerPrivate *m_impl; + + QFormScriptRunner(const QFormScriptRunner &); + void operator = (const QFormScriptRunner &); +}; + +Q_DECLARE_OPERATORS_FOR_FLAGS(QFormScriptRunner::Options) + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +#endif // FORMSCRIPTRUNNER_H diff --git a/src/designer/src/lib/uilib/properties.cpp b/src/designer/src/lib/uilib/properties.cpp new file mode 100644 index 0000000000000000000000000000000000000000..88cd455d65e33523faec209bd0b906c72b6622a6 --- /dev/null +++ b/src/designer/src/lib/uilib/properties.cpp @@ -0,0 +1,681 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "properties_p.h" +#include "ui4_p.h" +#include "abstractformbuilder.h" +#include "formbuilderextra_p.h" +#include "resourcebuilder_p.h" + +#include <QtCore/QDateTime> +#include <QtCore/QUrl> +#include <QtCore/qdebug.h> + +#include <QtWidgets/QIcon> +#include <QtGui/QPixmap> +#include <QtGui/QFont> +#include <QtWidgets/QFrame> +#include <QtWidgets/QAbstractScrollArea> + +QT_BEGIN_NAMESPACE + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +static inline void fixEnum(QString &s) +{ + int qualifierIndex = s.lastIndexOf(QLatin1Char(':')); + if (qualifierIndex == -1) + qualifierIndex = s.lastIndexOf(QLatin1Char('.')); + if (qualifierIndex != -1) + s.remove(0, qualifierIndex + 1); +} +// Convert complex DOM types with the help of QAbstractFormBuilder +QVariant domPropertyToVariant(QAbstractFormBuilder *afb,const QMetaObject *meta,const DomProperty *p) +{ + // Complex types that need functions from QAbstractFormBuilder + switch(p->kind()) { + case DomProperty::String: { + const int index = meta->indexOfProperty(p->attributeName().toUtf8()); + if (index != -1 && meta->property(index).type() == QVariant::KeySequence) + return QVariant::fromValue(QKeySequence(p->elementString()->text())); + } + break; + + case DomProperty::Palette: { + const DomPalette *dom = p->elementPalette(); + QPalette palette; + + if (dom->elementActive()) + afb->setupColorGroup(palette, QPalette::Active, dom->elementActive()); + + if (dom->elementInactive()) + afb->setupColorGroup(palette, QPalette::Inactive, dom->elementInactive()); + + if (dom->elementDisabled()) + afb->setupColorGroup(palette, QPalette::Disabled, dom->elementDisabled()); + + palette.setCurrentColorGroup(QPalette::Active); + return QVariant::fromValue(palette); + } + + case DomProperty::Set: { + const QByteArray pname = p->attributeName().toUtf8(); + const int index = meta->indexOfProperty(pname); + if (index == -1) { + uiLibWarning(QCoreApplication::translate("QFormBuilder", "The set-type property %1 could not be read.").arg(p->attributeName())); + return QVariant(); + } + + const QMetaEnum e = meta->property(index).enumerator(); + Q_ASSERT(e.isFlag() == true); + return QVariant(e.keysToValue(p->elementSet().toUtf8())); + } + + case DomProperty::Enum: { + const QByteArray pname = p->attributeName().toUtf8(); + const int index = meta->indexOfProperty(pname); + QString enumValue = p->elementEnum(); + // Triggers in case of objects in Designer like Spacer/Line for which properties + // are serialized using language introspection. On preview, however, these objects are + // emulated by hacks in the formbuilder (size policy/orientation) + fixEnum(enumValue); + if (index == -1) { + // ### special-casing for Line (QFrame) -- fix for 4.2. Jambi hack for enumerations + if (!qstrcmp(meta->className(), "QFrame") + && (pname == QByteArray("orientation"))) { + return QVariant(enumValue == QFormBuilderStrings::instance().horizontalPostFix ? QFrame::HLine : QFrame::VLine); + } else { + uiLibWarning(QCoreApplication::translate("QFormBuilder", "The enumeration-type property %1 could not be read.").arg(p->attributeName())); + return QVariant(); + } + } + + const QMetaEnum e = meta->property(index).enumerator(); + return QVariant(e.keyToValue(enumValue.toUtf8())); + } + case DomProperty::Brush: + return QVariant::fromValue(afb->setupBrush(p->elementBrush())); + default: + if (afb->resourceBuilder()->isResourceProperty(p)) { + return afb->resourceBuilder()->loadResource(afb->workingDirectory(), p); + } + + break; + } + + // simple type + return domPropertyToVariant(p); +} + +// Convert simple DOM types +QVariant domPropertyToVariant(const DomProperty *p) +{ + // requires non-const virtual nameToIcon, etc. + switch(p->kind()) { + case DomProperty::Bool: + return QVariant(p->elementBool() == QFormBuilderStrings::instance().trueValue); + + case DomProperty::Cstring: + return QVariant(p->elementCstring().toUtf8()); + + case DomProperty::Point: { + const DomPoint *point = p->elementPoint(); + return QVariant(QPoint(point->elementX(), point->elementY())); + } + + case DomProperty::PointF: { + const DomPointF *pointf = p->elementPointF(); + return QVariant(QPointF(pointf->elementX(), pointf->elementY())); + } + + case DomProperty::Size: { + const DomSize *size = p->elementSize(); + return QVariant(QSize(size->elementWidth(), size->elementHeight())); + } + + case DomProperty::SizeF: { + const DomSizeF *sizef = p->elementSizeF(); + return QVariant(QSizeF(sizef->elementWidth(), sizef->elementHeight())); + } + + case DomProperty::Rect: { + const DomRect *rc = p->elementRect(); + const QRect g(rc->elementX(), rc->elementY(), rc->elementWidth(), rc->elementHeight()); + return QVariant(g); + } + + case DomProperty::RectF: { + const DomRectF *rcf = p->elementRectF(); + const QRectF g(rcf->elementX(), rcf->elementY(), rcf->elementWidth(), rcf->elementHeight()); + return QVariant(g); + } + + case DomProperty::String: + return QVariant(p->elementString()->text()); + + case DomProperty::Number: + return QVariant(p->elementNumber()); + + case DomProperty::UInt: + return QVariant(p->elementUInt()); + + case DomProperty::LongLong: + return QVariant(p->elementLongLong()); + + case DomProperty::ULongLong: + return QVariant(p->elementULongLong()); + + case DomProperty::Double: + return QVariant(p->elementDouble()); + + case DomProperty::Char: { + const DomChar *character = p->elementChar(); + const QChar c(character->elementUnicode()); + return QVariant::fromValue(c); + } + + case DomProperty::Color: { + const DomColor *color = p->elementColor(); + QColor c(color->elementRed(), color->elementGreen(), color->elementBlue()); + if (color->hasAttributeAlpha()) + c.setAlpha(color->attributeAlpha()); + return QVariant::fromValue(c); + } + + case DomProperty::Font: { + const DomFont *font = p->elementFont(); + + QFont f; + if (font->hasElementFamily() && !font->elementFamily().isEmpty()) + f.setFamily(font->elementFamily()); + if (font->hasElementPointSize() && font->elementPointSize() > 0) + f.setPointSize(font->elementPointSize()); + if (font->hasElementWeight() && font->elementWeight() > 0) + f.setWeight(font->elementWeight()); + if (font->hasElementItalic()) + f.setItalic(font->elementItalic()); + if (font->hasElementBold()) + f.setBold(font->elementBold()); + if (font->hasElementUnderline()) + f.setUnderline(font->elementUnderline()); + if (font->hasElementStrikeOut()) + f.setStrikeOut(font->elementStrikeOut()); + if (font->hasElementKerning()) + f.setKerning(font->elementKerning()); + if (font->hasElementAntialiasing()) + f.setStyleStrategy(font->elementAntialiasing() ? QFont::PreferDefault : QFont::NoAntialias); + if (font->hasElementStyleStrategy()) { + f.setStyleStrategy(enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QFont::StyleStrategy>("styleStrategy", font->elementStyleStrategy().toLatin1())); + } + return QVariant::fromValue(f); + } + + case DomProperty::Date: { + const DomDate *date = p->elementDate(); + return QVariant(QDate(date->elementYear(), date->elementMonth(), date->elementDay())); + } + + case DomProperty::Time: { + const DomTime *t = p->elementTime(); + return QVariant(QTime(t->elementHour(), t->elementMinute(), t->elementSecond())); + } + + case DomProperty::DateTime: { + const DomDateTime *dateTime = p->elementDateTime(); + const QDate d(dateTime->elementYear(), dateTime->elementMonth(), dateTime->elementDay()); + const QTime tm(dateTime->elementHour(), dateTime->elementMinute(), dateTime->elementSecond()); + return QVariant(QDateTime(d, tm)); + } + + case DomProperty::Url: { + const DomUrl *url = p->elementUrl(); + return QVariant(QUrl(url->elementString()->text())); + } + +#ifndef QT_NO_CURSOR + case DomProperty::Cursor: + return QVariant::fromValue(QCursor(static_cast<Qt::CursorShape>(p->elementCursor()))); + + case DomProperty::CursorShape: + return QVariant::fromValue(QCursor(enumKeyOfObjectToValue<QAbstractFormBuilderGadget, Qt::CursorShape>("cursorShape", p->elementCursorShape().toLatin1()))); +#endif + + case DomProperty::Locale: { + const DomLocale *locale = p->elementLocale(); + return QVariant::fromValue(QLocale(enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QLocale::Language>("language", locale->attributeLanguage().toLatin1()), + enumKeyOfObjectToValue<QAbstractFormBuilderGadget, QLocale::Country>("country", locale->attributeCountry().toLatin1()))); + } + case DomProperty::SizePolicy: { + const DomSizePolicy *sizep = p->elementSizePolicy(); + + QSizePolicy sizePolicy; + sizePolicy.setHorizontalStretch(sizep->elementHorStretch()); + sizePolicy.setVerticalStretch(sizep->elementVerStretch()); + + const QMetaEnum sizeType_enum = metaEnum<QAbstractFormBuilderGadget>("sizeType"); + + if (sizep->hasElementHSizeType()) { + sizePolicy.setHorizontalPolicy((QSizePolicy::Policy) sizep->elementHSizeType()); + } else if (sizep->hasAttributeHSizeType()) { + const QSizePolicy::Policy sp = enumKeyToValue<QSizePolicy::Policy>(sizeType_enum, sizep->attributeHSizeType().toLatin1()); + sizePolicy.setHorizontalPolicy(sp); + } + + if (sizep->hasElementVSizeType()) { + sizePolicy.setVerticalPolicy((QSizePolicy::Policy) sizep->elementVSizeType()); + } else if (sizep->hasAttributeVSizeType()) { + const QSizePolicy::Policy sp = enumKeyToValue<QSizePolicy::Policy>(sizeType_enum, sizep->attributeVSizeType().toLatin1()); + sizePolicy.setVerticalPolicy(sp); + } + + return QVariant::fromValue(sizePolicy); + } + + case DomProperty::StringList: + return QVariant(p->elementStringList()->elementString()); + + default: + uiLibWarning(QCoreApplication::translate("QFormBuilder", "Reading properties of the type %1 is not supported yet.").arg(p->kind())); + break; + } + + return QVariant(); +} + +// Apply a simple variant type to a DOM property +static bool applySimpleProperty(const QVariant &v, bool translateString, DomProperty *dom_prop) +{ + switch (v.type()) { + case QVariant::String: { + DomString *str = new DomString(); + str->setText(v.toString()); + if (!translateString) + str->setAttributeNotr(QLatin1String("true")); + dom_prop->setElementString(str); + } + return true; + + case QVariant::ByteArray: + dom_prop->setElementCstring(QString::fromUtf8(v.toByteArray())); + return true; + + case QVariant::Int: + dom_prop->setElementNumber(v.toInt()); + return true; + + case QVariant::UInt: + dom_prop->setElementUInt(v.toUInt()); + return true; + + case QVariant::LongLong: + dom_prop->setElementLongLong(v.toLongLong()); + return true; + + case QVariant::ULongLong: + dom_prop->setElementULongLong(v.toULongLong()); + return true; + + case QVariant::Double: + dom_prop->setElementDouble(v.toDouble()); + return true; + + case QVariant::Bool: + dom_prop->setElementBool(v.toBool() ? QFormBuilderStrings::instance().trueValue : QFormBuilderStrings::instance().falseValue); + return true; + + case QVariant::Char: { + DomChar *ch = new DomChar(); + const QChar character = v.toChar(); + ch->setElementUnicode(character.unicode()); + dom_prop->setElementChar(ch); + } + return true; + + case QVariant::Point: { + DomPoint *pt = new DomPoint(); + const QPoint point = v.toPoint(); + pt->setElementX(point.x()); + pt->setElementY(point.y()); + dom_prop->setElementPoint(pt); + } + return true; + + case QVariant::PointF: { + DomPointF *ptf = new DomPointF(); + const QPointF pointf = v.toPointF(); + ptf->setElementX(pointf.x()); + ptf->setElementY(pointf.y()); + dom_prop->setElementPointF(ptf); + } + return true; + + case QVariant::Color: { + DomColor *clr = new DomColor(); + const QColor color = qvariant_cast<QColor>(v); + clr->setElementRed(color.red()); + clr->setElementGreen(color.green()); + clr->setElementBlue(color.blue()); + const int alphaChannel = color.alpha(); + if (alphaChannel != 255) + clr->setAttributeAlpha(alphaChannel); + dom_prop->setElementColor(clr); + } + return true; + + case QVariant::Size: { + DomSize *sz = new DomSize(); + const QSize size = v.toSize(); + sz->setElementWidth(size.width()); + sz->setElementHeight(size.height()); + dom_prop->setElementSize(sz); + } + return true; + + case QVariant::SizeF: { + DomSizeF *szf = new DomSizeF(); + const QSizeF sizef = v.toSizeF(); + szf->setElementWidth(sizef.width()); + szf->setElementHeight(sizef.height()); + dom_prop->setElementSizeF(szf); + } + return true; + + case QVariant::Rect: { + DomRect *rc = new DomRect(); + const QRect rect = v.toRect(); + rc->setElementX(rect.x()); + rc->setElementY(rect.y()); + rc->setElementWidth(rect.width()); + rc->setElementHeight(rect.height()); + dom_prop->setElementRect(rc); + } + return true; + + case QVariant::RectF: { + DomRectF *rcf = new DomRectF(); + const QRectF rectf = v.toRectF(); + rcf->setElementX(rectf.x()); + rcf->setElementY(rectf.y()); + rcf->setElementWidth(rectf.width()); + rcf->setElementHeight(rectf.height()); + dom_prop->setElementRectF(rcf); + } + return true; + + case QVariant::Font: { + DomFont *fnt = new DomFont(); + const QFont font = qvariant_cast<QFont>(v); + const uint mask = font.resolve(); + if (mask & QFont::WeightResolved) { + fnt->setElementBold(font.bold()); + fnt->setElementWeight(font.weight()); + } + if (mask & QFont::FamilyResolved) + fnt->setElementFamily(font.family()); + if (mask & QFont::StyleResolved) + fnt->setElementItalic(font.italic()); + if (mask & QFont::SizeResolved) + fnt->setElementPointSize(font.pointSize()); + if (mask & QFont::StrikeOutResolved) + fnt->setElementStrikeOut(font.strikeOut()); + if (mask & QFont::UnderlineResolved) + fnt->setElementUnderline(font.underline()); + if (mask & QFont::KerningResolved) + fnt->setElementKerning(font.kerning()); + if (mask & QFont::StyleStrategyResolved) { + const QMetaEnum styleStrategy_enum = metaEnum<QAbstractFormBuilderGadget>("styleStrategy"); + fnt->setElementStyleStrategy(QLatin1String(styleStrategy_enum.valueToKey(font.styleStrategy()))); + } + dom_prop->setElementFont(fnt); + } + return true; + +#ifndef QT_NO_CURSOR + case QVariant::Cursor: { + const QMetaEnum cursorShape_enum = metaEnum<QAbstractFormBuilderGadget>("cursorShape"); + dom_prop->setElementCursorShape(QLatin1String(cursorShape_enum.valueToKey(qvariant_cast<QCursor>(v).shape()))); + } + return true; +#endif + + case QVariant::KeySequence: { + DomString *s = new DomString(); + s->setText(qvariant_cast<QKeySequence>(v).toString(QKeySequence::PortableText)); + dom_prop->setElementString(s); + } + return true; + + case QVariant::Locale: { + DomLocale *dom = new DomLocale(); + const QLocale locale = qvariant_cast<QLocale>(v); + + const QMetaEnum language_enum = metaEnum<QAbstractFormBuilderGadget>("language"); + const QMetaEnum country_enum = metaEnum<QAbstractFormBuilderGadget>("country"); + + dom->setAttributeLanguage(QLatin1String(language_enum.valueToKey(locale.language()))); + dom->setAttributeCountry(QLatin1String(country_enum.valueToKey(locale.country()))); + + dom_prop->setElementLocale(dom); + } + return true; + + case QVariant::SizePolicy: { + DomSizePolicy *dom = new DomSizePolicy(); + const QSizePolicy sizePolicy = qvariant_cast<QSizePolicy>(v); + + dom->setElementHorStretch(sizePolicy.horizontalStretch()); + dom->setElementVerStretch(sizePolicy.verticalStretch()); + + const QMetaEnum sizeType_enum = metaEnum<QAbstractFormBuilderGadget>("sizeType"); + + dom->setAttributeHSizeType(QLatin1String(sizeType_enum.valueToKey(sizePolicy.horizontalPolicy()))); + dom->setAttributeVSizeType(QLatin1String(sizeType_enum.valueToKey(sizePolicy.verticalPolicy()))); + + dom_prop->setElementSizePolicy(dom); + } + return true; + + case QVariant::Date: { + DomDate *dom = new DomDate(); + const QDate date = qvariant_cast<QDate>(v); + + dom->setElementYear(date.year()); + dom->setElementMonth(date.month()); + dom->setElementDay(date.day()); + + dom_prop->setElementDate(dom); + } + return true; + + case QVariant::Time: { + DomTime *dom = new DomTime(); + const QTime time = qvariant_cast<QTime>(v); + + dom->setElementHour(time.hour()); + dom->setElementMinute(time.minute()); + dom->setElementSecond(time.second()); + + dom_prop->setElementTime(dom); + } + return true; + + case QVariant::DateTime: { + DomDateTime *dom = new DomDateTime(); + const QDateTime dateTime = qvariant_cast<QDateTime>(v); + + dom->setElementHour(dateTime.time().hour()); + dom->setElementMinute(dateTime.time().minute()); + dom->setElementSecond(dateTime.time().second()); + dom->setElementYear(dateTime.date().year()); + dom->setElementMonth(dateTime.date().month()); + dom->setElementDay(dateTime.date().day()); + + dom_prop->setElementDateTime(dom); + } + return true; + + case QVariant::Url: { + DomUrl *dom = new DomUrl(); + const QUrl url = v.toUrl(); + + DomString *str = new DomString(); + str->setText(url.toString()); + dom->setElementString(str); + + dom_prop->setElementUrl(dom); + } + return true; + + case QVariant::StringList: { + DomStringList *sl = new DomStringList; + sl->setElementString(qvariant_cast<QStringList>(v)); + dom_prop->setElementStringList(sl); + } + return true; + + default: + break; + } + + return false; +} +static QString msgCannotWriteProperty(const QString &pname, const QVariant &v) +{ + return QCoreApplication::translate("QFormBuilder", "The property %1 could not be written. The type %2 is not supported yet."). + arg(pname).arg(QLatin1String(v.typeName())); + +} + +static bool isOfType(const QMetaObject *what, const QMetaObject *type) +{ + do { + if (what == type) + return true; + } while ((what = what->superClass())); + return false; +} + +static bool isTranslatable(const QString &pname, const QVariant &v, const QMetaObject *meta) +{ + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + if (pname == strings.objectNameProperty) + return false; + if (pname == strings.styleSheetProperty && v.type() == QVariant::String && isOfType(meta, &QWidget::staticMetaObject)) + return false; + return true; +} + +// Convert complex variant types to DOM properties with the help of QAbstractFormBuilder +// Does not perform a check using QAbstractFormBuilder::checkProperty(). +DomProperty *variantToDomProperty(QAbstractFormBuilder *afb, const QMetaObject *meta, + const QString &pname, const QVariant &v) +{ + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + + DomProperty *dom_prop = new DomProperty(); + dom_prop->setAttributeName(pname); + + const int pindex = meta->indexOfProperty(pname.toLatin1()); + if (pindex != -1) { + QMetaProperty meta_property = meta->property(pindex); + if ((v.type() == QVariant::Int || v.type() == QVariant::UInt) && meta_property.isEnumType()) { + const QMetaEnum e = meta_property.enumerator(); + if (e.isFlag()) + dom_prop->setElementSet(QString::fromAscii(e.valueToKeys(v.toInt()))); + else + dom_prop->setElementEnum(QString::fromAscii(e.valueToKey(v.toInt()))); + return dom_prop; + } + if (!meta_property.hasStdCppSet() || (isOfType(meta, &QAbstractScrollArea::staticMetaObject) && pname == strings.cursorProperty)) + dom_prop->setAttributeStdset(0); + } + + // Try simple properties + if (applySimpleProperty(v, isTranslatable(pname, v, meta), dom_prop)) + return dom_prop; + + // Complex properties + switch (v.type()) { + case QVariant::Palette: { + DomPalette *dom = new DomPalette(); + QPalette palette = qvariant_cast<QPalette>(v); + + palette.setCurrentColorGroup(QPalette::Active); + dom->setElementActive(afb->saveColorGroup(palette)); + + palette.setCurrentColorGroup(QPalette::Inactive); + dom->setElementInactive(afb->saveColorGroup(palette)); + + palette.setCurrentColorGroup(QPalette::Disabled); + dom->setElementDisabled(afb->saveColorGroup(palette)); + + dom_prop->setElementPalette(dom); + } break; + case QVariant::Brush: + dom_prop->setElementBrush(afb->saveBrush(qvariant_cast<QBrush>(v))); + break; + default: { + const bool hadAttributeStdset = dom_prop->hasAttributeStdset(); + const bool attributeStdset = dom_prop->attributeStdset(); + delete dom_prop; + if (afb->resourceBuilder()->isResourceType(v)) { + dom_prop = afb->resourceBuilder()->saveResource(afb->workingDirectory(), v); + if (dom_prop) { + dom_prop->setAttributeName(pname); + if (hadAttributeStdset) + dom_prop->setAttributeStdset(attributeStdset); + } + break; + } + uiLibWarning(msgCannotWriteProperty(pname, v)); + } return 0; + } + return dom_prop; +} + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE diff --git a/src/designer/src/lib/uilib/properties_p.h b/src/designer/src/lib/uilib/properties_p.h new file mode 100644 index 0000000000000000000000000000000000000000..98b84fce9f435ebd3753f34c10d62dec62f97c51 --- /dev/null +++ b/src/designer/src/lib/uilib/properties_p.h @@ -0,0 +1,176 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#ifndef UILIBPROPERTIES_H +#define UILIBPROPERTIES_H + +#include "uilib_global.h" + +#include <QtCore/QObject> +#include <QtCore/QMetaProperty> +#include <QtCore/QLocale> +#include <QtCore/QCoreApplication> + +#include <QtWidgets/QWidget> + +#include "formbuilderextra_p.h" + +QT_BEGIN_NAMESPACE + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +class QAbstractFormBuilder; +class DomProperty; + +QDESIGNER_UILIB_EXPORT DomProperty *variantToDomProperty(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const QString &propertyName, const QVariant &value); + + +QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(const DomProperty *property); +QDESIGNER_UILIB_EXPORT QVariant domPropertyToVariant(QAbstractFormBuilder *abstractFormBuilder, const QMetaObject *meta, const DomProperty *property); + +// This class exists to provide meta information +// for enumerations only. +class QAbstractFormBuilderGadget: public QWidget +{ + Q_OBJECT + Q_PROPERTY(Qt::ItemFlags itemFlags READ fakeItemFlags) + Q_PROPERTY(Qt::CheckState checkState READ fakeCheckState) + Q_PROPERTY(Qt::Alignment textAlignment READ fakeAlignment) + Q_PROPERTY(Qt::Orientation orientation READ fakeOrientation) + Q_PROPERTY(QSizePolicy::Policy sizeType READ fakeSizeType) + Q_PROPERTY(QPalette::ColorRole colorRole READ fakeColorRole) + Q_PROPERTY(QPalette::ColorGroup colorGroup READ fakeColorGroup) + Q_PROPERTY(QFont::StyleStrategy styleStrategy READ fakeStyleStrategy) + Q_PROPERTY(Qt::CursorShape cursorShape READ fakeCursorShape) + Q_PROPERTY(Qt::BrushStyle brushStyle READ fakeBrushStyle) + Q_PROPERTY(Qt::ToolBarArea toolBarArea READ fakeToolBarArea) + Q_PROPERTY(QGradient::Type gradientType READ fakeGradientType) + Q_PROPERTY(QGradient::Spread gradientSpread READ fakeGradientSpread) + Q_PROPERTY(QGradient::CoordinateMode gradientCoordinate READ fakeGradientCoordinate) + Q_PROPERTY(QLocale::Language language READ fakeLanguage) + Q_PROPERTY(QLocale::Country country READ fakeCountry) +public: + QAbstractFormBuilderGadget() { Q_ASSERT(0); } + + Qt::Orientation fakeOrientation() const { Q_ASSERT(0); return Qt::Horizontal; } + QSizePolicy::Policy fakeSizeType() const { Q_ASSERT(0); return QSizePolicy::Expanding; } + QPalette::ColorGroup fakeColorGroup() const { Q_ASSERT(0); return static_cast<QPalette::ColorGroup>(0); } + QPalette::ColorRole fakeColorRole() const { Q_ASSERT(0); return static_cast<QPalette::ColorRole>(0); } + QFont::StyleStrategy fakeStyleStrategy() const { Q_ASSERT(0); return QFont::PreferDefault; } + Qt::CursorShape fakeCursorShape() const { Q_ASSERT(0); return Qt::ArrowCursor; } + Qt::BrushStyle fakeBrushStyle() const { Q_ASSERT(0); return Qt::NoBrush; } + Qt::ToolBarArea fakeToolBarArea() const { Q_ASSERT(0); return Qt::NoToolBarArea; } + QGradient::Type fakeGradientType() const { Q_ASSERT(0); return QGradient::NoGradient; } + QGradient::Spread fakeGradientSpread() const { Q_ASSERT(0); return QGradient::PadSpread; } + QGradient::CoordinateMode fakeGradientCoordinate() const { Q_ASSERT(0); return QGradient::LogicalMode; } + QLocale::Language fakeLanguage() const { Q_ASSERT(0); return QLocale::C; } + QLocale::Country fakeCountry() const { Q_ASSERT(0); return QLocale::AnyCountry; } + Qt::ItemFlags fakeItemFlags() const { Q_ASSERT(0); return Qt::NoItemFlags; } + Qt::CheckState fakeCheckState() const { Q_ASSERT(0); return Qt::Unchecked; } + Qt::Alignment fakeAlignment() const { Q_ASSERT(0); return Qt::AlignLeft; } +}; + +// Convert key to value for a given QMetaEnum +template <class EnumType> +inline EnumType enumKeyToValue(const QMetaEnum &metaEnum,const char *key, const EnumType* = 0) +{ + int val = metaEnum.keyToValue(key); + if (val == -1) { + + uiLibWarning(QCoreApplication::translate("QFormBuilder", "The enumeration-value '%1' is invalid. The default value '%2' will be used instead.") + .arg(QString::fromUtf8(key)).arg(QString::fromUtf8(metaEnum.key(0)))); + val = metaEnum.value(0); + } + return static_cast<EnumType>(val); +} + +// Convert keys to value for a given QMetaEnum +template <class EnumType> +inline EnumType enumKeysToValue(const QMetaEnum &metaEnum,const char *keys, const EnumType* = 0) +{ + int val = metaEnum.keysToValue(keys); + if (val == -1) { + + uiLibWarning(QCoreApplication::translate("QFormBuilder", "The flag-value '%1' is invalid. Zero will be used instead.") + .arg(QString::fromUtf8(keys))); + val = 0; + } + return static_cast<EnumType>(QFlag(val)); +} + +// Access meta enumeration object of a qobject +template <class QObjectType> +inline QMetaEnum metaEnum(const char *name, const QObjectType* = 0) +{ + const int e_index = QObjectType::staticMetaObject.indexOfProperty(name); + Q_ASSERT(e_index != -1); + return QObjectType::staticMetaObject.property(e_index).enumerator(); +} + +// Convert key to value for enumeration by name +template <class QObjectType, class EnumType> +inline EnumType enumKeyOfObjectToValue(const char *enumName, const char *key, const QObjectType* = 0, const EnumType* = 0) +{ + const QMetaEnum me = metaEnum<QObjectType>(enumName); + return enumKeyToValue<EnumType>(me, key); +} + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +#endif // UILIBPROPERTIES_H diff --git a/src/designer/src/lib/uilib/qdesignerexportwidget.h b/src/designer/src/lib/uilib/qdesignerexportwidget.h new file mode 100644 index 0000000000000000000000000000000000000000..54053ff274f11d51357e7262d680c49b88f18575 --- /dev/null +++ b/src/designer/src/lib/uilib/qdesignerexportwidget.h @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QDESIGNEREXPORTWIDGET_H +#define QDESIGNEREXPORTWIDGET_H + +#include <QtCore/QtGlobal> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +#if 0 +// pragma for syncqt, don't remove. +#pragma qt_class(QDesignerExportWidget) +#endif + +#if defined(QDESIGNER_EXPORT_WIDGETS) +# define QDESIGNER_WIDGET_EXPORT Q_DECL_EXPORT +#else +# define QDESIGNER_WIDGET_EXPORT Q_DECL_IMPORT +#endif + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif //QDESIGNEREXPORTWIDGET_H diff --git a/src/designer/src/lib/uilib/resourcebuilder.cpp b/src/designer/src/lib/uilib/resourcebuilder.cpp new file mode 100644 index 0000000000000000000000000000000000000000..72921c636bff1a942fb01c2c964cdc6a49660499 --- /dev/null +++ b/src/designer/src/lib/uilib/resourcebuilder.cpp @@ -0,0 +1,180 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "resourcebuilder_p.h" +#include "ui4_p.h" +#include <QtCore/QVariant> +#include <QtCore/QFileInfo> +#include <QtCore/QDir> +#include <QtCore/QDebug> +#include <QtGui/QPixmap> +#include <QtWidgets/QIcon> + +QT_BEGIN_NAMESPACE + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal { +#endif + +enum { themeDebug = 0 }; + +QResourceBuilder::QResourceBuilder() +{ + +} + +QResourceBuilder::~QResourceBuilder() +{ + +} + +int QResourceBuilder::iconStateFlags(const DomResourceIcon *dpi) +{ + int rc = 0; + if (dpi->hasElementNormalOff()) + rc |= NormalOff; + if (dpi->hasElementNormalOn()) + rc |= NormalOn; + if (dpi->hasElementDisabledOff()) + rc |= DisabledOff; + if (dpi->hasElementDisabledOn()) + rc |= DisabledOn; + if (dpi->hasElementActiveOff()) + rc |= ActiveOff; + if (dpi->hasElementActiveOn()) + rc |= ActiveOn; + if (dpi->hasElementSelectedOff()) + rc |= SelectedOff; + if (dpi->hasElementSelectedOn()) + rc |= SelectedOn; + return rc; +} + +QVariant QResourceBuilder::loadResource(const QDir &workingDirectory, const DomProperty *property) const +{ + switch (property->kind()) { + case DomProperty::Pixmap: { + const DomResourcePixmap *dpx = property->elementPixmap(); + QPixmap pixmap(QFileInfo(workingDirectory, dpx->text()).absoluteFilePath()); + return QVariant::fromValue(pixmap); + } + case DomProperty::IconSet: { + const DomResourceIcon *dpi = property->elementIconSet(); + if (!dpi->attributeTheme().isEmpty()) { + const QString theme = dpi->attributeTheme(); + const bool known = QIcon::hasThemeIcon(theme); + if (themeDebug) + qDebug("Theme %s known %d", qPrintable(theme), known); + if (known) + return qVariantFromValue(QIcon::fromTheme(dpi->attributeTheme())); + } // non-empty theme + if (const int flags = iconStateFlags(dpi)) { // new, post 4.4 format + QIcon icon; + if (flags & NormalOff) + icon.addFile(QFileInfo(workingDirectory, dpi->elementNormalOff()->text()).absoluteFilePath(), QSize(), QIcon::Normal, QIcon::Off); + if (flags & NormalOn) + icon.addFile(QFileInfo(workingDirectory, dpi->elementNormalOn()->text()).absoluteFilePath(), QSize(), QIcon::Normal, QIcon::On); + if (flags & DisabledOff) + icon.addFile(QFileInfo(workingDirectory, dpi->elementDisabledOff()->text()).absoluteFilePath(), QSize(), QIcon::Disabled, QIcon::Off); + if (flags & DisabledOn) + icon.addFile(QFileInfo(workingDirectory, dpi->elementDisabledOn()->text()).absoluteFilePath(), QSize(), QIcon::Disabled, QIcon::On); + if (flags & ActiveOff) + icon.addFile(QFileInfo(workingDirectory, dpi->elementActiveOff()->text()).absoluteFilePath(), QSize(), QIcon::Active, QIcon::Off); + if (flags & ActiveOn) + icon.addFile(QFileInfo(workingDirectory, dpi->elementActiveOn()->text()).absoluteFilePath(), QSize(), QIcon::Active, QIcon::On); + if (flags & SelectedOff) + icon.addFile(QFileInfo(workingDirectory, dpi->elementSelectedOff()->text()).absoluteFilePath(), QSize(), QIcon::Selected, QIcon::Off); + if (flags & SelectedOn) + icon.addFile(QFileInfo(workingDirectory, dpi->elementSelectedOn()->text()).absoluteFilePath(), QSize(), QIcon::Selected, QIcon::On); + return QVariant::fromValue(icon); + } else { // 4.3 legacy + const QIcon icon(QFileInfo(workingDirectory, dpi->text()).absoluteFilePath()); + return QVariant::fromValue(icon); + } + } + break; + default: + break; + } + return QVariant(); +} + +QVariant QResourceBuilder::toNativeValue(const QVariant &value) const +{ + return value; +} + +DomProperty *QResourceBuilder::saveResource(const QDir &workingDirectory, const QVariant &value) const +{ + Q_UNUSED(workingDirectory) + Q_UNUSED(value) + return 0; +} + +bool QResourceBuilder::isResourceProperty(const DomProperty *p) const +{ + switch (p->kind()) { + case DomProperty::Pixmap: + case DomProperty::IconSet: + return true; + default: + break; + } + return false; +} + +bool QResourceBuilder::isResourceType(const QVariant &value) const +{ + switch (value.type()) { + case QVariant::Pixmap: + case QVariant::Icon: + return true; + default: + break; + } + return false; +} + +#ifdef QFORMINTERNAL_NAMESPACE +} // namespace QFormInternal +#endif + +QT_END_NAMESPACE diff --git a/src/designer/src/lib/uilib/resourcebuilder_p.h b/src/designer/src/lib/uilib/resourcebuilder_p.h new file mode 100644 index 0000000000000000000000000000000000000000..ca699a05fa164673929dc579ccc290cf07100797 --- /dev/null +++ b/src/designer/src/lib/uilib/resourcebuilder_p.h @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef RESOURCEBUILDER_H +#define RESOURCEBUILDER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "uilib_global.h" +#include <QtCore/QList> +#include <QtCore/QString> + +QT_BEGIN_NAMESPACE + +class QDir; +class QVariant; + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +class DomProperty; +class DomResourceIcon; + +class QDESIGNER_UILIB_EXPORT QResourceBuilder +{ +public: + enum IconStateFlags { + NormalOff = 0x1, NormalOn = 0x2, DisabledOff = 0x4, DisabledOn = 0x8, + ActiveOff = 0x10, ActiveOn = 0x20, SelectedOff = 0x40, SelectedOn = 0x80 + }; + + QResourceBuilder(); + virtual ~QResourceBuilder(); + + virtual QVariant loadResource(const QDir &workingDirectory, const DomProperty *property) const; + + virtual QVariant toNativeValue(const QVariant &value) const; + + virtual DomProperty *saveResource(const QDir &workingDirectory, const QVariant &value) const; + + virtual bool isResourceProperty(const DomProperty *p) const; + + virtual bool isResourceType(const QVariant &value) const; + + static int iconStateFlags(const DomResourceIcon *resIcon); +}; + + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +#endif // RESOURCEBUILDER_H diff --git a/src/designer/src/lib/uilib/textbuilder.cpp b/src/designer/src/lib/uilib/textbuilder.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d9d2ac3b1a68a017eec6979dcbe88a73d5800062 --- /dev/null +++ b/src/designer/src/lib/uilib/textbuilder.cpp @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "textbuilder_p.h" +#include "ui4_p.h" +#include <QtCore/QVariant> + +QT_BEGIN_NAMESPACE + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal { +#endif + +QTextBuilder::QTextBuilder() +{ + +} + +QTextBuilder::~QTextBuilder() +{ + +} + +QVariant QTextBuilder::loadText(const DomProperty *property) const +{ + if (property->kind() == DomProperty::String) + return property->elementString()->text(); + return QVariant(); +} + +QVariant QTextBuilder::toNativeValue(const QVariant &value) const +{ + return value; +} + +DomProperty *QTextBuilder::saveText(const QVariant &value) const +{ + Q_UNUSED(value) + return 0; +} + +#ifdef QFORMINTERNAL_NAMESPACE +} // namespace QFormInternal +#endif + +QT_END_NAMESPACE diff --git a/src/designer/src/lib/uilib/textbuilder_p.h b/src/designer/src/lib/uilib/textbuilder_p.h new file mode 100644 index 0000000000000000000000000000000000000000..bef4a64f0f09e3a509fda7ceafb252d116755593 --- /dev/null +++ b/src/designer/src/lib/uilib/textbuilder_p.h @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef TEXTBUILDER_H +#define TEXTBUILDER_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include "uilib_global.h" +#include <QtCore/QList> +#include <QtCore/QString> + +QT_BEGIN_NAMESPACE + +class QDir; +class QVariant; + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +class DomProperty; +class DomString; + +class QDESIGNER_UILIB_EXPORT QTextBuilder +{ +public: + QTextBuilder(); + virtual ~QTextBuilder(); + + virtual QVariant loadText(const DomProperty *property) const; + + virtual QVariant toNativeValue(const QVariant &value) const; + + virtual DomProperty *saveText(const QVariant &value) const; +}; + + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +#endif // TEXTBUILDER_H diff --git a/src/designer/src/lib/uilib/ui4.cpp b/src/designer/src/lib/uilib/ui4.cpp new file mode 100644 index 0000000000000000000000000000000000000000..5c232c862c65073b7eed4ff39461142b63dccc86 --- /dev/null +++ b/src/designer/src/lib/uilib/ui4.cpp @@ -0,0 +1,8907 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#include "ui4_p.h" + + +QT_BEGIN_NAMESPACE +#ifdef QFORMINTERNAL_NAMESPACE +using namespace QFormInternal; +#endif + +/******************************************************************************* +** Implementations +*/ + +void DomUI::clear(bool clear_all) +{ + delete m_widget; + delete m_layoutDefault; + delete m_layoutFunction; + delete m_customWidgets; + delete m_tabStops; + delete m_images; + delete m_includes; + delete m_resources; + delete m_connections; + delete m_designerdata; + delete m_slots; + delete m_buttonGroups; + + if (clear_all) { + m_text.clear(); + m_has_attr_version = false; + m_has_attr_language = false; + m_has_attr_displayname = false; + m_has_attr_stdsetdef = false; + m_attr_stdsetdef = 0; + m_has_attr_stdSetDef = false; + m_attr_stdSetDef = 0; + } + + m_children = 0; + m_widget = 0; + m_layoutDefault = 0; + m_layoutFunction = 0; + m_customWidgets = 0; + m_tabStops = 0; + m_images = 0; + m_includes = 0; + m_resources = 0; + m_connections = 0; + m_designerdata = 0; + m_slots = 0; + m_buttonGroups = 0; +} + +DomUI::DomUI() +{ + m_children = 0; + m_has_attr_version = false; + m_has_attr_language = false; + m_has_attr_displayname = false; + m_has_attr_stdsetdef = false; + m_attr_stdsetdef = 0; + m_has_attr_stdSetDef = false; + m_attr_stdSetDef = 0; + m_widget = 0; + m_layoutDefault = 0; + m_layoutFunction = 0; + m_customWidgets = 0; + m_tabStops = 0; + m_images = 0; + m_includes = 0; + m_resources = 0; + m_connections = 0; + m_designerdata = 0; + m_slots = 0; + m_buttonGroups = 0; +} + +DomUI::~DomUI() +{ + delete m_widget; + delete m_layoutDefault; + delete m_layoutFunction; + delete m_customWidgets; + delete m_tabStops; + delete m_images; + delete m_includes; + delete m_resources; + delete m_connections; + delete m_designerdata; + delete m_slots; + delete m_buttonGroups; +} + +void DomUI::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("version")) { + setAttributeVersion(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("language")) { + setAttributeLanguage(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("displayname")) { + setAttributeDisplayname(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("stdsetdef")) { + setAttributeStdsetdef(attribute.value().toString().toInt()); + continue; + } + if (name == QStringLiteral("stdSetDef")) { + setAttributeStdSetDef(attribute.value().toString().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("author")) { + setElementAuthor(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("comment")) { + setElementComment(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("exportmacro")) { + setElementExportMacro(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("class")) { + setElementClass(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("widget")) { + DomWidget *v = new DomWidget(); + v->read(reader); + setElementWidget(v); + continue; + } + if (tag == QStringLiteral("layoutdefault")) { + DomLayoutDefault *v = new DomLayoutDefault(); + v->read(reader); + setElementLayoutDefault(v); + continue; + } + if (tag == QStringLiteral("layoutfunction")) { + DomLayoutFunction *v = new DomLayoutFunction(); + v->read(reader); + setElementLayoutFunction(v); + continue; + } + if (tag == QStringLiteral("pixmapfunction")) { + setElementPixmapFunction(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("customwidgets")) { + DomCustomWidgets *v = new DomCustomWidgets(); + v->read(reader); + setElementCustomWidgets(v); + continue; + } + if (tag == QStringLiteral("tabstops")) { + DomTabStops *v = new DomTabStops(); + v->read(reader); + setElementTabStops(v); + continue; + } + if (tag == QStringLiteral("images")) { + DomImages *v = new DomImages(); + v->read(reader); + setElementImages(v); + continue; + } + if (tag == QStringLiteral("includes")) { + DomIncludes *v = new DomIncludes(); + v->read(reader); + setElementIncludes(v); + continue; + } + if (tag == QStringLiteral("resources")) { + DomResources *v = new DomResources(); + v->read(reader); + setElementResources(v); + continue; + } + if (tag == QStringLiteral("connections")) { + DomConnections *v = new DomConnections(); + v->read(reader); + setElementConnections(v); + continue; + } + if (tag == QStringLiteral("designerdata")) { + DomDesignerData *v = new DomDesignerData(); + v->read(reader); + setElementDesignerdata(v); + continue; + } + if (tag == QStringLiteral("slots")) { + DomSlots *v = new DomSlots(); + v->read(reader); + setElementSlots(v); + continue; + } + if (tag == QStringLiteral("buttongroups")) { + DomButtonGroups *v = new DomButtonGroups(); + v->read(reader); + setElementButtonGroups(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomUI::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("ui") : tagName.toLower()); + + if (hasAttributeVersion()) + writer.writeAttribute(QStringLiteral("version"), attributeVersion()); + + if (hasAttributeLanguage()) + writer.writeAttribute(QStringLiteral("language"), attributeLanguage()); + + if (hasAttributeDisplayname()) + writer.writeAttribute(QStringLiteral("displayname"), attributeDisplayname()); + + if (hasAttributeStdsetdef()) + writer.writeAttribute(QStringLiteral("stdsetdef"), QString::number(attributeStdsetdef())); + + if (hasAttributeStdSetDef()) + writer.writeAttribute(QStringLiteral("stdsetdef"), QString::number(attributeStdSetDef())); + + if (m_children & Author) { + writer.writeTextElement(QStringLiteral("author"), m_author); + } + + if (m_children & Comment) { + writer.writeTextElement(QStringLiteral("comment"), m_comment); + } + + if (m_children & ExportMacro) { + writer.writeTextElement(QStringLiteral("exportmacro"), m_exportMacro); + } + + if (m_children & Class) { + writer.writeTextElement(QStringLiteral("class"), m_class); + } + + if (m_children & Widget) { + m_widget->write(writer, QStringLiteral("widget")); + } + + if (m_children & LayoutDefault) { + m_layoutDefault->write(writer, QStringLiteral("layoutdefault")); + } + + if (m_children & LayoutFunction) { + m_layoutFunction->write(writer, QStringLiteral("layoutfunction")); + } + + if (m_children & PixmapFunction) { + writer.writeTextElement(QStringLiteral("pixmapfunction"), m_pixmapFunction); + } + + if (m_children & CustomWidgets) { + m_customWidgets->write(writer, QStringLiteral("customwidgets")); + } + + if (m_children & TabStops) { + m_tabStops->write(writer, QStringLiteral("tabstops")); + } + + if (m_children & Images) { + m_images->write(writer, QStringLiteral("images")); + } + + if (m_children & Includes) { + m_includes->write(writer, QStringLiteral("includes")); + } + + if (m_children & Resources) { + m_resources->write(writer, QStringLiteral("resources")); + } + + if (m_children & Connections) { + m_connections->write(writer, QStringLiteral("connections")); + } + + if (m_children & Designerdata) { + m_designerdata->write(writer, QStringLiteral("designerdata")); + } + + if (m_children & Slots) { + m_slots->write(writer, QStringLiteral("slots")); + } + + if (m_children & ButtonGroups) { + m_buttonGroups->write(writer, QStringLiteral("buttongroups")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomUI::setElementAuthor(const QString& a) +{ + m_children |= Author; + m_author = a; +} + +void DomUI::setElementComment(const QString& a) +{ + m_children |= Comment; + m_comment = a; +} + +void DomUI::setElementExportMacro(const QString& a) +{ + m_children |= ExportMacro; + m_exportMacro = a; +} + +void DomUI::setElementClass(const QString& a) +{ + m_children |= Class; + m_class = a; +} + +DomWidget* DomUI::takeElementWidget() +{ + DomWidget* a = m_widget; + m_widget = 0; + m_children ^= Widget; + return a; +} + +void DomUI::setElementWidget(DomWidget* a) +{ + delete m_widget; + m_children |= Widget; + m_widget = a; +} + +DomLayoutDefault* DomUI::takeElementLayoutDefault() +{ + DomLayoutDefault* a = m_layoutDefault; + m_layoutDefault = 0; + m_children ^= LayoutDefault; + return a; +} + +void DomUI::setElementLayoutDefault(DomLayoutDefault* a) +{ + delete m_layoutDefault; + m_children |= LayoutDefault; + m_layoutDefault = a; +} + +DomLayoutFunction* DomUI::takeElementLayoutFunction() +{ + DomLayoutFunction* a = m_layoutFunction; + m_layoutFunction = 0; + m_children ^= LayoutFunction; + return a; +} + +void DomUI::setElementLayoutFunction(DomLayoutFunction* a) +{ + delete m_layoutFunction; + m_children |= LayoutFunction; + m_layoutFunction = a; +} + +void DomUI::setElementPixmapFunction(const QString& a) +{ + m_children |= PixmapFunction; + m_pixmapFunction = a; +} + +DomCustomWidgets* DomUI::takeElementCustomWidgets() +{ + DomCustomWidgets* a = m_customWidgets; + m_customWidgets = 0; + m_children ^= CustomWidgets; + return a; +} + +void DomUI::setElementCustomWidgets(DomCustomWidgets* a) +{ + delete m_customWidgets; + m_children |= CustomWidgets; + m_customWidgets = a; +} + +DomTabStops* DomUI::takeElementTabStops() +{ + DomTabStops* a = m_tabStops; + m_tabStops = 0; + m_children ^= TabStops; + return a; +} + +void DomUI::setElementTabStops(DomTabStops* a) +{ + delete m_tabStops; + m_children |= TabStops; + m_tabStops = a; +} + +DomImages* DomUI::takeElementImages() +{ + DomImages* a = m_images; + m_images = 0; + m_children ^= Images; + return a; +} + +void DomUI::setElementImages(DomImages* a) +{ + delete m_images; + m_children |= Images; + m_images = a; +} + +DomIncludes* DomUI::takeElementIncludes() +{ + DomIncludes* a = m_includes; + m_includes = 0; + m_children ^= Includes; + return a; +} + +void DomUI::setElementIncludes(DomIncludes* a) +{ + delete m_includes; + m_children |= Includes; + m_includes = a; +} + +DomResources* DomUI::takeElementResources() +{ + DomResources* a = m_resources; + m_resources = 0; + m_children ^= Resources; + return a; +} + +void DomUI::setElementResources(DomResources* a) +{ + delete m_resources; + m_children |= Resources; + m_resources = a; +} + +DomConnections* DomUI::takeElementConnections() +{ + DomConnections* a = m_connections; + m_connections = 0; + m_children ^= Connections; + return a; +} + +void DomUI::setElementConnections(DomConnections* a) +{ + delete m_connections; + m_children |= Connections; + m_connections = a; +} + +DomDesignerData* DomUI::takeElementDesignerdata() +{ + DomDesignerData* a = m_designerdata; + m_designerdata = 0; + m_children ^= Designerdata; + return a; +} + +void DomUI::setElementDesignerdata(DomDesignerData* a) +{ + delete m_designerdata; + m_children |= Designerdata; + m_designerdata = a; +} + +DomSlots* DomUI::takeElementSlots() +{ + DomSlots* a = m_slots; + m_slots = 0; + m_children ^= Slots; + return a; +} + +void DomUI::setElementSlots(DomSlots* a) +{ + delete m_slots; + m_children |= Slots; + m_slots = a; +} + +DomButtonGroups* DomUI::takeElementButtonGroups() +{ + DomButtonGroups* a = m_buttonGroups; + m_buttonGroups = 0; + m_children ^= ButtonGroups; + return a; +} + +void DomUI::setElementButtonGroups(DomButtonGroups* a) +{ + delete m_buttonGroups; + m_children |= ButtonGroups; + m_buttonGroups = a; +} + +void DomUI::clearElementAuthor() +{ + m_children &= ~Author; +} + +void DomUI::clearElementComment() +{ + m_children &= ~Comment; +} + +void DomUI::clearElementExportMacro() +{ + m_children &= ~ExportMacro; +} + +void DomUI::clearElementClass() +{ + m_children &= ~Class; +} + +void DomUI::clearElementWidget() +{ + delete m_widget; + m_widget = 0; + m_children &= ~Widget; +} + +void DomUI::clearElementLayoutDefault() +{ + delete m_layoutDefault; + m_layoutDefault = 0; + m_children &= ~LayoutDefault; +} + +void DomUI::clearElementLayoutFunction() +{ + delete m_layoutFunction; + m_layoutFunction = 0; + m_children &= ~LayoutFunction; +} + +void DomUI::clearElementPixmapFunction() +{ + m_children &= ~PixmapFunction; +} + +void DomUI::clearElementCustomWidgets() +{ + delete m_customWidgets; + m_customWidgets = 0; + m_children &= ~CustomWidgets; +} + +void DomUI::clearElementTabStops() +{ + delete m_tabStops; + m_tabStops = 0; + m_children &= ~TabStops; +} + +void DomUI::clearElementImages() +{ + delete m_images; + m_images = 0; + m_children &= ~Images; +} + +void DomUI::clearElementIncludes() +{ + delete m_includes; + m_includes = 0; + m_children &= ~Includes; +} + +void DomUI::clearElementResources() +{ + delete m_resources; + m_resources = 0; + m_children &= ~Resources; +} + +void DomUI::clearElementConnections() +{ + delete m_connections; + m_connections = 0; + m_children &= ~Connections; +} + +void DomUI::clearElementDesignerdata() +{ + delete m_designerdata; + m_designerdata = 0; + m_children &= ~Designerdata; +} + +void DomUI::clearElementSlots() +{ + delete m_slots; + m_slots = 0; + m_children &= ~Slots; +} + +void DomUI::clearElementButtonGroups() +{ + delete m_buttonGroups; + m_buttonGroups = 0; + m_children &= ~ButtonGroups; +} + +void DomIncludes::clear(bool clear_all) +{ + qDeleteAll(m_include); + m_include.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomIncludes::DomIncludes() +{ + m_children = 0; +} + +DomIncludes::~DomIncludes() +{ + qDeleteAll(m_include); + m_include.clear(); +} + +void DomIncludes::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("include")) { + DomInclude *v = new DomInclude(); + v->read(reader); + m_include.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomIncludes::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("includes") : tagName.toLower()); + + for (int i = 0; i < m_include.size(); ++i) { + DomInclude* v = m_include[i]; + v->write(writer, QStringLiteral("include")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomIncludes::setElementInclude(const QList<DomInclude*>& a) +{ + m_children |= Include; + m_include = a; +} + +void DomInclude::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_location = false; + m_has_attr_impldecl = false; + } + + m_children = 0; +} + +DomInclude::DomInclude() +{ + m_children = 0; + m_has_attr_location = false; + m_has_attr_impldecl = false; + m_text.clear(); +} + +DomInclude::~DomInclude() +{ +} + +void DomInclude::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("location")) { + setAttributeLocation(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("impldecl")) { + setAttributeImpldecl(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomInclude::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("include") : tagName.toLower()); + + if (hasAttributeLocation()) + writer.writeAttribute(QStringLiteral("location"), attributeLocation()); + + if (hasAttributeImpldecl()) + writer.writeAttribute(QStringLiteral("impldecl"), attributeImpldecl()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomResources::clear(bool clear_all) +{ + qDeleteAll(m_include); + m_include.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + } + + m_children = 0; +} + +DomResources::DomResources() +{ + m_children = 0; + m_has_attr_name = false; +} + +DomResources::~DomResources() +{ + qDeleteAll(m_include); + m_include.clear(); +} + +void DomResources::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("include")) { + DomResource *v = new DomResource(); + v->read(reader); + m_include.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomResources::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resources") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + for (int i = 0; i < m_include.size(); ++i) { + DomResource* v = m_include[i]; + v->write(writer, QStringLiteral("include")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomResources::setElementInclude(const QList<DomResource*>& a) +{ + m_children |= Include; + m_include = a; +} + +void DomResource::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_location = false; + } + + m_children = 0; +} + +DomResource::DomResource() +{ + m_children = 0; + m_has_attr_location = false; +} + +DomResource::~DomResource() +{ +} + +void DomResource::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("location")) { + setAttributeLocation(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomResource::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resource") : tagName.toLower()); + + if (hasAttributeLocation()) + writer.writeAttribute(QStringLiteral("location"), attributeLocation()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomActionGroup::clear(bool clear_all) +{ + qDeleteAll(m_action); + m_action.clear(); + qDeleteAll(m_actionGroup); + m_actionGroup.clear(); + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + } + + m_children = 0; +} + +DomActionGroup::DomActionGroup() +{ + m_children = 0; + m_has_attr_name = false; +} + +DomActionGroup::~DomActionGroup() +{ + qDeleteAll(m_action); + m_action.clear(); + qDeleteAll(m_actionGroup); + m_actionGroup.clear(); + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); +} + +void DomActionGroup::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("action")) { + DomAction *v = new DomAction(); + v->read(reader); + m_action.append(v); + continue; + } + if (tag == QStringLiteral("actiongroup")) { + DomActionGroup *v = new DomActionGroup(); + v->read(reader); + m_actionGroup.append(v); + continue; + } + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + if (tag == QStringLiteral("attribute")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_attribute.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomActionGroup::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("actiongroup") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + for (int i = 0; i < m_action.size(); ++i) { + DomAction* v = m_action[i]; + v->write(writer, QStringLiteral("action")); + } + for (int i = 0; i < m_actionGroup.size(); ++i) { + DomActionGroup* v = m_actionGroup[i]; + v->write(writer, QStringLiteral("actiongroup")); + } + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + for (int i = 0; i < m_attribute.size(); ++i) { + DomProperty* v = m_attribute[i]; + v->write(writer, QStringLiteral("attribute")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomActionGroup::setElementAction(const QList<DomAction*>& a) +{ + m_children |= Action; + m_action = a; +} + +void DomActionGroup::setElementActionGroup(const QList<DomActionGroup*>& a) +{ + m_children |= ActionGroup; + m_actionGroup = a; +} + +void DomActionGroup::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomActionGroup::setElementAttribute(const QList<DomProperty*>& a) +{ + m_children |= Attribute; + m_attribute = a; +} + +void DomAction::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + m_has_attr_menu = false; + } + + m_children = 0; +} + +DomAction::DomAction() +{ + m_children = 0; + m_has_attr_name = false; + m_has_attr_menu = false; +} + +DomAction::~DomAction() +{ + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); +} + +void DomAction::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("menu")) { + setAttributeMenu(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + if (tag == QStringLiteral("attribute")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_attribute.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomAction::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("action") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + if (hasAttributeMenu()) + writer.writeAttribute(QStringLiteral("menu"), attributeMenu()); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + for (int i = 0; i < m_attribute.size(); ++i) { + DomProperty* v = m_attribute[i]; + v->write(writer, QStringLiteral("attribute")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomAction::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomAction::setElementAttribute(const QList<DomProperty*>& a) +{ + m_children |= Attribute; + m_attribute = a; +} + +void DomActionRef::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + } + + m_children = 0; +} + +DomActionRef::DomActionRef() +{ + m_children = 0; + m_has_attr_name = false; +} + +DomActionRef::~DomActionRef() +{ +} + +void DomActionRef::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomActionRef::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("actionref") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomButtonGroup::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + } + + m_children = 0; +} + +DomButtonGroup::DomButtonGroup() +{ + m_children = 0; + m_has_attr_name = false; +} + +DomButtonGroup::~DomButtonGroup() +{ + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); +} + +void DomButtonGroup::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + if (tag == QStringLiteral("attribute")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_attribute.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomButtonGroup::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("buttongroup") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + for (int i = 0; i < m_attribute.size(); ++i) { + DomProperty* v = m_attribute[i]; + v->write(writer, QStringLiteral("attribute")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomButtonGroup::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomButtonGroup::setElementAttribute(const QList<DomProperty*>& a) +{ + m_children |= Attribute; + m_attribute = a; +} + +void DomButtonGroups::clear(bool clear_all) +{ + qDeleteAll(m_buttonGroup); + m_buttonGroup.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomButtonGroups::DomButtonGroups() +{ + m_children = 0; +} + +DomButtonGroups::~DomButtonGroups() +{ + qDeleteAll(m_buttonGroup); + m_buttonGroup.clear(); +} + +void DomButtonGroups::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("buttongroup")) { + DomButtonGroup *v = new DomButtonGroup(); + v->read(reader); + m_buttonGroup.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomButtonGroups::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("buttongroups") : tagName.toLower()); + + for (int i = 0; i < m_buttonGroup.size(); ++i) { + DomButtonGroup* v = m_buttonGroup[i]; + v->write(writer, QStringLiteral("buttongroup")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomButtonGroups::setElementButtonGroup(const QList<DomButtonGroup*>& a) +{ + m_children |= ButtonGroup; + m_buttonGroup = a; +} + +void DomImages::clear(bool clear_all) +{ + qDeleteAll(m_image); + m_image.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomImages::DomImages() +{ + m_children = 0; +} + +DomImages::~DomImages() +{ + qDeleteAll(m_image); + m_image.clear(); +} + +void DomImages::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("image")) { + DomImage *v = new DomImage(); + v->read(reader); + m_image.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomImages::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("images") : tagName.toLower()); + + for (int i = 0; i < m_image.size(); ++i) { + DomImage* v = m_image[i]; + v->write(writer, QStringLiteral("image")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomImages::setElementImage(const QList<DomImage*>& a) +{ + m_children |= Image; + m_image = a; +} + +void DomImage::clear(bool clear_all) +{ + delete m_data; + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + } + + m_children = 0; + m_data = 0; +} + +DomImage::DomImage() +{ + m_children = 0; + m_has_attr_name = false; + m_data = 0; +} + +DomImage::~DomImage() +{ + delete m_data; +} + +void DomImage::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("data")) { + DomImageData *v = new DomImageData(); + v->read(reader); + setElementData(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomImage::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("image") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + if (m_children & Data) { + m_data->write(writer, QStringLiteral("data")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +DomImageData* DomImage::takeElementData() +{ + DomImageData* a = m_data; + m_data = 0; + m_children ^= Data; + return a; +} + +void DomImage::setElementData(DomImageData* a) +{ + delete m_data; + m_children |= Data; + m_data = a; +} + +void DomImage::clearElementData() +{ + delete m_data; + m_data = 0; + m_children &= ~Data; +} + +void DomImageData::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_format = false; + m_has_attr_length = false; + m_attr_length = 0; + } + + m_children = 0; +} + +DomImageData::DomImageData() +{ + m_children = 0; + m_has_attr_format = false; + m_has_attr_length = false; + m_attr_length = 0; + m_text.clear(); +} + +DomImageData::~DomImageData() +{ +} + +void DomImageData::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("format")) { + setAttributeFormat(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("length")) { + setAttributeLength(attribute.value().toString().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomImageData::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("imagedata") : tagName.toLower()); + + if (hasAttributeFormat()) + writer.writeAttribute(QStringLiteral("format"), attributeFormat()); + + if (hasAttributeLength()) + writer.writeAttribute(QStringLiteral("length"), QString::number(attributeLength())); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomCustomWidgets::clear(bool clear_all) +{ + qDeleteAll(m_customWidget); + m_customWidget.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomCustomWidgets::DomCustomWidgets() +{ + m_children = 0; +} + +DomCustomWidgets::~DomCustomWidgets() +{ + qDeleteAll(m_customWidget); + m_customWidget.clear(); +} + +void DomCustomWidgets::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("customwidget")) { + DomCustomWidget *v = new DomCustomWidget(); + v->read(reader); + m_customWidget.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomCustomWidgets::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("customwidgets") : tagName.toLower()); + + for (int i = 0; i < m_customWidget.size(); ++i) { + DomCustomWidget* v = m_customWidget[i]; + v->write(writer, QStringLiteral("customwidget")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomCustomWidgets::setElementCustomWidget(const QList<DomCustomWidget*>& a) +{ + m_children |= CustomWidget; + m_customWidget = a; +} + +void DomHeader::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_location = false; + } + + m_children = 0; +} + +DomHeader::DomHeader() +{ + m_children = 0; + m_has_attr_location = false; + m_text.clear(); +} + +DomHeader::~DomHeader() +{ +} + +void DomHeader::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("location")) { + setAttributeLocation(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomHeader::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("header") : tagName.toLower()); + + if (hasAttributeLocation()) + writer.writeAttribute(QStringLiteral("location"), attributeLocation()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomCustomWidget::clear(bool clear_all) +{ + delete m_header; + delete m_sizeHint; + delete m_sizePolicy; + delete m_script; + delete m_properties; + delete m_slots; + delete m_propertyspecifications; + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_header = 0; + m_sizeHint = 0; + m_container = 0; + m_sizePolicy = 0; + m_script = 0; + m_properties = 0; + m_slots = 0; + m_propertyspecifications = 0; +} + +DomCustomWidget::DomCustomWidget() +{ + m_children = 0; + m_header = 0; + m_sizeHint = 0; + m_container = 0; + m_sizePolicy = 0; + m_script = 0; + m_properties = 0; + m_slots = 0; + m_propertyspecifications = 0; +} + +DomCustomWidget::~DomCustomWidget() +{ + delete m_header; + delete m_sizeHint; + delete m_sizePolicy; + delete m_script; + delete m_properties; + delete m_slots; + delete m_propertyspecifications; +} + +void DomCustomWidget::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("class")) { + setElementClass(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("extends")) { + setElementExtends(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("header")) { + DomHeader *v = new DomHeader(); + v->read(reader); + setElementHeader(v); + continue; + } + if (tag == QStringLiteral("sizehint")) { + DomSize *v = new DomSize(); + v->read(reader); + setElementSizeHint(v); + continue; + } + if (tag == QStringLiteral("addpagemethod")) { + setElementAddPageMethod(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("container")) { + setElementContainer(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("sizepolicy")) { + DomSizePolicyData *v = new DomSizePolicyData(); + v->read(reader); + setElementSizePolicy(v); + continue; + } + if (tag == QStringLiteral("pixmap")) { + setElementPixmap(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("script")) { + DomScript *v = new DomScript(); + v->read(reader); + setElementScript(v); + continue; + } + if (tag == QStringLiteral("properties")) { + DomProperties *v = new DomProperties(); + v->read(reader); + setElementProperties(v); + continue; + } + if (tag == QStringLiteral("slots")) { + DomSlots *v = new DomSlots(); + v->read(reader); + setElementSlots(v); + continue; + } + if (tag == QStringLiteral("propertyspecifications")) { + DomPropertySpecifications *v = new DomPropertySpecifications(); + v->read(reader); + setElementPropertyspecifications(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomCustomWidget::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("customwidget") : tagName.toLower()); + + if (m_children & Class) { + writer.writeTextElement(QStringLiteral("class"), m_class); + } + + if (m_children & Extends) { + writer.writeTextElement(QStringLiteral("extends"), m_extends); + } + + if (m_children & Header) { + m_header->write(writer, QStringLiteral("header")); + } + + if (m_children & SizeHint) { + m_sizeHint->write(writer, QStringLiteral("sizehint")); + } + + if (m_children & AddPageMethod) { + writer.writeTextElement(QStringLiteral("addpagemethod"), m_addPageMethod); + } + + if (m_children & Container) { + writer.writeTextElement(QStringLiteral("container"), QString::number(m_container)); + } + + if (m_children & SizePolicy) { + m_sizePolicy->write(writer, QStringLiteral("sizepolicy")); + } + + if (m_children & Pixmap) { + writer.writeTextElement(QStringLiteral("pixmap"), m_pixmap); + } + + if (m_children & Script) { + m_script->write(writer, QStringLiteral("script")); + } + + if (m_children & Properties) { + m_properties->write(writer, QStringLiteral("properties")); + } + + if (m_children & Slots) { + m_slots->write(writer, QStringLiteral("slots")); + } + + if (m_children & Propertyspecifications) { + m_propertyspecifications->write(writer, QStringLiteral("propertyspecifications")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomCustomWidget::setElementClass(const QString& a) +{ + m_children |= Class; + m_class = a; +} + +void DomCustomWidget::setElementExtends(const QString& a) +{ + m_children |= Extends; + m_extends = a; +} + +DomHeader* DomCustomWidget::takeElementHeader() +{ + DomHeader* a = m_header; + m_header = 0; + m_children ^= Header; + return a; +} + +void DomCustomWidget::setElementHeader(DomHeader* a) +{ + delete m_header; + m_children |= Header; + m_header = a; +} + +DomSize* DomCustomWidget::takeElementSizeHint() +{ + DomSize* a = m_sizeHint; + m_sizeHint = 0; + m_children ^= SizeHint; + return a; +} + +void DomCustomWidget::setElementSizeHint(DomSize* a) +{ + delete m_sizeHint; + m_children |= SizeHint; + m_sizeHint = a; +} + +void DomCustomWidget::setElementAddPageMethod(const QString& a) +{ + m_children |= AddPageMethod; + m_addPageMethod = a; +} + +void DomCustomWidget::setElementContainer(int a) +{ + m_children |= Container; + m_container = a; +} + +DomSizePolicyData* DomCustomWidget::takeElementSizePolicy() +{ + DomSizePolicyData* a = m_sizePolicy; + m_sizePolicy = 0; + m_children ^= SizePolicy; + return a; +} + +void DomCustomWidget::setElementSizePolicy(DomSizePolicyData* a) +{ + delete m_sizePolicy; + m_children |= SizePolicy; + m_sizePolicy = a; +} + +void DomCustomWidget::setElementPixmap(const QString& a) +{ + m_children |= Pixmap; + m_pixmap = a; +} + +DomScript* DomCustomWidget::takeElementScript() +{ + DomScript* a = m_script; + m_script = 0; + m_children ^= Script; + return a; +} + +void DomCustomWidget::setElementScript(DomScript* a) +{ + delete m_script; + m_children |= Script; + m_script = a; +} + +DomProperties* DomCustomWidget::takeElementProperties() +{ + DomProperties* a = m_properties; + m_properties = 0; + m_children ^= Properties; + return a; +} + +void DomCustomWidget::setElementProperties(DomProperties* a) +{ + delete m_properties; + m_children |= Properties; + m_properties = a; +} + +DomSlots* DomCustomWidget::takeElementSlots() +{ + DomSlots* a = m_slots; + m_slots = 0; + m_children ^= Slots; + return a; +} + +void DomCustomWidget::setElementSlots(DomSlots* a) +{ + delete m_slots; + m_children |= Slots; + m_slots = a; +} + +DomPropertySpecifications* DomCustomWidget::takeElementPropertyspecifications() +{ + DomPropertySpecifications* a = m_propertyspecifications; + m_propertyspecifications = 0; + m_children ^= Propertyspecifications; + return a; +} + +void DomCustomWidget::setElementPropertyspecifications(DomPropertySpecifications* a) +{ + delete m_propertyspecifications; + m_children |= Propertyspecifications; + m_propertyspecifications = a; +} + +void DomCustomWidget::clearElementClass() +{ + m_children &= ~Class; +} + +void DomCustomWidget::clearElementExtends() +{ + m_children &= ~Extends; +} + +void DomCustomWidget::clearElementHeader() +{ + delete m_header; + m_header = 0; + m_children &= ~Header; +} + +void DomCustomWidget::clearElementSizeHint() +{ + delete m_sizeHint; + m_sizeHint = 0; + m_children &= ~SizeHint; +} + +void DomCustomWidget::clearElementAddPageMethod() +{ + m_children &= ~AddPageMethod; +} + +void DomCustomWidget::clearElementContainer() +{ + m_children &= ~Container; +} + +void DomCustomWidget::clearElementSizePolicy() +{ + delete m_sizePolicy; + m_sizePolicy = 0; + m_children &= ~SizePolicy; +} + +void DomCustomWidget::clearElementPixmap() +{ + m_children &= ~Pixmap; +} + +void DomCustomWidget::clearElementScript() +{ + delete m_script; + m_script = 0; + m_children &= ~Script; +} + +void DomCustomWidget::clearElementProperties() +{ + delete m_properties; + m_properties = 0; + m_children &= ~Properties; +} + +void DomCustomWidget::clearElementSlots() +{ + delete m_slots; + m_slots = 0; + m_children &= ~Slots; +} + +void DomCustomWidget::clearElementPropertyspecifications() +{ + delete m_propertyspecifications; + m_propertyspecifications = 0; + m_children &= ~Propertyspecifications; +} + +void DomProperties::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomProperties::DomProperties() +{ + m_children = 0; +} + +DomProperties::~DomProperties() +{ + qDeleteAll(m_property); + m_property.clear(); +} + +void DomProperties::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomPropertyData *v = new DomPropertyData(); + v->read(reader); + m_property.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomProperties::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("properties") : tagName.toLower()); + + for (int i = 0; i < m_property.size(); ++i) { + DomPropertyData* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomProperties::setElementProperty(const QList<DomPropertyData*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomPropertyData::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_type = false; + } + + m_children = 0; +} + +DomPropertyData::DomPropertyData() +{ + m_children = 0; + m_has_attr_type = false; +} + +DomPropertyData::~DomPropertyData() +{ +} + +void DomPropertyData::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("type")) { + setAttributeType(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomPropertyData::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("propertydata") : tagName.toLower()); + + if (hasAttributeType()) + writer.writeAttribute(QStringLiteral("type"), attributeType()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomSizePolicyData::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_horData = 0; + m_verData = 0; +} + +DomSizePolicyData::DomSizePolicyData() +{ + m_children = 0; + m_horData = 0; + m_verData = 0; +} + +DomSizePolicyData::~DomSizePolicyData() +{ +} + +void DomSizePolicyData::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("hordata")) { + setElementHorData(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("verdata")) { + setElementVerData(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomSizePolicyData::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizepolicydata") : tagName.toLower()); + + if (m_children & HorData) { + writer.writeTextElement(QStringLiteral("hordata"), QString::number(m_horData)); + } + + if (m_children & VerData) { + writer.writeTextElement(QStringLiteral("verdata"), QString::number(m_verData)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomSizePolicyData::setElementHorData(int a) +{ + m_children |= HorData; + m_horData = a; +} + +void DomSizePolicyData::setElementVerData(int a) +{ + m_children |= VerData; + m_verData = a; +} + +void DomSizePolicyData::clearElementHorData() +{ + m_children &= ~HorData; +} + +void DomSizePolicyData::clearElementVerData() +{ + m_children &= ~VerData; +} + +void DomLayoutDefault::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_spacing = false; + m_attr_spacing = 0; + m_has_attr_margin = false; + m_attr_margin = 0; + } + + m_children = 0; +} + +DomLayoutDefault::DomLayoutDefault() +{ + m_children = 0; + m_has_attr_spacing = false; + m_attr_spacing = 0; + m_has_attr_margin = false; + m_attr_margin = 0; +} + +DomLayoutDefault::~DomLayoutDefault() +{ +} + +void DomLayoutDefault::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("spacing")) { + setAttributeSpacing(attribute.value().toString().toInt()); + continue; + } + if (name == QStringLiteral("margin")) { + setAttributeMargin(attribute.value().toString().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomLayoutDefault::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutdefault") : tagName.toLower()); + + if (hasAttributeSpacing()) + writer.writeAttribute(QStringLiteral("spacing"), QString::number(attributeSpacing())); + + if (hasAttributeMargin()) + writer.writeAttribute(QStringLiteral("margin"), QString::number(attributeMargin())); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomLayoutFunction::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_spacing = false; + m_has_attr_margin = false; + } + + m_children = 0; +} + +DomLayoutFunction::DomLayoutFunction() +{ + m_children = 0; + m_has_attr_spacing = false; + m_has_attr_margin = false; +} + +DomLayoutFunction::~DomLayoutFunction() +{ +} + +void DomLayoutFunction::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("spacing")) { + setAttributeSpacing(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("margin")) { + setAttributeMargin(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomLayoutFunction::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutfunction") : tagName.toLower()); + + if (hasAttributeSpacing()) + writer.writeAttribute(QStringLiteral("spacing"), attributeSpacing()); + + if (hasAttributeMargin()) + writer.writeAttribute(QStringLiteral("margin"), attributeMargin()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomTabStops::clear(bool clear_all) +{ + m_tabStop.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomTabStops::DomTabStops() +{ + m_children = 0; +} + +DomTabStops::~DomTabStops() +{ + m_tabStop.clear(); +} + +void DomTabStops::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("tabstop")) { + m_tabStop.append(reader.readElementText()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomTabStops::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("tabstops") : tagName.toLower()); + + for (int i = 0; i < m_tabStop.size(); ++i) { + QString v = m_tabStop[i]; + writer.writeTextElement(QStringLiteral("tabstop"), v); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomTabStops::setElementTabStop(const QStringList& a) +{ + m_children |= TabStop; + m_tabStop = a; +} + +void DomLayout::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); + qDeleteAll(m_item); + m_item.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_class = false; + m_has_attr_name = false; + m_has_attr_stretch = false; + m_has_attr_rowStretch = false; + m_has_attr_columnStretch = false; + m_has_attr_rowMinimumHeight = false; + m_has_attr_columnMinimumWidth = false; + } + + m_children = 0; +} + +DomLayout::DomLayout() +{ + m_children = 0; + m_has_attr_class = false; + m_has_attr_name = false; + m_has_attr_stretch = false; + m_has_attr_rowStretch = false; + m_has_attr_columnStretch = false; + m_has_attr_rowMinimumHeight = false; + m_has_attr_columnMinimumWidth = false; +} + +DomLayout::~DomLayout() +{ + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); + qDeleteAll(m_item); + m_item.clear(); +} + +void DomLayout::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("class")) { + setAttributeClass(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("stretch")) { + setAttributeStretch(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("rowstretch")) { + setAttributeRowStretch(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("columnstretch")) { + setAttributeColumnStretch(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("rowminimumheight")) { + setAttributeRowMinimumHeight(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("columnminimumwidth")) { + setAttributeColumnMinimumWidth(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + if (tag == QStringLiteral("attribute")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_attribute.append(v); + continue; + } + if (tag == QStringLiteral("item")) { + DomLayoutItem *v = new DomLayoutItem(); + v->read(reader); + m_item.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomLayout::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layout") : tagName.toLower()); + + if (hasAttributeClass()) + writer.writeAttribute(QStringLiteral("class"), attributeClass()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + if (hasAttributeStretch()) + writer.writeAttribute(QStringLiteral("stretch"), attributeStretch()); + + if (hasAttributeRowStretch()) + writer.writeAttribute(QStringLiteral("rowstretch"), attributeRowStretch()); + + if (hasAttributeColumnStretch()) + writer.writeAttribute(QStringLiteral("columnstretch"), attributeColumnStretch()); + + if (hasAttributeRowMinimumHeight()) + writer.writeAttribute(QStringLiteral("rowminimumheight"), attributeRowMinimumHeight()); + + if (hasAttributeColumnMinimumWidth()) + writer.writeAttribute(QStringLiteral("columnminimumwidth"), attributeColumnMinimumWidth()); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + for (int i = 0; i < m_attribute.size(); ++i) { + DomProperty* v = m_attribute[i]; + v->write(writer, QStringLiteral("attribute")); + } + for (int i = 0; i < m_item.size(); ++i) { + DomLayoutItem* v = m_item[i]; + v->write(writer, QStringLiteral("item")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomLayout::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomLayout::setElementAttribute(const QList<DomProperty*>& a) +{ + m_children |= Attribute; + m_attribute = a; +} + +void DomLayout::setElementItem(const QList<DomLayoutItem*>& a) +{ + m_children |= Item; + m_item = a; +} + +void DomLayoutItem::clear(bool clear_all) +{ + delete m_widget; + delete m_layout; + delete m_spacer; + + if (clear_all) { + m_text.clear(); + m_has_attr_row = false; + m_attr_row = 0; + m_has_attr_column = false; + m_attr_column = 0; + m_has_attr_rowSpan = false; + m_attr_rowSpan = 0; + m_has_attr_colSpan = false; + m_attr_colSpan = 0; + m_has_attr_alignment = false; + } + + m_kind = Unknown; + + m_widget = 0; + m_layout = 0; + m_spacer = 0; +} + +DomLayoutItem::DomLayoutItem() +{ + m_kind = Unknown; + + m_has_attr_row = false; + m_attr_row = 0; + m_has_attr_column = false; + m_attr_column = 0; + m_has_attr_rowSpan = false; + m_attr_rowSpan = 0; + m_has_attr_colSpan = false; + m_attr_colSpan = 0; + m_has_attr_alignment = false; + m_widget = 0; + m_layout = 0; + m_spacer = 0; +} + +DomLayoutItem::~DomLayoutItem() +{ + delete m_widget; + delete m_layout; + delete m_spacer; +} + +void DomLayoutItem::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("row")) { + setAttributeRow(attribute.value().toString().toInt()); + continue; + } + if (name == QStringLiteral("column")) { + setAttributeColumn(attribute.value().toString().toInt()); + continue; + } + if (name == QStringLiteral("rowspan")) { + setAttributeRowSpan(attribute.value().toString().toInt()); + continue; + } + if (name == QStringLiteral("colspan")) { + setAttributeColSpan(attribute.value().toString().toInt()); + continue; + } + if (name == QStringLiteral("alignment")) { + setAttributeAlignment(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("widget")) { + DomWidget *v = new DomWidget(); + v->read(reader); + setElementWidget(v); + continue; + } + if (tag == QStringLiteral("layout")) { + DomLayout *v = new DomLayout(); + v->read(reader); + setElementLayout(v); + continue; + } + if (tag == QStringLiteral("spacer")) { + DomSpacer *v = new DomSpacer(); + v->read(reader); + setElementSpacer(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomLayoutItem::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("layoutitem") : tagName.toLower()); + + if (hasAttributeRow()) + writer.writeAttribute(QStringLiteral("row"), QString::number(attributeRow())); + + if (hasAttributeColumn()) + writer.writeAttribute(QStringLiteral("column"), QString::number(attributeColumn())); + + if (hasAttributeRowSpan()) + writer.writeAttribute(QStringLiteral("rowspan"), QString::number(attributeRowSpan())); + + if (hasAttributeColSpan()) + writer.writeAttribute(QStringLiteral("colspan"), QString::number(attributeColSpan())); + + if (hasAttributeAlignment()) + writer.writeAttribute(QStringLiteral("alignment"), attributeAlignment()); + + switch (kind()) { + case Widget: { + DomWidget* v = elementWidget(); + if (v != 0) { + v->write(writer, QStringLiteral("widget")); + } + break; + } + case Layout: { + DomLayout* v = elementLayout(); + if (v != 0) { + v->write(writer, QStringLiteral("layout")); + } + break; + } + case Spacer: { + DomSpacer* v = elementSpacer(); + if (v != 0) { + v->write(writer, QStringLiteral("spacer")); + } + break; + } + default: + break; + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +DomWidget* DomLayoutItem::takeElementWidget() +{ + DomWidget* a = m_widget; + m_widget = 0; + return a; +} + +void DomLayoutItem::setElementWidget(DomWidget* a) +{ + clear(false); + m_kind = Widget; + m_widget = a; +} + +DomLayout* DomLayoutItem::takeElementLayout() +{ + DomLayout* a = m_layout; + m_layout = 0; + return a; +} + +void DomLayoutItem::setElementLayout(DomLayout* a) +{ + clear(false); + m_kind = Layout; + m_layout = a; +} + +DomSpacer* DomLayoutItem::takeElementSpacer() +{ + DomSpacer* a = m_spacer; + m_spacer = 0; + return a; +} + +void DomLayoutItem::setElementSpacer(DomSpacer* a) +{ + clear(false); + m_kind = Spacer; + m_spacer = a; +} + +void DomRow::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomRow::DomRow() +{ + m_children = 0; +} + +DomRow::~DomRow() +{ + qDeleteAll(m_property); + m_property.clear(); +} + +void DomRow::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomRow::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("row") : tagName.toLower()); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomRow::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomColumn::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomColumn::DomColumn() +{ + m_children = 0; +} + +DomColumn::~DomColumn() +{ + qDeleteAll(m_property); + m_property.clear(); +} + +void DomColumn::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomColumn::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("column") : tagName.toLower()); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomColumn::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomItem::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_item); + m_item.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_row = false; + m_attr_row = 0; + m_has_attr_column = false; + m_attr_column = 0; + } + + m_children = 0; +} + +DomItem::DomItem() +{ + m_children = 0; + m_has_attr_row = false; + m_attr_row = 0; + m_has_attr_column = false; + m_attr_column = 0; +} + +DomItem::~DomItem() +{ + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_item); + m_item.clear(); +} + +void DomItem::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("row")) { + setAttributeRow(attribute.value().toString().toInt()); + continue; + } + if (name == QStringLiteral("column")) { + setAttributeColumn(attribute.value().toString().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + if (tag == QStringLiteral("item")) { + DomItem *v = new DomItem(); + v->read(reader); + m_item.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomItem::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("item") : tagName.toLower()); + + if (hasAttributeRow()) + writer.writeAttribute(QStringLiteral("row"), QString::number(attributeRow())); + + if (hasAttributeColumn()) + writer.writeAttribute(QStringLiteral("column"), QString::number(attributeColumn())); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + for (int i = 0; i < m_item.size(); ++i) { + DomItem* v = m_item[i]; + v->write(writer, QStringLiteral("item")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomItem::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomItem::setElementItem(const QList<DomItem*>& a) +{ + m_children |= Item; + m_item = a; +} + +void DomWidget::clear(bool clear_all) +{ + m_class.clear(); + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_script); + m_script.clear(); + qDeleteAll(m_widgetData); + m_widgetData.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); + qDeleteAll(m_row); + m_row.clear(); + qDeleteAll(m_column); + m_column.clear(); + qDeleteAll(m_item); + m_item.clear(); + qDeleteAll(m_layout); + m_layout.clear(); + qDeleteAll(m_widget); + m_widget.clear(); + qDeleteAll(m_action); + m_action.clear(); + qDeleteAll(m_actionGroup); + m_actionGroup.clear(); + qDeleteAll(m_addAction); + m_addAction.clear(); + m_zOrder.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_class = false; + m_has_attr_name = false; + m_has_attr_native = false; + m_attr_native = false; + } + + m_children = 0; +} + +DomWidget::DomWidget() +{ + m_children = 0; + m_has_attr_class = false; + m_has_attr_name = false; + m_has_attr_native = false; + m_attr_native = false; +} + +DomWidget::~DomWidget() +{ + m_class.clear(); + qDeleteAll(m_property); + m_property.clear(); + qDeleteAll(m_script); + m_script.clear(); + qDeleteAll(m_widgetData); + m_widgetData.clear(); + qDeleteAll(m_attribute); + m_attribute.clear(); + qDeleteAll(m_row); + m_row.clear(); + qDeleteAll(m_column); + m_column.clear(); + qDeleteAll(m_item); + m_item.clear(); + qDeleteAll(m_layout); + m_layout.clear(); + qDeleteAll(m_widget); + m_widget.clear(); + qDeleteAll(m_action); + m_action.clear(); + qDeleteAll(m_actionGroup); + m_actionGroup.clear(); + qDeleteAll(m_addAction); + m_addAction.clear(); + m_zOrder.clear(); +} + +void DomWidget::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("class")) { + setAttributeClass(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("native")) { + setAttributeNative((attribute.value().toString() == QLatin1String("true") ? true : false)); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("class")) { + m_class.append(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + if (tag == QStringLiteral("script")) { + DomScript *v = new DomScript(); + v->read(reader); + m_script.append(v); + continue; + } + if (tag == QStringLiteral("widgetdata")) { + DomWidgetData *v = new DomWidgetData(); + v->read(reader); + m_widgetData.append(v); + continue; + } + if (tag == QStringLiteral("attribute")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_attribute.append(v); + continue; + } + if (tag == QStringLiteral("row")) { + DomRow *v = new DomRow(); + v->read(reader); + m_row.append(v); + continue; + } + if (tag == QStringLiteral("column")) { + DomColumn *v = new DomColumn(); + v->read(reader); + m_column.append(v); + continue; + } + if (tag == QStringLiteral("item")) { + DomItem *v = new DomItem(); + v->read(reader); + m_item.append(v); + continue; + } + if (tag == QStringLiteral("layout")) { + DomLayout *v = new DomLayout(); + v->read(reader); + m_layout.append(v); + continue; + } + if (tag == QStringLiteral("widget")) { + DomWidget *v = new DomWidget(); + v->read(reader); + m_widget.append(v); + continue; + } + if (tag == QStringLiteral("action")) { + DomAction *v = new DomAction(); + v->read(reader); + m_action.append(v); + continue; + } + if (tag == QStringLiteral("actiongroup")) { + DomActionGroup *v = new DomActionGroup(); + v->read(reader); + m_actionGroup.append(v); + continue; + } + if (tag == QStringLiteral("addaction")) { + DomActionRef *v = new DomActionRef(); + v->read(reader); + m_addAction.append(v); + continue; + } + if (tag == QStringLiteral("zorder")) { + m_zOrder.append(reader.readElementText()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomWidget::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("widget") : tagName.toLower()); + + if (hasAttributeClass()) + writer.writeAttribute(QStringLiteral("class"), attributeClass()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + if (hasAttributeNative()) + writer.writeAttribute(QStringLiteral("native"), (attributeNative() ? QLatin1String("true") : QLatin1String("false"))); + + for (int i = 0; i < m_class.size(); ++i) { + QString v = m_class[i]; + writer.writeTextElement(QStringLiteral("class"), v); + } + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + for (int i = 0; i < m_script.size(); ++i) { + DomScript* v = m_script[i]; + v->write(writer, QStringLiteral("script")); + } + for (int i = 0; i < m_widgetData.size(); ++i) { + DomWidgetData* v = m_widgetData[i]; + v->write(writer, QStringLiteral("widgetdata")); + } + for (int i = 0; i < m_attribute.size(); ++i) { + DomProperty* v = m_attribute[i]; + v->write(writer, QStringLiteral("attribute")); + } + for (int i = 0; i < m_row.size(); ++i) { + DomRow* v = m_row[i]; + v->write(writer, QStringLiteral("row")); + } + for (int i = 0; i < m_column.size(); ++i) { + DomColumn* v = m_column[i]; + v->write(writer, QStringLiteral("column")); + } + for (int i = 0; i < m_item.size(); ++i) { + DomItem* v = m_item[i]; + v->write(writer, QStringLiteral("item")); + } + for (int i = 0; i < m_layout.size(); ++i) { + DomLayout* v = m_layout[i]; + v->write(writer, QStringLiteral("layout")); + } + for (int i = 0; i < m_widget.size(); ++i) { + DomWidget* v = m_widget[i]; + v->write(writer, QStringLiteral("widget")); + } + for (int i = 0; i < m_action.size(); ++i) { + DomAction* v = m_action[i]; + v->write(writer, QStringLiteral("action")); + } + for (int i = 0; i < m_actionGroup.size(); ++i) { + DomActionGroup* v = m_actionGroup[i]; + v->write(writer, QStringLiteral("actiongroup")); + } + for (int i = 0; i < m_addAction.size(); ++i) { + DomActionRef* v = m_addAction[i]; + v->write(writer, QStringLiteral("addaction")); + } + for (int i = 0; i < m_zOrder.size(); ++i) { + QString v = m_zOrder[i]; + writer.writeTextElement(QStringLiteral("zorder"), v); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomWidget::setElementClass(const QStringList& a) +{ + m_children |= Class; + m_class = a; +} + +void DomWidget::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomWidget::setElementScript(const QList<DomScript*>& a) +{ + m_children |= Script; + m_script = a; +} + +void DomWidget::setElementWidgetData(const QList<DomWidgetData*>& a) +{ + m_children |= WidgetData; + m_widgetData = a; +} + +void DomWidget::setElementAttribute(const QList<DomProperty*>& a) +{ + m_children |= Attribute; + m_attribute = a; +} + +void DomWidget::setElementRow(const QList<DomRow*>& a) +{ + m_children |= Row; + m_row = a; +} + +void DomWidget::setElementColumn(const QList<DomColumn*>& a) +{ + m_children |= Column; + m_column = a; +} + +void DomWidget::setElementItem(const QList<DomItem*>& a) +{ + m_children |= Item; + m_item = a; +} + +void DomWidget::setElementLayout(const QList<DomLayout*>& a) +{ + m_children |= Layout; + m_layout = a; +} + +void DomWidget::setElementWidget(const QList<DomWidget*>& a) +{ + m_children |= Widget; + m_widget = a; +} + +void DomWidget::setElementAction(const QList<DomAction*>& a) +{ + m_children |= Action; + m_action = a; +} + +void DomWidget::setElementActionGroup(const QList<DomActionGroup*>& a) +{ + m_children |= ActionGroup; + m_actionGroup = a; +} + +void DomWidget::setElementAddAction(const QList<DomActionRef*>& a) +{ + m_children |= AddAction; + m_addAction = a; +} + +void DomWidget::setElementZOrder(const QStringList& a) +{ + m_children |= ZOrder; + m_zOrder = a; +} + +void DomSpacer::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + } + + m_children = 0; +} + +DomSpacer::DomSpacer() +{ + m_children = 0; + m_has_attr_name = false; +} + +DomSpacer::~DomSpacer() +{ + qDeleteAll(m_property); + m_property.clear(); +} + +void DomSpacer::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomSpacer::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("spacer") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomSpacer::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomColor::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_alpha = false; + m_attr_alpha = 0; + } + + m_children = 0; + m_red = 0; + m_green = 0; + m_blue = 0; +} + +DomColor::DomColor() +{ + m_children = 0; + m_has_attr_alpha = false; + m_attr_alpha = 0; + m_red = 0; + m_green = 0; + m_blue = 0; +} + +DomColor::~DomColor() +{ +} + +void DomColor::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("alpha")) { + setAttributeAlpha(attribute.value().toString().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("red")) { + setElementRed(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("green")) { + setElementGreen(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("blue")) { + setElementBlue(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomColor::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("color") : tagName.toLower()); + + if (hasAttributeAlpha()) + writer.writeAttribute(QStringLiteral("alpha"), QString::number(attributeAlpha())); + + if (m_children & Red) { + writer.writeTextElement(QStringLiteral("red"), QString::number(m_red)); + } + + if (m_children & Green) { + writer.writeTextElement(QStringLiteral("green"), QString::number(m_green)); + } + + if (m_children & Blue) { + writer.writeTextElement(QStringLiteral("blue"), QString::number(m_blue)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomColor::setElementRed(int a) +{ + m_children |= Red; + m_red = a; +} + +void DomColor::setElementGreen(int a) +{ + m_children |= Green; + m_green = a; +} + +void DomColor::setElementBlue(int a) +{ + m_children |= Blue; + m_blue = a; +} + +void DomColor::clearElementRed() +{ + m_children &= ~Red; +} + +void DomColor::clearElementGreen() +{ + m_children &= ~Green; +} + +void DomColor::clearElementBlue() +{ + m_children &= ~Blue; +} + +void DomGradientStop::clear(bool clear_all) +{ + delete m_color; + + if (clear_all) { + m_text.clear(); + m_has_attr_position = false; + m_attr_position = 0.0; + } + + m_children = 0; + m_color = 0; +} + +DomGradientStop::DomGradientStop() +{ + m_children = 0; + m_has_attr_position = false; + m_attr_position = 0.0; + m_color = 0; +} + +DomGradientStop::~DomGradientStop() +{ + delete m_color; +} + +void DomGradientStop::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("position")) { + setAttributePosition(attribute.value().toString().toDouble()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("color")) { + DomColor *v = new DomColor(); + v->read(reader); + setElementColor(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomGradientStop::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("gradientstop") : tagName.toLower()); + + if (hasAttributePosition()) + writer.writeAttribute(QStringLiteral("position"), QString::number(attributePosition(), 'f', 15)); + + if (m_children & Color) { + m_color->write(writer, QStringLiteral("color")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +DomColor* DomGradientStop::takeElementColor() +{ + DomColor* a = m_color; + m_color = 0; + m_children ^= Color; + return a; +} + +void DomGradientStop::setElementColor(DomColor* a) +{ + delete m_color; + m_children |= Color; + m_color = a; +} + +void DomGradientStop::clearElementColor() +{ + delete m_color; + m_color = 0; + m_children &= ~Color; +} + +void DomGradient::clear(bool clear_all) +{ + qDeleteAll(m_gradientStop); + m_gradientStop.clear(); + + if (clear_all) { + m_text.clear(); + m_has_attr_startX = false; + m_attr_startX = 0.0; + m_has_attr_startY = false; + m_attr_startY = 0.0; + m_has_attr_endX = false; + m_attr_endX = 0.0; + m_has_attr_endY = false; + m_attr_endY = 0.0; + m_has_attr_centralX = false; + m_attr_centralX = 0.0; + m_has_attr_centralY = false; + m_attr_centralY = 0.0; + m_has_attr_focalX = false; + m_attr_focalX = 0.0; + m_has_attr_focalY = false; + m_attr_focalY = 0.0; + m_has_attr_radius = false; + m_attr_radius = 0.0; + m_has_attr_angle = false; + m_attr_angle = 0.0; + m_has_attr_type = false; + m_has_attr_spread = false; + m_has_attr_coordinateMode = false; + } + + m_children = 0; +} + +DomGradient::DomGradient() +{ + m_children = 0; + m_has_attr_startX = false; + m_attr_startX = 0.0; + m_has_attr_startY = false; + m_attr_startY = 0.0; + m_has_attr_endX = false; + m_attr_endX = 0.0; + m_has_attr_endY = false; + m_attr_endY = 0.0; + m_has_attr_centralX = false; + m_attr_centralX = 0.0; + m_has_attr_centralY = false; + m_attr_centralY = 0.0; + m_has_attr_focalX = false; + m_attr_focalX = 0.0; + m_has_attr_focalY = false; + m_attr_focalY = 0.0; + m_has_attr_radius = false; + m_attr_radius = 0.0; + m_has_attr_angle = false; + m_attr_angle = 0.0; + m_has_attr_type = false; + m_has_attr_spread = false; + m_has_attr_coordinateMode = false; +} + +DomGradient::~DomGradient() +{ + qDeleteAll(m_gradientStop); + m_gradientStop.clear(); +} + +void DomGradient::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("startx")) { + setAttributeStartX(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("starty")) { + setAttributeStartY(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("endx")) { + setAttributeEndX(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("endy")) { + setAttributeEndY(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("centralx")) { + setAttributeCentralX(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("centraly")) { + setAttributeCentralY(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("focalx")) { + setAttributeFocalX(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("focaly")) { + setAttributeFocalY(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("radius")) { + setAttributeRadius(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("angle")) { + setAttributeAngle(attribute.value().toString().toDouble()); + continue; + } + if (name == QStringLiteral("type")) { + setAttributeType(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("spread")) { + setAttributeSpread(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("coordinatemode")) { + setAttributeCoordinateMode(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("gradientstop")) { + DomGradientStop *v = new DomGradientStop(); + v->read(reader); + m_gradientStop.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomGradient::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("gradient") : tagName.toLower()); + + if (hasAttributeStartX()) + writer.writeAttribute(QStringLiteral("startx"), QString::number(attributeStartX(), 'f', 15)); + + if (hasAttributeStartY()) + writer.writeAttribute(QStringLiteral("starty"), QString::number(attributeStartY(), 'f', 15)); + + if (hasAttributeEndX()) + writer.writeAttribute(QStringLiteral("endx"), QString::number(attributeEndX(), 'f', 15)); + + if (hasAttributeEndY()) + writer.writeAttribute(QStringLiteral("endy"), QString::number(attributeEndY(), 'f', 15)); + + if (hasAttributeCentralX()) + writer.writeAttribute(QStringLiteral("centralx"), QString::number(attributeCentralX(), 'f', 15)); + + if (hasAttributeCentralY()) + writer.writeAttribute(QStringLiteral("centraly"), QString::number(attributeCentralY(), 'f', 15)); + + if (hasAttributeFocalX()) + writer.writeAttribute(QStringLiteral("focalx"), QString::number(attributeFocalX(), 'f', 15)); + + if (hasAttributeFocalY()) + writer.writeAttribute(QStringLiteral("focaly"), QString::number(attributeFocalY(), 'f', 15)); + + if (hasAttributeRadius()) + writer.writeAttribute(QStringLiteral("radius"), QString::number(attributeRadius(), 'f', 15)); + + if (hasAttributeAngle()) + writer.writeAttribute(QStringLiteral("angle"), QString::number(attributeAngle(), 'f', 15)); + + if (hasAttributeType()) + writer.writeAttribute(QStringLiteral("type"), attributeType()); + + if (hasAttributeSpread()) + writer.writeAttribute(QStringLiteral("spread"), attributeSpread()); + + if (hasAttributeCoordinateMode()) + writer.writeAttribute(QStringLiteral("coordinatemode"), attributeCoordinateMode()); + + for (int i = 0; i < m_gradientStop.size(); ++i) { + DomGradientStop* v = m_gradientStop[i]; + v->write(writer, QStringLiteral("gradientstop")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomGradient::setElementGradientStop(const QList<DomGradientStop*>& a) +{ + m_children |= GradientStop; + m_gradientStop = a; +} + +void DomBrush::clear(bool clear_all) +{ + delete m_color; + delete m_texture; + delete m_gradient; + + if (clear_all) { + m_text.clear(); + m_has_attr_brushStyle = false; + } + + m_kind = Unknown; + + m_color = 0; + m_texture = 0; + m_gradient = 0; +} + +DomBrush::DomBrush() +{ + m_kind = Unknown; + + m_has_attr_brushStyle = false; + m_color = 0; + m_texture = 0; + m_gradient = 0; +} + +DomBrush::~DomBrush() +{ + delete m_color; + delete m_texture; + delete m_gradient; +} + +void DomBrush::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("brushstyle")) { + setAttributeBrushStyle(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("color")) { + DomColor *v = new DomColor(); + v->read(reader); + setElementColor(v); + continue; + } + if (tag == QStringLiteral("texture")) { + DomProperty *v = new DomProperty(); + v->read(reader); + setElementTexture(v); + continue; + } + if (tag == QStringLiteral("gradient")) { + DomGradient *v = new DomGradient(); + v->read(reader); + setElementGradient(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomBrush::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("brush") : tagName.toLower()); + + if (hasAttributeBrushStyle()) + writer.writeAttribute(QStringLiteral("brushstyle"), attributeBrushStyle()); + + switch (kind()) { + case Color: { + DomColor* v = elementColor(); + if (v != 0) { + v->write(writer, QStringLiteral("color")); + } + break; + } + case Texture: { + DomProperty* v = elementTexture(); + if (v != 0) { + v->write(writer, QStringLiteral("texture")); + } + break; + } + case Gradient: { + DomGradient* v = elementGradient(); + if (v != 0) { + v->write(writer, QStringLiteral("gradient")); + } + break; + } + default: + break; + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +DomColor* DomBrush::takeElementColor() +{ + DomColor* a = m_color; + m_color = 0; + return a; +} + +void DomBrush::setElementColor(DomColor* a) +{ + clear(false); + m_kind = Color; + m_color = a; +} + +DomProperty* DomBrush::takeElementTexture() +{ + DomProperty* a = m_texture; + m_texture = 0; + return a; +} + +void DomBrush::setElementTexture(DomProperty* a) +{ + clear(false); + m_kind = Texture; + m_texture = a; +} + +DomGradient* DomBrush::takeElementGradient() +{ + DomGradient* a = m_gradient; + m_gradient = 0; + return a; +} + +void DomBrush::setElementGradient(DomGradient* a) +{ + clear(false); + m_kind = Gradient; + m_gradient = a; +} + +void DomColorRole::clear(bool clear_all) +{ + delete m_brush; + + if (clear_all) { + m_text.clear(); + m_has_attr_role = false; + } + + m_children = 0; + m_brush = 0; +} + +DomColorRole::DomColorRole() +{ + m_children = 0; + m_has_attr_role = false; + m_brush = 0; +} + +DomColorRole::~DomColorRole() +{ + delete m_brush; +} + +void DomColorRole::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("role")) { + setAttributeRole(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("brush")) { + DomBrush *v = new DomBrush(); + v->read(reader); + setElementBrush(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomColorRole::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("colorrole") : tagName.toLower()); + + if (hasAttributeRole()) + writer.writeAttribute(QStringLiteral("role"), attributeRole()); + + if (m_children & Brush) { + m_brush->write(writer, QStringLiteral("brush")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +DomBrush* DomColorRole::takeElementBrush() +{ + DomBrush* a = m_brush; + m_brush = 0; + m_children ^= Brush; + return a; +} + +void DomColorRole::setElementBrush(DomBrush* a) +{ + delete m_brush; + m_children |= Brush; + m_brush = a; +} + +void DomColorRole::clearElementBrush() +{ + delete m_brush; + m_brush = 0; + m_children &= ~Brush; +} + +void DomColorGroup::clear(bool clear_all) +{ + qDeleteAll(m_colorRole); + m_colorRole.clear(); + qDeleteAll(m_color); + m_color.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomColorGroup::DomColorGroup() +{ + m_children = 0; +} + +DomColorGroup::~DomColorGroup() +{ + qDeleteAll(m_colorRole); + m_colorRole.clear(); + qDeleteAll(m_color); + m_color.clear(); +} + +void DomColorGroup::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("colorrole")) { + DomColorRole *v = new DomColorRole(); + v->read(reader); + m_colorRole.append(v); + continue; + } + if (tag == QStringLiteral("color")) { + DomColor *v = new DomColor(); + v->read(reader); + m_color.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomColorGroup::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("colorgroup") : tagName.toLower()); + + for (int i = 0; i < m_colorRole.size(); ++i) { + DomColorRole* v = m_colorRole[i]; + v->write(writer, QStringLiteral("colorrole")); + } + for (int i = 0; i < m_color.size(); ++i) { + DomColor* v = m_color[i]; + v->write(writer, QStringLiteral("color")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomColorGroup::setElementColorRole(const QList<DomColorRole*>& a) +{ + m_children |= ColorRole; + m_colorRole = a; +} + +void DomColorGroup::setElementColor(const QList<DomColor*>& a) +{ + m_children |= Color; + m_color = a; +} + +void DomPalette::clear(bool clear_all) +{ + delete m_active; + delete m_inactive; + delete m_disabled; + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_active = 0; + m_inactive = 0; + m_disabled = 0; +} + +DomPalette::DomPalette() +{ + m_children = 0; + m_active = 0; + m_inactive = 0; + m_disabled = 0; +} + +DomPalette::~DomPalette() +{ + delete m_active; + delete m_inactive; + delete m_disabled; +} + +void DomPalette::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("active")) { + DomColorGroup *v = new DomColorGroup(); + v->read(reader); + setElementActive(v); + continue; + } + if (tag == QStringLiteral("inactive")) { + DomColorGroup *v = new DomColorGroup(); + v->read(reader); + setElementInactive(v); + continue; + } + if (tag == QStringLiteral("disabled")) { + DomColorGroup *v = new DomColorGroup(); + v->read(reader); + setElementDisabled(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomPalette::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("palette") : tagName.toLower()); + + if (m_children & Active) { + m_active->write(writer, QStringLiteral("active")); + } + + if (m_children & Inactive) { + m_inactive->write(writer, QStringLiteral("inactive")); + } + + if (m_children & Disabled) { + m_disabled->write(writer, QStringLiteral("disabled")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +DomColorGroup* DomPalette::takeElementActive() +{ + DomColorGroup* a = m_active; + m_active = 0; + m_children ^= Active; + return a; +} + +void DomPalette::setElementActive(DomColorGroup* a) +{ + delete m_active; + m_children |= Active; + m_active = a; +} + +DomColorGroup* DomPalette::takeElementInactive() +{ + DomColorGroup* a = m_inactive; + m_inactive = 0; + m_children ^= Inactive; + return a; +} + +void DomPalette::setElementInactive(DomColorGroup* a) +{ + delete m_inactive; + m_children |= Inactive; + m_inactive = a; +} + +DomColorGroup* DomPalette::takeElementDisabled() +{ + DomColorGroup* a = m_disabled; + m_disabled = 0; + m_children ^= Disabled; + return a; +} + +void DomPalette::setElementDisabled(DomColorGroup* a) +{ + delete m_disabled; + m_children |= Disabled; + m_disabled = a; +} + +void DomPalette::clearElementActive() +{ + delete m_active; + m_active = 0; + m_children &= ~Active; +} + +void DomPalette::clearElementInactive() +{ + delete m_inactive; + m_inactive = 0; + m_children &= ~Inactive; +} + +void DomPalette::clearElementDisabled() +{ + delete m_disabled; + m_disabled = 0; + m_children &= ~Disabled; +} + +void DomFont::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_pointSize = 0; + m_weight = 0; + m_italic = false; + m_bold = false; + m_underline = false; + m_strikeOut = false; + m_antialiasing = false; + m_kerning = false; +} + +DomFont::DomFont() +{ + m_children = 0; + m_pointSize = 0; + m_weight = 0; + m_italic = false; + m_bold = false; + m_underline = false; + m_strikeOut = false; + m_antialiasing = false; + m_kerning = false; +} + +DomFont::~DomFont() +{ +} + +void DomFont::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("family")) { + setElementFamily(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("pointsize")) { + setElementPointSize(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("weight")) { + setElementWeight(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("italic")) { + setElementItalic((reader.readElementText() == QLatin1String("true") ? true : false)); + continue; + } + if (tag == QStringLiteral("bold")) { + setElementBold((reader.readElementText() == QLatin1String("true") ? true : false)); + continue; + } + if (tag == QStringLiteral("underline")) { + setElementUnderline((reader.readElementText() == QLatin1String("true") ? true : false)); + continue; + } + if (tag == QStringLiteral("strikeout")) { + setElementStrikeOut((reader.readElementText() == QLatin1String("true") ? true : false)); + continue; + } + if (tag == QStringLiteral("antialiasing")) { + setElementAntialiasing((reader.readElementText() == QLatin1String("true") ? true : false)); + continue; + } + if (tag == QStringLiteral("stylestrategy")) { + setElementStyleStrategy(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("kerning")) { + setElementKerning((reader.readElementText() == QLatin1String("true") ? true : false)); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomFont::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("font") : tagName.toLower()); + + if (m_children & Family) { + writer.writeTextElement(QStringLiteral("family"), m_family); + } + + if (m_children & PointSize) { + writer.writeTextElement(QStringLiteral("pointsize"), QString::number(m_pointSize)); + } + + if (m_children & Weight) { + writer.writeTextElement(QStringLiteral("weight"), QString::number(m_weight)); + } + + if (m_children & Italic) { + writer.writeTextElement(QStringLiteral("italic"), (m_italic ? QLatin1String("true") : QLatin1String("false"))); + } + + if (m_children & Bold) { + writer.writeTextElement(QStringLiteral("bold"), (m_bold ? QLatin1String("true") : QLatin1String("false"))); + } + + if (m_children & Underline) { + writer.writeTextElement(QStringLiteral("underline"), (m_underline ? QLatin1String("true") : QLatin1String("false"))); + } + + if (m_children & StrikeOut) { + writer.writeTextElement(QStringLiteral("strikeout"), (m_strikeOut ? QLatin1String("true") : QLatin1String("false"))); + } + + if (m_children & Antialiasing) { + writer.writeTextElement(QStringLiteral("antialiasing"), (m_antialiasing ? QLatin1String("true") : QLatin1String("false"))); + } + + if (m_children & StyleStrategy) { + writer.writeTextElement(QStringLiteral("stylestrategy"), m_styleStrategy); + } + + if (m_children & Kerning) { + writer.writeTextElement(QStringLiteral("kerning"), (m_kerning ? QLatin1String("true") : QLatin1String("false"))); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomFont::setElementFamily(const QString& a) +{ + m_children |= Family; + m_family = a; +} + +void DomFont::setElementPointSize(int a) +{ + m_children |= PointSize; + m_pointSize = a; +} + +void DomFont::setElementWeight(int a) +{ + m_children |= Weight; + m_weight = a; +} + +void DomFont::setElementItalic(bool a) +{ + m_children |= Italic; + m_italic = a; +} + +void DomFont::setElementBold(bool a) +{ + m_children |= Bold; + m_bold = a; +} + +void DomFont::setElementUnderline(bool a) +{ + m_children |= Underline; + m_underline = a; +} + +void DomFont::setElementStrikeOut(bool a) +{ + m_children |= StrikeOut; + m_strikeOut = a; +} + +void DomFont::setElementAntialiasing(bool a) +{ + m_children |= Antialiasing; + m_antialiasing = a; +} + +void DomFont::setElementStyleStrategy(const QString& a) +{ + m_children |= StyleStrategy; + m_styleStrategy = a; +} + +void DomFont::setElementKerning(bool a) +{ + m_children |= Kerning; + m_kerning = a; +} + +void DomFont::clearElementFamily() +{ + m_children &= ~Family; +} + +void DomFont::clearElementPointSize() +{ + m_children &= ~PointSize; +} + +void DomFont::clearElementWeight() +{ + m_children &= ~Weight; +} + +void DomFont::clearElementItalic() +{ + m_children &= ~Italic; +} + +void DomFont::clearElementBold() +{ + m_children &= ~Bold; +} + +void DomFont::clearElementUnderline() +{ + m_children &= ~Underline; +} + +void DomFont::clearElementStrikeOut() +{ + m_children &= ~StrikeOut; +} + +void DomFont::clearElementAntialiasing() +{ + m_children &= ~Antialiasing; +} + +void DomFont::clearElementStyleStrategy() +{ + m_children &= ~StyleStrategy; +} + +void DomFont::clearElementKerning() +{ + m_children &= ~Kerning; +} + +void DomPoint::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_x = 0; + m_y = 0; +} + +DomPoint::DomPoint() +{ + m_children = 0; + m_x = 0; + m_y = 0; +} + +DomPoint::~DomPoint() +{ +} + +void DomPoint::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QString(QLatin1Char('x'))) { + setElementX(reader.readElementText().toInt()); + continue; + } + if (tag == QString(QLatin1Char('y'))) { + setElementY(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomPoint::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("point") : tagName.toLower()); + + if (m_children & X) { + writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x)); + } + + if (m_children & Y) { + writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomPoint::setElementX(int a) +{ + m_children |= X; + m_x = a; +} + +void DomPoint::setElementY(int a) +{ + m_children |= Y; + m_y = a; +} + +void DomPoint::clearElementX() +{ + m_children &= ~X; +} + +void DomPoint::clearElementY() +{ + m_children &= ~Y; +} + +void DomRect::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_x = 0; + m_y = 0; + m_width = 0; + m_height = 0; +} + +DomRect::DomRect() +{ + m_children = 0; + m_x = 0; + m_y = 0; + m_width = 0; + m_height = 0; +} + +DomRect::~DomRect() +{ +} + +void DomRect::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QString(QLatin1Char('x'))) { + setElementX(reader.readElementText().toInt()); + continue; + } + if (tag == QString(QLatin1Char('y'))) { + setElementY(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("width")) { + setElementWidth(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("height")) { + setElementHeight(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomRect::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("rect") : tagName.toLower()); + + if (m_children & X) { + writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x)); + } + + if (m_children & Y) { + writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y)); + } + + if (m_children & Width) { + writer.writeTextElement(QStringLiteral("width"), QString::number(m_width)); + } + + if (m_children & Height) { + writer.writeTextElement(QStringLiteral("height"), QString::number(m_height)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomRect::setElementX(int a) +{ + m_children |= X; + m_x = a; +} + +void DomRect::setElementY(int a) +{ + m_children |= Y; + m_y = a; +} + +void DomRect::setElementWidth(int a) +{ + m_children |= Width; + m_width = a; +} + +void DomRect::setElementHeight(int a) +{ + m_children |= Height; + m_height = a; +} + +void DomRect::clearElementX() +{ + m_children &= ~X; +} + +void DomRect::clearElementY() +{ + m_children &= ~Y; +} + +void DomRect::clearElementWidth() +{ + m_children &= ~Width; +} + +void DomRect::clearElementHeight() +{ + m_children &= ~Height; +} + +void DomLocale::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_language = false; + m_has_attr_country = false; + } + + m_children = 0; +} + +DomLocale::DomLocale() +{ + m_children = 0; + m_has_attr_language = false; + m_has_attr_country = false; +} + +DomLocale::~DomLocale() +{ +} + +void DomLocale::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("language")) { + setAttributeLanguage(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("country")) { + setAttributeCountry(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomLocale::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("locale") : tagName.toLower()); + + if (hasAttributeLanguage()) + writer.writeAttribute(QStringLiteral("language"), attributeLanguage()); + + if (hasAttributeCountry()) + writer.writeAttribute(QStringLiteral("country"), attributeCountry()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomSizePolicy::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_hSizeType = false; + m_has_attr_vSizeType = false; + } + + m_children = 0; + m_hSizeType = 0; + m_vSizeType = 0; + m_horStretch = 0; + m_verStretch = 0; +} + +DomSizePolicy::DomSizePolicy() +{ + m_children = 0; + m_has_attr_hSizeType = false; + m_has_attr_vSizeType = false; + m_hSizeType = 0; + m_vSizeType = 0; + m_horStretch = 0; + m_verStretch = 0; +} + +DomSizePolicy::~DomSizePolicy() +{ +} + +void DomSizePolicy::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("hsizetype")) { + setAttributeHSizeType(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("vsizetype")) { + setAttributeVSizeType(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("hsizetype")) { + setElementHSizeType(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("vsizetype")) { + setElementVSizeType(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("horstretch")) { + setElementHorStretch(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("verstretch")) { + setElementVerStretch(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomSizePolicy::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizepolicy") : tagName.toLower()); + + if (hasAttributeHSizeType()) + writer.writeAttribute(QStringLiteral("hsizetype"), attributeHSizeType()); + + if (hasAttributeVSizeType()) + writer.writeAttribute(QStringLiteral("vsizetype"), attributeVSizeType()); + + if (m_children & HSizeType) { + writer.writeTextElement(QStringLiteral("hsizetype"), QString::number(m_hSizeType)); + } + + if (m_children & VSizeType) { + writer.writeTextElement(QStringLiteral("vsizetype"), QString::number(m_vSizeType)); + } + + if (m_children & HorStretch) { + writer.writeTextElement(QStringLiteral("horstretch"), QString::number(m_horStretch)); + } + + if (m_children & VerStretch) { + writer.writeTextElement(QStringLiteral("verstretch"), QString::number(m_verStretch)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomSizePolicy::setElementHSizeType(int a) +{ + m_children |= HSizeType; + m_hSizeType = a; +} + +void DomSizePolicy::setElementVSizeType(int a) +{ + m_children |= VSizeType; + m_vSizeType = a; +} + +void DomSizePolicy::setElementHorStretch(int a) +{ + m_children |= HorStretch; + m_horStretch = a; +} + +void DomSizePolicy::setElementVerStretch(int a) +{ + m_children |= VerStretch; + m_verStretch = a; +} + +void DomSizePolicy::clearElementHSizeType() +{ + m_children &= ~HSizeType; +} + +void DomSizePolicy::clearElementVSizeType() +{ + m_children &= ~VSizeType; +} + +void DomSizePolicy::clearElementHorStretch() +{ + m_children &= ~HorStretch; +} + +void DomSizePolicy::clearElementVerStretch() +{ + m_children &= ~VerStretch; +} + +void DomSize::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_width = 0; + m_height = 0; +} + +DomSize::DomSize() +{ + m_children = 0; + m_width = 0; + m_height = 0; +} + +DomSize::~DomSize() +{ +} + +void DomSize::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("width")) { + setElementWidth(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("height")) { + setElementHeight(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomSize::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("size") : tagName.toLower()); + + if (m_children & Width) { + writer.writeTextElement(QStringLiteral("width"), QString::number(m_width)); + } + + if (m_children & Height) { + writer.writeTextElement(QStringLiteral("height"), QString::number(m_height)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomSize::setElementWidth(int a) +{ + m_children |= Width; + m_width = a; +} + +void DomSize::setElementHeight(int a) +{ + m_children |= Height; + m_height = a; +} + +void DomSize::clearElementWidth() +{ + m_children &= ~Width; +} + +void DomSize::clearElementHeight() +{ + m_children &= ~Height; +} + +void DomDate::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_year = 0; + m_month = 0; + m_day = 0; +} + +DomDate::DomDate() +{ + m_children = 0; + m_year = 0; + m_month = 0; + m_day = 0; +} + +DomDate::~DomDate() +{ +} + +void DomDate::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("year")) { + setElementYear(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("month")) { + setElementMonth(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("day")) { + setElementDay(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomDate::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("date") : tagName.toLower()); + + if (m_children & Year) { + writer.writeTextElement(QStringLiteral("year"), QString::number(m_year)); + } + + if (m_children & Month) { + writer.writeTextElement(QStringLiteral("month"), QString::number(m_month)); + } + + if (m_children & Day) { + writer.writeTextElement(QStringLiteral("day"), QString::number(m_day)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomDate::setElementYear(int a) +{ + m_children |= Year; + m_year = a; +} + +void DomDate::setElementMonth(int a) +{ + m_children |= Month; + m_month = a; +} + +void DomDate::setElementDay(int a) +{ + m_children |= Day; + m_day = a; +} + +void DomDate::clearElementYear() +{ + m_children &= ~Year; +} + +void DomDate::clearElementMonth() +{ + m_children &= ~Month; +} + +void DomDate::clearElementDay() +{ + m_children &= ~Day; +} + +void DomTime::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_hour = 0; + m_minute = 0; + m_second = 0; +} + +DomTime::DomTime() +{ + m_children = 0; + m_hour = 0; + m_minute = 0; + m_second = 0; +} + +DomTime::~DomTime() +{ +} + +void DomTime::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("hour")) { + setElementHour(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("minute")) { + setElementMinute(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("second")) { + setElementSecond(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomTime::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("time") : tagName.toLower()); + + if (m_children & Hour) { + writer.writeTextElement(QStringLiteral("hour"), QString::number(m_hour)); + } + + if (m_children & Minute) { + writer.writeTextElement(QStringLiteral("minute"), QString::number(m_minute)); + } + + if (m_children & Second) { + writer.writeTextElement(QStringLiteral("second"), QString::number(m_second)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomTime::setElementHour(int a) +{ + m_children |= Hour; + m_hour = a; +} + +void DomTime::setElementMinute(int a) +{ + m_children |= Minute; + m_minute = a; +} + +void DomTime::setElementSecond(int a) +{ + m_children |= Second; + m_second = a; +} + +void DomTime::clearElementHour() +{ + m_children &= ~Hour; +} + +void DomTime::clearElementMinute() +{ + m_children &= ~Minute; +} + +void DomTime::clearElementSecond() +{ + m_children &= ~Second; +} + +void DomDateTime::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_hour = 0; + m_minute = 0; + m_second = 0; + m_year = 0; + m_month = 0; + m_day = 0; +} + +DomDateTime::DomDateTime() +{ + m_children = 0; + m_hour = 0; + m_minute = 0; + m_second = 0; + m_year = 0; + m_month = 0; + m_day = 0; +} + +DomDateTime::~DomDateTime() +{ +} + +void DomDateTime::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("hour")) { + setElementHour(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("minute")) { + setElementMinute(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("second")) { + setElementSecond(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("year")) { + setElementYear(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("month")) { + setElementMonth(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("day")) { + setElementDay(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomDateTime::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("datetime") : tagName.toLower()); + + if (m_children & Hour) { + writer.writeTextElement(QStringLiteral("hour"), QString::number(m_hour)); + } + + if (m_children & Minute) { + writer.writeTextElement(QStringLiteral("minute"), QString::number(m_minute)); + } + + if (m_children & Second) { + writer.writeTextElement(QStringLiteral("second"), QString::number(m_second)); + } + + if (m_children & Year) { + writer.writeTextElement(QStringLiteral("year"), QString::number(m_year)); + } + + if (m_children & Month) { + writer.writeTextElement(QStringLiteral("month"), QString::number(m_month)); + } + + if (m_children & Day) { + writer.writeTextElement(QStringLiteral("day"), QString::number(m_day)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomDateTime::setElementHour(int a) +{ + m_children |= Hour; + m_hour = a; +} + +void DomDateTime::setElementMinute(int a) +{ + m_children |= Minute; + m_minute = a; +} + +void DomDateTime::setElementSecond(int a) +{ + m_children |= Second; + m_second = a; +} + +void DomDateTime::setElementYear(int a) +{ + m_children |= Year; + m_year = a; +} + +void DomDateTime::setElementMonth(int a) +{ + m_children |= Month; + m_month = a; +} + +void DomDateTime::setElementDay(int a) +{ + m_children |= Day; + m_day = a; +} + +void DomDateTime::clearElementHour() +{ + m_children &= ~Hour; +} + +void DomDateTime::clearElementMinute() +{ + m_children &= ~Minute; +} + +void DomDateTime::clearElementSecond() +{ + m_children &= ~Second; +} + +void DomDateTime::clearElementYear() +{ + m_children &= ~Year; +} + +void DomDateTime::clearElementMonth() +{ + m_children &= ~Month; +} + +void DomDateTime::clearElementDay() +{ + m_children &= ~Day; +} + +void DomStringList::clear(bool clear_all) +{ + m_string.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomStringList::DomStringList() +{ + m_children = 0; +} + +DomStringList::~DomStringList() +{ + m_string.clear(); +} + +void DomStringList::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("string")) { + m_string.append(reader.readElementText()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomStringList::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("stringlist") : tagName.toLower()); + + for (int i = 0; i < m_string.size(); ++i) { + QString v = m_string[i]; + writer.writeTextElement(QStringLiteral("string"), v); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomStringList::setElementString(const QStringList& a) +{ + m_children |= String; + m_string = a; +} + +void DomResourcePixmap::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_resource = false; + m_has_attr_alias = false; + } + + m_children = 0; +} + +DomResourcePixmap::DomResourcePixmap() +{ + m_children = 0; + m_has_attr_resource = false; + m_has_attr_alias = false; + m_text.clear(); +} + +DomResourcePixmap::~DomResourcePixmap() +{ +} + +void DomResourcePixmap::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("resource")) { + setAttributeResource(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("alias")) { + setAttributeAlias(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomResourcePixmap::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resourcepixmap") : tagName.toLower()); + + if (hasAttributeResource()) + writer.writeAttribute(QStringLiteral("resource"), attributeResource()); + + if (hasAttributeAlias()) + writer.writeAttribute(QStringLiteral("alias"), attributeAlias()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomResourceIcon::clear(bool clear_all) +{ + delete m_normalOff; + delete m_normalOn; + delete m_disabledOff; + delete m_disabledOn; + delete m_activeOff; + delete m_activeOn; + delete m_selectedOff; + delete m_selectedOn; + + if (clear_all) { + m_text.clear(); + m_has_attr_theme = false; + m_has_attr_resource = false; + } + + m_children = 0; + m_normalOff = 0; + m_normalOn = 0; + m_disabledOff = 0; + m_disabledOn = 0; + m_activeOff = 0; + m_activeOn = 0; + m_selectedOff = 0; + m_selectedOn = 0; +} + +DomResourceIcon::DomResourceIcon() +{ + m_children = 0; + m_has_attr_theme = false; + m_has_attr_resource = false; + m_text.clear(); + m_normalOff = 0; + m_normalOn = 0; + m_disabledOff = 0; + m_disabledOn = 0; + m_activeOff = 0; + m_activeOn = 0; + m_selectedOff = 0; + m_selectedOn = 0; +} + +DomResourceIcon::~DomResourceIcon() +{ + delete m_normalOff; + delete m_normalOn; + delete m_disabledOff; + delete m_disabledOn; + delete m_activeOff; + delete m_activeOn; + delete m_selectedOff; + delete m_selectedOn; +} + +void DomResourceIcon::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("theme")) { + setAttributeTheme(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("resource")) { + setAttributeResource(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("normaloff")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementNormalOff(v); + continue; + } + if (tag == QStringLiteral("normalon")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementNormalOn(v); + continue; + } + if (tag == QStringLiteral("disabledoff")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementDisabledOff(v); + continue; + } + if (tag == QStringLiteral("disabledon")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementDisabledOn(v); + continue; + } + if (tag == QStringLiteral("activeoff")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementActiveOff(v); + continue; + } + if (tag == QStringLiteral("activeon")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementActiveOn(v); + continue; + } + if (tag == QStringLiteral("selectedoff")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementSelectedOff(v); + continue; + } + if (tag == QStringLiteral("selectedon")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementSelectedOn(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomResourceIcon::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("resourceicon") : tagName.toLower()); + + if (hasAttributeTheme()) + writer.writeAttribute(QStringLiteral("theme"), attributeTheme()); + + if (hasAttributeResource()) + writer.writeAttribute(QStringLiteral("resource"), attributeResource()); + + if (m_children & NormalOff) { + m_normalOff->write(writer, QStringLiteral("normaloff")); + } + + if (m_children & NormalOn) { + m_normalOn->write(writer, QStringLiteral("normalon")); + } + + if (m_children & DisabledOff) { + m_disabledOff->write(writer, QStringLiteral("disabledoff")); + } + + if (m_children & DisabledOn) { + m_disabledOn->write(writer, QStringLiteral("disabledon")); + } + + if (m_children & ActiveOff) { + m_activeOff->write(writer, QStringLiteral("activeoff")); + } + + if (m_children & ActiveOn) { + m_activeOn->write(writer, QStringLiteral("activeon")); + } + + if (m_children & SelectedOff) { + m_selectedOff->write(writer, QStringLiteral("selectedoff")); + } + + if (m_children & SelectedOn) { + m_selectedOn->write(writer, QStringLiteral("selectedon")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +DomResourcePixmap* DomResourceIcon::takeElementNormalOff() +{ + DomResourcePixmap* a = m_normalOff; + m_normalOff = 0; + m_children ^= NormalOff; + return a; +} + +void DomResourceIcon::setElementNormalOff(DomResourcePixmap* a) +{ + delete m_normalOff; + m_children |= NormalOff; + m_normalOff = a; +} + +DomResourcePixmap* DomResourceIcon::takeElementNormalOn() +{ + DomResourcePixmap* a = m_normalOn; + m_normalOn = 0; + m_children ^= NormalOn; + return a; +} + +void DomResourceIcon::setElementNormalOn(DomResourcePixmap* a) +{ + delete m_normalOn; + m_children |= NormalOn; + m_normalOn = a; +} + +DomResourcePixmap* DomResourceIcon::takeElementDisabledOff() +{ + DomResourcePixmap* a = m_disabledOff; + m_disabledOff = 0; + m_children ^= DisabledOff; + return a; +} + +void DomResourceIcon::setElementDisabledOff(DomResourcePixmap* a) +{ + delete m_disabledOff; + m_children |= DisabledOff; + m_disabledOff = a; +} + +DomResourcePixmap* DomResourceIcon::takeElementDisabledOn() +{ + DomResourcePixmap* a = m_disabledOn; + m_disabledOn = 0; + m_children ^= DisabledOn; + return a; +} + +void DomResourceIcon::setElementDisabledOn(DomResourcePixmap* a) +{ + delete m_disabledOn; + m_children |= DisabledOn; + m_disabledOn = a; +} + +DomResourcePixmap* DomResourceIcon::takeElementActiveOff() +{ + DomResourcePixmap* a = m_activeOff; + m_activeOff = 0; + m_children ^= ActiveOff; + return a; +} + +void DomResourceIcon::setElementActiveOff(DomResourcePixmap* a) +{ + delete m_activeOff; + m_children |= ActiveOff; + m_activeOff = a; +} + +DomResourcePixmap* DomResourceIcon::takeElementActiveOn() +{ + DomResourcePixmap* a = m_activeOn; + m_activeOn = 0; + m_children ^= ActiveOn; + return a; +} + +void DomResourceIcon::setElementActiveOn(DomResourcePixmap* a) +{ + delete m_activeOn; + m_children |= ActiveOn; + m_activeOn = a; +} + +DomResourcePixmap* DomResourceIcon::takeElementSelectedOff() +{ + DomResourcePixmap* a = m_selectedOff; + m_selectedOff = 0; + m_children ^= SelectedOff; + return a; +} + +void DomResourceIcon::setElementSelectedOff(DomResourcePixmap* a) +{ + delete m_selectedOff; + m_children |= SelectedOff; + m_selectedOff = a; +} + +DomResourcePixmap* DomResourceIcon::takeElementSelectedOn() +{ + DomResourcePixmap* a = m_selectedOn; + m_selectedOn = 0; + m_children ^= SelectedOn; + return a; +} + +void DomResourceIcon::setElementSelectedOn(DomResourcePixmap* a) +{ + delete m_selectedOn; + m_children |= SelectedOn; + m_selectedOn = a; +} + +void DomResourceIcon::clearElementNormalOff() +{ + delete m_normalOff; + m_normalOff = 0; + m_children &= ~NormalOff; +} + +void DomResourceIcon::clearElementNormalOn() +{ + delete m_normalOn; + m_normalOn = 0; + m_children &= ~NormalOn; +} + +void DomResourceIcon::clearElementDisabledOff() +{ + delete m_disabledOff; + m_disabledOff = 0; + m_children &= ~DisabledOff; +} + +void DomResourceIcon::clearElementDisabledOn() +{ + delete m_disabledOn; + m_disabledOn = 0; + m_children &= ~DisabledOn; +} + +void DomResourceIcon::clearElementActiveOff() +{ + delete m_activeOff; + m_activeOff = 0; + m_children &= ~ActiveOff; +} + +void DomResourceIcon::clearElementActiveOn() +{ + delete m_activeOn; + m_activeOn = 0; + m_children &= ~ActiveOn; +} + +void DomResourceIcon::clearElementSelectedOff() +{ + delete m_selectedOff; + m_selectedOff = 0; + m_children &= ~SelectedOff; +} + +void DomResourceIcon::clearElementSelectedOn() +{ + delete m_selectedOn; + m_selectedOn = 0; + m_children &= ~SelectedOn; +} + +void DomString::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_notr = false; + m_has_attr_comment = false; + m_has_attr_extraComment = false; + } + + m_children = 0; +} + +DomString::DomString() +{ + m_children = 0; + m_has_attr_notr = false; + m_has_attr_comment = false; + m_has_attr_extraComment = false; + m_text.clear(); +} + +DomString::~DomString() +{ +} + +void DomString::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("notr")) { + setAttributeNotr(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("comment")) { + setAttributeComment(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("extracomment")) { + setAttributeExtraComment(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomString::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("string") : tagName.toLower()); + + if (hasAttributeNotr()) + writer.writeAttribute(QStringLiteral("notr"), attributeNotr()); + + if (hasAttributeComment()) + writer.writeAttribute(QStringLiteral("comment"), attributeComment()); + + if (hasAttributeExtraComment()) + writer.writeAttribute(QStringLiteral("extracomment"), attributeExtraComment()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomPointF::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_x = 0; + m_y = 0; +} + +DomPointF::DomPointF() +{ + m_children = 0; + m_x = 0; + m_y = 0; +} + +DomPointF::~DomPointF() +{ +} + +void DomPointF::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QString(QLatin1Char('x'))) { + setElementX(reader.readElementText().toDouble()); + continue; + } + if (tag == QString(QLatin1Char('y'))) { + setElementY(reader.readElementText().toDouble()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomPointF::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("pointf") : tagName.toLower()); + + if (m_children & X) { + writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x, 'f', 15)); + } + + if (m_children & Y) { + writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y, 'f', 15)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomPointF::setElementX(double a) +{ + m_children |= X; + m_x = a; +} + +void DomPointF::setElementY(double a) +{ + m_children |= Y; + m_y = a; +} + +void DomPointF::clearElementX() +{ + m_children &= ~X; +} + +void DomPointF::clearElementY() +{ + m_children &= ~Y; +} + +void DomRectF::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_x = 0; + m_y = 0; + m_width = 0; + m_height = 0; +} + +DomRectF::DomRectF() +{ + m_children = 0; + m_x = 0; + m_y = 0; + m_width = 0; + m_height = 0; +} + +DomRectF::~DomRectF() +{ +} + +void DomRectF::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QString(QLatin1Char('x'))) { + setElementX(reader.readElementText().toDouble()); + continue; + } + if (tag == QString(QLatin1Char('y'))) { + setElementY(reader.readElementText().toDouble()); + continue; + } + if (tag == QStringLiteral("width")) { + setElementWidth(reader.readElementText().toDouble()); + continue; + } + if (tag == QStringLiteral("height")) { + setElementHeight(reader.readElementText().toDouble()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomRectF::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("rectf") : tagName.toLower()); + + if (m_children & X) { + writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x, 'f', 15)); + } + + if (m_children & Y) { + writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y, 'f', 15)); + } + + if (m_children & Width) { + writer.writeTextElement(QStringLiteral("width"), QString::number(m_width, 'f', 15)); + } + + if (m_children & Height) { + writer.writeTextElement(QStringLiteral("height"), QString::number(m_height, 'f', 15)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomRectF::setElementX(double a) +{ + m_children |= X; + m_x = a; +} + +void DomRectF::setElementY(double a) +{ + m_children |= Y; + m_y = a; +} + +void DomRectF::setElementWidth(double a) +{ + m_children |= Width; + m_width = a; +} + +void DomRectF::setElementHeight(double a) +{ + m_children |= Height; + m_height = a; +} + +void DomRectF::clearElementX() +{ + m_children &= ~X; +} + +void DomRectF::clearElementY() +{ + m_children &= ~Y; +} + +void DomRectF::clearElementWidth() +{ + m_children &= ~Width; +} + +void DomRectF::clearElementHeight() +{ + m_children &= ~Height; +} + +void DomSizeF::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_width = 0; + m_height = 0; +} + +DomSizeF::DomSizeF() +{ + m_children = 0; + m_width = 0; + m_height = 0; +} + +DomSizeF::~DomSizeF() +{ +} + +void DomSizeF::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("width")) { + setElementWidth(reader.readElementText().toDouble()); + continue; + } + if (tag == QStringLiteral("height")) { + setElementHeight(reader.readElementText().toDouble()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomSizeF::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("sizef") : tagName.toLower()); + + if (m_children & Width) { + writer.writeTextElement(QStringLiteral("width"), QString::number(m_width, 'f', 15)); + } + + if (m_children & Height) { + writer.writeTextElement(QStringLiteral("height"), QString::number(m_height, 'f', 15)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomSizeF::setElementWidth(double a) +{ + m_children |= Width; + m_width = a; +} + +void DomSizeF::setElementHeight(double a) +{ + m_children |= Height; + m_height = a; +} + +void DomSizeF::clearElementWidth() +{ + m_children &= ~Width; +} + +void DomSizeF::clearElementHeight() +{ + m_children &= ~Height; +} + +void DomChar::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_unicode = 0; +} + +DomChar::DomChar() +{ + m_children = 0; + m_unicode = 0; +} + +DomChar::~DomChar() +{ +} + +void DomChar::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("unicode")) { + setElementUnicode(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomChar::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("char") : tagName.toLower()); + + if (m_children & Unicode) { + writer.writeTextElement(QStringLiteral("unicode"), QString::number(m_unicode)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomChar::setElementUnicode(int a) +{ + m_children |= Unicode; + m_unicode = a; +} + +void DomChar::clearElementUnicode() +{ + m_children &= ~Unicode; +} + +void DomUrl::clear(bool clear_all) +{ + delete m_string; + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_string = 0; +} + +DomUrl::DomUrl() +{ + m_children = 0; + m_string = 0; +} + +DomUrl::~DomUrl() +{ + delete m_string; +} + +void DomUrl::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("string")) { + DomString *v = new DomString(); + v->read(reader); + setElementString(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomUrl::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("url") : tagName.toLower()); + + if (m_children & String) { + m_string->write(writer, QStringLiteral("string")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +DomString* DomUrl::takeElementString() +{ + DomString* a = m_string; + m_string = 0; + m_children ^= String; + return a; +} + +void DomUrl::setElementString(DomString* a) +{ + delete m_string; + m_children |= String; + m_string = a; +} + +void DomUrl::clearElementString() +{ + delete m_string; + m_string = 0; + m_children &= ~String; +} + +void DomProperty::clear(bool clear_all) +{ + delete m_color; + delete m_font; + delete m_iconSet; + delete m_pixmap; + delete m_palette; + delete m_point; + delete m_rect; + delete m_locale; + delete m_sizePolicy; + delete m_size; + delete m_string; + delete m_stringList; + delete m_date; + delete m_time; + delete m_dateTime; + delete m_pointF; + delete m_rectF; + delete m_sizeF; + delete m_char; + delete m_url; + delete m_brush; + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + m_has_attr_stdset = false; + m_attr_stdset = 0; + } + + m_kind = Unknown; + + m_color = 0; + m_cursor = 0; + m_font = 0; + m_iconSet = 0; + m_pixmap = 0; + m_palette = 0; + m_point = 0; + m_rect = 0; + m_locale = 0; + m_sizePolicy = 0; + m_size = 0; + m_string = 0; + m_stringList = 0; + m_number = 0; + m_float = 0.0; + m_double = 0; + m_date = 0; + m_time = 0; + m_dateTime = 0; + m_pointF = 0; + m_rectF = 0; + m_sizeF = 0; + m_longLong = 0; + m_char = 0; + m_url = 0; + m_UInt = 0; + m_uLongLong = 0; + m_brush = 0; +} + +DomProperty::DomProperty() +{ + m_kind = Unknown; + + m_has_attr_name = false; + m_has_attr_stdset = false; + m_attr_stdset = 0; + m_color = 0; + m_cursor = 0; + m_font = 0; + m_iconSet = 0; + m_pixmap = 0; + m_palette = 0; + m_point = 0; + m_rect = 0; + m_locale = 0; + m_sizePolicy = 0; + m_size = 0; + m_string = 0; + m_stringList = 0; + m_number = 0; + m_float = 0.0; + m_double = 0; + m_date = 0; + m_time = 0; + m_dateTime = 0; + m_pointF = 0; + m_rectF = 0; + m_sizeF = 0; + m_longLong = 0; + m_char = 0; + m_url = 0; + m_UInt = 0; + m_uLongLong = 0; + m_brush = 0; +} + +DomProperty::~DomProperty() +{ + delete m_color; + delete m_font; + delete m_iconSet; + delete m_pixmap; + delete m_palette; + delete m_point; + delete m_rect; + delete m_locale; + delete m_sizePolicy; + delete m_size; + delete m_string; + delete m_stringList; + delete m_date; + delete m_time; + delete m_dateTime; + delete m_pointF; + delete m_rectF; + delete m_sizeF; + delete m_char; + delete m_url; + delete m_brush; +} + +void DomProperty::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("stdset")) { + setAttributeStdset(attribute.value().toString().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("bool")) { + setElementBool(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("color")) { + DomColor *v = new DomColor(); + v->read(reader); + setElementColor(v); + continue; + } + if (tag == QStringLiteral("cstring")) { + setElementCstring(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("cursor")) { + setElementCursor(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("cursorshape")) { + setElementCursorShape(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("enum")) { + setElementEnum(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("font")) { + DomFont *v = new DomFont(); + v->read(reader); + setElementFont(v); + continue; + } + if (tag == QStringLiteral("iconset")) { + DomResourceIcon *v = new DomResourceIcon(); + v->read(reader); + setElementIconSet(v); + continue; + } + if (tag == QStringLiteral("pixmap")) { + DomResourcePixmap *v = new DomResourcePixmap(); + v->read(reader); + setElementPixmap(v); + continue; + } + if (tag == QStringLiteral("palette")) { + DomPalette *v = new DomPalette(); + v->read(reader); + setElementPalette(v); + continue; + } + if (tag == QStringLiteral("point")) { + DomPoint *v = new DomPoint(); + v->read(reader); + setElementPoint(v); + continue; + } + if (tag == QStringLiteral("rect")) { + DomRect *v = new DomRect(); + v->read(reader); + setElementRect(v); + continue; + } + if (tag == QStringLiteral("set")) { + setElementSet(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("locale")) { + DomLocale *v = new DomLocale(); + v->read(reader); + setElementLocale(v); + continue; + } + if (tag == QStringLiteral("sizepolicy")) { + DomSizePolicy *v = new DomSizePolicy(); + v->read(reader); + setElementSizePolicy(v); + continue; + } + if (tag == QStringLiteral("size")) { + DomSize *v = new DomSize(); + v->read(reader); + setElementSize(v); + continue; + } + if (tag == QStringLiteral("string")) { + DomString *v = new DomString(); + v->read(reader); + setElementString(v); + continue; + } + if (tag == QStringLiteral("stringlist")) { + DomStringList *v = new DomStringList(); + v->read(reader); + setElementStringList(v); + continue; + } + if (tag == QStringLiteral("number")) { + setElementNumber(reader.readElementText().toInt()); + continue; + } + if (tag == QStringLiteral("float")) { + setElementFloat(reader.readElementText().toFloat()); + continue; + } + if (tag == QStringLiteral("double")) { + setElementDouble(reader.readElementText().toDouble()); + continue; + } + if (tag == QStringLiteral("date")) { + DomDate *v = new DomDate(); + v->read(reader); + setElementDate(v); + continue; + } + if (tag == QStringLiteral("time")) { + DomTime *v = new DomTime(); + v->read(reader); + setElementTime(v); + continue; + } + if (tag == QStringLiteral("datetime")) { + DomDateTime *v = new DomDateTime(); + v->read(reader); + setElementDateTime(v); + continue; + } + if (tag == QStringLiteral("pointf")) { + DomPointF *v = new DomPointF(); + v->read(reader); + setElementPointF(v); + continue; + } + if (tag == QStringLiteral("rectf")) { + DomRectF *v = new DomRectF(); + v->read(reader); + setElementRectF(v); + continue; + } + if (tag == QStringLiteral("sizef")) { + DomSizeF *v = new DomSizeF(); + v->read(reader); + setElementSizeF(v); + continue; + } + if (tag == QStringLiteral("longlong")) { + setElementLongLong(reader.readElementText().toLongLong()); + continue; + } + if (tag == QStringLiteral("char")) { + DomChar *v = new DomChar(); + v->read(reader); + setElementChar(v); + continue; + } + if (tag == QStringLiteral("url")) { + DomUrl *v = new DomUrl(); + v->read(reader); + setElementUrl(v); + continue; + } + if (tag == QStringLiteral("uint")) { + setElementUInt(reader.readElementText().toUInt()); + continue; + } + if (tag == QStringLiteral("ulonglong")) { + setElementULongLong(reader.readElementText().toULongLong()); + continue; + } + if (tag == QStringLiteral("brush")) { + DomBrush *v = new DomBrush(); + v->read(reader); + setElementBrush(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomProperty::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("property") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + if (hasAttributeStdset()) + writer.writeAttribute(QStringLiteral("stdset"), QString::number(attributeStdset())); + + switch (kind()) { + case Bool: { + writer.writeTextElement(QStringLiteral("bool"), elementBool()); + break; + } + case Color: { + DomColor* v = elementColor(); + if (v != 0) { + v->write(writer, QStringLiteral("color")); + } + break; + } + case Cstring: { + writer.writeTextElement(QStringLiteral("cstring"), elementCstring()); + break; + } + case Cursor: { + writer.writeTextElement(QStringLiteral("cursor"), QString::number(elementCursor())); + break; + } + case CursorShape: { + writer.writeTextElement(QStringLiteral("cursorShape"), elementCursorShape()); + break; + } + case Enum: { + writer.writeTextElement(QStringLiteral("enum"), elementEnum()); + break; + } + case Font: { + DomFont* v = elementFont(); + if (v != 0) { + v->write(writer, QStringLiteral("font")); + } + break; + } + case IconSet: { + DomResourceIcon* v = elementIconSet(); + if (v != 0) { + v->write(writer, QStringLiteral("iconset")); + } + break; + } + case Pixmap: { + DomResourcePixmap* v = elementPixmap(); + if (v != 0) { + v->write(writer, QStringLiteral("pixmap")); + } + break; + } + case Palette: { + DomPalette* v = elementPalette(); + if (v != 0) { + v->write(writer, QStringLiteral("palette")); + } + break; + } + case Point: { + DomPoint* v = elementPoint(); + if (v != 0) { + v->write(writer, QStringLiteral("point")); + } + break; + } + case Rect: { + DomRect* v = elementRect(); + if (v != 0) { + v->write(writer, QStringLiteral("rect")); + } + break; + } + case Set: { + writer.writeTextElement(QStringLiteral("set"), elementSet()); + break; + } + case Locale: { + DomLocale* v = elementLocale(); + if (v != 0) { + v->write(writer, QStringLiteral("locale")); + } + break; + } + case SizePolicy: { + DomSizePolicy* v = elementSizePolicy(); + if (v != 0) { + v->write(writer, QStringLiteral("sizepolicy")); + } + break; + } + case Size: { + DomSize* v = elementSize(); + if (v != 0) { + v->write(writer, QStringLiteral("size")); + } + break; + } + case String: { + DomString* v = elementString(); + if (v != 0) { + v->write(writer, QStringLiteral("string")); + } + break; + } + case StringList: { + DomStringList* v = elementStringList(); + if (v != 0) { + v->write(writer, QStringLiteral("stringlist")); + } + break; + } + case Number: { + writer.writeTextElement(QStringLiteral("number"), QString::number(elementNumber())); + break; + } + case Float: { + writer.writeTextElement(QStringLiteral("float"), QString::number(elementFloat(), 'f', 8)); + break; + } + case Double: { + writer.writeTextElement(QStringLiteral("double"), QString::number(elementDouble(), 'f', 15)); + break; + } + case Date: { + DomDate* v = elementDate(); + if (v != 0) { + v->write(writer, QStringLiteral("date")); + } + break; + } + case Time: { + DomTime* v = elementTime(); + if (v != 0) { + v->write(writer, QStringLiteral("time")); + } + break; + } + case DateTime: { + DomDateTime* v = elementDateTime(); + if (v != 0) { + v->write(writer, QStringLiteral("datetime")); + } + break; + } + case PointF: { + DomPointF* v = elementPointF(); + if (v != 0) { + v->write(writer, QStringLiteral("pointf")); + } + break; + } + case RectF: { + DomRectF* v = elementRectF(); + if (v != 0) { + v->write(writer, QStringLiteral("rectf")); + } + break; + } + case SizeF: { + DomSizeF* v = elementSizeF(); + if (v != 0) { + v->write(writer, QStringLiteral("sizef")); + } + break; + } + case LongLong: { + writer.writeTextElement(QStringLiteral("longLong"), QString::number(elementLongLong())); + break; + } + case Char: { + DomChar* v = elementChar(); + if (v != 0) { + v->write(writer, QStringLiteral("char")); + } + break; + } + case Url: { + DomUrl* v = elementUrl(); + if (v != 0) { + v->write(writer, QStringLiteral("url")); + } + break; + } + case UInt: { + writer.writeTextElement(QStringLiteral("UInt"), QString::number(elementUInt())); + break; + } + case ULongLong: { + writer.writeTextElement(QStringLiteral("uLongLong"), QString::number(elementULongLong())); + break; + } + case Brush: { + DomBrush* v = elementBrush(); + if (v != 0) { + v->write(writer, QStringLiteral("brush")); + } + break; + } + default: + break; + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomProperty::setElementBool(const QString& a) +{ + clear(false); + m_kind = Bool; + m_bool = a; +} + +DomColor* DomProperty::takeElementColor() +{ + DomColor* a = m_color; + m_color = 0; + return a; +} + +void DomProperty::setElementColor(DomColor* a) +{ + clear(false); + m_kind = Color; + m_color = a; +} + +void DomProperty::setElementCstring(const QString& a) +{ + clear(false); + m_kind = Cstring; + m_cstring = a; +} + +void DomProperty::setElementCursor(int a) +{ + clear(false); + m_kind = Cursor; + m_cursor = a; +} + +void DomProperty::setElementCursorShape(const QString& a) +{ + clear(false); + m_kind = CursorShape; + m_cursorShape = a; +} + +void DomProperty::setElementEnum(const QString& a) +{ + clear(false); + m_kind = Enum; + m_enum = a; +} + +DomFont* DomProperty::takeElementFont() +{ + DomFont* a = m_font; + m_font = 0; + return a; +} + +void DomProperty::setElementFont(DomFont* a) +{ + clear(false); + m_kind = Font; + m_font = a; +} + +DomResourceIcon* DomProperty::takeElementIconSet() +{ + DomResourceIcon* a = m_iconSet; + m_iconSet = 0; + return a; +} + +void DomProperty::setElementIconSet(DomResourceIcon* a) +{ + clear(false); + m_kind = IconSet; + m_iconSet = a; +} + +DomResourcePixmap* DomProperty::takeElementPixmap() +{ + DomResourcePixmap* a = m_pixmap; + m_pixmap = 0; + return a; +} + +void DomProperty::setElementPixmap(DomResourcePixmap* a) +{ + clear(false); + m_kind = Pixmap; + m_pixmap = a; +} + +DomPalette* DomProperty::takeElementPalette() +{ + DomPalette* a = m_palette; + m_palette = 0; + return a; +} + +void DomProperty::setElementPalette(DomPalette* a) +{ + clear(false); + m_kind = Palette; + m_palette = a; +} + +DomPoint* DomProperty::takeElementPoint() +{ + DomPoint* a = m_point; + m_point = 0; + return a; +} + +void DomProperty::setElementPoint(DomPoint* a) +{ + clear(false); + m_kind = Point; + m_point = a; +} + +DomRect* DomProperty::takeElementRect() +{ + DomRect* a = m_rect; + m_rect = 0; + return a; +} + +void DomProperty::setElementRect(DomRect* a) +{ + clear(false); + m_kind = Rect; + m_rect = a; +} + +void DomProperty::setElementSet(const QString& a) +{ + clear(false); + m_kind = Set; + m_set = a; +} + +DomLocale* DomProperty::takeElementLocale() +{ + DomLocale* a = m_locale; + m_locale = 0; + return a; +} + +void DomProperty::setElementLocale(DomLocale* a) +{ + clear(false); + m_kind = Locale; + m_locale = a; +} + +DomSizePolicy* DomProperty::takeElementSizePolicy() +{ + DomSizePolicy* a = m_sizePolicy; + m_sizePolicy = 0; + return a; +} + +void DomProperty::setElementSizePolicy(DomSizePolicy* a) +{ + clear(false); + m_kind = SizePolicy; + m_sizePolicy = a; +} + +DomSize* DomProperty::takeElementSize() +{ + DomSize* a = m_size; + m_size = 0; + return a; +} + +void DomProperty::setElementSize(DomSize* a) +{ + clear(false); + m_kind = Size; + m_size = a; +} + +DomString* DomProperty::takeElementString() +{ + DomString* a = m_string; + m_string = 0; + return a; +} + +void DomProperty::setElementString(DomString* a) +{ + clear(false); + m_kind = String; + m_string = a; +} + +DomStringList* DomProperty::takeElementStringList() +{ + DomStringList* a = m_stringList; + m_stringList = 0; + return a; +} + +void DomProperty::setElementStringList(DomStringList* a) +{ + clear(false); + m_kind = StringList; + m_stringList = a; +} + +void DomProperty::setElementNumber(int a) +{ + clear(false); + m_kind = Number; + m_number = a; +} + +void DomProperty::setElementFloat(float a) +{ + clear(false); + m_kind = Float; + m_float = a; +} + +void DomProperty::setElementDouble(double a) +{ + clear(false); + m_kind = Double; + m_double = a; +} + +DomDate* DomProperty::takeElementDate() +{ + DomDate* a = m_date; + m_date = 0; + return a; +} + +void DomProperty::setElementDate(DomDate* a) +{ + clear(false); + m_kind = Date; + m_date = a; +} + +DomTime* DomProperty::takeElementTime() +{ + DomTime* a = m_time; + m_time = 0; + return a; +} + +void DomProperty::setElementTime(DomTime* a) +{ + clear(false); + m_kind = Time; + m_time = a; +} + +DomDateTime* DomProperty::takeElementDateTime() +{ + DomDateTime* a = m_dateTime; + m_dateTime = 0; + return a; +} + +void DomProperty::setElementDateTime(DomDateTime* a) +{ + clear(false); + m_kind = DateTime; + m_dateTime = a; +} + +DomPointF* DomProperty::takeElementPointF() +{ + DomPointF* a = m_pointF; + m_pointF = 0; + return a; +} + +void DomProperty::setElementPointF(DomPointF* a) +{ + clear(false); + m_kind = PointF; + m_pointF = a; +} + +DomRectF* DomProperty::takeElementRectF() +{ + DomRectF* a = m_rectF; + m_rectF = 0; + return a; +} + +void DomProperty::setElementRectF(DomRectF* a) +{ + clear(false); + m_kind = RectF; + m_rectF = a; +} + +DomSizeF* DomProperty::takeElementSizeF() +{ + DomSizeF* a = m_sizeF; + m_sizeF = 0; + return a; +} + +void DomProperty::setElementSizeF(DomSizeF* a) +{ + clear(false); + m_kind = SizeF; + m_sizeF = a; +} + +void DomProperty::setElementLongLong(qlonglong a) +{ + clear(false); + m_kind = LongLong; + m_longLong = a; +} + +DomChar* DomProperty::takeElementChar() +{ + DomChar* a = m_char; + m_char = 0; + return a; +} + +void DomProperty::setElementChar(DomChar* a) +{ + clear(false); + m_kind = Char; + m_char = a; +} + +DomUrl* DomProperty::takeElementUrl() +{ + DomUrl* a = m_url; + m_url = 0; + return a; +} + +void DomProperty::setElementUrl(DomUrl* a) +{ + clear(false); + m_kind = Url; + m_url = a; +} + +void DomProperty::setElementUInt(uint a) +{ + clear(false); + m_kind = UInt; + m_UInt = a; +} + +void DomProperty::setElementULongLong(qulonglong a) +{ + clear(false); + m_kind = ULongLong; + m_uLongLong = a; +} + +DomBrush* DomProperty::takeElementBrush() +{ + DomBrush* a = m_brush; + m_brush = 0; + return a; +} + +void DomProperty::setElementBrush(DomBrush* a) +{ + clear(false); + m_kind = Brush; + m_brush = a; +} + +void DomConnections::clear(bool clear_all) +{ + qDeleteAll(m_connection); + m_connection.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomConnections::DomConnections() +{ + m_children = 0; +} + +DomConnections::~DomConnections() +{ + qDeleteAll(m_connection); + m_connection.clear(); +} + +void DomConnections::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("connection")) { + DomConnection *v = new DomConnection(); + v->read(reader); + m_connection.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomConnections::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connections") : tagName.toLower()); + + for (int i = 0; i < m_connection.size(); ++i) { + DomConnection* v = m_connection[i]; + v->write(writer, QStringLiteral("connection")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomConnections::setElementConnection(const QList<DomConnection*>& a) +{ + m_children |= Connection; + m_connection = a; +} + +void DomConnection::clear(bool clear_all) +{ + delete m_hints; + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; + m_hints = 0; +} + +DomConnection::DomConnection() +{ + m_children = 0; + m_hints = 0; +} + +DomConnection::~DomConnection() +{ + delete m_hints; +} + +void DomConnection::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("sender")) { + setElementSender(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("signal")) { + setElementSignal(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("receiver")) { + setElementReceiver(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("slot")) { + setElementSlot(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("hints")) { + DomConnectionHints *v = new DomConnectionHints(); + v->read(reader); + setElementHints(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomConnection::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connection") : tagName.toLower()); + + if (m_children & Sender) { + writer.writeTextElement(QStringLiteral("sender"), m_sender); + } + + if (m_children & Signal) { + writer.writeTextElement(QStringLiteral("signal"), m_signal); + } + + if (m_children & Receiver) { + writer.writeTextElement(QStringLiteral("receiver"), m_receiver); + } + + if (m_children & Slot) { + writer.writeTextElement(QStringLiteral("slot"), m_slot); + } + + if (m_children & Hints) { + m_hints->write(writer, QStringLiteral("hints")); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomConnection::setElementSender(const QString& a) +{ + m_children |= Sender; + m_sender = a; +} + +void DomConnection::setElementSignal(const QString& a) +{ + m_children |= Signal; + m_signal = a; +} + +void DomConnection::setElementReceiver(const QString& a) +{ + m_children |= Receiver; + m_receiver = a; +} + +void DomConnection::setElementSlot(const QString& a) +{ + m_children |= Slot; + m_slot = a; +} + +DomConnectionHints* DomConnection::takeElementHints() +{ + DomConnectionHints* a = m_hints; + m_hints = 0; + m_children ^= Hints; + return a; +} + +void DomConnection::setElementHints(DomConnectionHints* a) +{ + delete m_hints; + m_children |= Hints; + m_hints = a; +} + +void DomConnection::clearElementSender() +{ + m_children &= ~Sender; +} + +void DomConnection::clearElementSignal() +{ + m_children &= ~Signal; +} + +void DomConnection::clearElementReceiver() +{ + m_children &= ~Receiver; +} + +void DomConnection::clearElementSlot() +{ + m_children &= ~Slot; +} + +void DomConnection::clearElementHints() +{ + delete m_hints; + m_hints = 0; + m_children &= ~Hints; +} + +void DomConnectionHints::clear(bool clear_all) +{ + qDeleteAll(m_hint); + m_hint.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomConnectionHints::DomConnectionHints() +{ + m_children = 0; +} + +DomConnectionHints::~DomConnectionHints() +{ + qDeleteAll(m_hint); + m_hint.clear(); +} + +void DomConnectionHints::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("hint")) { + DomConnectionHint *v = new DomConnectionHint(); + v->read(reader); + m_hint.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomConnectionHints::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connectionhints") : tagName.toLower()); + + for (int i = 0; i < m_hint.size(); ++i) { + DomConnectionHint* v = m_hint[i]; + v->write(writer, QStringLiteral("hint")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomConnectionHints::setElementHint(const QList<DomConnectionHint*>& a) +{ + m_children |= Hint; + m_hint = a; +} + +void DomConnectionHint::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_type = false; + } + + m_children = 0; + m_x = 0; + m_y = 0; +} + +DomConnectionHint::DomConnectionHint() +{ + m_children = 0; + m_has_attr_type = false; + m_x = 0; + m_y = 0; +} + +DomConnectionHint::~DomConnectionHint() +{ +} + +void DomConnectionHint::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("type")) { + setAttributeType(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QString(QLatin1Char('x'))) { + setElementX(reader.readElementText().toInt()); + continue; + } + if (tag == QString(QLatin1Char('y'))) { + setElementY(reader.readElementText().toInt()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomConnectionHint::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("connectionhint") : tagName.toLower()); + + if (hasAttributeType()) + writer.writeAttribute(QStringLiteral("type"), attributeType()); + + if (m_children & X) { + writer.writeTextElement(QString(QLatin1Char('x')), QString::number(m_x)); + } + + if (m_children & Y) { + writer.writeTextElement(QString(QLatin1Char('y')), QString::number(m_y)); + } + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomConnectionHint::setElementX(int a) +{ + m_children |= X; + m_x = a; +} + +void DomConnectionHint::setElementY(int a) +{ + m_children |= Y; + m_y = a; +} + +void DomConnectionHint::clearElementX() +{ + m_children &= ~X; +} + +void DomConnectionHint::clearElementY() +{ + m_children &= ~Y; +} + +void DomScript::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_source = false; + m_has_attr_language = false; + } + + m_children = 0; +} + +DomScript::DomScript() +{ + m_children = 0; + m_has_attr_source = false; + m_has_attr_language = false; +} + +DomScript::~DomScript() +{ +} + +void DomScript::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("source")) { + setAttributeSource(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("language")) { + setAttributeLanguage(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomScript::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("script") : tagName.toLower()); + + if (hasAttributeSource()) + writer.writeAttribute(QStringLiteral("source"), attributeSource()); + + if (hasAttributeLanguage()) + writer.writeAttribute(QStringLiteral("language"), attributeLanguage()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomWidgetData::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomWidgetData::DomWidgetData() +{ + m_children = 0; +} + +DomWidgetData::~DomWidgetData() +{ + qDeleteAll(m_property); + m_property.clear(); +} + +void DomWidgetData::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomWidgetData::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("widgetdata") : tagName.toLower()); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomWidgetData::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomDesignerData::clear(bool clear_all) +{ + qDeleteAll(m_property); + m_property.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomDesignerData::DomDesignerData() +{ + m_children = 0; +} + +DomDesignerData::~DomDesignerData() +{ + qDeleteAll(m_property); + m_property.clear(); +} + +void DomDesignerData::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("property")) { + DomProperty *v = new DomProperty(); + v->read(reader); + m_property.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomDesignerData::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("designerdata") : tagName.toLower()); + + for (int i = 0; i < m_property.size(); ++i) { + DomProperty* v = m_property[i]; + v->write(writer, QStringLiteral("property")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomDesignerData::setElementProperty(const QList<DomProperty*>& a) +{ + m_children |= Property; + m_property = a; +} + +void DomSlots::clear(bool clear_all) +{ + m_signal.clear(); + m_slot.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomSlots::DomSlots() +{ + m_children = 0; +} + +DomSlots::~DomSlots() +{ + m_signal.clear(); + m_slot.clear(); +} + +void DomSlots::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("signal")) { + m_signal.append(reader.readElementText()); + continue; + } + if (tag == QStringLiteral("slot")) { + m_slot.append(reader.readElementText()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomSlots::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("slots") : tagName.toLower()); + + for (int i = 0; i < m_signal.size(); ++i) { + QString v = m_signal[i]; + writer.writeTextElement(QStringLiteral("signal"), v); + } + for (int i = 0; i < m_slot.size(); ++i) { + QString v = m_slot[i]; + writer.writeTextElement(QStringLiteral("slot"), v); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomSlots::setElementSignal(const QStringList& a) +{ + m_children |= Signal; + m_signal = a; +} + +void DomSlots::setElementSlot(const QStringList& a) +{ + m_children |= Slot; + m_slot = a; +} + +void DomPropertySpecifications::clear(bool clear_all) +{ + qDeleteAll(m_stringpropertyspecification); + m_stringpropertyspecification.clear(); + + if (clear_all) { + m_text.clear(); + } + + m_children = 0; +} + +DomPropertySpecifications::DomPropertySpecifications() +{ + m_children = 0; +} + +DomPropertySpecifications::~DomPropertySpecifications() +{ + qDeleteAll(m_stringpropertyspecification); + m_stringpropertyspecification.clear(); +} + +void DomPropertySpecifications::read(QXmlStreamReader &reader) +{ + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + if (tag == QStringLiteral("stringpropertyspecification")) { + DomStringPropertySpecification *v = new DomStringPropertySpecification(); + v->read(reader); + m_stringpropertyspecification.append(v); + continue; + } + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomPropertySpecifications::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("propertyspecifications") : tagName.toLower()); + + for (int i = 0; i < m_stringpropertyspecification.size(); ++i) { + DomStringPropertySpecification* v = m_stringpropertyspecification[i]; + v->write(writer, QStringLiteral("stringpropertyspecification")); + } + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +void DomPropertySpecifications::setElementStringpropertyspecification(const QList<DomStringPropertySpecification*>& a) +{ + m_children |= Stringpropertyspecification; + m_stringpropertyspecification = a; +} + +void DomStringPropertySpecification::clear(bool clear_all) +{ + + if (clear_all) { + m_text.clear(); + m_has_attr_name = false; + m_has_attr_type = false; + m_has_attr_notr = false; + } + + m_children = 0; +} + +DomStringPropertySpecification::DomStringPropertySpecification() +{ + m_children = 0; + m_has_attr_name = false; + m_has_attr_type = false; + m_has_attr_notr = false; +} + +DomStringPropertySpecification::~DomStringPropertySpecification() +{ +} + +void DomStringPropertySpecification::read(QXmlStreamReader &reader) +{ + + foreach (const QXmlStreamAttribute &attribute, reader.attributes()) { + QStringRef name = attribute.name(); + if (name == QStringLiteral("name")) { + setAttributeName(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("type")) { + setAttributeType(attribute.value().toString()); + continue; + } + if (name == QStringLiteral("notr")) { + setAttributeNotr(attribute.value().toString()); + continue; + } + reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString()); + } + + for (bool finished = false; !finished && !reader.hasError();) { + switch (reader.readNext()) { + case QXmlStreamReader::StartElement : { + const QString tag = reader.name().toString().toLower(); + reader.raiseError(QStringLiteral("Unexpected element ") + tag); + } + break; + case QXmlStreamReader::EndElement : + finished = true; + break; + case QXmlStreamReader::Characters : + if (!reader.isWhitespace()) + m_text.append(reader.text().toString()); + break; + default : + break; + } + } +} + +void DomStringPropertySpecification::write(QXmlStreamWriter &writer, const QString &tagName) const +{ + writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("stringpropertyspecification") : tagName.toLower()); + + if (hasAttributeName()) + writer.writeAttribute(QStringLiteral("name"), attributeName()); + + if (hasAttributeType()) + writer.writeAttribute(QStringLiteral("type"), attributeType()); + + if (hasAttributeNotr()) + writer.writeAttribute(QStringLiteral("notr"), attributeNotr()); + + if (!m_text.isEmpty()) + writer.writeCharacters(m_text); + + writer.writeEndElement(); +} + +QT_END_NAMESPACE + diff --git a/src/designer/src/lib/uilib/ui4_p.h b/src/designer/src/lib/uilib/ui4_p.h new file mode 100644 index 0000000000000000000000000000000000000000..6a56c9eadc1f742fcd48e9bc16daf54da57f9f94 --- /dev/null +++ b/src/designer/src/lib/uilib/ui4_p.h @@ -0,0 +1,3603 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the tools applications of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of Qt Designer. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +// THIS FILE IS AUTOMATICALLY GENERATED + +#ifndef UI4_H +#define UI4_H + +#include <QtCore/QList> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QXmlStreamReader> +#include <QtCore/QXmlStreamWriter> +#include <QtCore/qglobal.h> + +QT_BEGIN_NAMESPACE + +#define QDESIGNER_UILIB_EXTERN Q_DECL_EXPORT +#define QDESIGNER_UILIB_IMPORT Q_DECL_IMPORT + +#if defined(QT_DESIGNER_STATIC) || defined(QT_UIC) || defined(QT_UIC3) +# define QDESIGNER_UILIB_EXPORT +#elif defined(QDESIGNER_UILIB_LIBRARY) +# define QDESIGNER_UILIB_EXPORT QDESIGNER_UILIB_EXTERN +#else +# define QDESIGNER_UILIB_EXPORT QDESIGNER_UILIB_IMPORT +#endif + +#ifndef QDESIGNER_UILIB_EXPORT +# define QDESIGNER_UILIB_EXPORT +#endif + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + + +/******************************************************************************* +** Forward declarations +*/ + +class DomUI; +class DomIncludes; +class DomInclude; +class DomResources; +class DomResource; +class DomActionGroup; +class DomAction; +class DomActionRef; +class DomButtonGroup; +class DomButtonGroups; +class DomImages; +class DomImage; +class DomImageData; +class DomCustomWidgets; +class DomHeader; +class DomCustomWidget; +class DomProperties; +class DomPropertyData; +class DomSizePolicyData; +class DomLayoutDefault; +class DomLayoutFunction; +class DomTabStops; +class DomLayout; +class DomLayoutItem; +class DomRow; +class DomColumn; +class DomItem; +class DomWidget; +class DomSpacer; +class DomColor; +class DomGradientStop; +class DomGradient; +class DomBrush; +class DomColorRole; +class DomColorGroup; +class DomPalette; +class DomFont; +class DomPoint; +class DomRect; +class DomLocale; +class DomSizePolicy; +class DomSize; +class DomDate; +class DomTime; +class DomDateTime; +class DomStringList; +class DomResourcePixmap; +class DomResourceIcon; +class DomString; +class DomPointF; +class DomRectF; +class DomSizeF; +class DomChar; +class DomUrl; +class DomProperty; +class DomConnections; +class DomConnection; +class DomConnectionHints; +class DomConnectionHint; +class DomScript; +class DomWidgetData; +class DomDesignerData; +class DomSlots; +class DomPropertySpecifications; +class DomStringPropertySpecification; + +/******************************************************************************* +** Declarations +*/ + +class QDESIGNER_UILIB_EXPORT DomUI { +public: + DomUI(); + ~DomUI(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeVersion() const { return m_has_attr_version; } + inline QString attributeVersion() const { return m_attr_version; } + inline void setAttributeVersion(const QString& a) { m_attr_version = a; m_has_attr_version = true; } + inline void clearAttributeVersion() { m_has_attr_version = false; } + + inline bool hasAttributeLanguage() const { return m_has_attr_language; } + inline QString attributeLanguage() const { return m_attr_language; } + inline void setAttributeLanguage(const QString& a) { m_attr_language = a; m_has_attr_language = true; } + inline void clearAttributeLanguage() { m_has_attr_language = false; } + + inline bool hasAttributeDisplayname() const { return m_has_attr_displayname; } + inline QString attributeDisplayname() const { return m_attr_displayname; } + inline void setAttributeDisplayname(const QString& a) { m_attr_displayname = a; m_has_attr_displayname = true; } + inline void clearAttributeDisplayname() { m_has_attr_displayname = false; } + + inline bool hasAttributeStdsetdef() const { return m_has_attr_stdsetdef; } + inline int attributeStdsetdef() const { return m_attr_stdsetdef; } + inline void setAttributeStdsetdef(int a) { m_attr_stdsetdef = a; m_has_attr_stdsetdef = true; } + inline void clearAttributeStdsetdef() { m_has_attr_stdsetdef = false; } + + inline bool hasAttributeStdSetDef() const { return m_has_attr_stdSetDef; } + inline int attributeStdSetDef() const { return m_attr_stdSetDef; } + inline void setAttributeStdSetDef(int a) { m_attr_stdSetDef = a; m_has_attr_stdSetDef = true; } + inline void clearAttributeStdSetDef() { m_has_attr_stdSetDef = false; } + + // child element accessors + inline QString elementAuthor() const { return m_author; } + void setElementAuthor(const QString& a); + inline bool hasElementAuthor() const { return m_children & Author; } + void clearElementAuthor(); + + inline QString elementComment() const { return m_comment; } + void setElementComment(const QString& a); + inline bool hasElementComment() const { return m_children & Comment; } + void clearElementComment(); + + inline QString elementExportMacro() const { return m_exportMacro; } + void setElementExportMacro(const QString& a); + inline bool hasElementExportMacro() const { return m_children & ExportMacro; } + void clearElementExportMacro(); + + inline QString elementClass() const { return m_class; } + void setElementClass(const QString& a); + inline bool hasElementClass() const { return m_children & Class; } + void clearElementClass(); + + inline DomWidget* elementWidget() const { return m_widget; } + DomWidget* takeElementWidget(); + void setElementWidget(DomWidget* a); + inline bool hasElementWidget() const { return m_children & Widget; } + void clearElementWidget(); + + inline DomLayoutDefault* elementLayoutDefault() const { return m_layoutDefault; } + DomLayoutDefault* takeElementLayoutDefault(); + void setElementLayoutDefault(DomLayoutDefault* a); + inline bool hasElementLayoutDefault() const { return m_children & LayoutDefault; } + void clearElementLayoutDefault(); + + inline DomLayoutFunction* elementLayoutFunction() const { return m_layoutFunction; } + DomLayoutFunction* takeElementLayoutFunction(); + void setElementLayoutFunction(DomLayoutFunction* a); + inline bool hasElementLayoutFunction() const { return m_children & LayoutFunction; } + void clearElementLayoutFunction(); + + inline QString elementPixmapFunction() const { return m_pixmapFunction; } + void setElementPixmapFunction(const QString& a); + inline bool hasElementPixmapFunction() const { return m_children & PixmapFunction; } + void clearElementPixmapFunction(); + + inline DomCustomWidgets* elementCustomWidgets() const { return m_customWidgets; } + DomCustomWidgets* takeElementCustomWidgets(); + void setElementCustomWidgets(DomCustomWidgets* a); + inline bool hasElementCustomWidgets() const { return m_children & CustomWidgets; } + void clearElementCustomWidgets(); + + inline DomTabStops* elementTabStops() const { return m_tabStops; } + DomTabStops* takeElementTabStops(); + void setElementTabStops(DomTabStops* a); + inline bool hasElementTabStops() const { return m_children & TabStops; } + void clearElementTabStops(); + + inline DomImages* elementImages() const { return m_images; } + DomImages* takeElementImages(); + void setElementImages(DomImages* a); + inline bool hasElementImages() const { return m_children & Images; } + void clearElementImages(); + + inline DomIncludes* elementIncludes() const { return m_includes; } + DomIncludes* takeElementIncludes(); + void setElementIncludes(DomIncludes* a); + inline bool hasElementIncludes() const { return m_children & Includes; } + void clearElementIncludes(); + + inline DomResources* elementResources() const { return m_resources; } + DomResources* takeElementResources(); + void setElementResources(DomResources* a); + inline bool hasElementResources() const { return m_children & Resources; } + void clearElementResources(); + + inline DomConnections* elementConnections() const { return m_connections; } + DomConnections* takeElementConnections(); + void setElementConnections(DomConnections* a); + inline bool hasElementConnections() const { return m_children & Connections; } + void clearElementConnections(); + + inline DomDesignerData* elementDesignerdata() const { return m_designerdata; } + DomDesignerData* takeElementDesignerdata(); + void setElementDesignerdata(DomDesignerData* a); + inline bool hasElementDesignerdata() const { return m_children & Designerdata; } + void clearElementDesignerdata(); + + inline DomSlots* elementSlots() const { return m_slots; } + DomSlots* takeElementSlots(); + void setElementSlots(DomSlots* a); + inline bool hasElementSlots() const { return m_children & Slots; } + void clearElementSlots(); + + inline DomButtonGroups* elementButtonGroups() const { return m_buttonGroups; } + DomButtonGroups* takeElementButtonGroups(); + void setElementButtonGroups(DomButtonGroups* a); + inline bool hasElementButtonGroups() const { return m_children & ButtonGroups; } + void clearElementButtonGroups(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_version; + bool m_has_attr_version; + + QString m_attr_language; + bool m_has_attr_language; + + QString m_attr_displayname; + bool m_has_attr_displayname; + + int m_attr_stdsetdef; + bool m_has_attr_stdsetdef; + + int m_attr_stdSetDef; + bool m_has_attr_stdSetDef; + + // child element data + uint m_children; + QString m_author; + QString m_comment; + QString m_exportMacro; + QString m_class; + DomWidget* m_widget; + DomLayoutDefault* m_layoutDefault; + DomLayoutFunction* m_layoutFunction; + QString m_pixmapFunction; + DomCustomWidgets* m_customWidgets; + DomTabStops* m_tabStops; + DomImages* m_images; + DomIncludes* m_includes; + DomResources* m_resources; + DomConnections* m_connections; + DomDesignerData* m_designerdata; + DomSlots* m_slots; + DomButtonGroups* m_buttonGroups; + enum Child { + Author = 1, + Comment = 2, + ExportMacro = 4, + Class = 8, + Widget = 16, + LayoutDefault = 32, + LayoutFunction = 64, + PixmapFunction = 128, + CustomWidgets = 256, + TabStops = 512, + Images = 1024, + Includes = 2048, + Resources = 4096, + Connections = 8192, + Designerdata = 16384, + Slots = 32768, + ButtonGroups = 65536 + }; + + DomUI(const DomUI &other); + void operator = (const DomUI&other); +}; + +class QDESIGNER_UILIB_EXPORT DomIncludes { +public: + DomIncludes(); + ~DomIncludes(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomInclude*> elementInclude() const { return m_include; } + void setElementInclude(const QList<DomInclude*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomInclude*> m_include; + enum Child { + Include = 1 + }; + + DomIncludes(const DomIncludes &other); + void operator = (const DomIncludes&other); +}; + +class QDESIGNER_UILIB_EXPORT DomInclude { +public: + DomInclude(); + ~DomInclude(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeLocation() const { return m_has_attr_location; } + inline QString attributeLocation() const { return m_attr_location; } + inline void setAttributeLocation(const QString& a) { m_attr_location = a; m_has_attr_location = true; } + inline void clearAttributeLocation() { m_has_attr_location = false; } + + inline bool hasAttributeImpldecl() const { return m_has_attr_impldecl; } + inline QString attributeImpldecl() const { return m_attr_impldecl; } + inline void setAttributeImpldecl(const QString& a) { m_attr_impldecl = a; m_has_attr_impldecl = true; } + inline void clearAttributeImpldecl() { m_has_attr_impldecl = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_location; + bool m_has_attr_location; + + QString m_attr_impldecl; + bool m_has_attr_impldecl; + + // child element data + uint m_children; + + DomInclude(const DomInclude &other); + void operator = (const DomInclude&other); +}; + +class QDESIGNER_UILIB_EXPORT DomResources { +public: + DomResources(); + ~DomResources(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + // child element accessors + inline QList<DomResource*> elementInclude() const { return m_include; } + void setElementInclude(const QList<DomResource*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + // child element data + uint m_children; + QList<DomResource*> m_include; + enum Child { + Include = 1 + }; + + DomResources(const DomResources &other); + void operator = (const DomResources&other); +}; + +class QDESIGNER_UILIB_EXPORT DomResource { +public: + DomResource(); + ~DomResource(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeLocation() const { return m_has_attr_location; } + inline QString attributeLocation() const { return m_attr_location; } + inline void setAttributeLocation(const QString& a) { m_attr_location = a; m_has_attr_location = true; } + inline void clearAttributeLocation() { m_has_attr_location = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_location; + bool m_has_attr_location; + + // child element data + uint m_children; + + DomResource(const DomResource &other); + void operator = (const DomResource&other); +}; + +class QDESIGNER_UILIB_EXPORT DomActionGroup { +public: + DomActionGroup(); + ~DomActionGroup(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + // child element accessors + inline QList<DomAction*> elementAction() const { return m_action; } + void setElementAction(const QList<DomAction*>& a); + + inline QList<DomActionGroup*> elementActionGroup() const { return m_actionGroup; } + void setElementActionGroup(const QList<DomActionGroup*>& a); + + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + + inline QList<DomProperty*> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QList<DomProperty*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + // child element data + uint m_children; + QList<DomAction*> m_action; + QList<DomActionGroup*> m_actionGroup; + QList<DomProperty*> m_property; + QList<DomProperty*> m_attribute; + enum Child { + Action = 1, + ActionGroup = 2, + Property = 4, + Attribute = 8 + }; + + DomActionGroup(const DomActionGroup &other); + void operator = (const DomActionGroup&other); +}; + +class QDESIGNER_UILIB_EXPORT DomAction { +public: + DomAction(); + ~DomAction(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + inline bool hasAttributeMenu() const { return m_has_attr_menu; } + inline QString attributeMenu() const { return m_attr_menu; } + inline void setAttributeMenu(const QString& a) { m_attr_menu = a; m_has_attr_menu = true; } + inline void clearAttributeMenu() { m_has_attr_menu = false; } + + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + + inline QList<DomProperty*> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QList<DomProperty*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + QString m_attr_menu; + bool m_has_attr_menu; + + // child element data + uint m_children; + QList<DomProperty*> m_property; + QList<DomProperty*> m_attribute; + enum Child { + Property = 1, + Attribute = 2 + }; + + DomAction(const DomAction &other); + void operator = (const DomAction&other); +}; + +class QDESIGNER_UILIB_EXPORT DomActionRef { +public: + DomActionRef(); + ~DomActionRef(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + // child element data + uint m_children; + + DomActionRef(const DomActionRef &other); + void operator = (const DomActionRef&other); +}; + +class QDESIGNER_UILIB_EXPORT DomButtonGroup { +public: + DomButtonGroup(); + ~DomButtonGroup(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + + inline QList<DomProperty*> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QList<DomProperty*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + // child element data + uint m_children; + QList<DomProperty*> m_property; + QList<DomProperty*> m_attribute; + enum Child { + Property = 1, + Attribute = 2 + }; + + DomButtonGroup(const DomButtonGroup &other); + void operator = (const DomButtonGroup&other); +}; + +class QDESIGNER_UILIB_EXPORT DomButtonGroups { +public: + DomButtonGroups(); + ~DomButtonGroups(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomButtonGroup*> elementButtonGroup() const { return m_buttonGroup; } + void setElementButtonGroup(const QList<DomButtonGroup*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomButtonGroup*> m_buttonGroup; + enum Child { + ButtonGroup = 1 + }; + + DomButtonGroups(const DomButtonGroups &other); + void operator = (const DomButtonGroups&other); +}; + +class QDESIGNER_UILIB_EXPORT DomImages { +public: + DomImages(); + ~DomImages(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomImage*> elementImage() const { return m_image; } + void setElementImage(const QList<DomImage*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomImage*> m_image; + enum Child { + Image = 1 + }; + + DomImages(const DomImages &other); + void operator = (const DomImages&other); +}; + +class QDESIGNER_UILIB_EXPORT DomImage { +public: + DomImage(); + ~DomImage(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + // child element accessors + inline DomImageData* elementData() const { return m_data; } + DomImageData* takeElementData(); + void setElementData(DomImageData* a); + inline bool hasElementData() const { return m_children & Data; } + void clearElementData(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + // child element data + uint m_children; + DomImageData* m_data; + enum Child { + Data = 1 + }; + + DomImage(const DomImage &other); + void operator = (const DomImage&other); +}; + +class QDESIGNER_UILIB_EXPORT DomImageData { +public: + DomImageData(); + ~DomImageData(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeFormat() const { return m_has_attr_format; } + inline QString attributeFormat() const { return m_attr_format; } + inline void setAttributeFormat(const QString& a) { m_attr_format = a; m_has_attr_format = true; } + inline void clearAttributeFormat() { m_has_attr_format = false; } + + inline bool hasAttributeLength() const { return m_has_attr_length; } + inline int attributeLength() const { return m_attr_length; } + inline void setAttributeLength(int a) { m_attr_length = a; m_has_attr_length = true; } + inline void clearAttributeLength() { m_has_attr_length = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_format; + bool m_has_attr_format; + + int m_attr_length; + bool m_has_attr_length; + + // child element data + uint m_children; + + DomImageData(const DomImageData &other); + void operator = (const DomImageData&other); +}; + +class QDESIGNER_UILIB_EXPORT DomCustomWidgets { +public: + DomCustomWidgets(); + ~DomCustomWidgets(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomCustomWidget*> elementCustomWidget() const { return m_customWidget; } + void setElementCustomWidget(const QList<DomCustomWidget*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomCustomWidget*> m_customWidget; + enum Child { + CustomWidget = 1 + }; + + DomCustomWidgets(const DomCustomWidgets &other); + void operator = (const DomCustomWidgets&other); +}; + +class QDESIGNER_UILIB_EXPORT DomHeader { +public: + DomHeader(); + ~DomHeader(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeLocation() const { return m_has_attr_location; } + inline QString attributeLocation() const { return m_attr_location; } + inline void setAttributeLocation(const QString& a) { m_attr_location = a; m_has_attr_location = true; } + inline void clearAttributeLocation() { m_has_attr_location = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_location; + bool m_has_attr_location; + + // child element data + uint m_children; + + DomHeader(const DomHeader &other); + void operator = (const DomHeader&other); +}; + +class QDESIGNER_UILIB_EXPORT DomCustomWidget { +public: + DomCustomWidget(); + ~DomCustomWidget(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QString elementClass() const { return m_class; } + void setElementClass(const QString& a); + inline bool hasElementClass() const { return m_children & Class; } + void clearElementClass(); + + inline QString elementExtends() const { return m_extends; } + void setElementExtends(const QString& a); + inline bool hasElementExtends() const { return m_children & Extends; } + void clearElementExtends(); + + inline DomHeader* elementHeader() const { return m_header; } + DomHeader* takeElementHeader(); + void setElementHeader(DomHeader* a); + inline bool hasElementHeader() const { return m_children & Header; } + void clearElementHeader(); + + inline DomSize* elementSizeHint() const { return m_sizeHint; } + DomSize* takeElementSizeHint(); + void setElementSizeHint(DomSize* a); + inline bool hasElementSizeHint() const { return m_children & SizeHint; } + void clearElementSizeHint(); + + inline QString elementAddPageMethod() const { return m_addPageMethod; } + void setElementAddPageMethod(const QString& a); + inline bool hasElementAddPageMethod() const { return m_children & AddPageMethod; } + void clearElementAddPageMethod(); + + inline int elementContainer() const { return m_container; } + void setElementContainer(int a); + inline bool hasElementContainer() const { return m_children & Container; } + void clearElementContainer(); + + inline DomSizePolicyData* elementSizePolicy() const { return m_sizePolicy; } + DomSizePolicyData* takeElementSizePolicy(); + void setElementSizePolicy(DomSizePolicyData* a); + inline bool hasElementSizePolicy() const { return m_children & SizePolicy; } + void clearElementSizePolicy(); + + inline QString elementPixmap() const { return m_pixmap; } + void setElementPixmap(const QString& a); + inline bool hasElementPixmap() const { return m_children & Pixmap; } + void clearElementPixmap(); + + inline DomScript* elementScript() const { return m_script; } + DomScript* takeElementScript(); + void setElementScript(DomScript* a); + inline bool hasElementScript() const { return m_children & Script; } + void clearElementScript(); + + inline DomProperties* elementProperties() const { return m_properties; } + DomProperties* takeElementProperties(); + void setElementProperties(DomProperties* a); + inline bool hasElementProperties() const { return m_children & Properties; } + void clearElementProperties(); + + inline DomSlots* elementSlots() const { return m_slots; } + DomSlots* takeElementSlots(); + void setElementSlots(DomSlots* a); + inline bool hasElementSlots() const { return m_children & Slots; } + void clearElementSlots(); + + inline DomPropertySpecifications* elementPropertyspecifications() const { return m_propertyspecifications; } + DomPropertySpecifications* takeElementPropertyspecifications(); + void setElementPropertyspecifications(DomPropertySpecifications* a); + inline bool hasElementPropertyspecifications() const { return m_children & Propertyspecifications; } + void clearElementPropertyspecifications(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QString m_class; + QString m_extends; + DomHeader* m_header; + DomSize* m_sizeHint; + QString m_addPageMethod; + int m_container; + DomSizePolicyData* m_sizePolicy; + QString m_pixmap; + DomScript* m_script; + DomProperties* m_properties; + DomSlots* m_slots; + DomPropertySpecifications* m_propertyspecifications; + enum Child { + Class = 1, + Extends = 2, + Header = 4, + SizeHint = 8, + AddPageMethod = 16, + Container = 32, + SizePolicy = 64, + Pixmap = 128, + Script = 256, + Properties = 512, + Slots = 1024, + Propertyspecifications = 2048 + }; + + DomCustomWidget(const DomCustomWidget &other); + void operator = (const DomCustomWidget&other); +}; + +class QDESIGNER_UILIB_EXPORT DomProperties { +public: + DomProperties(); + ~DomProperties(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomPropertyData*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomPropertyData*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomPropertyData*> m_property; + enum Child { + Property = 1 + }; + + DomProperties(const DomProperties &other); + void operator = (const DomProperties&other); +}; + +class QDESIGNER_UILIB_EXPORT DomPropertyData { +public: + DomPropertyData(); + ~DomPropertyData(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeType() const { return m_has_attr_type; } + inline QString attributeType() const { return m_attr_type; } + inline void setAttributeType(const QString& a) { m_attr_type = a; m_has_attr_type = true; } + inline void clearAttributeType() { m_has_attr_type = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_type; + bool m_has_attr_type; + + // child element data + uint m_children; + + DomPropertyData(const DomPropertyData &other); + void operator = (const DomPropertyData&other); +}; + +class QDESIGNER_UILIB_EXPORT DomSizePolicyData { +public: + DomSizePolicyData(); + ~DomSizePolicyData(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline int elementHorData() const { return m_horData; } + void setElementHorData(int a); + inline bool hasElementHorData() const { return m_children & HorData; } + void clearElementHorData(); + + inline int elementVerData() const { return m_verData; } + void setElementVerData(int a); + inline bool hasElementVerData() const { return m_children & VerData; } + void clearElementVerData(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + int m_horData; + int m_verData; + enum Child { + HorData = 1, + VerData = 2 + }; + + DomSizePolicyData(const DomSizePolicyData &other); + void operator = (const DomSizePolicyData&other); +}; + +class QDESIGNER_UILIB_EXPORT DomLayoutDefault { +public: + DomLayoutDefault(); + ~DomLayoutDefault(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeSpacing() const { return m_has_attr_spacing; } + inline int attributeSpacing() const { return m_attr_spacing; } + inline void setAttributeSpacing(int a) { m_attr_spacing = a; m_has_attr_spacing = true; } + inline void clearAttributeSpacing() { m_has_attr_spacing = false; } + + inline bool hasAttributeMargin() const { return m_has_attr_margin; } + inline int attributeMargin() const { return m_attr_margin; } + inline void setAttributeMargin(int a) { m_attr_margin = a; m_has_attr_margin = true; } + inline void clearAttributeMargin() { m_has_attr_margin = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + int m_attr_spacing; + bool m_has_attr_spacing; + + int m_attr_margin; + bool m_has_attr_margin; + + // child element data + uint m_children; + + DomLayoutDefault(const DomLayoutDefault &other); + void operator = (const DomLayoutDefault&other); +}; + +class QDESIGNER_UILIB_EXPORT DomLayoutFunction { +public: + DomLayoutFunction(); + ~DomLayoutFunction(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeSpacing() const { return m_has_attr_spacing; } + inline QString attributeSpacing() const { return m_attr_spacing; } + inline void setAttributeSpacing(const QString& a) { m_attr_spacing = a; m_has_attr_spacing = true; } + inline void clearAttributeSpacing() { m_has_attr_spacing = false; } + + inline bool hasAttributeMargin() const { return m_has_attr_margin; } + inline QString attributeMargin() const { return m_attr_margin; } + inline void setAttributeMargin(const QString& a) { m_attr_margin = a; m_has_attr_margin = true; } + inline void clearAttributeMargin() { m_has_attr_margin = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_spacing; + bool m_has_attr_spacing; + + QString m_attr_margin; + bool m_has_attr_margin; + + // child element data + uint m_children; + + DomLayoutFunction(const DomLayoutFunction &other); + void operator = (const DomLayoutFunction&other); +}; + +class QDESIGNER_UILIB_EXPORT DomTabStops { +public: + DomTabStops(); + ~DomTabStops(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QStringList elementTabStop() const { return m_tabStop; } + void setElementTabStop(const QStringList& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QStringList m_tabStop; + enum Child { + TabStop = 1 + }; + + DomTabStops(const DomTabStops &other); + void operator = (const DomTabStops&other); +}; + +class QDESIGNER_UILIB_EXPORT DomLayout { +public: + DomLayout(); + ~DomLayout(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeClass() const { return m_has_attr_class; } + inline QString attributeClass() const { return m_attr_class; } + inline void setAttributeClass(const QString& a) { m_attr_class = a; m_has_attr_class = true; } + inline void clearAttributeClass() { m_has_attr_class = false; } + + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + inline bool hasAttributeStretch() const { return m_has_attr_stretch; } + inline QString attributeStretch() const { return m_attr_stretch; } + inline void setAttributeStretch(const QString& a) { m_attr_stretch = a; m_has_attr_stretch = true; } + inline void clearAttributeStretch() { m_has_attr_stretch = false; } + + inline bool hasAttributeRowStretch() const { return m_has_attr_rowStretch; } + inline QString attributeRowStretch() const { return m_attr_rowStretch; } + inline void setAttributeRowStretch(const QString& a) { m_attr_rowStretch = a; m_has_attr_rowStretch = true; } + inline void clearAttributeRowStretch() { m_has_attr_rowStretch = false; } + + inline bool hasAttributeColumnStretch() const { return m_has_attr_columnStretch; } + inline QString attributeColumnStretch() const { return m_attr_columnStretch; } + inline void setAttributeColumnStretch(const QString& a) { m_attr_columnStretch = a; m_has_attr_columnStretch = true; } + inline void clearAttributeColumnStretch() { m_has_attr_columnStretch = false; } + + inline bool hasAttributeRowMinimumHeight() const { return m_has_attr_rowMinimumHeight; } + inline QString attributeRowMinimumHeight() const { return m_attr_rowMinimumHeight; } + inline void setAttributeRowMinimumHeight(const QString& a) { m_attr_rowMinimumHeight = a; m_has_attr_rowMinimumHeight = true; } + inline void clearAttributeRowMinimumHeight() { m_has_attr_rowMinimumHeight = false; } + + inline bool hasAttributeColumnMinimumWidth() const { return m_has_attr_columnMinimumWidth; } + inline QString attributeColumnMinimumWidth() const { return m_attr_columnMinimumWidth; } + inline void setAttributeColumnMinimumWidth(const QString& a) { m_attr_columnMinimumWidth = a; m_has_attr_columnMinimumWidth = true; } + inline void clearAttributeColumnMinimumWidth() { m_has_attr_columnMinimumWidth = false; } + + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + + inline QList<DomProperty*> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QList<DomProperty*>& a); + + inline QList<DomLayoutItem*> elementItem() const { return m_item; } + void setElementItem(const QList<DomLayoutItem*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_class; + bool m_has_attr_class; + + QString m_attr_name; + bool m_has_attr_name; + + QString m_attr_stretch; + bool m_has_attr_stretch; + + QString m_attr_rowStretch; + bool m_has_attr_rowStretch; + + QString m_attr_columnStretch; + bool m_has_attr_columnStretch; + + QString m_attr_rowMinimumHeight; + bool m_has_attr_rowMinimumHeight; + + QString m_attr_columnMinimumWidth; + bool m_has_attr_columnMinimumWidth; + + // child element data + uint m_children; + QList<DomProperty*> m_property; + QList<DomProperty*> m_attribute; + QList<DomLayoutItem*> m_item; + enum Child { + Property = 1, + Attribute = 2, + Item = 4 + }; + + DomLayout(const DomLayout &other); + void operator = (const DomLayout&other); +}; + +class QDESIGNER_UILIB_EXPORT DomLayoutItem { +public: + DomLayoutItem(); + ~DomLayoutItem(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeRow() const { return m_has_attr_row; } + inline int attributeRow() const { return m_attr_row; } + inline void setAttributeRow(int a) { m_attr_row = a; m_has_attr_row = true; } + inline void clearAttributeRow() { m_has_attr_row = false; } + + inline bool hasAttributeColumn() const { return m_has_attr_column; } + inline int attributeColumn() const { return m_attr_column; } + inline void setAttributeColumn(int a) { m_attr_column = a; m_has_attr_column = true; } + inline void clearAttributeColumn() { m_has_attr_column = false; } + + inline bool hasAttributeRowSpan() const { return m_has_attr_rowSpan; } + inline int attributeRowSpan() const { return m_attr_rowSpan; } + inline void setAttributeRowSpan(int a) { m_attr_rowSpan = a; m_has_attr_rowSpan = true; } + inline void clearAttributeRowSpan() { m_has_attr_rowSpan = false; } + + inline bool hasAttributeColSpan() const { return m_has_attr_colSpan; } + inline int attributeColSpan() const { return m_attr_colSpan; } + inline void setAttributeColSpan(int a) { m_attr_colSpan = a; m_has_attr_colSpan = true; } + inline void clearAttributeColSpan() { m_has_attr_colSpan = false; } + + inline bool hasAttributeAlignment() const { return m_has_attr_alignment; } + inline QString attributeAlignment() const { return m_attr_alignment; } + inline void setAttributeAlignment(const QString& a) { m_attr_alignment = a; m_has_attr_alignment = true; } + inline void clearAttributeAlignment() { m_has_attr_alignment = false; } + + // child element accessors + enum Kind { Unknown = 0, Widget, Layout, Spacer }; + inline Kind kind() const { return m_kind; } + + inline DomWidget* elementWidget() const { return m_widget; } + DomWidget* takeElementWidget(); + void setElementWidget(DomWidget* a); + + inline DomLayout* elementLayout() const { return m_layout; } + DomLayout* takeElementLayout(); + void setElementLayout(DomLayout* a); + + inline DomSpacer* elementSpacer() const { return m_spacer; } + DomSpacer* takeElementSpacer(); + void setElementSpacer(DomSpacer* a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + int m_attr_row; + bool m_has_attr_row; + + int m_attr_column; + bool m_has_attr_column; + + int m_attr_rowSpan; + bool m_has_attr_rowSpan; + + int m_attr_colSpan; + bool m_has_attr_colSpan; + + QString m_attr_alignment; + bool m_has_attr_alignment; + + // child element data + Kind m_kind; + DomWidget* m_widget; + DomLayout* m_layout; + DomSpacer* m_spacer; + + DomLayoutItem(const DomLayoutItem &other); + void operator = (const DomLayoutItem&other); +}; + +class QDESIGNER_UILIB_EXPORT DomRow { +public: + DomRow(); + ~DomRow(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomProperty*> m_property; + enum Child { + Property = 1 + }; + + DomRow(const DomRow &other); + void operator = (const DomRow&other); +}; + +class QDESIGNER_UILIB_EXPORT DomColumn { +public: + DomColumn(); + ~DomColumn(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomProperty*> m_property; + enum Child { + Property = 1 + }; + + DomColumn(const DomColumn &other); + void operator = (const DomColumn&other); +}; + +class QDESIGNER_UILIB_EXPORT DomItem { +public: + DomItem(); + ~DomItem(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeRow() const { return m_has_attr_row; } + inline int attributeRow() const { return m_attr_row; } + inline void setAttributeRow(int a) { m_attr_row = a; m_has_attr_row = true; } + inline void clearAttributeRow() { m_has_attr_row = false; } + + inline bool hasAttributeColumn() const { return m_has_attr_column; } + inline int attributeColumn() const { return m_attr_column; } + inline void setAttributeColumn(int a) { m_attr_column = a; m_has_attr_column = true; } + inline void clearAttributeColumn() { m_has_attr_column = false; } + + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + + inline QList<DomItem*> elementItem() const { return m_item; } + void setElementItem(const QList<DomItem*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + int m_attr_row; + bool m_has_attr_row; + + int m_attr_column; + bool m_has_attr_column; + + // child element data + uint m_children; + QList<DomProperty*> m_property; + QList<DomItem*> m_item; + enum Child { + Property = 1, + Item = 2 + }; + + DomItem(const DomItem &other); + void operator = (const DomItem&other); +}; + +class QDESIGNER_UILIB_EXPORT DomWidget { +public: + DomWidget(); + ~DomWidget(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeClass() const { return m_has_attr_class; } + inline QString attributeClass() const { return m_attr_class; } + inline void setAttributeClass(const QString& a) { m_attr_class = a; m_has_attr_class = true; } + inline void clearAttributeClass() { m_has_attr_class = false; } + + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + inline bool hasAttributeNative() const { return m_has_attr_native; } + inline bool attributeNative() const { return m_attr_native; } + inline void setAttributeNative(bool a) { m_attr_native = a; m_has_attr_native = true; } + inline void clearAttributeNative() { m_has_attr_native = false; } + + // child element accessors + inline QStringList elementClass() const { return m_class; } + void setElementClass(const QStringList& a); + + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + + inline QList<DomScript*> elementScript() const { return m_script; } + void setElementScript(const QList<DomScript*>& a); + + inline QList<DomWidgetData*> elementWidgetData() const { return m_widgetData; } + void setElementWidgetData(const QList<DomWidgetData*>& a); + + inline QList<DomProperty*> elementAttribute() const { return m_attribute; } + void setElementAttribute(const QList<DomProperty*>& a); + + inline QList<DomRow*> elementRow() const { return m_row; } + void setElementRow(const QList<DomRow*>& a); + + inline QList<DomColumn*> elementColumn() const { return m_column; } + void setElementColumn(const QList<DomColumn*>& a); + + inline QList<DomItem*> elementItem() const { return m_item; } + void setElementItem(const QList<DomItem*>& a); + + inline QList<DomLayout*> elementLayout() const { return m_layout; } + void setElementLayout(const QList<DomLayout*>& a); + + inline QList<DomWidget*> elementWidget() const { return m_widget; } + void setElementWidget(const QList<DomWidget*>& a); + + inline QList<DomAction*> elementAction() const { return m_action; } + void setElementAction(const QList<DomAction*>& a); + + inline QList<DomActionGroup*> elementActionGroup() const { return m_actionGroup; } + void setElementActionGroup(const QList<DomActionGroup*>& a); + + inline QList<DomActionRef*> elementAddAction() const { return m_addAction; } + void setElementAddAction(const QList<DomActionRef*>& a); + + inline QStringList elementZOrder() const { return m_zOrder; } + void setElementZOrder(const QStringList& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_class; + bool m_has_attr_class; + + QString m_attr_name; + bool m_has_attr_name; + + bool m_attr_native; + bool m_has_attr_native; + + // child element data + uint m_children; + QStringList m_class; + QList<DomProperty*> m_property; + QList<DomScript*> m_script; + QList<DomWidgetData*> m_widgetData; + QList<DomProperty*> m_attribute; + QList<DomRow*> m_row; + QList<DomColumn*> m_column; + QList<DomItem*> m_item; + QList<DomLayout*> m_layout; + QList<DomWidget*> m_widget; + QList<DomAction*> m_action; + QList<DomActionGroup*> m_actionGroup; + QList<DomActionRef*> m_addAction; + QStringList m_zOrder; + enum Child { + Class = 1, + Property = 2, + Script = 4, + WidgetData = 8, + Attribute = 16, + Row = 32, + Column = 64, + Item = 128, + Layout = 256, + Widget = 512, + Action = 1024, + ActionGroup = 2048, + AddAction = 4096, + ZOrder = 8192 + }; + + DomWidget(const DomWidget &other); + void operator = (const DomWidget&other); +}; + +class QDESIGNER_UILIB_EXPORT DomSpacer { +public: + DomSpacer(); + ~DomSpacer(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + // child element data + uint m_children; + QList<DomProperty*> m_property; + enum Child { + Property = 1 + }; + + DomSpacer(const DomSpacer &other); + void operator = (const DomSpacer&other); +}; + +class QDESIGNER_UILIB_EXPORT DomColor { +public: + DomColor(); + ~DomColor(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeAlpha() const { return m_has_attr_alpha; } + inline int attributeAlpha() const { return m_attr_alpha; } + inline void setAttributeAlpha(int a) { m_attr_alpha = a; m_has_attr_alpha = true; } + inline void clearAttributeAlpha() { m_has_attr_alpha = false; } + + // child element accessors + inline int elementRed() const { return m_red; } + void setElementRed(int a); + inline bool hasElementRed() const { return m_children & Red; } + void clearElementRed(); + + inline int elementGreen() const { return m_green; } + void setElementGreen(int a); + inline bool hasElementGreen() const { return m_children & Green; } + void clearElementGreen(); + + inline int elementBlue() const { return m_blue; } + void setElementBlue(int a); + inline bool hasElementBlue() const { return m_children & Blue; } + void clearElementBlue(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + int m_attr_alpha; + bool m_has_attr_alpha; + + // child element data + uint m_children; + int m_red; + int m_green; + int m_blue; + enum Child { + Red = 1, + Green = 2, + Blue = 4 + }; + + DomColor(const DomColor &other); + void operator = (const DomColor&other); +}; + +class QDESIGNER_UILIB_EXPORT DomGradientStop { +public: + DomGradientStop(); + ~DomGradientStop(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributePosition() const { return m_has_attr_position; } + inline double attributePosition() const { return m_attr_position; } + inline void setAttributePosition(double a) { m_attr_position = a; m_has_attr_position = true; } + inline void clearAttributePosition() { m_has_attr_position = false; } + + // child element accessors + inline DomColor* elementColor() const { return m_color; } + DomColor* takeElementColor(); + void setElementColor(DomColor* a); + inline bool hasElementColor() const { return m_children & Color; } + void clearElementColor(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + double m_attr_position; + bool m_has_attr_position; + + // child element data + uint m_children; + DomColor* m_color; + enum Child { + Color = 1 + }; + + DomGradientStop(const DomGradientStop &other); + void operator = (const DomGradientStop&other); +}; + +class QDESIGNER_UILIB_EXPORT DomGradient { +public: + DomGradient(); + ~DomGradient(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeStartX() const { return m_has_attr_startX; } + inline double attributeStartX() const { return m_attr_startX; } + inline void setAttributeStartX(double a) { m_attr_startX = a; m_has_attr_startX = true; } + inline void clearAttributeStartX() { m_has_attr_startX = false; } + + inline bool hasAttributeStartY() const { return m_has_attr_startY; } + inline double attributeStartY() const { return m_attr_startY; } + inline void setAttributeStartY(double a) { m_attr_startY = a; m_has_attr_startY = true; } + inline void clearAttributeStartY() { m_has_attr_startY = false; } + + inline bool hasAttributeEndX() const { return m_has_attr_endX; } + inline double attributeEndX() const { return m_attr_endX; } + inline void setAttributeEndX(double a) { m_attr_endX = a; m_has_attr_endX = true; } + inline void clearAttributeEndX() { m_has_attr_endX = false; } + + inline bool hasAttributeEndY() const { return m_has_attr_endY; } + inline double attributeEndY() const { return m_attr_endY; } + inline void setAttributeEndY(double a) { m_attr_endY = a; m_has_attr_endY = true; } + inline void clearAttributeEndY() { m_has_attr_endY = false; } + + inline bool hasAttributeCentralX() const { return m_has_attr_centralX; } + inline double attributeCentralX() const { return m_attr_centralX; } + inline void setAttributeCentralX(double a) { m_attr_centralX = a; m_has_attr_centralX = true; } + inline void clearAttributeCentralX() { m_has_attr_centralX = false; } + + inline bool hasAttributeCentralY() const { return m_has_attr_centralY; } + inline double attributeCentralY() const { return m_attr_centralY; } + inline void setAttributeCentralY(double a) { m_attr_centralY = a; m_has_attr_centralY = true; } + inline void clearAttributeCentralY() { m_has_attr_centralY = false; } + + inline bool hasAttributeFocalX() const { return m_has_attr_focalX; } + inline double attributeFocalX() const { return m_attr_focalX; } + inline void setAttributeFocalX(double a) { m_attr_focalX = a; m_has_attr_focalX = true; } + inline void clearAttributeFocalX() { m_has_attr_focalX = false; } + + inline bool hasAttributeFocalY() const { return m_has_attr_focalY; } + inline double attributeFocalY() const { return m_attr_focalY; } + inline void setAttributeFocalY(double a) { m_attr_focalY = a; m_has_attr_focalY = true; } + inline void clearAttributeFocalY() { m_has_attr_focalY = false; } + + inline bool hasAttributeRadius() const { return m_has_attr_radius; } + inline double attributeRadius() const { return m_attr_radius; } + inline void setAttributeRadius(double a) { m_attr_radius = a; m_has_attr_radius = true; } + inline void clearAttributeRadius() { m_has_attr_radius = false; } + + inline bool hasAttributeAngle() const { return m_has_attr_angle; } + inline double attributeAngle() const { return m_attr_angle; } + inline void setAttributeAngle(double a) { m_attr_angle = a; m_has_attr_angle = true; } + inline void clearAttributeAngle() { m_has_attr_angle = false; } + + inline bool hasAttributeType() const { return m_has_attr_type; } + inline QString attributeType() const { return m_attr_type; } + inline void setAttributeType(const QString& a) { m_attr_type = a; m_has_attr_type = true; } + inline void clearAttributeType() { m_has_attr_type = false; } + + inline bool hasAttributeSpread() const { return m_has_attr_spread; } + inline QString attributeSpread() const { return m_attr_spread; } + inline void setAttributeSpread(const QString& a) { m_attr_spread = a; m_has_attr_spread = true; } + inline void clearAttributeSpread() { m_has_attr_spread = false; } + + inline bool hasAttributeCoordinateMode() const { return m_has_attr_coordinateMode; } + inline QString attributeCoordinateMode() const { return m_attr_coordinateMode; } + inline void setAttributeCoordinateMode(const QString& a) { m_attr_coordinateMode = a; m_has_attr_coordinateMode = true; } + inline void clearAttributeCoordinateMode() { m_has_attr_coordinateMode = false; } + + // child element accessors + inline QList<DomGradientStop*> elementGradientStop() const { return m_gradientStop; } + void setElementGradientStop(const QList<DomGradientStop*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + double m_attr_startX; + bool m_has_attr_startX; + + double m_attr_startY; + bool m_has_attr_startY; + + double m_attr_endX; + bool m_has_attr_endX; + + double m_attr_endY; + bool m_has_attr_endY; + + double m_attr_centralX; + bool m_has_attr_centralX; + + double m_attr_centralY; + bool m_has_attr_centralY; + + double m_attr_focalX; + bool m_has_attr_focalX; + + double m_attr_focalY; + bool m_has_attr_focalY; + + double m_attr_radius; + bool m_has_attr_radius; + + double m_attr_angle; + bool m_has_attr_angle; + + QString m_attr_type; + bool m_has_attr_type; + + QString m_attr_spread; + bool m_has_attr_spread; + + QString m_attr_coordinateMode; + bool m_has_attr_coordinateMode; + + // child element data + uint m_children; + QList<DomGradientStop*> m_gradientStop; + enum Child { + GradientStop = 1 + }; + + DomGradient(const DomGradient &other); + void operator = (const DomGradient&other); +}; + +class QDESIGNER_UILIB_EXPORT DomBrush { +public: + DomBrush(); + ~DomBrush(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeBrushStyle() const { return m_has_attr_brushStyle; } + inline QString attributeBrushStyle() const { return m_attr_brushStyle; } + inline void setAttributeBrushStyle(const QString& a) { m_attr_brushStyle = a; m_has_attr_brushStyle = true; } + inline void clearAttributeBrushStyle() { m_has_attr_brushStyle = false; } + + // child element accessors + enum Kind { Unknown = 0, Color, Texture, Gradient }; + inline Kind kind() const { return m_kind; } + + inline DomColor* elementColor() const { return m_color; } + DomColor* takeElementColor(); + void setElementColor(DomColor* a); + + inline DomProperty* elementTexture() const { return m_texture; } + DomProperty* takeElementTexture(); + void setElementTexture(DomProperty* a); + + inline DomGradient* elementGradient() const { return m_gradient; } + DomGradient* takeElementGradient(); + void setElementGradient(DomGradient* a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_brushStyle; + bool m_has_attr_brushStyle; + + // child element data + Kind m_kind; + DomColor* m_color; + DomProperty* m_texture; + DomGradient* m_gradient; + + DomBrush(const DomBrush &other); + void operator = (const DomBrush&other); +}; + +class QDESIGNER_UILIB_EXPORT DomColorRole { +public: + DomColorRole(); + ~DomColorRole(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeRole() const { return m_has_attr_role; } + inline QString attributeRole() const { return m_attr_role; } + inline void setAttributeRole(const QString& a) { m_attr_role = a; m_has_attr_role = true; } + inline void clearAttributeRole() { m_has_attr_role = false; } + + // child element accessors + inline DomBrush* elementBrush() const { return m_brush; } + DomBrush* takeElementBrush(); + void setElementBrush(DomBrush* a); + inline bool hasElementBrush() const { return m_children & Brush; } + void clearElementBrush(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_role; + bool m_has_attr_role; + + // child element data + uint m_children; + DomBrush* m_brush; + enum Child { + Brush = 1 + }; + + DomColorRole(const DomColorRole &other); + void operator = (const DomColorRole&other); +}; + +class QDESIGNER_UILIB_EXPORT DomColorGroup { +public: + DomColorGroup(); + ~DomColorGroup(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomColorRole*> elementColorRole() const { return m_colorRole; } + void setElementColorRole(const QList<DomColorRole*>& a); + + inline QList<DomColor*> elementColor() const { return m_color; } + void setElementColor(const QList<DomColor*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomColorRole*> m_colorRole; + QList<DomColor*> m_color; + enum Child { + ColorRole = 1, + Color = 2 + }; + + DomColorGroup(const DomColorGroup &other); + void operator = (const DomColorGroup&other); +}; + +class QDESIGNER_UILIB_EXPORT DomPalette { +public: + DomPalette(); + ~DomPalette(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline DomColorGroup* elementActive() const { return m_active; } + DomColorGroup* takeElementActive(); + void setElementActive(DomColorGroup* a); + inline bool hasElementActive() const { return m_children & Active; } + void clearElementActive(); + + inline DomColorGroup* elementInactive() const { return m_inactive; } + DomColorGroup* takeElementInactive(); + void setElementInactive(DomColorGroup* a); + inline bool hasElementInactive() const { return m_children & Inactive; } + void clearElementInactive(); + + inline DomColorGroup* elementDisabled() const { return m_disabled; } + DomColorGroup* takeElementDisabled(); + void setElementDisabled(DomColorGroup* a); + inline bool hasElementDisabled() const { return m_children & Disabled; } + void clearElementDisabled(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + DomColorGroup* m_active; + DomColorGroup* m_inactive; + DomColorGroup* m_disabled; + enum Child { + Active = 1, + Inactive = 2, + Disabled = 4 + }; + + DomPalette(const DomPalette &other); + void operator = (const DomPalette&other); +}; + +class QDESIGNER_UILIB_EXPORT DomFont { +public: + DomFont(); + ~DomFont(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QString elementFamily() const { return m_family; } + void setElementFamily(const QString& a); + inline bool hasElementFamily() const { return m_children & Family; } + void clearElementFamily(); + + inline int elementPointSize() const { return m_pointSize; } + void setElementPointSize(int a); + inline bool hasElementPointSize() const { return m_children & PointSize; } + void clearElementPointSize(); + + inline int elementWeight() const { return m_weight; } + void setElementWeight(int a); + inline bool hasElementWeight() const { return m_children & Weight; } + void clearElementWeight(); + + inline bool elementItalic() const { return m_italic; } + void setElementItalic(bool a); + inline bool hasElementItalic() const { return m_children & Italic; } + void clearElementItalic(); + + inline bool elementBold() const { return m_bold; } + void setElementBold(bool a); + inline bool hasElementBold() const { return m_children & Bold; } + void clearElementBold(); + + inline bool elementUnderline() const { return m_underline; } + void setElementUnderline(bool a); + inline bool hasElementUnderline() const { return m_children & Underline; } + void clearElementUnderline(); + + inline bool elementStrikeOut() const { return m_strikeOut; } + void setElementStrikeOut(bool a); + inline bool hasElementStrikeOut() const { return m_children & StrikeOut; } + void clearElementStrikeOut(); + + inline bool elementAntialiasing() const { return m_antialiasing; } + void setElementAntialiasing(bool a); + inline bool hasElementAntialiasing() const { return m_children & Antialiasing; } + void clearElementAntialiasing(); + + inline QString elementStyleStrategy() const { return m_styleStrategy; } + void setElementStyleStrategy(const QString& a); + inline bool hasElementStyleStrategy() const { return m_children & StyleStrategy; } + void clearElementStyleStrategy(); + + inline bool elementKerning() const { return m_kerning; } + void setElementKerning(bool a); + inline bool hasElementKerning() const { return m_children & Kerning; } + void clearElementKerning(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QString m_family; + int m_pointSize; + int m_weight; + bool m_italic; + bool m_bold; + bool m_underline; + bool m_strikeOut; + bool m_antialiasing; + QString m_styleStrategy; + bool m_kerning; + enum Child { + Family = 1, + PointSize = 2, + Weight = 4, + Italic = 8, + Bold = 16, + Underline = 32, + StrikeOut = 64, + Antialiasing = 128, + StyleStrategy = 256, + Kerning = 512 + }; + + DomFont(const DomFont &other); + void operator = (const DomFont&other); +}; + +class QDESIGNER_UILIB_EXPORT DomPoint { +public: + DomPoint(); + ~DomPoint(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline int elementX() const { return m_x; } + void setElementX(int a); + inline bool hasElementX() const { return m_children & X; } + void clearElementX(); + + inline int elementY() const { return m_y; } + void setElementY(int a); + inline bool hasElementY() const { return m_children & Y; } + void clearElementY(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + int m_x; + int m_y; + enum Child { + X = 1, + Y = 2 + }; + + DomPoint(const DomPoint &other); + void operator = (const DomPoint&other); +}; + +class QDESIGNER_UILIB_EXPORT DomRect { +public: + DomRect(); + ~DomRect(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline int elementX() const { return m_x; } + void setElementX(int a); + inline bool hasElementX() const { return m_children & X; } + void clearElementX(); + + inline int elementY() const { return m_y; } + void setElementY(int a); + inline bool hasElementY() const { return m_children & Y; } + void clearElementY(); + + inline int elementWidth() const { return m_width; } + void setElementWidth(int a); + inline bool hasElementWidth() const { return m_children & Width; } + void clearElementWidth(); + + inline int elementHeight() const { return m_height; } + void setElementHeight(int a); + inline bool hasElementHeight() const { return m_children & Height; } + void clearElementHeight(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + int m_x; + int m_y; + int m_width; + int m_height; + enum Child { + X = 1, + Y = 2, + Width = 4, + Height = 8 + }; + + DomRect(const DomRect &other); + void operator = (const DomRect&other); +}; + +class QDESIGNER_UILIB_EXPORT DomLocale { +public: + DomLocale(); + ~DomLocale(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeLanguage() const { return m_has_attr_language; } + inline QString attributeLanguage() const { return m_attr_language; } + inline void setAttributeLanguage(const QString& a) { m_attr_language = a; m_has_attr_language = true; } + inline void clearAttributeLanguage() { m_has_attr_language = false; } + + inline bool hasAttributeCountry() const { return m_has_attr_country; } + inline QString attributeCountry() const { return m_attr_country; } + inline void setAttributeCountry(const QString& a) { m_attr_country = a; m_has_attr_country = true; } + inline void clearAttributeCountry() { m_has_attr_country = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_language; + bool m_has_attr_language; + + QString m_attr_country; + bool m_has_attr_country; + + // child element data + uint m_children; + + DomLocale(const DomLocale &other); + void operator = (const DomLocale&other); +}; + +class QDESIGNER_UILIB_EXPORT DomSizePolicy { +public: + DomSizePolicy(); + ~DomSizePolicy(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeHSizeType() const { return m_has_attr_hSizeType; } + inline QString attributeHSizeType() const { return m_attr_hSizeType; } + inline void setAttributeHSizeType(const QString& a) { m_attr_hSizeType = a; m_has_attr_hSizeType = true; } + inline void clearAttributeHSizeType() { m_has_attr_hSizeType = false; } + + inline bool hasAttributeVSizeType() const { return m_has_attr_vSizeType; } + inline QString attributeVSizeType() const { return m_attr_vSizeType; } + inline void setAttributeVSizeType(const QString& a) { m_attr_vSizeType = a; m_has_attr_vSizeType = true; } + inline void clearAttributeVSizeType() { m_has_attr_vSizeType = false; } + + // child element accessors + inline int elementHSizeType() const { return m_hSizeType; } + void setElementHSizeType(int a); + inline bool hasElementHSizeType() const { return m_children & HSizeType; } + void clearElementHSizeType(); + + inline int elementVSizeType() const { return m_vSizeType; } + void setElementVSizeType(int a); + inline bool hasElementVSizeType() const { return m_children & VSizeType; } + void clearElementVSizeType(); + + inline int elementHorStretch() const { return m_horStretch; } + void setElementHorStretch(int a); + inline bool hasElementHorStretch() const { return m_children & HorStretch; } + void clearElementHorStretch(); + + inline int elementVerStretch() const { return m_verStretch; } + void setElementVerStretch(int a); + inline bool hasElementVerStretch() const { return m_children & VerStretch; } + void clearElementVerStretch(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_hSizeType; + bool m_has_attr_hSizeType; + + QString m_attr_vSizeType; + bool m_has_attr_vSizeType; + + // child element data + uint m_children; + int m_hSizeType; + int m_vSizeType; + int m_horStretch; + int m_verStretch; + enum Child { + HSizeType = 1, + VSizeType = 2, + HorStretch = 4, + VerStretch = 8 + }; + + DomSizePolicy(const DomSizePolicy &other); + void operator = (const DomSizePolicy&other); +}; + +class QDESIGNER_UILIB_EXPORT DomSize { +public: + DomSize(); + ~DomSize(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline int elementWidth() const { return m_width; } + void setElementWidth(int a); + inline bool hasElementWidth() const { return m_children & Width; } + void clearElementWidth(); + + inline int elementHeight() const { return m_height; } + void setElementHeight(int a); + inline bool hasElementHeight() const { return m_children & Height; } + void clearElementHeight(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + int m_width; + int m_height; + enum Child { + Width = 1, + Height = 2 + }; + + DomSize(const DomSize &other); + void operator = (const DomSize&other); +}; + +class QDESIGNER_UILIB_EXPORT DomDate { +public: + DomDate(); + ~DomDate(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline int elementYear() const { return m_year; } + void setElementYear(int a); + inline bool hasElementYear() const { return m_children & Year; } + void clearElementYear(); + + inline int elementMonth() const { return m_month; } + void setElementMonth(int a); + inline bool hasElementMonth() const { return m_children & Month; } + void clearElementMonth(); + + inline int elementDay() const { return m_day; } + void setElementDay(int a); + inline bool hasElementDay() const { return m_children & Day; } + void clearElementDay(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + int m_year; + int m_month; + int m_day; + enum Child { + Year = 1, + Month = 2, + Day = 4 + }; + + DomDate(const DomDate &other); + void operator = (const DomDate&other); +}; + +class QDESIGNER_UILIB_EXPORT DomTime { +public: + DomTime(); + ~DomTime(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline int elementHour() const { return m_hour; } + void setElementHour(int a); + inline bool hasElementHour() const { return m_children & Hour; } + void clearElementHour(); + + inline int elementMinute() const { return m_minute; } + void setElementMinute(int a); + inline bool hasElementMinute() const { return m_children & Minute; } + void clearElementMinute(); + + inline int elementSecond() const { return m_second; } + void setElementSecond(int a); + inline bool hasElementSecond() const { return m_children & Second; } + void clearElementSecond(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + int m_hour; + int m_minute; + int m_second; + enum Child { + Hour = 1, + Minute = 2, + Second = 4 + }; + + DomTime(const DomTime &other); + void operator = (const DomTime&other); +}; + +class QDESIGNER_UILIB_EXPORT DomDateTime { +public: + DomDateTime(); + ~DomDateTime(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline int elementHour() const { return m_hour; } + void setElementHour(int a); + inline bool hasElementHour() const { return m_children & Hour; } + void clearElementHour(); + + inline int elementMinute() const { return m_minute; } + void setElementMinute(int a); + inline bool hasElementMinute() const { return m_children & Minute; } + void clearElementMinute(); + + inline int elementSecond() const { return m_second; } + void setElementSecond(int a); + inline bool hasElementSecond() const { return m_children & Second; } + void clearElementSecond(); + + inline int elementYear() const { return m_year; } + void setElementYear(int a); + inline bool hasElementYear() const { return m_children & Year; } + void clearElementYear(); + + inline int elementMonth() const { return m_month; } + void setElementMonth(int a); + inline bool hasElementMonth() const { return m_children & Month; } + void clearElementMonth(); + + inline int elementDay() const { return m_day; } + void setElementDay(int a); + inline bool hasElementDay() const { return m_children & Day; } + void clearElementDay(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + int m_hour; + int m_minute; + int m_second; + int m_year; + int m_month; + int m_day; + enum Child { + Hour = 1, + Minute = 2, + Second = 4, + Year = 8, + Month = 16, + Day = 32 + }; + + DomDateTime(const DomDateTime &other); + void operator = (const DomDateTime&other); +}; + +class QDESIGNER_UILIB_EXPORT DomStringList { +public: + DomStringList(); + ~DomStringList(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QStringList elementString() const { return m_string; } + void setElementString(const QStringList& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QStringList m_string; + enum Child { + String = 1 + }; + + DomStringList(const DomStringList &other); + void operator = (const DomStringList&other); +}; + +class QDESIGNER_UILIB_EXPORT DomResourcePixmap { +public: + DomResourcePixmap(); + ~DomResourcePixmap(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeResource() const { return m_has_attr_resource; } + inline QString attributeResource() const { return m_attr_resource; } + inline void setAttributeResource(const QString& a) { m_attr_resource = a; m_has_attr_resource = true; } + inline void clearAttributeResource() { m_has_attr_resource = false; } + + inline bool hasAttributeAlias() const { return m_has_attr_alias; } + inline QString attributeAlias() const { return m_attr_alias; } + inline void setAttributeAlias(const QString& a) { m_attr_alias = a; m_has_attr_alias = true; } + inline void clearAttributeAlias() { m_has_attr_alias = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_resource; + bool m_has_attr_resource; + + QString m_attr_alias; + bool m_has_attr_alias; + + // child element data + uint m_children; + + DomResourcePixmap(const DomResourcePixmap &other); + void operator = (const DomResourcePixmap&other); +}; + +class QDESIGNER_UILIB_EXPORT DomResourceIcon { +public: + DomResourceIcon(); + ~DomResourceIcon(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeTheme() const { return m_has_attr_theme; } + inline QString attributeTheme() const { return m_attr_theme; } + inline void setAttributeTheme(const QString& a) { m_attr_theme = a; m_has_attr_theme = true; } + inline void clearAttributeTheme() { m_has_attr_theme = false; } + + inline bool hasAttributeResource() const { return m_has_attr_resource; } + inline QString attributeResource() const { return m_attr_resource; } + inline void setAttributeResource(const QString& a) { m_attr_resource = a; m_has_attr_resource = true; } + inline void clearAttributeResource() { m_has_attr_resource = false; } + + // child element accessors + inline DomResourcePixmap* elementNormalOff() const { return m_normalOff; } + DomResourcePixmap* takeElementNormalOff(); + void setElementNormalOff(DomResourcePixmap* a); + inline bool hasElementNormalOff() const { return m_children & NormalOff; } + void clearElementNormalOff(); + + inline DomResourcePixmap* elementNormalOn() const { return m_normalOn; } + DomResourcePixmap* takeElementNormalOn(); + void setElementNormalOn(DomResourcePixmap* a); + inline bool hasElementNormalOn() const { return m_children & NormalOn; } + void clearElementNormalOn(); + + inline DomResourcePixmap* elementDisabledOff() const { return m_disabledOff; } + DomResourcePixmap* takeElementDisabledOff(); + void setElementDisabledOff(DomResourcePixmap* a); + inline bool hasElementDisabledOff() const { return m_children & DisabledOff; } + void clearElementDisabledOff(); + + inline DomResourcePixmap* elementDisabledOn() const { return m_disabledOn; } + DomResourcePixmap* takeElementDisabledOn(); + void setElementDisabledOn(DomResourcePixmap* a); + inline bool hasElementDisabledOn() const { return m_children & DisabledOn; } + void clearElementDisabledOn(); + + inline DomResourcePixmap* elementActiveOff() const { return m_activeOff; } + DomResourcePixmap* takeElementActiveOff(); + void setElementActiveOff(DomResourcePixmap* a); + inline bool hasElementActiveOff() const { return m_children & ActiveOff; } + void clearElementActiveOff(); + + inline DomResourcePixmap* elementActiveOn() const { return m_activeOn; } + DomResourcePixmap* takeElementActiveOn(); + void setElementActiveOn(DomResourcePixmap* a); + inline bool hasElementActiveOn() const { return m_children & ActiveOn; } + void clearElementActiveOn(); + + inline DomResourcePixmap* elementSelectedOff() const { return m_selectedOff; } + DomResourcePixmap* takeElementSelectedOff(); + void setElementSelectedOff(DomResourcePixmap* a); + inline bool hasElementSelectedOff() const { return m_children & SelectedOff; } + void clearElementSelectedOff(); + + inline DomResourcePixmap* elementSelectedOn() const { return m_selectedOn; } + DomResourcePixmap* takeElementSelectedOn(); + void setElementSelectedOn(DomResourcePixmap* a); + inline bool hasElementSelectedOn() const { return m_children & SelectedOn; } + void clearElementSelectedOn(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_theme; + bool m_has_attr_theme; + + QString m_attr_resource; + bool m_has_attr_resource; + + // child element data + uint m_children; + DomResourcePixmap* m_normalOff; + DomResourcePixmap* m_normalOn; + DomResourcePixmap* m_disabledOff; + DomResourcePixmap* m_disabledOn; + DomResourcePixmap* m_activeOff; + DomResourcePixmap* m_activeOn; + DomResourcePixmap* m_selectedOff; + DomResourcePixmap* m_selectedOn; + enum Child { + NormalOff = 1, + NormalOn = 2, + DisabledOff = 4, + DisabledOn = 8, + ActiveOff = 16, + ActiveOn = 32, + SelectedOff = 64, + SelectedOn = 128 + }; + + DomResourceIcon(const DomResourceIcon &other); + void operator = (const DomResourceIcon&other); +}; + +class QDESIGNER_UILIB_EXPORT DomString { +public: + DomString(); + ~DomString(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeNotr() const { return m_has_attr_notr; } + inline QString attributeNotr() const { return m_attr_notr; } + inline void setAttributeNotr(const QString& a) { m_attr_notr = a; m_has_attr_notr = true; } + inline void clearAttributeNotr() { m_has_attr_notr = false; } + + inline bool hasAttributeComment() const { return m_has_attr_comment; } + inline QString attributeComment() const { return m_attr_comment; } + inline void setAttributeComment(const QString& a) { m_attr_comment = a; m_has_attr_comment = true; } + inline void clearAttributeComment() { m_has_attr_comment = false; } + + inline bool hasAttributeExtraComment() const { return m_has_attr_extraComment; } + inline QString attributeExtraComment() const { return m_attr_extraComment; } + inline void setAttributeExtraComment(const QString& a) { m_attr_extraComment = a; m_has_attr_extraComment = true; } + inline void clearAttributeExtraComment() { m_has_attr_extraComment = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_notr; + bool m_has_attr_notr; + + QString m_attr_comment; + bool m_has_attr_comment; + + QString m_attr_extraComment; + bool m_has_attr_extraComment; + + // child element data + uint m_children; + + DomString(const DomString &other); + void operator = (const DomString&other); +}; + +class QDESIGNER_UILIB_EXPORT DomPointF { +public: + DomPointF(); + ~DomPointF(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline double elementX() const { return m_x; } + void setElementX(double a); + inline bool hasElementX() const { return m_children & X; } + void clearElementX(); + + inline double elementY() const { return m_y; } + void setElementY(double a); + inline bool hasElementY() const { return m_children & Y; } + void clearElementY(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + double m_x; + double m_y; + enum Child { + X = 1, + Y = 2 + }; + + DomPointF(const DomPointF &other); + void operator = (const DomPointF&other); +}; + +class QDESIGNER_UILIB_EXPORT DomRectF { +public: + DomRectF(); + ~DomRectF(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline double elementX() const { return m_x; } + void setElementX(double a); + inline bool hasElementX() const { return m_children & X; } + void clearElementX(); + + inline double elementY() const { return m_y; } + void setElementY(double a); + inline bool hasElementY() const { return m_children & Y; } + void clearElementY(); + + inline double elementWidth() const { return m_width; } + void setElementWidth(double a); + inline bool hasElementWidth() const { return m_children & Width; } + void clearElementWidth(); + + inline double elementHeight() const { return m_height; } + void setElementHeight(double a); + inline bool hasElementHeight() const { return m_children & Height; } + void clearElementHeight(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + double m_x; + double m_y; + double m_width; + double m_height; + enum Child { + X = 1, + Y = 2, + Width = 4, + Height = 8 + }; + + DomRectF(const DomRectF &other); + void operator = (const DomRectF&other); +}; + +class QDESIGNER_UILIB_EXPORT DomSizeF { +public: + DomSizeF(); + ~DomSizeF(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline double elementWidth() const { return m_width; } + void setElementWidth(double a); + inline bool hasElementWidth() const { return m_children & Width; } + void clearElementWidth(); + + inline double elementHeight() const { return m_height; } + void setElementHeight(double a); + inline bool hasElementHeight() const { return m_children & Height; } + void clearElementHeight(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + double m_width; + double m_height; + enum Child { + Width = 1, + Height = 2 + }; + + DomSizeF(const DomSizeF &other); + void operator = (const DomSizeF&other); +}; + +class QDESIGNER_UILIB_EXPORT DomChar { +public: + DomChar(); + ~DomChar(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline int elementUnicode() const { return m_unicode; } + void setElementUnicode(int a); + inline bool hasElementUnicode() const { return m_children & Unicode; } + void clearElementUnicode(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + int m_unicode; + enum Child { + Unicode = 1 + }; + + DomChar(const DomChar &other); + void operator = (const DomChar&other); +}; + +class QDESIGNER_UILIB_EXPORT DomUrl { +public: + DomUrl(); + ~DomUrl(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline DomString* elementString() const { return m_string; } + DomString* takeElementString(); + void setElementString(DomString* a); + inline bool hasElementString() const { return m_children & String; } + void clearElementString(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + DomString* m_string; + enum Child { + String = 1 + }; + + DomUrl(const DomUrl &other); + void operator = (const DomUrl&other); +}; + +class QDESIGNER_UILIB_EXPORT DomProperty { +public: + DomProperty(); + ~DomProperty(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + inline bool hasAttributeStdset() const { return m_has_attr_stdset; } + inline int attributeStdset() const { return m_attr_stdset; } + inline void setAttributeStdset(int a) { m_attr_stdset = a; m_has_attr_stdset = true; } + inline void clearAttributeStdset() { m_has_attr_stdset = false; } + + // child element accessors + enum Kind { Unknown = 0, Bool, Color, Cstring, Cursor, CursorShape, Enum, Font, IconSet, Pixmap, Palette, Point, Rect, Set, Locale, SizePolicy, Size, String, StringList, Number, Float, Double, Date, Time, DateTime, PointF, RectF, SizeF, LongLong, Char, Url, UInt, ULongLong, Brush }; + inline Kind kind() const { return m_kind; } + + inline QString elementBool() const { return m_bool; } + void setElementBool(const QString& a); + + inline DomColor* elementColor() const { return m_color; } + DomColor* takeElementColor(); + void setElementColor(DomColor* a); + + inline QString elementCstring() const { return m_cstring; } + void setElementCstring(const QString& a); + + inline int elementCursor() const { return m_cursor; } + void setElementCursor(int a); + + inline QString elementCursorShape() const { return m_cursorShape; } + void setElementCursorShape(const QString& a); + + inline QString elementEnum() const { return m_enum; } + void setElementEnum(const QString& a); + + inline DomFont* elementFont() const { return m_font; } + DomFont* takeElementFont(); + void setElementFont(DomFont* a); + + inline DomResourceIcon* elementIconSet() const { return m_iconSet; } + DomResourceIcon* takeElementIconSet(); + void setElementIconSet(DomResourceIcon* a); + + inline DomResourcePixmap* elementPixmap() const { return m_pixmap; } + DomResourcePixmap* takeElementPixmap(); + void setElementPixmap(DomResourcePixmap* a); + + inline DomPalette* elementPalette() const { return m_palette; } + DomPalette* takeElementPalette(); + void setElementPalette(DomPalette* a); + + inline DomPoint* elementPoint() const { return m_point; } + DomPoint* takeElementPoint(); + void setElementPoint(DomPoint* a); + + inline DomRect* elementRect() const { return m_rect; } + DomRect* takeElementRect(); + void setElementRect(DomRect* a); + + inline QString elementSet() const { return m_set; } + void setElementSet(const QString& a); + + inline DomLocale* elementLocale() const { return m_locale; } + DomLocale* takeElementLocale(); + void setElementLocale(DomLocale* a); + + inline DomSizePolicy* elementSizePolicy() const { return m_sizePolicy; } + DomSizePolicy* takeElementSizePolicy(); + void setElementSizePolicy(DomSizePolicy* a); + + inline DomSize* elementSize() const { return m_size; } + DomSize* takeElementSize(); + void setElementSize(DomSize* a); + + inline DomString* elementString() const { return m_string; } + DomString* takeElementString(); + void setElementString(DomString* a); + + inline DomStringList* elementStringList() const { return m_stringList; } + DomStringList* takeElementStringList(); + void setElementStringList(DomStringList* a); + + inline int elementNumber() const { return m_number; } + void setElementNumber(int a); + + inline float elementFloat() const { return m_float; } + void setElementFloat(float a); + + inline double elementDouble() const { return m_double; } + void setElementDouble(double a); + + inline DomDate* elementDate() const { return m_date; } + DomDate* takeElementDate(); + void setElementDate(DomDate* a); + + inline DomTime* elementTime() const { return m_time; } + DomTime* takeElementTime(); + void setElementTime(DomTime* a); + + inline DomDateTime* elementDateTime() const { return m_dateTime; } + DomDateTime* takeElementDateTime(); + void setElementDateTime(DomDateTime* a); + + inline DomPointF* elementPointF() const { return m_pointF; } + DomPointF* takeElementPointF(); + void setElementPointF(DomPointF* a); + + inline DomRectF* elementRectF() const { return m_rectF; } + DomRectF* takeElementRectF(); + void setElementRectF(DomRectF* a); + + inline DomSizeF* elementSizeF() const { return m_sizeF; } + DomSizeF* takeElementSizeF(); + void setElementSizeF(DomSizeF* a); + + inline qlonglong elementLongLong() const { return m_longLong; } + void setElementLongLong(qlonglong a); + + inline DomChar* elementChar() const { return m_char; } + DomChar* takeElementChar(); + void setElementChar(DomChar* a); + + inline DomUrl* elementUrl() const { return m_url; } + DomUrl* takeElementUrl(); + void setElementUrl(DomUrl* a); + + inline uint elementUInt() const { return m_UInt; } + void setElementUInt(uint a); + + inline qulonglong elementULongLong() const { return m_uLongLong; } + void setElementULongLong(qulonglong a); + + inline DomBrush* elementBrush() const { return m_brush; } + DomBrush* takeElementBrush(); + void setElementBrush(DomBrush* a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + int m_attr_stdset; + bool m_has_attr_stdset; + + // child element data + Kind m_kind; + QString m_bool; + DomColor* m_color; + QString m_cstring; + int m_cursor; + QString m_cursorShape; + QString m_enum; + DomFont* m_font; + DomResourceIcon* m_iconSet; + DomResourcePixmap* m_pixmap; + DomPalette* m_palette; + DomPoint* m_point; + DomRect* m_rect; + QString m_set; + DomLocale* m_locale; + DomSizePolicy* m_sizePolicy; + DomSize* m_size; + DomString* m_string; + DomStringList* m_stringList; + int m_number; + float m_float; + double m_double; + DomDate* m_date; + DomTime* m_time; + DomDateTime* m_dateTime; + DomPointF* m_pointF; + DomRectF* m_rectF; + DomSizeF* m_sizeF; + qlonglong m_longLong; + DomChar* m_char; + DomUrl* m_url; + uint m_UInt; + qulonglong m_uLongLong; + DomBrush* m_brush; + + DomProperty(const DomProperty &other); + void operator = (const DomProperty&other); +}; + +class QDESIGNER_UILIB_EXPORT DomConnections { +public: + DomConnections(); + ~DomConnections(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomConnection*> elementConnection() const { return m_connection; } + void setElementConnection(const QList<DomConnection*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomConnection*> m_connection; + enum Child { + Connection = 1 + }; + + DomConnections(const DomConnections &other); + void operator = (const DomConnections&other); +}; + +class QDESIGNER_UILIB_EXPORT DomConnection { +public: + DomConnection(); + ~DomConnection(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QString elementSender() const { return m_sender; } + void setElementSender(const QString& a); + inline bool hasElementSender() const { return m_children & Sender; } + void clearElementSender(); + + inline QString elementSignal() const { return m_signal; } + void setElementSignal(const QString& a); + inline bool hasElementSignal() const { return m_children & Signal; } + void clearElementSignal(); + + inline QString elementReceiver() const { return m_receiver; } + void setElementReceiver(const QString& a); + inline bool hasElementReceiver() const { return m_children & Receiver; } + void clearElementReceiver(); + + inline QString elementSlot() const { return m_slot; } + void setElementSlot(const QString& a); + inline bool hasElementSlot() const { return m_children & Slot; } + void clearElementSlot(); + + inline DomConnectionHints* elementHints() const { return m_hints; } + DomConnectionHints* takeElementHints(); + void setElementHints(DomConnectionHints* a); + inline bool hasElementHints() const { return m_children & Hints; } + void clearElementHints(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QString m_sender; + QString m_signal; + QString m_receiver; + QString m_slot; + DomConnectionHints* m_hints; + enum Child { + Sender = 1, + Signal = 2, + Receiver = 4, + Slot = 8, + Hints = 16 + }; + + DomConnection(const DomConnection &other); + void operator = (const DomConnection&other); +}; + +class QDESIGNER_UILIB_EXPORT DomConnectionHints { +public: + DomConnectionHints(); + ~DomConnectionHints(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomConnectionHint*> elementHint() const { return m_hint; } + void setElementHint(const QList<DomConnectionHint*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomConnectionHint*> m_hint; + enum Child { + Hint = 1 + }; + + DomConnectionHints(const DomConnectionHints &other); + void operator = (const DomConnectionHints&other); +}; + +class QDESIGNER_UILIB_EXPORT DomConnectionHint { +public: + DomConnectionHint(); + ~DomConnectionHint(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeType() const { return m_has_attr_type; } + inline QString attributeType() const { return m_attr_type; } + inline void setAttributeType(const QString& a) { m_attr_type = a; m_has_attr_type = true; } + inline void clearAttributeType() { m_has_attr_type = false; } + + // child element accessors + inline int elementX() const { return m_x; } + void setElementX(int a); + inline bool hasElementX() const { return m_children & X; } + void clearElementX(); + + inline int elementY() const { return m_y; } + void setElementY(int a); + inline bool hasElementY() const { return m_children & Y; } + void clearElementY(); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_type; + bool m_has_attr_type; + + // child element data + uint m_children; + int m_x; + int m_y; + enum Child { + X = 1, + Y = 2 + }; + + DomConnectionHint(const DomConnectionHint &other); + void operator = (const DomConnectionHint&other); +}; + +class QDESIGNER_UILIB_EXPORT DomScript { +public: + DomScript(); + ~DomScript(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeSource() const { return m_has_attr_source; } + inline QString attributeSource() const { return m_attr_source; } + inline void setAttributeSource(const QString& a) { m_attr_source = a; m_has_attr_source = true; } + inline void clearAttributeSource() { m_has_attr_source = false; } + + inline bool hasAttributeLanguage() const { return m_has_attr_language; } + inline QString attributeLanguage() const { return m_attr_language; } + inline void setAttributeLanguage(const QString& a) { m_attr_language = a; m_has_attr_language = true; } + inline void clearAttributeLanguage() { m_has_attr_language = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_source; + bool m_has_attr_source; + + QString m_attr_language; + bool m_has_attr_language; + + // child element data + uint m_children; + + DomScript(const DomScript &other); + void operator = (const DomScript&other); +}; + +class QDESIGNER_UILIB_EXPORT DomWidgetData { +public: + DomWidgetData(); + ~DomWidgetData(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomProperty*> m_property; + enum Child { + Property = 1 + }; + + DomWidgetData(const DomWidgetData &other); + void operator = (const DomWidgetData&other); +}; + +class QDESIGNER_UILIB_EXPORT DomDesignerData { +public: + DomDesignerData(); + ~DomDesignerData(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomProperty*> elementProperty() const { return m_property; } + void setElementProperty(const QList<DomProperty*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomProperty*> m_property; + enum Child { + Property = 1 + }; + + DomDesignerData(const DomDesignerData &other); + void operator = (const DomDesignerData&other); +}; + +class QDESIGNER_UILIB_EXPORT DomSlots { +public: + DomSlots(); + ~DomSlots(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QStringList elementSignal() const { return m_signal; } + void setElementSignal(const QStringList& a); + + inline QStringList elementSlot() const { return m_slot; } + void setElementSlot(const QStringList& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QStringList m_signal; + QStringList m_slot; + enum Child { + Signal = 1, + Slot = 2 + }; + + DomSlots(const DomSlots &other); + void operator = (const DomSlots&other); +}; + +class QDESIGNER_UILIB_EXPORT DomPropertySpecifications { +public: + DomPropertySpecifications(); + ~DomPropertySpecifications(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + // child element accessors + inline QList<DomStringPropertySpecification*> elementStringpropertyspecification() const { return m_stringpropertyspecification; } + void setElementStringpropertyspecification(const QList<DomStringPropertySpecification*>& a); + +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + // child element data + uint m_children; + QList<DomStringPropertySpecification*> m_stringpropertyspecification; + enum Child { + Stringpropertyspecification = 1 + }; + + DomPropertySpecifications(const DomPropertySpecifications &other); + void operator = (const DomPropertySpecifications&other); +}; + +class QDESIGNER_UILIB_EXPORT DomStringPropertySpecification { +public: + DomStringPropertySpecification(); + ~DomStringPropertySpecification(); + + void read(QXmlStreamReader &reader); + void write(QXmlStreamWriter &writer, const QString &tagName = QString()) const; + inline QString text() const { return m_text; } + inline void setText(const QString &s) { m_text = s; } + + // attribute accessors + inline bool hasAttributeName() const { return m_has_attr_name; } + inline QString attributeName() const { return m_attr_name; } + inline void setAttributeName(const QString& a) { m_attr_name = a; m_has_attr_name = true; } + inline void clearAttributeName() { m_has_attr_name = false; } + + inline bool hasAttributeType() const { return m_has_attr_type; } + inline QString attributeType() const { return m_attr_type; } + inline void setAttributeType(const QString& a) { m_attr_type = a; m_has_attr_type = true; } + inline void clearAttributeType() { m_has_attr_type = false; } + + inline bool hasAttributeNotr() const { return m_has_attr_notr; } + inline QString attributeNotr() const { return m_attr_notr; } + inline void setAttributeNotr(const QString& a) { m_attr_notr = a; m_has_attr_notr = true; } + inline void clearAttributeNotr() { m_has_attr_notr = false; } + + // child element accessors +private: + QString m_text; + void clear(bool clear_all = true); + + // attribute data + QString m_attr_name; + bool m_has_attr_name; + + QString m_attr_type; + bool m_has_attr_type; + + QString m_attr_notr; + bool m_has_attr_notr; + + // child element data + uint m_children; + + DomStringPropertySpecification(const DomStringPropertySpecification &other); + void operator = (const DomStringPropertySpecification&other); +}; + + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +#endif // UI4_H diff --git a/src/designer/src/lib/uilib/uilib.pri b/src/designer/src/lib/uilib/uilib.pri new file mode 100644 index 0000000000000000000000000000000000000000..75904c2f66a69d8b54f4b54c123966f2b1416365 --- /dev/null +++ b/src/designer/src/lib/uilib/uilib.pri @@ -0,0 +1,34 @@ + +INCLUDEPATH += $$PWD + +DEFINES += QT_DESIGNER +!contains(QT_CONFIG, script): DEFINES += QT_FORMBUILDER_NO_SCRIPT + +QT += gui widgets + +# Input +HEADERS += \ + $$PWD/ui4_p.h \ + $$PWD/abstractformbuilder.h \ + $$PWD/formbuilder.h \ + $$PWD/container.h \ + $$PWD/customwidget.h \ + $$PWD/properties_p.h \ + $$PWD/formbuilderextra_p.h \ + $$PWD/resourcebuilder_p.h \ + $$PWD/textbuilder_p.h + +SOURCES += \ + $$PWD/abstractformbuilder.cpp \ + $$PWD/formbuilder.cpp \ + $$PWD/ui4.cpp \ + $$PWD/properties.cpp \ + $$PWD/formbuilderextra.cpp \ + $$PWD/resourcebuilder.cpp \ + $$PWD/textbuilder.cpp + +!contains(DEFINES, QT_FORMBUILDER_NO_SCRIPT) { + QT += script + HEADERS += $$PWD/formscriptrunner_p.h + SOURCES += $$PWD/formscriptrunner.cpp +} diff --git a/src/designer/src/lib/uilib/uilib_global.h b/src/designer/src/lib/uilib/uilib_global.h new file mode 100644 index 0000000000000000000000000000000000000000..b27a9bd3f6673794feea1f4c42eed96f366c6142 --- /dev/null +++ b/src/designer/src/lib/uilib/uilib_global.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef UILIB_GLOBAL_H +#define UILIB_GLOBAL_H + +#include <QtCore/qglobal.h> + +QT_BEGIN_HEADER +QT_BEGIN_NAMESPACE + +#define QDESIGNER_UILIB_EXTERN Q_DECL_EXPORT +#define QDESIGNER_UILIB_IMPORT Q_DECL_IMPORT + +#ifdef QT_DESIGNER_STATIC +# define QDESIGNER_UILIB_EXPORT +#elif defined(QDESIGNER_UILIB_LIBRARY) +# define QDESIGNER_UILIB_EXPORT QDESIGNER_UILIB_EXTERN +#else +# define QDESIGNER_UILIB_EXPORT QDESIGNER_UILIB_IMPORT +#endif + +QT_END_NAMESPACE +QT_END_HEADER + +#endif // UILIB_GLOBAL_H diff --git a/src/designer/src/lib/uilib/widgets.table b/src/designer/src/lib/uilib/widgets.table new file mode 100644 index 0000000000000000000000000000000000000000..9b8727849b1159739ab29582511cc412cb0185d3 --- /dev/null +++ b/src/designer/src/lib/uilib/widgets.table @@ -0,0 +1,148 @@ + +#ifndef DECLARE_WIDGET_1 +# define DECLARE_WIDGET_1(a,b) DECLARE_WIDGET(a,b) +#endif + +// widgets +#ifndef QT_NO_CHECKBOX +DECLARE_WIDGET(QCheckBox, "text") +#endif +#ifndef QT_NO_COMBOBOX +DECLARE_WIDGET(QComboBox, "") +#endif +#ifndef QT_NO_DATETIMEEDIT +DECLARE_WIDGET(QDateTimeEdit, "") +#endif +#ifndef QT_NO_DATEEDIT +DECLARE_WIDGET(QDateEdit, "") +#endif +#ifndef QT_NO_TIMEEDIT +DECLARE_WIDGET(QTimeEdit, "") +#endif +#ifndef QT_NO_DIAL +DECLARE_WIDGET(QDial, "") +#endif +DECLARE_WIDGET(QDialog, "") +#ifndef QT_NO_DOCKWIDGET +DECLARE_WIDGET(QDockWidget, "") +#endif +DECLARE_WIDGET(QFrame, "") +#ifndef QT_NO_GROUPBOX +DECLARE_WIDGET(QGroupBox, "") +#endif +#ifndef QT_NO_SCROLLAREA +DECLARE_WIDGET(QScrollArea, "") +#endif +#ifndef QT_NO_LCDNUMBER +DECLARE_WIDGET(QLCDNumber, "") +#endif +DECLARE_WIDGET(QLabel, "") +#ifndef QT_NO_LINEEDIT +DECLARE_WIDGET(QLineEdit, "") +#endif +#ifndef QT_NO_LISTVIEW +DECLARE_WIDGET(QListView, "") +#endif +#ifndef QT_NO_LISTWIDGET +DECLARE_WIDGET(QListWidget, "") +#endif +#ifndef QT_NO_MAINWINDOW +DECLARE_WIDGET(QMainWindow, "") +#endif +#ifndef QT_NO_MDIAREA +DECLARE_WIDGET(QMdiArea, "") +#endif +#ifndef QT_NO_MENU +DECLARE_WIDGET(QMenu, "") +#endif +#ifndef QT_NO_MENUBAR +DECLARE_WIDGET(QMenuBar, "") +#endif +#ifndef QT_NO_PROGRESSBAR +DECLARE_WIDGET(QProgressBar, "") +#endif +DECLARE_WIDGET(QPushButton, "text") +DECLARE_WIDGET(QRadioButton, "text") +DECLARE_WIDGET(QCommandLinkButton, "text") +#ifndef QT_NO_SCROLLBAR +DECLARE_WIDGET(QScrollBar, "") +#endif +#ifndef QT_NO_SLIDER +DECLARE_WIDGET(QSlider, "") +#endif +#ifndef QT_NO_SPINBOX +DECLARE_WIDGET(QSpinBox, "") +DECLARE_WIDGET(QDoubleSpinBox, "") +#endif +#ifndef QT_NO_TABWIDGET +DECLARE_WIDGET(QTabWidget, "") +#endif +#ifndef QT_NO_TABLEVIEW +DECLARE_WIDGET(QTableView, "") +#endif +#ifndef QT_NO_TABLEWIDGET +DECLARE_WIDGET(QTableWidget, "") +#endif +#ifndef QT_NO_TEXTBROWSER +DECLARE_WIDGET(QTextBrowser, "") +#endif +#ifndef QT_NO_TEXTEDIT +DECLARE_WIDGET(QTextEdit, "") +DECLARE_WIDGET(QPlainTextEdit, "") +#endif +#ifndef QT_NO_TOOLBAR +DECLARE_WIDGET(QToolBar, "") +#endif +#ifndef QT_NO_TOOLBOX +DECLARE_WIDGET(QToolBox, "") +#endif +#ifndef QT_NO_TOOLBUTTON +DECLARE_WIDGET(QToolButton, "text") +#endif +#ifndef QT_NO_TREEVIEW +DECLARE_WIDGET(QTreeView, "") +#endif +#ifndef QT_NO_TREEWIDGET +DECLARE_WIDGET(QTreeWidget, "") +#endif +DECLARE_WIDGET(QWidget, "") +#ifndef QT_NO_WORKSPACE +DECLARE_WIDGET(QWorkspace, "") +#endif +#ifndef QT_NO_SPLITTER +DECLARE_WIDGET(QSplitter, "") +#endif +#ifndef QT_NO_STACKEDWIDGET +DECLARE_WIDGET(QStackedWidget, "") +#endif +#ifndef QT_NO_STATUSBAR +DECLARE_WIDGET(QStatusBar, "") +#endif +DECLARE_WIDGET(QDialogButtonBox, "") +#ifndef QT_NO_FONTCOMBOBOX +DECLARE_WIDGET(QFontComboBox, "") +#endif +#ifndef QT_NO_CALENDARWIDGET +DECLARE_WIDGET(QCalendarWidget, "") +#endif +#ifndef QT_NO_COLUMNVIEW +DECLARE_WIDGET(QColumnView, "") +#endif + +#ifndef QT_NO_WIZARD +DECLARE_WIDGET(QWizard, "") +DECLARE_WIDGET(QWizardPage, "") +#endif + +#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW +DECLARE_WIDGET_1(QGraphicsView, "") +#endif + +// layouts +DECLARE_LAYOUT(QGridLayout, "") +DECLARE_LAYOUT(QHBoxLayout, "") +DECLARE_LAYOUT(QStackedLayout, "") +DECLARE_LAYOUT(QVBoxLayout, "") +#ifndef QT_NO_FORMLAYOUT +DECLARE_LAYOUT(QFormLayout, "") +#endif diff --git a/src/designer/src/src.pro b/src/designer/src/src.pro index 40da11ffc0b32236e0cd0ff01aadab2e31983475..9802c653db783b7b044e2f0aecf51b73373a2f97 100644 --- a/src/designer/src/src.pro +++ b/src/designer/src/src.pro @@ -2,6 +2,7 @@ TEMPLATE = subdirs CONFIG += ordered SUBDIRS = \ + uitools \ lib \ components \ designer diff --git a/src/designer/src/uitools/quiloader.cpp b/src/designer/src/uitools/quiloader.cpp new file mode 100644 index 0000000000000000000000000000000000000000..19d4277aed9feca5333934583e27ccac5b383e72 --- /dev/null +++ b/src/designer/src/uitools/quiloader.cpp @@ -0,0 +1,954 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include "quiloader.h" +#include "quiloader_p.h" +#include "customwidget.h" + +#include <formbuilder.h> +#include <formbuilderextra_p.h> +#include <textbuilder_p.h> +#include <ui4_p.h> + +#include <QtCore/qdebug.h> +#include <QtWidgets/QAction> +#include <QtWidgets/QActionGroup> +#include <QtWidgets/QApplication> +#include <QtCore/QDir> +#include <QtCore/QLibraryInfo> +#include <QtWidgets/QLayout> +#include <QtWidgets/QWidget> +#include <QtCore/QMap> +#include <QtWidgets/QTabWidget> +#include <QtWidgets/QTreeWidget> +#include <QtWidgets/QListWidget> +#include <QtWidgets/QTableWidget> +#include <QtWidgets/QToolBox> +#include <QtWidgets/QComboBox> +#include <QtWidgets/QFontComboBox> + +QT_BEGIN_NAMESPACE + +typedef QMap<QString, bool> widget_map; +Q_GLOBAL_STATIC(widget_map, g_widgets) + +class QUiLoader; +class QUiLoaderPrivate; + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +class TranslatingTextBuilder : public QTextBuilder +{ +public: + TranslatingTextBuilder(bool trEnabled, const QByteArray &className) : + m_trEnabled(trEnabled), m_className(className) {} + + virtual QVariant loadText(const DomProperty *icon) const; + + virtual QVariant toNativeValue(const QVariant &value) const; + +private: + bool m_trEnabled; + QByteArray m_className; +}; + +QVariant TranslatingTextBuilder::loadText(const DomProperty *text) const +{ + const DomString *str = text->elementString(); + if (!str) + return QVariant(); + if (str->hasAttributeNotr()) { + const QString notr = str->attributeNotr(); + if (notr == QLatin1String("true") || notr == QLatin1String("yes")) + return QVariant::fromValue(str->text()); + } + QUiTranslatableStringValue strVal; + strVal.setValue(str->text().toUtf8()); + if (str->hasAttributeComment()) + strVal.setComment(str->attributeComment().toUtf8()); + return QVariant::fromValue(strVal); +} + +QVariant TranslatingTextBuilder::toNativeValue(const QVariant &value) const +{ + if (value.canConvert<QUiTranslatableStringValue>()) { + QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(value); + if (!m_trEnabled) + return QString::fromUtf8(tsv.value().data()); + return QVariant::fromValue( + QApplication::translate(m_className, tsv.value(), tsv.comment(), + QCoreApplication::UnicodeUTF8)); + } + if (value.canConvert<QString>()) + return QVariant::fromValue(qvariant_cast<QString>(value)); + return value; +} + +// This is "exported" to linguist +const QUiItemRolePair qUiItemRoles[] = { + { Qt::DisplayRole, Qt::DisplayPropertyRole }, +#ifndef QT_NO_TOOLTIP + { Qt::ToolTipRole, Qt::ToolTipPropertyRole }, +#endif +#ifndef QT_NO_STATUSTIP + { Qt::StatusTipRole, Qt::StatusTipPropertyRole }, +#endif +#ifndef QT_NO_WHATSTHIS + { Qt::WhatsThisRole, Qt::WhatsThisPropertyRole }, +#endif + { -1 , -1 } +}; + +static void recursiveReTranslate(QTreeWidgetItem *item, const QByteArray &class_name) +{ + const QUiItemRolePair *irs = qUiItemRoles; + + int cnt = item->columnCount(); + for (int i = 0; i < cnt; ++i) { + for (unsigned j = 0; irs[j].shadowRole >= 0; j++) { + QVariant v = item->data(i, irs[j].shadowRole); + if (v.isValid()) { + QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(v); + const QString text = QApplication::translate(class_name, + tsv.value(), tsv.comment(), + QCoreApplication::UnicodeUTF8); + item->setData(i, irs[j].realRole, text); + } + } + } + + cnt = item->childCount(); + for (int i = 0; i < cnt; ++i) + recursiveReTranslate(item->child(i), class_name); +} + +template<typename T> +static void reTranslateWidgetItem(T *item, const QByteArray &class_name) +{ + const QUiItemRolePair *irs = qUiItemRoles; + + for (unsigned j = 0; irs[j].shadowRole >= 0; j++) { + QVariant v = item->data(irs[j].shadowRole); + if (v.isValid()) { + QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(v); + const QString text = QApplication::translate(class_name, + tsv.value(), tsv.comment(), + QCoreApplication::UnicodeUTF8); + item->setData(irs[j].realRole, text); + } + } +} + +static void reTranslateTableItem(QTableWidgetItem *item, const QByteArray &class_name) +{ + if (item) + reTranslateWidgetItem(item, class_name); +} + +#define RETRANSLATE_SUBWIDGET_PROP(mainWidget, setter, propName) \ + do { \ + QVariant v = mainWidget->widget(i)->property(propName); \ + if (v.isValid()) { \ + QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(v); \ + const QString text = QApplication::translate(m_className, \ + tsv.value(), tsv.comment(), \ + QCoreApplication::UnicodeUTF8); \ + mainWidget->setter(i, text); \ + } \ + } while (0) + +class TranslationWatcher: public QObject +{ + Q_OBJECT + +public: + TranslationWatcher(QObject *parent, const QByteArray &className): + QObject(parent), + m_className(className) + { + } + + virtual bool eventFilter(QObject *o, QEvent *event) + { + if (event->type() == QEvent::LanguageChange) { + foreach (const QByteArray &prop, o->dynamicPropertyNames()) { + if (prop.startsWith(PROP_GENERIC_PREFIX)) { + const QByteArray propName = prop.mid(sizeof(PROP_GENERIC_PREFIX) - 1); + const QUiTranslatableStringValue tsv = + qvariant_cast<QUiTranslatableStringValue>(o->property(prop)); + const QString text = QApplication::translate(m_className, + tsv.value(), tsv.comment(), + QCoreApplication::UnicodeUTF8); + o->setProperty(propName, text); + } + } + if (0) { +#ifndef QT_NO_TABWIDGET + } else if (QTabWidget *tabw = qobject_cast<QTabWidget*>(o)) { + const int cnt = tabw->count(); + for (int i = 0; i < cnt; ++i) { + RETRANSLATE_SUBWIDGET_PROP(tabw, setTabText, PROP_TABPAGETEXT); +# ifndef QT_NO_TOOLTIP + RETRANSLATE_SUBWIDGET_PROP(tabw, setTabToolTip, PROP_TABPAGETOOLTIP); +# endif +# ifndef QT_NO_WHATSTHIS + RETRANSLATE_SUBWIDGET_PROP(tabw, setTabWhatsThis, PROP_TABPAGEWHATSTHIS); +# endif + } +#endif +#ifndef QT_NO_LISTWIDGET + } else if (QListWidget *listw = qobject_cast<QListWidget*>(o)) { + const int cnt = listw->count(); + for (int i = 0; i < cnt; ++i) + reTranslateWidgetItem(listw->item(i), m_className); +#endif +#ifndef QT_NO_TREEWIDGET + } else if (QTreeWidget *treew = qobject_cast<QTreeWidget*>(o)) { + if (QTreeWidgetItem *item = treew->headerItem()) + recursiveReTranslate(item, m_className); + const int cnt = treew->topLevelItemCount(); + for (int i = 0; i < cnt; ++i) { + QTreeWidgetItem *item = treew->topLevelItem(i); + recursiveReTranslate(item, m_className); + } +#endif +#ifndef QT_NO_TABLEWIDGET + } else if (QTableWidget *tablew = qobject_cast<QTableWidget*>(o)) { + const int row_cnt = tablew->rowCount(); + const int col_cnt = tablew->columnCount(); + for (int j = 0; j < col_cnt; ++j) + reTranslateTableItem(tablew->horizontalHeaderItem(j), m_className); + for (int i = 0; i < row_cnt; ++i) { + reTranslateTableItem(tablew->verticalHeaderItem(i), m_className); + for (int j = 0; j < col_cnt; ++j) + reTranslateTableItem(tablew->item(i, j), m_className); + } +#endif +#ifndef QT_NO_COMBOBOX + } else if (QComboBox *combow = qobject_cast<QComboBox*>(o)) { + if (!qobject_cast<QFontComboBox*>(o)) { + const int cnt = combow->count(); + for (int i = 0; i < cnt; ++i) { + const QVariant v = combow->itemData(i, Qt::DisplayPropertyRole); + if (v.isValid()) { + QUiTranslatableStringValue tsv = qvariant_cast<QUiTranslatableStringValue>(v); + const QString text = QApplication::translate(m_className, + tsv.value(), tsv.comment(), + QCoreApplication::UnicodeUTF8); + combow->setItemText(i, text); + } + } + } +#endif +#ifndef QT_NO_TOOLBOX + } else if (QToolBox *toolw = qobject_cast<QToolBox*>(o)) { + const int cnt = toolw->count(); + for (int i = 0; i < cnt; ++i) { + RETRANSLATE_SUBWIDGET_PROP(toolw, setItemText, PROP_TOOLITEMTEXT); +# ifndef QT_NO_TOOLTIP + RETRANSLATE_SUBWIDGET_PROP(toolw, setItemToolTip, PROP_TOOLITEMTOOLTIP); +# endif + } +#endif + } + } + return false; + } + +private: + QByteArray m_className; +}; + +class FormBuilderPrivate: public QFormBuilder +{ + friend class QT_PREPEND_NAMESPACE(QUiLoader); + friend class QT_PREPEND_NAMESPACE(QUiLoaderPrivate); + typedef QFormBuilder ParentClass; + +public: + QUiLoader *loader; + + bool dynamicTr; + bool trEnabled; + + FormBuilderPrivate(): loader(0), dynamicTr(false), trEnabled(true), m_trwatch(0) {} + + QWidget *defaultCreateWidget(const QString &className, QWidget *parent, const QString &name) + { + return ParentClass::createWidget(className, parent, name); + } + + QLayout *defaultCreateLayout(const QString &className, QObject *parent, const QString &name) + { + return ParentClass::createLayout(className, parent, name); + } + + QAction *defaultCreateAction(QObject *parent, const QString &name) + { + return ParentClass::createAction(parent, name); + } + + QActionGroup *defaultCreateActionGroup(QObject *parent, const QString &name) + { + return ParentClass::createActionGroup(parent, name); + } + + virtual QWidget *createWidget(const QString &className, QWidget *parent, const QString &name) + { + if (QWidget *widget = loader->createWidget(className, parent, name)) { + widget->setObjectName(name); + return widget; + } + + return 0; + } + + virtual QLayout *createLayout(const QString &className, QObject *parent, const QString &name) + { + if (QLayout *layout = loader->createLayout(className, parent, name)) { + layout->setObjectName(name); + return layout; + } + + return 0; + } + + virtual QActionGroup *createActionGroup(QObject *parent, const QString &name) + { + if (QActionGroup *actionGroup = loader->createActionGroup(parent, name)) { + actionGroup->setObjectName(name); + return actionGroup; + } + + return 0; + } + + virtual QAction *createAction(QObject *parent, const QString &name) + { + if (QAction *action = loader->createAction(parent, name)) { + action->setObjectName(name); + return action; + } + + return 0; + } + + virtual void applyProperties(QObject *o, const QList<DomProperty*> &properties); + virtual QWidget *create(DomUI *ui, QWidget *parentWidget); + virtual QWidget *create(DomWidget *ui_widget, QWidget *parentWidget); + virtual bool addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget); + +private: + QByteArray m_class; + TranslationWatcher *m_trwatch; +}; + +static QString convertTranslatable(const DomProperty *p, const QByteArray &className, + QUiTranslatableStringValue *strVal) +{ + if (p->kind() != DomProperty::String) + return QString(); + const DomString *dom_str = p->elementString(); + if (!dom_str) + return QString(); + if (dom_str->hasAttributeNotr()) { + const QString notr = dom_str->attributeNotr(); + if (notr == QLatin1String("yes") || notr == QLatin1String("true")) + return QString(); + } + strVal->setValue(dom_str->text().toUtf8()); + strVal->setComment(dom_str->attributeComment().toUtf8()); + if (strVal->value().isEmpty() && strVal->comment().isEmpty()) + return QString(); + return QApplication::translate(className, + strVal->value(), strVal->comment(), + QCoreApplication::UnicodeUTF8); +} + +void FormBuilderPrivate::applyProperties(QObject *o, const QList<DomProperty*> &properties) +{ + typedef QList<DomProperty*> DomPropertyList; + + QFormBuilder::applyProperties(o, properties); + + if (!m_trwatch) + m_trwatch = new TranslationWatcher(o, m_class); + + if (properties.empty()) + return; + + // Unlike string item roles, string properties are not loaded via the textBuilder + // (as they are "shadowed" by the property sheets in designer). So do the initial + // translation here. + bool anyTrs = false; + foreach (const DomProperty *p, properties) { + QUiTranslatableStringValue strVal; + const QString text = convertTranslatable(p, m_class, &strVal); + if (text.isEmpty()) + continue; + const QByteArray name = p->attributeName().toUtf8(); + if (dynamicTr) { + o->setProperty(PROP_GENERIC_PREFIX + name, QVariant::fromValue(strVal)); + anyTrs = trEnabled; + } + o->setProperty(name, text); + } + if (anyTrs) + o->installEventFilter(m_trwatch); +} + +QWidget *FormBuilderPrivate::create(DomUI *ui, QWidget *parentWidget) +{ + m_class = ui->elementClass().toUtf8(); + m_trwatch = 0; + setTextBuilder(new TranslatingTextBuilder(trEnabled, m_class)); + return QFormBuilder::create(ui, parentWidget); +} + +QWidget *FormBuilderPrivate::create(DomWidget *ui_widget, QWidget *parentWidget) +{ + QWidget *w = QFormBuilder::create(ui_widget, parentWidget); + if (w == 0) + return 0; + + if (0) { +#ifndef QT_NO_TABWIDGET + } else if (qobject_cast<QTabWidget*>(w)) { +#endif +#ifndef QT_NO_LISTWIDGET + } else if (qobject_cast<QListWidget*>(w)) { +#endif +#ifndef QT_NO_TREEWIDGET + } else if (qobject_cast<QTreeWidget*>(w)) { +#endif +#ifndef QT_NO_TABLEWIDGET + } else if (qobject_cast<QTableWidget*>(w)) { +#endif +#ifndef QT_NO_COMBOBOX + } else if (qobject_cast<QComboBox*>(w)) { + if (qobject_cast<QFontComboBox*>(w)) + return w; +#endif +#ifndef QT_NO_TOOLBOX + } else if (qobject_cast<QToolBox*>(w)) { +#endif + } else { + return w; + } + if (dynamicTr && trEnabled) + w->installEventFilter(m_trwatch); + return w; +} + +#define TRANSLATE_SUBWIDGET_PROP(mainWidget, attribute, setter, propName) \ + do { \ + if (const DomProperty *p##attribute = attributes.value(strings.attribute)) { \ + QUiTranslatableStringValue strVal; \ + const QString text = convertTranslatable(p##attribute, m_class, &strVal); \ + if (!text.isEmpty()) { \ + if (dynamicTr) \ + mainWidget->widget(i)->setProperty(propName, QVariant::fromValue(strVal)); \ + mainWidget->setter(i, text); \ + } \ + } \ + } while (0) + +bool FormBuilderPrivate::addItem(DomWidget *ui_widget, QWidget *widget, QWidget *parentWidget) +{ + if (parentWidget == 0) + return true; + + if (!ParentClass::addItem(ui_widget, widget, parentWidget)) + return false; + + // Check special cases. First: Custom container + const QString className = QLatin1String(parentWidget->metaObject()->className()); + if (!d->customWidgetAddPageMethod(className).isEmpty()) + return true; + + const QFormBuilderStrings &strings = QFormBuilderStrings::instance(); + + if (0) { +#ifndef QT_NO_TABWIDGET + } else if (QTabWidget *tabWidget = qobject_cast<QTabWidget*>(parentWidget)) { + const DomPropertyHash attributes = propertyMap(ui_widget->elementAttribute()); + const int i = tabWidget->count() - 1; + TRANSLATE_SUBWIDGET_PROP(tabWidget, titleAttribute, setTabText, PROP_TABPAGETEXT); +# ifndef QT_NO_TOOLTIP + TRANSLATE_SUBWIDGET_PROP(tabWidget, toolTipAttribute, setTabToolTip, PROP_TABPAGETOOLTIP); +# endif +# ifndef QT_NO_WHATSTHIS + TRANSLATE_SUBWIDGET_PROP(tabWidget, whatsThisAttribute, setTabWhatsThis, PROP_TABPAGEWHATSTHIS); +# endif +#endif +#ifndef QT_NO_TOOLBOX + } else if (QToolBox *toolBox = qobject_cast<QToolBox*>(parentWidget)) { + const DomPropertyHash attributes = propertyMap(ui_widget->elementAttribute()); + const int i = toolBox->count() - 1; + TRANSLATE_SUBWIDGET_PROP(toolBox, labelAttribute, setItemText, PROP_TOOLITEMTEXT); +# ifndef QT_NO_TOOLTIP + TRANSLATE_SUBWIDGET_PROP(toolBox, toolTipAttribute, setItemToolTip, PROP_TOOLITEMTOOLTIP); +# endif +#endif + } + + return true; +} + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +class QUiLoaderPrivate +{ +public: +#ifdef QFORMINTERNAL_NAMESPACE + QFormInternal::FormBuilderPrivate builder; +#else + FormBuilderPrivate builder; +#endif + + void setupWidgetMap() const; +}; + +void QUiLoaderPrivate::setupWidgetMap() const +{ + if (!g_widgets()->isEmpty()) + return; + +#define DECLARE_WIDGET(a, b) g_widgets()->insert(QLatin1String(#a), true); +#define DECLARE_LAYOUT(a, b) + +#include "widgets.table" + +#undef DECLARE_WIDGET +#undef DECLARE_WIDGET_1 +#undef DECLARE_LAYOUT +} + +/*! + \class QUiLoader + \inmodule QtUiTools + + \brief The QUiLoader class enables standalone applications to + dynamically create user interfaces at run-time using the + information stored in UI files or specified in plugin paths. + + In addition, you can customize or create your own user interface by + deriving your own loader class. + + If you have a custom component or an application that embeds \QD, you can + also use the QFormBuilder class provided by the QtDesigner module to create + user interfaces from UI files. + + The QUiLoader class provides a collection of functions allowing you to + create widgets based on the information stored in UI files (created + with \QD) or available in the specified plugin paths. The specified plugin + paths can be retrieved using the pluginPaths() function. Similarly, the + contents of a UI file can be retrieved using the load() function. For + example: + + \snippet doc/src/snippets/quiloader/mywidget.cpp 0 + + By including the user interface in the form's resources (\c myform.qrc), we + ensure that it will be present at run-time: + + \quotefile doc/src/snippets/quiloader/mywidget.qrc + + The availableWidgets() function returns a QStringList with the class names + of the widgets available in the specified plugin paths. To create these + widgets, simply use the createWidget() function. For example: + + \snippet doc/src/snippets/quiloader/main.cpp 0 + + To make a custom widget available to the loader, you can use the + addPluginPath() function; to remove all available widgets, you can call + the clearPluginPaths() function. + + The createAction(), createActionGroup(), createLayout(), and createWidget() + functions are used internally by the QUiLoader class whenever it has to + create an action, action group, layout, or widget respectively. For that + reason, you can subclass the QUiLoader class and reimplement these + functions to intervene the process of constructing a user interface. For + example, you might want to have a list of the actions created when loading + a form or creating a custom widget. + + For a complete example using the QUiLoader class, see the + \l{Calculator Builder Example}. + + \sa QtUiTools, QFormBuilder +*/ + +/*! + Creates a form loader with the given \a parent. +*/ +QUiLoader::QUiLoader(QObject *parent) + : QObject(parent), d_ptr(new QUiLoaderPrivate) +{ + Q_D(QUiLoader); + + d->builder.loader = this; + + QStringList paths; + foreach (const QString &path, QApplication::libraryPaths()) { + QString libPath = path; + libPath += QDir::separator(); + libPath += QLatin1String("designer"); + paths.append(libPath); + } + + d->builder.setPluginPath(paths); +} + +/*! + Destroys the loader. +*/ +QUiLoader::~QUiLoader() +{ +} + +/*! + Loads a form from the given \a device and creates a new widget with the + given \a parentWidget to hold its contents. + + \sa createWidget(), errorString() +*/ +QWidget *QUiLoader::load(QIODevice *device, QWidget *parentWidget) +{ + Q_D(QUiLoader); + // QXmlStreamReader will report errors on open failure. + if (!device->isOpen()) + device->open(QIODevice::ReadOnly|QIODevice::Text); + return d->builder.load(device, parentWidget); +} + +/*! + Returns a list naming the paths in which the loader will search when + locating custom widget plugins. + + \sa addPluginPath(), clearPluginPaths() +*/ +QStringList QUiLoader::pluginPaths() const +{ + Q_D(const QUiLoader); + return d->builder.pluginPaths(); +} + +/*! + Clears the list of paths in which the loader will search when locating + plugins. + + \sa addPluginPath(), pluginPaths() +*/ +void QUiLoader::clearPluginPaths() +{ + Q_D(QUiLoader); + d->builder.clearPluginPaths(); +} + +/*! + Adds the given \a path to the list of paths in which the loader will search + when locating plugins. + + \sa pluginPaths(), clearPluginPaths() +*/ +void QUiLoader::addPluginPath(const QString &path) +{ + Q_D(QUiLoader); + d->builder.addPluginPath(path); +} + +/*! + Creates a new widget with the given \a parent and \a name using the class + specified by \a className. You can use this function to create any of the + widgets returned by the availableWidgets() function. + + The function is also used internally by the QUiLoader class whenever it + creates a widget. Hence, you can subclass QUiLoader and reimplement this + function to intervene process of constructing a user interface or widget. + However, in your implementation, ensure that you call QUiLoader's version + first. + + \sa availableWidgets(), load() +*/ +QWidget *QUiLoader::createWidget(const QString &className, QWidget *parent, const QString &name) +{ + Q_D(QUiLoader); + return d->builder.defaultCreateWidget(className, parent, name); +} + +/*! + Creates a new layout with the given \a parent and \a name using the class + specified by \a className. + + The function is also used internally by the QUiLoader class whenever it + creates a widget. Hence, you can subclass QUiLoader and reimplement this + function to intervene process of constructing a user interface or widget. + However, in your implementation, ensure that you call QUiLoader's version + first. + + \sa createWidget(), load() +*/ +QLayout *QUiLoader::createLayout(const QString &className, QObject *parent, const QString &name) +{ + Q_D(QUiLoader); + return d->builder.defaultCreateLayout(className, parent, name); +} + +/*! + Creates a new action group with the given \a parent and \a name. + + The function is also used internally by the QUiLoader class whenever it + creates a widget. Hence, you can subclass QUiLoader and reimplement this + function to intervene process of constructing a user interface or widget. + However, in your implementation, ensure that you call QUiLoader's version + first. + + \sa createAction(), createWidget(), load() + */ +QActionGroup *QUiLoader::createActionGroup(QObject *parent, const QString &name) +{ + Q_D(QUiLoader); + return d->builder.defaultCreateActionGroup(parent, name); +} + +/*! + Creates a new action with the given \a parent and \a name. + + The function is also used internally by the QUiLoader class whenever it + creates a widget. Hence, you can subclass QUiLoader and reimplement this + function to intervene process of constructing a user interface or widget. + However, in your implementation, ensure that you call QUiLoader's version + first. + + \sa createActionGroup(), createWidget(), load() +*/ +QAction *QUiLoader::createAction(QObject *parent, const QString &name) +{ + Q_D(QUiLoader); + return d->builder.defaultCreateAction(parent, name); +} + +/*! + Returns a list naming all available widgets that can be built using the + createWidget() function, i.e all the widgets specified within the given + plugin paths. + + \sa pluginPaths(), createWidget() + +*/ +QStringList QUiLoader::availableWidgets() const +{ + Q_D(const QUiLoader); + + d->setupWidgetMap(); + widget_map available = *g_widgets(); + + foreach (QDesignerCustomWidgetInterface *plugin, d->builder.customWidgets()) { + available.insert(plugin->name(), true); + } + + return available.keys(); +} + + +/*! + \since 4.5 + Returns a list naming all available layouts that can be built using the + createLayout() function + + \sa createLayout() +*/ + +QStringList QUiLoader::availableLayouts() const +{ + QStringList rc; +#define DECLARE_WIDGET(a, b) +#define DECLARE_LAYOUT(a, b) rc.push_back(QLatin1String(#a)); + +#include "widgets.table" + +#undef DECLARE_WIDGET +#undef DECLARE_LAYOUT + return rc; +} + +/*! + Sets the working directory of the loader to \a dir. The loader will look + for other resources, such as icons and resource files, in paths relative to + this directory. + + \sa workingDirectory() +*/ + +void QUiLoader::setWorkingDirectory(const QDir &dir) +{ + Q_D(QUiLoader); + d->builder.setWorkingDirectory(dir); +} + +/*! + Returns the working directory of the loader. + + \sa setWorkingDirectory() +*/ + +QDir QUiLoader::workingDirectory() const +{ + Q_D(const QUiLoader); + return d->builder.workingDirectory(); +} + +/*! + \internal + \since 4.3 + + If \a enabled is true, the loader will be able to execute scripts. + Otherwise, execution of scripts will be disabled. + + \sa isScriptingEnabled() +*/ + +void QUiLoader::setScriptingEnabled(bool enabled) +{ + Q_D(QUiLoader); + d->builder.setScriptingEnabled(enabled); +} + +/*! + \internal + \since 4.3 + + Returns true if execution of scripts is enabled; returns false otherwise. + + \sa setScriptingEnabled() +*/ + +bool QUiLoader::isScriptingEnabled() const +{ + Q_D(const QUiLoader); + return d->builder.isScriptingEnabled(); +} + +/*! + \since 4.5 + + If \a enabled is true, user interfaces loaded by this loader will + automatically retranslate themselves upon receiving a language change + event. Otherwise, the user interfaces will not be retranslated. + + \sa isLanguageChangeEnabled() +*/ + +void QUiLoader::setLanguageChangeEnabled(bool enabled) +{ + Q_D(QUiLoader); + d->builder.dynamicTr = enabled; +} + +/*! + \since 4.5 + + Returns true if dynamic retranslation on language change is enabled; + returns false otherwise. + + \sa setLanguageChangeEnabled() +*/ + +bool QUiLoader::isLanguageChangeEnabled() const +{ + Q_D(const QUiLoader); + return d->builder.dynamicTr; +} + +/*! + \internal + \since 4.5 + + If \a enabled is true, user interfaces loaded by this loader will be + translated. Otherwise, the user interfaces will not be translated. + + \note This is orthogonal to languageChangeEnabled. + + \sa isLanguageChangeEnabled(), setLanguageChangeEnabled() +*/ + +void QUiLoader::setTranslationEnabled(bool enabled) +{ + Q_D(QUiLoader); + d->builder.trEnabled = enabled; +} + +/*! + \internal + \since 4.5 + + Returns true if translation is enabled; returns false otherwise. + + \sa setTranslationEnabled() +*/ + +bool QUiLoader::isTranslationEnabled() const +{ + Q_D(const QUiLoader); + return d->builder.trEnabled; +} + +/*! + Returns a human-readable description of the last error occurred in load(). + + \since 5.0 + \sa load() +*/ + +QString QUiLoader::errorString() const +{ + Q_D(const QUiLoader); + return d->builder.errorString(); +} + +QT_END_NAMESPACE + +#include "quiloader.moc" diff --git a/src/designer/src/uitools/quiloader.h b/src/designer/src/uitools/quiloader.h new file mode 100644 index 0000000000000000000000000000000000000000..4adbb01c0e5134ea4cff90a9971bc75e37b0d4b7 --- /dev/null +++ b/src/designer/src/uitools/quiloader.h @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUILOADER_H +#define QUILOADER_H + +#include <QtCore/QObject> +#include <QtCore/QScopedPointer> + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QWidget; +class QLayout; +class QAction; +class QActionGroup; +class QString; +class QIODevice; +class QDir; + +class QUiLoaderPrivate; +class QUiLoader : public QObject +{ + Q_OBJECT +public: + QUiLoader(QObject *parent = 0); + virtual ~QUiLoader(); + + QStringList pluginPaths() const; + void clearPluginPaths(); + void addPluginPath(const QString &path); + + QWidget *load(QIODevice *device, QWidget *parentWidget = 0); + QStringList availableWidgets() const; + QStringList availableLayouts() const; + + virtual QWidget *createWidget(const QString &className, QWidget *parent = 0, const QString &name = QString()); + virtual QLayout *createLayout(const QString &className, QObject *parent = 0, const QString &name = QString()); + virtual QActionGroup *createActionGroup(QObject *parent = 0, const QString &name = QString()); + virtual QAction *createAction(QObject *parent = 0, const QString &name = QString()); + + void setWorkingDirectory(const QDir &dir); + QDir workingDirectory() const; + + void setScriptingEnabled(bool enabled); + bool isScriptingEnabled() const; + + void setLanguageChangeEnabled(bool enabled); + bool isLanguageChangeEnabled() const; + + void setTranslationEnabled(bool enabled); + bool isTranslationEnabled() const; + + QString errorString() const; + +private: + QScopedPointer<QUiLoaderPrivate> d_ptr; + Q_DECLARE_PRIVATE(QUiLoader) + Q_DISABLE_COPY(QUiLoader) +}; + +QT_END_NAMESPACE + +QT_END_HEADER + +#endif // QUILOADER_H diff --git a/src/designer/src/uitools/quiloader_p.h b/src/designer/src/uitools/quiloader_p.h new file mode 100644 index 0000000000000000000000000000000000000000..3137e6fc8b8332eacc439b3752116e822215f47d --- /dev/null +++ b/src/designer/src/uitools/quiloader_p.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Designer of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QUILOADER_P_H +#define QUILOADER_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include <QtCore/QByteArray> +#include <QtCore/QMetaType> + +// This file is here for use by the form preview in Linguist. If you change anything +// here or in the code which uses it, remember to adapt Linguist accordingly. + +#define PROP_GENERIC_PREFIX "_q_notr_" +#define PROP_TOOLITEMTEXT "_q_toolItemText_notr" +#define PROP_TOOLITEMTOOLTIP "_q_toolItemToolTip_notr" +#define PROP_TABPAGETEXT "_q_tabPageText_notr" +#define PROP_TABPAGETOOLTIP "_q_tabPageToolTip_notr" +#define PROP_TABPAGEWHATSTHIS "_q_tabPageWhatsThis_notr" + +QT_BEGIN_HEADER + +QT_BEGIN_NAMESPACE + +class QUiTranslatableStringValue +{ +public: + QByteArray value() const { return m_value; } + void setValue(const QByteArray &value) { m_value = value; } + QByteArray comment() const { return m_comment; } + void setComment(const QByteArray &comment) { m_comment = comment; } + +private: + QByteArray m_value; + QByteArray m_comment; +}; + +struct QUiItemRolePair { + int realRole; + int shadowRole; +}; + +#ifdef QFORMINTERNAL_NAMESPACE +namespace QFormInternal +{ +#endif + +extern const QUiItemRolePair qUiItemRoles[]; + +#ifdef QFORMINTERNAL_NAMESPACE +} +#endif + +QT_END_NAMESPACE + +QT_END_HEADER + +Q_DECLARE_METATYPE(QUiTranslatableStringValue) + + +#endif // QUILOADER_P_H diff --git a/src/designer/src/uitools/uitools.pro b/src/designer/src/uitools/uitools.pro new file mode 100644 index 0000000000000000000000000000000000000000..ca25014c0a7e0f6fcca8ef0ea64ccbd1c2a40bac --- /dev/null +++ b/src/designer/src/uitools/uitools.pro @@ -0,0 +1,50 @@ +QPRO_PWD = $$PWD +TEMPLATE = lib +TARGET = $$qtLibraryTarget(QtUiTools) +QT = core + +CONFIG += qt staticlib module +MODULE = uitools +MODULE_PRI = ../modules/qt_uitools.pri + +DESTDIR = $$QMAKE_LIBDIR_QT + +symbian { + TARGET.UID3 = 0x2001E628 + load(armcc_warnings) +} + +win32|mac:!macx-xcode:CONFIG += debug_and_release build_all + +DEFINES += QFORMINTERNAL_NAMESPACE QT_DESIGNER_STATIC QT_FORMBUILDER_NO_SCRIPT +isEmpty(QT_MAJOR_VERSION) { + VERSION=4.3.0 +} else { + VERSION=$${QT_MAJOR_VERSION}.$${QT_MINOR_VERSION}.$${QT_PATCH_VERSION} +} +load(qt_targets) +QMAKE_TARGET_PRODUCT = UiLoader +QMAKE_TARGET_DESCRIPTION = QUiLoader + +include(../lib/uilib/uilib.pri) + +HEADERS += quiloader.h +SOURCES += quiloader.cpp + +include($$QT_BUILD_TREE/include/QtUiTools/headers.pri, "", true) +quitools_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.HEADER_CLASSES +quitools_headers.path = $$[QT_INSTALL_HEADERS]/QtUiTools +quitools_private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES +quitools_private_headers.path = $$[QT_INSTALL_HEADERS]/QtUiTools/$$QT.uitools.VERSION/QtUiTools/private +INSTALLS += quitools_headers quitools_private_headers + +target.path=$$[QT_INSTALL_LIBS] +INSTALLS += target + +unix|win32-g++* { + CONFIG += create_pc + QMAKE_PKGCONFIG_LIBDIR = $$[QT_INSTALL_LIBS] + QMAKE_PKGCONFIG_INCDIR = $$[QT_INSTALL_HEADERS]/$$TARGET + QMAKE_PKGCONFIG_CFLAGS = -I$$[QT_INSTALL_HEADERS] + QMAKE_PKGCONFIG_DESTDIR = pkgconfig +} diff --git a/sync.profile b/sync.profile index e748d5ecc2395803b6078488fa0b7ff5eceff700..8873defdda0e68d5184695c1cb78f4a9b583fec1 100644 --- a/sync.profile +++ b/sync.profile @@ -1,6 +1,7 @@ %modules = ( # path to module name map "QtCLucene" => "$basedir/src/assistant/clucene", "QtHelp" => "$basedir/src/assistant/help", + "QtUiTools" => "$basedir/src/designer/src/uitools", "QtDesigner" => "$basedir/src/designer/src/lib", ); %moduleheaders = ( # restrict the module headers to those found in relative path @@ -8,6 +9,7 @@ %classnames = ( "qtcluceneversion.h" => "QtCLuceneVersion", "qthelpversion.h" => "QtHelpVersion", + "qtuitoolsversion.h" => "QtUiToolsVersion", "qtdesignerversion.h" => "QtDesigner", ); %mastercontent = ( @@ -24,6 +26,7 @@ %modulepris = ( "QtCLucene" => "$basedir/modules/qt_clucene.pri", "QtHelp" => "$basedir/modules/qt_help.pri", + "QtUiTools" => "$basedir/modules/qt_uitools.pri", "QtDesigner" => "$basedir/modules/qt_designer.pri", ); %dependencies = ( diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 49c179f57c9f76ab41f7e44cf2cb256b846d9829..78cfd74e07c3d8f37d2bd797649057edb7ee2406 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -6,5 +6,5 @@ SUBDIRS=\ qhelpindexmodel \ qhelpprojectdata \ -SUBDIRS += linguist +SUBDIRS += linguist uitools !cross_compile:SUBDIRS += host.pro diff --git a/tests/auto/uiloader/.gitignore b/tests/auto/uiloader/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..a4b4e8f0211fc1b363610e67709f3c657942d714 --- /dev/null +++ b/tests/auto/uiloader/.gitignore @@ -0,0 +1 @@ +tst_uiloader diff --git a/tests/auto/uiloader/README.TXT b/tests/auto/uiloader/README.TXT new file mode 100644 index 0000000000000000000000000000000000000000..cbbf0ff774f828abca82518b813f97dfa828b1d7 --- /dev/null +++ b/tests/auto/uiloader/README.TXT @@ -0,0 +1,93 @@ + ------------------------------------------------------------------------- + TESTING WIDGETS DEFINED IN *.UI FILES (SCREENSHOT COMPARISON) + ------------------------------------------------------------------------- + This test is based on dev/qt/tests/auto/atwrapper/ + + +HOW TO RUN THE TESTS + + Compile the necessary programs: + qmake + make + + Now there should be an executable 'uiloader'. + Run the tests: + ./uiloader + + + +CONFIGURATION + + The tests can be executed on different machines. For every machine there + is a config file <hostname>.ini. + + If this file is not available the tests won't be run on the machine. + + Example kayak.ini: + + [General] + ftpBaseDir=/arthurtest + ftpHost=wartburg + ftpPass=anonymouspass + ftpUser=anonymous + output=testresults + + [engines] + 1\engine=uic + size=1 + + Don't modify the [engines] section. Later it will be used for styles. The + only thing you might want to modify is the ftpHost value. At the moment + wartburg is just a server on which we test the tests. + + The actual test server is: kramer.troll.no + + + +HOW IT WORKS + + There are 3 important folders: + + tst_uiloader/ Actual program executing the tests. + tst_screenshot/ Program to generate one *.png file out of *.ui + baseline/ This is a dir with *.ui files. + + ./uiloader (compiled from tst_uiloader) will use the tst_screenshot program + and the files in baseline/. + + In order to generate screenshots the *.ui files in baseline/ will be used. + Therefore a folder testresults/ (specified in the config) will be + created/used. + + Structure of testresults/: + + |-- testresults + | `-- i686 Linux g++-4 full-config That's buildKey(). + | `-- 4.5.0 Used Qt version. + | |-- uic Here are the generated images. + | |-- uic.baseline Baseline downloaded from server. + | |-- uic.diff Diff Images of failed tests. + | `-- uic.failed Generated images of failed tests. + + If there is no baseline at the server the results in uic/ will be uploaded + as a new baseline (first run for your machine). So to create a new baseline + on the server you just need to remove your folders there. + + On the server side there is a dir /arthurtest with following structure + (it will be created if it's not there): + + |-- arthurtest + | `-- <your machines hostname> + | `-- <buildKey()> + | `-- <qt version> + | |-- uic.baseline Baseline. + | |-- uic.diff Here the local diffs will be uploaded. + | `-- uic.failed Here the local failed files will be uploaded. + + After a test run the files in local uic.diff/ and uic.failed/ will be + uploaded to the server. + + For every run the uic.diff/ and uic.failed/ on the local and remote machine + will be cleared in order to place new files there. On the local side uic/ + gets cleared, too. + diff --git a/tests/auto/uiloader/WTC0090dca226c8.ini b/tests/auto/uiloader/WTC0090dca226c8.ini new file mode 100644 index 0000000000000000000000000000000000000000..5cf6c4fee7c6b92d4a0d22b7fb3e9d1075686371 --- /dev/null +++ b/tests/auto/uiloader/WTC0090dca226c8.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer-nokia.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/baseline/Dialog_with_Buttons_Bottom.ui b/tests/auto/uiloader/baseline/Dialog_with_Buttons_Bottom.ui new file mode 100644 index 0000000000000000000000000000000000000000..18d31ab9155378364a43641f68cc048e87fdf7f6 --- /dev/null +++ b/tests/auto/uiloader/baseline/Dialog_with_Buttons_Bottom.ui @@ -0,0 +1,71 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>Dialog</class> + <widget class="QDialog" name="Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="geometry" > + <rect> + <x>30</x> + <y>240</y> + <width>341</width> + <height>32</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>Dialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>Dialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/Dialog_with_Buttons_Right.ui b/tests/auto/uiloader/baseline/Dialog_with_Buttons_Right.ui new file mode 100644 index 0000000000000000000000000000000000000000..703d594f4f8701900a71a88f0c44955ec1bf4441 --- /dev/null +++ b/tests/auto/uiloader/baseline/Dialog_with_Buttons_Right.ui @@ -0,0 +1,71 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>Dialog</class> + <widget class="QDialog" name="Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="geometry" > + <rect> + <x>290</x> + <y>20</y> + <width>81</width> + <height>241</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>Dialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>Dialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/Dialog_without_Buttons.ui b/tests/auto/uiloader/baseline/Dialog_without_Buttons.ui new file mode 100644 index 0000000000000000000000000000000000000000..1be629818c2fcfb6127b2ffddda524d91f7647e7 --- /dev/null +++ b/tests/auto/uiloader/baseline/Dialog_without_Buttons.ui @@ -0,0 +1,18 @@ +<ui version="4.0" > + <class>Dialog</class> + <widget class="QDialog" name="Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/Main_Window.ui b/tests/auto/uiloader/baseline/Main_Window.ui new file mode 100644 index 0000000000000000000000000000000000000000..e324db8292cb77b96e7b8b077e18a5df5a31de55 --- /dev/null +++ b/tests/auto/uiloader/baseline/Main_Window.ui @@ -0,0 +1,27 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow" > + <property name="objectName" > + <string notr="true" >MainWindow</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle" > + <string>MainWindow</string> + </property> + <widget class="QMenuBar" name="menubar" /> + <widget class="QWidget" name="centralwidget" /> + <widget class="QStatusBar" name="statusbar" /> + </widget> + <pixmapfunction></pixmapfunction> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/Widget.ui b/tests/auto/uiloader/baseline/Widget.ui new file mode 100644 index 0000000000000000000000000000000000000000..9f6f60006c23c56253ae1d7e03130545cbd1dcab --- /dev/null +++ b/tests/auto/uiloader/baseline/Widget.ui @@ -0,0 +1,41 @@ +<ui version="4.0" > + <class>Form</class> + <widget class="QWidget" name="Form" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QLabel" name="Alabel" > + <property name="text" > + <string>A label</string> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>A Group Box</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pushButton" > + <property name="text" > + <string>PushButton</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/addlinkdialog.ui b/tests/auto/uiloader/baseline/addlinkdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..3171159f97d65984e4e23c5abf506fd74b41cad0 --- /dev/null +++ b/tests/auto/uiloader/baseline/addlinkdialog.ui @@ -0,0 +1,112 @@ +<ui version="4.0" > + <class>AddLinkDialog</class> + <widget class="QDialog" name="AddLinkDialog" > + <property name="windowTitle" > + <string>Insert Link</string> + </property> + <property name="sizeGripEnabled" > + <bool>false</bool> + </property> + <property name="modal" > + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <layout class="QFormLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Title:</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="titleInput" > + <property name="minimumSize" > + <size> + <width>337</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>URL:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="urlInput" /> + </item> + </layout> + </item> + <item> + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>AddLinkDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>AddLinkDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/addtorrentform.ui b/tests/auto/uiloader/baseline/addtorrentform.ui new file mode 100644 index 0000000000000000000000000000000000000000..950bb67119192a0d4c46267d7c1453b07d8b0926 --- /dev/null +++ b/tests/auto/uiloader/baseline/addtorrentform.ui @@ -0,0 +1,266 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>AddTorrentFile</class> + <widget class="QDialog" name="AddTorrentFile" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>464</width> + <height>385</height> + </rect> + </property> + <property name="windowTitle" > + <string>Add a torrent</string> + </property> + <property name="sizeGripEnabled" > + <bool>false</bool> + </property> + <property name="modal" > + <bool>true</bool> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Select a torrent source</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="6" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Destination:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <widget class="QLineEdit" name="torrentFile" /> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Tracker URL:</string> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QPushButton" name="browseTorrents" > + <property name="text" > + <string>Browse</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="5" column="0" > + <widget class="QLabel" name="label_5" > + <property name="text" > + <string>File(s):</string> + </property> + <property name="alignment" > + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + </widget> + </item> + <item row="4" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Size:</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_6" > + <property name="text" > + <string>Creator:</string> + </property> + </widget> + </item> + <item row="5" column="1" colspan="3" > + <widget class="QTextEdit" name="torrentContents" > + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> + </property> + <property name="tabChangesFocus" > + <bool>true</bool> + </property> + <property name="lineWrapMode" > + <enum>QTextEdit::NoWrap</enum> + </property> + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="6" column="1" colspan="2" > + <widget class="QLineEdit" name="destinationFolder" > + <property name="focusPolicy" > + <enum>Qt::StrongFocus</enum> + </property> + </widget> + </item> + <item row="1" column="1" colspan="3" > + <widget class="QLabel" name="announceUrl" > + <property name="text" > + <string><none></string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Torrent file:</string> + </property> + </widget> + </item> + <item row="6" column="3" > + <widget class="QPushButton" name="browseDestination" > + <property name="text" > + <string>Browse</string> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="label_7" > + <property name="text" > + <string>Comment:</string> + </property> + </widget> + </item> + <item row="3" column="1" colspan="3" > + <widget class="QLabel" name="commentLabel" > + <property name="text" > + <string><none></string> + </property> + </widget> + </item> + <item row="2" column="1" colspan="3" > + <widget class="QLabel" name="creatorLabel" > + <property name="text" > + <string><none></string> + </property> + </widget> + </item> + <item row="4" column="1" colspan="3" > + <widget class="QLabel" name="sizeLabel" > + <property name="text" > + <string>0</string> + </property> + </widget> + </item> + </layout> + <widget class="QWidget" name="widget" > + <property name="geometry" > + <rect> + <x>10</x> + <y>40</y> + <width>364</width> + <height>33</height> + </rect> + </property> + </widget> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>131</width> + <height>31</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="okButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>&OK</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancelButton" > + <property name="text" > + <string>&Cancel</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <tabstops> + <tabstop>torrentFile</tabstop> + <tabstop>browseTorrents</tabstop> + <tabstop>torrentContents</tabstop> + <tabstop>destinationFolder</tabstop> + <tabstop>browseDestination</tabstop> + <tabstop>okButton</tabstop> + <tabstop>cancelButton</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>okButton</sender> + <signal>clicked()</signal> + <receiver>AddTorrentFile</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>278</x> + <y>253</y> + </hint> + <hint type="destinationlabel" > + <x>96</x> + <y>254</y> + </hint> + </hints> + </connection> + <connection> + <sender>cancelButton</sender> + <signal>clicked()</signal> + <receiver>AddTorrentFile</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>369</x> + <y>253</y> + </hint> + <hint type="destinationlabel" > + <x>179</x> + <y>282</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/authenticationdialog.ui b/tests/auto/uiloader/baseline/authenticationdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..82d908cffb645528db4d2628ab77bedc03c6f4cf --- /dev/null +++ b/tests/auto/uiloader/baseline/authenticationdialog.ui @@ -0,0 +1,129 @@ +<ui version="4.0" > + <class>Dialog</class> + <widget class="QDialog" name="Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>389</width> + <height>243</height> + </rect> + </property> + <property name="windowTitle" > + <string>Http authentication required</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" colspan="2" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>You need to supply a Username and a Password to access this site</string> + </property> + <property name="wordWrap" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Username:</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="userEdit" /> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Password:</string> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QLineEdit" name="passwordEdit" /> + </item> + <item row="5" column="0" colspan="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Site:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLabel" name="siteDescription" > + <property name="font" > + <font> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text" > + <string>%1 at %2</string> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="4" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>Dialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>Dialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/backside.ui b/tests/auto/uiloader/baseline/backside.ui new file mode 100644 index 0000000000000000000000000000000000000000..afa488c6f4d79b63c94f257faa1261a616eb7833 --- /dev/null +++ b/tests/auto/uiloader/baseline/backside.ui @@ -0,0 +1,208 @@ +<ui version="4.0" > + <class>BackSide</class> + <widget class="QWidget" name="BackSide" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>378</width> + <height>385</height> + </rect> + </property> + <property name="windowTitle" > + <string>BackSide</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2" > + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Settings</string> + </property> + <property name="flat" > + <bool>true</bool> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Title:</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="hostName" > + <property name="text" > + <string>Pad Navigator Example</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Modified:</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Extent</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QSlider" name="horizontalSlider" > + <property name="value" > + <number>42</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox" > + <property name="value" > + <number>42</number> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="1" > + <widget class="QDateTimeEdit" name="dateTimeEdit" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2" > + <property name="title" > + <string>Other input</string> + </property> + <property name="flat" > + <bool>true</bool> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <widget class="QTreeWidget" name="treeWidget" > + <column> + <property name="text" > + <string>Widgets On Graphics View</string> + </property> + </column> + <item> + <property name="text" > + <string>QGraphicsProxyWidget</string> + </property> + <item> + <property name="text" > + <string>QGraphicsWidget</string> + </property> + <item> + <property name="text" > + <string>QObject</string> + </property> + </item> + <item> + <property name="text" > + <string>QGraphicsItem</string> + </property> + </item> + <item> + <property name="text" > + <string>QGraphicsLayoutItem</string> + </property> + </item> + </item> + </item> + <item> + <property name="text" > + <string>QGraphicsGridLayout</string> + </property> + <item> + <property name="text" > + <string>QGraphicsLayout</string> + </property> + <item> + <property name="text" > + <string>QGraphicsLayoutItem</string> + </property> + </item> + </item> + </item> + <item> + <property name="text" > + <string>QGraphicsLinearLayout</string> + </property> + <item> + <property name="text" > + <string>QGraphicsLayout</string> + </property> + <item> + <property name="text" > + <string>QGraphicsLayoutItem</string> + </property> + </item> + </item> + </item> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <tabstops> + <tabstop>groupBox</tabstop> + <tabstop>hostName</tabstop> + <tabstop>dateTimeEdit</tabstop> + <tabstop>horizontalSlider</tabstop> + <tabstop>spinBox</tabstop> + <tabstop>groupBox_2</tabstop> + <tabstop>treeWidget</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>horizontalSlider</sender> + <signal>valueChanged(int)</signal> + <receiver>spinBox</receiver> + <slot>setValue(int)</slot> + <hints> + <hint type="sourcelabel" > + <x>184</x> + <y>125</y> + </hint> + <hint type="destinationlabel" > + <x>275</x> + <y>127</y> + </hint> + </hints> + </connection> + <connection> + <sender>spinBox</sender> + <signal>valueChanged(int)</signal> + <receiver>horizontalSlider</receiver> + <slot>setValue(int)</slot> + <hints> + <hint type="sourcelabel" > + <x>272</x> + <y>114</y> + </hint> + <hint type="destinationlabel" > + <x>190</x> + <y>126</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/batchtranslation.ui b/tests/auto/uiloader/baseline/batchtranslation.ui new file mode 100644 index 0000000000000000000000000000000000000000..6cb2943606763a68e1fcf0fb2e7cfe451479efb6 --- /dev/null +++ b/tests/auto/uiloader/baseline/batchtranslation.ui @@ -0,0 +1,236 @@ +<ui version="4.0" > + <author></author> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <exportmacro></exportmacro> + <class>databaseTranslationDialog</class> + <widget class="QDialog" name="databaseTranslationDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>425</width> + <height>370</height> + </rect> + </property> + <property name="windowTitle" > + <string>Qt Linguist - Batch Translation</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>4</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Options</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QCheckBox" name="ckOnlyUntranslated" > + <property name="text" > + <string>Only translate entries with no translation</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="ckMarkFinished" > + <property name="text" > + <string>Set translated entries to finished</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Phrase book preference</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QListView" name="phrasebookList" > + <property name="uniformItemSizes" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QPushButton" name="moveUpButton" > + <property name="text" > + <string>Move up</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="moveDownButton" > + <property name="text" > + <string>Move down</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>The batch translator will search through the selected phrasebooks in the order given above.</string> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="runButton" > + <property name="text" > + <string>&Run</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancelButton" > + <property name="text" > + <string>&Cancel</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/bookmarkdialog.ui b/tests/auto/uiloader/baseline/bookmarkdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..2d6470c54c9cd44a536006dd7f542b30cd4b01a3 --- /dev/null +++ b/tests/auto/uiloader/baseline/bookmarkdialog.ui @@ -0,0 +1,161 @@ +<ui version="4.0" > + <class>BookmarkDialog</class> + <widget class="QDialog" name="BookmarkDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>450</width> + <height>135</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Add Bookmark</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3" > + <item> + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <layout class="QVBoxLayout" name="verticalLayout_2" > + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Bookmark:</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Add in Folder:</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QLineEdit" name="bookmarkEdit" /> + </item> + <item> + <widget class="QComboBox" name="bookmarkFolders" /> + </item> + </layout> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3" > + <item> + <widget class="QToolButton" name="toolButton" > + <property name="minimumSize" > + <size> + <width>25</width> + <height>20</height> + </size> + </property> + <property name="text" > + <string>+</string> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="BookmarkWidget" name="bookmarkWidget" > + <property name="enabled" > + <bool>true</bool> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Ignored" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <column> + <property name="text" > + <string>1</string> + </property> + </column> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_4" > + <item> + <widget class="QPushButton" name="newFolderButton" > + <property name="text" > + <string>New Folder</string> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>BookmarkWidget</class> + <extends>QTreeWidget</extends> + <header>bookmarkwidget.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>BookmarkDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>BookmarkDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/bookwindow.ui b/tests/auto/uiloader/baseline/bookwindow.ui new file mode 100644 index 0000000000000000000000000000000000000000..659d3245648f97686a6db7cd29b2c1cadf8f2dd4 --- /dev/null +++ b/tests/auto/uiloader/baseline/bookwindow.ui @@ -0,0 +1,149 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>BookWindow</class> + <widget class="QMainWindow" name="BookWindow" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>601</width> + <height>420</height> + </rect> + </property> + <property name="windowTitle" > + <string>Books</string> + </property> + <widget class="QWidget" name="centralWidget" > + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Books</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTableView" name="bookTable" > + <property name="selectionBehavior" > + <enum>QAbstractItemView::SelectRows</enum> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2" > + <property name="title" > + <string>Details</string> + </property> + <layout class="QFormLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label_5" > + <property name="text" > + <string><b>Title:</b></string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="titleEdit" > + <property name="enabled" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2_2_2_2" > + <property name="text" > + <string><b>Author: </b></string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QComboBox" name="authorEdit" > + <property name="enabled" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string><b>Genre:</b></string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QComboBox" name="genreEdit" > + <property name="enabled" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string><b>Year:</b></string> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QSpinBox" name="yearEdit" > + <property name="enabled" > + <bool>true</bool> + </property> + <property name="prefix" > + <string/> + </property> + <property name="maximum" > + <number>2100</number> + </property> + <property name="minimum" > + <number>-1000</number> + </property> + </widget> + </item> + <item row="4" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string><b>Rating:</b></string> + </property> + </widget> + </item> + <item row="4" column="1" > + <widget class="QSpinBox" name="ratingEdit" > + <property name="maximum" > + <number>5</number> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </widget> + <pixmapfunction></pixmapfunction> + <tabstops> + <tabstop>bookTable</tabstop> + <tabstop>titleEdit</tabstop> + <tabstop>authorEdit</tabstop> + <tabstop>genreEdit</tabstop> + <tabstop>yearEdit</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/browserwidget.ui b/tests/auto/uiloader/baseline/browserwidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..20946f0ede3fca21fe64b0286d575516897a5c62 --- /dev/null +++ b/tests/auto/uiloader/baseline/browserwidget.ui @@ -0,0 +1,199 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>Browser</class> + <widget class="QWidget" name="Browser" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>765</width> + <height>515</height> + </rect> + </property> + <property name="windowTitle" > + <string>Qt SQL Browser</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QSplitter" name="splitter_2" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <widget class="ConnectionWidget" name="connectionWidget" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>13</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + <widget class="QTableView" name="table" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>2</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="contextMenuPolicy" > + <enum>Qt::ActionsContextMenu</enum> + </property> + <property name="selectionBehavior" > + <enum>QAbstractItemView::SelectRows</enum> + </property> + </widget> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>3</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>180</height> + </size> + </property> + <property name="title" > + <string>SQL Query</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTextEdit" name="sqlEdit" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>3</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>18</height> + </size> + </property> + <property name="baseSize" > + <size> + <width>0</width> + <height>120</height> + </size> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="clearButton" > + <property name="text" > + <string>&Clear</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="submitButton" > + <property name="text" > + <string>&Submit</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + <action name="insertRowAction" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>&Insert Row</string> + </property> + <property name="statusTip" > + <string>Inserts a new Row</string> + </property> + </action> + <action name="deleteRowAction" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>&Delete Row</string> + </property> + <property name="statusTip" > + <string>Deletes the current Row</string> + </property> + </action> + </widget> + <pixmapfunction></pixmapfunction> + <customwidgets> + <customwidget> + <class>ConnectionWidget</class> + <extends>QTreeView</extends> + <header>connectionwidget.h</header> + <container>0</container> + <pixmap></pixmap> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>sqlEdit</tabstop> + <tabstop>clearButton</tabstop> + <tabstop>submitButton</tabstop> + <tabstop>connectionWidget</tabstop> + <tabstop>table</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/calculator.ui b/tests/auto/uiloader/baseline/calculator.ui new file mode 100644 index 0000000000000000000000000000000000000000..bb519ba2a6ba7d211b06f35a5273a20d96c49111 --- /dev/null +++ b/tests/auto/uiloader/baseline/calculator.ui @@ -0,0 +1,406 @@ +<ui version="4.0" > + <class>Calculator</class> + <widget class="QWidget" name="Calculator" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>314</width> + <height>301</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>314</width> + <height>301</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>314</width> + <height>301</height> + </size> + </property> + <property name="windowTitle" > + <string>Calculator</string> + </property> + <widget class="QToolButton" name="backspaceButton" > + <property name="geometry" > + <rect> + <x>10</x> + <y>50</y> + <width>91</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>Backspace</string> + </property> + </widget> + <widget class="QToolButton" name="clearButton" > + <property name="geometry" > + <rect> + <x>110</x> + <y>50</y> + <width>91</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>Clear</string> + </property> + </widget> + <widget class="QToolButton" name="clearAllButton" > + <property name="geometry" > + <rect> + <x>210</x> + <y>50</y> + <width>91</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>Clear All</string> + </property> + </widget> + <widget class="QToolButton" name="clearMemoryButton" > + <property name="geometry" > + <rect> + <x>10</x> + <y>100</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>MC</string> + </property> + </widget> + <widget class="QToolButton" name="readMemoryButton" > + <property name="geometry" > + <rect> + <x>10</x> + <y>150</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>MR</string> + </property> + </widget> + <widget class="QToolButton" name="setMemoryButton" > + <property name="geometry" > + <rect> + <x>10</x> + <y>200</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>MS</string> + </property> + </widget> + <widget class="QToolButton" name="addToMemoryButton" > + <property name="geometry" > + <rect> + <x>10</x> + <y>250</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>M+</string> + </property> + </widget> + <widget class="QToolButton" name="sevenButton" > + <property name="geometry" > + <rect> + <x>60</x> + <y>100</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>7</string> + </property> + </widget> + <widget class="QToolButton" name="eightButton" > + <property name="geometry" > + <rect> + <x>110</x> + <y>100</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>8</string> + </property> + </widget> + <widget class="QToolButton" name="nineButton" > + <property name="geometry" > + <rect> + <x>160</x> + <y>100</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>9</string> + </property> + </widget> + <widget class="QToolButton" name="fourButton" > + <property name="geometry" > + <rect> + <x>60</x> + <y>150</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>4</string> + </property> + </widget> + <widget class="QToolButton" name="fiveButton" > + <property name="geometry" > + <rect> + <x>110</x> + <y>150</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>5</string> + </property> + </widget> + <widget class="QToolButton" name="sixButton" > + <property name="geometry" > + <rect> + <x>160</x> + <y>150</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>6</string> + </property> + </widget> + <widget class="QToolButton" name="oneButton" > + <property name="geometry" > + <rect> + <x>60</x> + <y>200</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>1</string> + </property> + </widget> + <widget class="QToolButton" name="twoButton" > + <property name="geometry" > + <rect> + <x>110</x> + <y>200</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>2</string> + </property> + </widget> + <widget class="QToolButton" name="threeButton" > + <property name="geometry" > + <rect> + <x>160</x> + <y>200</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>3</string> + </property> + </widget> + <widget class="QToolButton" name="zeroButton" > + <property name="geometry" > + <rect> + <x>60</x> + <y>250</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>0</string> + </property> + </widget> + <widget class="QToolButton" name="pointButton" > + <property name="geometry" > + <rect> + <x>110</x> + <y>250</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>.</string> + </property> + </widget> + <widget class="QToolButton" name="changeSignButton" > + <property name="geometry" > + <rect> + <x>160</x> + <y>250</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>+-</string> + </property> + </widget> + <widget class="QToolButton" name="plusButton" > + <property name="geometry" > + <rect> + <x>210</x> + <y>250</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>+</string> + </property> + </widget> + <widget class="QToolButton" name="divisionButton" > + <property name="geometry" > + <rect> + <x>210</x> + <y>100</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>/</string> + </property> + </widget> + <widget class="QToolButton" name="timesButton" > + <property name="geometry" > + <rect> + <x>210</x> + <y>150</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>*</string> + </property> + </widget> + <widget class="QToolButton" name="minusButton" > + <property name="geometry" > + <rect> + <x>210</x> + <y>200</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>-</string> + </property> + </widget> + <widget class="QToolButton" name="squareRootButton" > + <property name="geometry" > + <rect> + <x>260</x> + <y>100</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>Sqrt</string> + </property> + </widget> + <widget class="QToolButton" name="powerButton" > + <property name="geometry" > + <rect> + <x>260</x> + <y>150</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>x^2</string> + </property> + </widget> + <widget class="QToolButton" name="reciprocalButton" > + <property name="geometry" > + <rect> + <x>260</x> + <y>200</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>1/x</string> + </property> + </widget> + <widget class="QToolButton" name="equalButton" > + <property name="geometry" > + <rect> + <x>260</x> + <y>250</y> + <width>41</width> + <height>41</height> + </rect> + </property> + <property name="text" > + <string>=</string> + </property> + </widget> + <widget class="QLineEdit" name="display" > + <property name="geometry" > + <rect> + <x>10</x> + <y>10</y> + <width>291</width> + <height>31</height> + </rect> + </property> + <property name="maxLength" > + <number>15</number> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/calculatorform.ui b/tests/auto/uiloader/baseline/calculatorform.ui new file mode 100644 index 0000000000000000000000000000000000000000..dda0e62ddd061e575125532a1fdf6beeddd3b348 --- /dev/null +++ b/tests/auto/uiloader/baseline/calculatorform.ui @@ -0,0 +1,303 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>CalculatorForm</class> + <widget class="QWidget" name="CalculatorForm" > + <property name="objectName" > + <string notr="true" >CalculatorForm</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>276</width> + <height>98</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Calculator Builder</string> + </property> + <layout class="QGridLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="0" > + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="objectName" > + <string notr="true" >label</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>1</y> + <width>45</width> + <height>19</height> + </rect> + </property> + <property name="text" > + <string>Input 1</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="inputSpinBox1" > + <property name="objectName" > + <string notr="true" >inputSpinBox1</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>26</y> + <width>45</width> + <height>25</height> + </rect> + </property> + <property name="mouseTracking" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="label_3" > + <property name="objectName" > + <string notr="true" >label_3</string> + </property> + <property name="geometry" > + <rect> + <x>54</x> + <y>1</y> + <width>7</width> + <height>52</height> + </rect> + </property> + <property name="text" > + <string>+</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label_2" > + <property name="objectName" > + <string notr="true" >label_2</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>1</y> + <width>45</width> + <height>19</height> + </rect> + </property> + <property name="text" > + <string>Input 2</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="inputSpinBox2" > + <property name="objectName" > + <string notr="true" >inputSpinBox2</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>26</y> + <width>45</width> + <height>25</height> + </rect> + </property> + <property name="mouseTracking" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="label_3_2" > + <property name="objectName" > + <string notr="true" >label_3_2</string> + </property> + <property name="geometry" > + <rect> + <x>120</x> + <y>1</y> + <width>7</width> + <height>52</height> + </rect> + </property> + <property name="text" > + <string>=</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label_2_2_2" > + <property name="objectName" > + <string notr="true" >label_2_2_2</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>1</y> + <width>37</width> + <height>17</height> + </rect> + </property> + <property name="text" > + <string>Output</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="outputWidget" > + <property name="objectName" > + <string notr="true" >outputWidget</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>24</y> + <width>37</width> + <height>27</height> + </rect> + </property> + <property name="frameShape" > + <enum>QFrame::Box</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + <property name="text" > + <string>0</string> + </property> + <property name="alignment" > + <set>Qt::AlignAbsolute|Qt::AlignBottom|Qt::AlignCenter|Qt::AlignHCenter|Qt::AlignHorizontal_Mask|Qt::AlignJustify|Qt::AlignLeading|Qt::AlignLeft|Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing|Qt::AlignVCenter|Qt::AlignVertical_Mask</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item row="1" column="0" > + <spacer> + <property name="objectName" > + <string notr="true" >verticalSpacer</string> + </property> + <property name="geometry" > + <rect> + <x>85</x> + <y>69</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="1" > + <spacer> + <property name="objectName" > + <string notr="true" >horizontalSpacer</string> + </property> + <property name="geometry" > + <rect> + <x>188</x> + <y>26</y> + <width>79</width> + <height>20</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/certificateinfo.ui b/tests/auto/uiloader/baseline/certificateinfo.ui new file mode 100644 index 0000000000000000000000000000000000000000..3761fe8f50ef3f0be76dc0fe2d1353f4455d1cc2 --- /dev/null +++ b/tests/auto/uiloader/baseline/certificateinfo.ui @@ -0,0 +1,85 @@ +<ui version="4.0" > + <class>CertificateInfo</class> + <widget class="QDialog" name="CertificateInfo" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>397</height> + </rect> + </property> + <property name="windowTitle" > + <string>Display Certificate Information</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Certification Path</string> + </property> + <layout class="QHBoxLayout" > + <item> + <widget class="QListWidget" name="certificationPathView" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2" > + <property name="title" > + <string>Certificate Information</string> + </property> + <layout class="QHBoxLayout" > + <item> + <widget class="QListWidget" name="certificateInfoView" /> + </item> + </layout> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="standardButtons" > + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>clicked(QAbstractButton*)</signal> + <receiver>CertificateInfo</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>343</x> + <y>374</y> + </hint> + <hint type="destinationlabel" > + <x>352</x> + <y>422</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/chatdialog.ui b/tests/auto/uiloader/baseline/chatdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..c85e0d0f558a38f84d3b5ad1b66a0c1b6b64d1fc --- /dev/null +++ b/tests/auto/uiloader/baseline/chatdialog.ui @@ -0,0 +1,79 @@ +<ui version="4.0" > + <class>ChatDialog</class> + <widget class="QDialog" name="ChatDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>513</width> + <height>349</height> + </rect> + </property> + <property name="windowTitle" > + <string>Chat</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTextEdit" name="textEdit" > + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> + </property> + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QListWidget" name="listWidget" > + <property name="maximumSize" > + <size> + <width>180</width> + <height>16777215</height> + </size> + </property> + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Message:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit" /> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/chatmainwindow.ui b/tests/auto/uiloader/baseline/chatmainwindow.ui new file mode 100644 index 0000000000000000000000000000000000000000..0616dcb1377d0bf3eb02f6197d5512676172c49f --- /dev/null +++ b/tests/auto/uiloader/baseline/chatmainwindow.ui @@ -0,0 +1,185 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>ChatMainWindow</class> + <widget class="QMainWindow" name="ChatMainWindow" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle" > + <string>QtDBus Chat</string> + </property> + <widget class="QWidget" name="centralwidget" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTextBrowser" name="chatHistory" > + <property name="acceptDrops" > + <bool>false</bool> + </property> + <property name="toolTip" > + <string>Messages sent and received from other users</string> + </property> + <property name="acceptRichText" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Message:</string> + </property> + <property name="buddy" > + <cstring>messageLineEdit</cstring> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="messageLineEdit" /> + </item> + <item> + <widget class="QPushButton" name="sendButton" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Sends a message to other people</string> + </property> + <property name="whatsThis" > + <string/> + </property> + <property name="text" > + <string>Send</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>31</height> + </rect> + </property> + <widget class="QMenu" name="menuQuit" > + <property name="title" > + <string>Help</string> + </property> + <addaction name="actionAboutQt" /> + </widget> + <widget class="QMenu" name="menuFile" > + <property name="title" > + <string>File</string> + </property> + <addaction name="actionChangeNickname" /> + <addaction name="separator" /> + <addaction name="actionQuit" /> + </widget> + <addaction name="menuFile" /> + <addaction name="menuQuit" /> + </widget> + <widget class="QStatusBar" name="statusbar" /> + <action name="actionQuit" > + <property name="text" > + <string>Quit</string> + </property> + <property name="shortcut" > + <string>Ctrl+Q</string> + </property> + </action> + <action name="actionAboutQt" > + <property name="text" > + <string>About Qt...</string> + </property> + </action> + <action name="actionChangeNickname" > + <property name="text" > + <string>Change nickname...</string> + </property> + <property name="shortcut" > + <string>Ctrl+N</string> + </property> + </action> + </widget> + <pixmapfunction></pixmapfunction> + <tabstops> + <tabstop>chatHistory</tabstop> + <tabstop>messageLineEdit</tabstop> + <tabstop>sendButton</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>messageLineEdit</sender> + <signal>returnPressed()</signal> + <receiver>sendButton</receiver> + <slot>animateClick()</slot> + <hints> + <hint type="sourcelabel" > + <x>299</x> + <y>554</y> + </hint> + <hint type="destinationlabel" > + <x>744</x> + <y>551</y> + </hint> + </hints> + </connection> + <connection> + <sender>actionQuit</sender> + <signal>triggered(bool)</signal> + <receiver>ChatMainWindow</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel" > + <x>-1</x> + <y>-1</y> + </hint> + <hint type="destinationlabel" > + <x>399</x> + <y>299</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/chatsetnickname.ui b/tests/auto/uiloader/baseline/chatsetnickname.ui new file mode 100644 index 0000000000000000000000000000000000000000..fb9894e09fcfc8d7dcb14b786d5d09a78442a06c --- /dev/null +++ b/tests/auto/uiloader/baseline/chatsetnickname.ui @@ -0,0 +1,149 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>NicknameDialog</class> + <widget class="QDialog" name="NicknameDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>396</width> + <height>105</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Set nickname</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>New nickname:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="nickname" /> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>131</width> + <height>31</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="okButton" > + <property name="text" > + <string>OK</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancelButton" > + <property name="text" > + <string>Cancel</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections> + <connection> + <sender>okButton</sender> + <signal>clicked()</signal> + <receiver>NicknameDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>278</x> + <y>253</y> + </hint> + <hint type="destinationlabel" > + <x>96</x> + <y>254</y> + </hint> + </hints> + </connection> + <connection> + <sender>cancelButton</sender> + <signal>clicked()</signal> + <receiver>NicknameDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>369</x> + <y>253</y> + </hint> + <hint type="destinationlabel" > + <x>179</x> + <y>282</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/config.ui b/tests/auto/uiloader/baseline/config.ui new file mode 100644 index 0000000000000000000000000000000000000000..bebe17b41f8288fd67ecaf45f1689c63d3db6d45 --- /dev/null +++ b/tests/auto/uiloader/baseline/config.ui @@ -0,0 +1,2528 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>Config</class> + <widget class="QDialog" name="Config" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>600</width> + <height>650</height> + </rect> + </property> + <property name="windowTitle" > + <string>Configure</string> + </property> + <property name="sizeGripEnabled" > + <bool>true</bool> + </property> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>8</number> + </property> + <property name="topMargin" > + <number>8</number> + </property> + <property name="rightMargin" > + <number>8</number> + </property> + <property name="bottomMargin" > + <number>8</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QGroupBox" name="ButtonGroup1" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Size</string> + </property> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>11</number> + </property> + <property name="topMargin" > + <number>11</number> + </property> + <property name="rightMargin" > + <number>11</number> + </property> + <property name="bottomMargin" > + <number>11</number> + </property> + <item> + <widget class="QRadioButton" name="size_176_220" > + <property name="text" > + <string>176x220 "SmartPhone"</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="size_240_320" > + <property name="text" > + <string>240x320 "PDA"</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="size_320_240" > + <property name="text" > + <string>320x240 "TV" / "QVGA"</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="size_640_480" > + <property name="text" > + <string>640x480 "VGA"</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="size_800_600" > + <property name="text" > + <string>800x600</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="size_1024_768" > + <property name="text" > + <string>1024x768</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QRadioButton" name="size_custom" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Custom</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="size_width" > + <property name="minimum" > + <number>1</number> + </property> + <property name="maximum" > + <number>1280</number> + </property> + <property name="singleStep" > + <number>16</number> + </property> + <property name="value" > + <number>400</number> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="size_height" > + <property name="minimum" > + <number>1</number> + </property> + <property name="maximum" > + <number>1024</number> + </property> + <property name="singleStep" > + <number>16</number> + </property> + <property name="value" > + <number>300</number> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="ButtonGroup2" > + <property name="title" > + <string>Depth</string> + </property> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>11</number> + </property> + <property name="topMargin" > + <number>11</number> + </property> + <property name="rightMargin" > + <number>11</number> + </property> + <property name="bottomMargin" > + <number>11</number> + </property> + <item> + <widget class="QRadioButton" name="depth_1" > + <property name="text" > + <string>1 bit monochrome</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_4gray" > + <property name="text" > + <string>4 bit grayscale</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_8" > + <property name="text" > + <string>8 bit</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_12" > + <property name="text" > + <string>12 (16) bit</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_15" > + <property name="text" > + <string>15 bit</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_16" > + <property name="text" > + <string>16 bit</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_18" > + <property name="text" > + <string>18 bit</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_24" > + <property name="text" > + <string>24 bit</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_32" > + <property name="text" > + <string>32 bit</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="depth_32_argb" > + <property name="text" > + <string>32 bit ARGB</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QLabel" name="TextLabel1_3" > + <property name="text" > + <string>Skin</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="skin" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text" > + <string>None</string> + </property> + </item> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QCheckBox" name="touchScreen" > + <property name="text" > + <string>Emulate touch screen (no mouse move)</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="lcdScreen" > + <property name="text" > + <string>Emulate LCD screen (Only with fixed zoom of 3.0 times magnification)</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="TextLabel1" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string><p>Note that any applications using the virtual framebuffer will be terminated if you change the Size or Depth <i>above</i>. You may freely modify the Gamma <i>below</i>.</string> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="GroupBox1" > + <property name="title" > + <string>Gamma</string> + </property> + <layout class="QGridLayout" > + <property name="leftMargin" > + <number>11</number> + </property> + <property name="topMargin" > + <number>11</number> + </property> + <property name="rightMargin" > + <number>11</number> + </property> + <property name="bottomMargin" > + <number>11</number> + </property> + <property name="horizontalSpacing" > + <number>6</number> + </property> + <property name="verticalSpacing" > + <number>6</number> + </property> + <item row="6" column="0" > + <widget class="QLabel" name="TextLabel3" > + <property name="text" > + <string>Blue</string> + </property> + </widget> + </item> + <item row="6" column="1" > + <widget class="QSlider" name="bslider" > + <property name="palette" > + <palette> + <active> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>127</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>38</red> + <green>38</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>170</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </active> + <inactive> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>127</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>38</red> + <green>38</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>170</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </inactive> + <disabled> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>127</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>38</red> + <green>38</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>170</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </disabled> + </palette> + </property> + <property name="maximum" > + <number>400</number> + </property> + <property name="value" > + <number>100</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="6" column="2" > + <widget class="QLabel" name="blabel" > + <property name="text" > + <string>1.0</string> + </property> + </widget> + </item> + <item row="4" column="0" > + <widget class="QLabel" name="TextLabel2" > + <property name="text" > + <string>Green</string> + </property> + </widget> + </item> + <item row="4" column="1" > + <widget class="QSlider" name="gslider" > + <property name="palette" > + <palette> + <active> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>255</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>38</red> + <green>255</green> + <blue>38</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>127</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </active> + <inactive> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>255</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>38</red> + <green>255</green> + <blue>38</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>127</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </inactive> + <disabled> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>255</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>255</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>38</red> + <green>255</green> + <blue>38</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>127</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>170</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </disabled> + </palette> + </property> + <property name="maximum" > + <number>400</number> + </property> + <property name="value" > + <number>100</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="4" column="2" > + <widget class="QLabel" name="glabel" > + <property name="text" > + <string>1.0</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="TextLabel7" > + <property name="text" > + <string>All</string> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QLabel" name="TextLabel8" > + <property name="text" > + <string>1.0</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QSlider" name="gammaslider" > + <property name="palette" > + <palette> + <active> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>127</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>170</red> + <green>170</green> + <blue>170</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </active> + <inactive> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>127</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>170</red> + <green>170</green> + <blue>170</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </inactive> + <disabled> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>127</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>170</red> + <green>170</green> + <blue>170</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </disabled> + </palette> + </property> + <property name="maximum" > + <number>400</number> + </property> + <property name="value" > + <number>100</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="TextLabel1_2" > + <property name="text" > + <string>Red</string> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QLabel" name="rlabel" > + <property name="text" > + <string>1.0</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QSlider" name="rslider" > + <property name="palette" > + <palette> + <active> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>127</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>38</green> + <blue>38</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>170</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </active> + <inactive> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>127</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>38</green> + <blue>38</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>170</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </inactive> + <disabled> + <colorrole role="WindowText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Button" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Light" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>127</green> + <blue>127</blue> + </color> + </brush> + </colorrole> + <colorrole role="Midlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>38</green> + <blue>38</blue> + </color> + </brush> + </colorrole> + <colorrole role="Dark" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>127</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Mid" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>170</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Text" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="BrightText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="ButtonText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>128</red> + <green>128</green> + <blue>128</blue> + </color> + </brush> + </colorrole> + <colorrole role="Base" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Window" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>220</red> + <green>220</green> + <blue>220</blue> + </color> + </brush> + </colorrole> + <colorrole role="Shadow" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="Highlight" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>10</red> + <green>95</green> + <blue>137</blue> + </color> + </brush> + </colorrole> + <colorrole role="HighlightedText" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>255</red> + <green>255</green> + <blue>255</blue> + </color> + </brush> + </colorrole> + <colorrole role="Link" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="LinkVisited" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>0</red> + <green>0</green> + <blue>0</blue> + </color> + </brush> + </colorrole> + <colorrole role="AlternateBase" > + <brush brushstyle="SolidPattern" > + <color alpha="255" > + <red>232</red> + <green>232</green> + <blue>232</blue> + </color> + </brush> + </colorrole> + </disabled> + </palette> + </property> + <property name="maximum" > + <number>400</number> + </property> + <property name="value" > + <number>100</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="8" column="0" colspan="3" > + <widget class="QPushButton" name="PushButton3" > + <property name="text" > + <string>Set all to 1.0</string> + </property> + </widget> + </item> + <item rowspan="9" row="0" column="3" > + <widget class="GammaView" native="1" name="MyCustomWidget1" /> + </item> + </layout> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="buttonOk" > + <property name="text" > + <string>&OK</string> + </property> + <property name="autoDefault" > + <bool>true</bool> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="buttonCancel" > + <property name="text" > + <string>&Cancel</string> + </property> + <property name="autoDefault" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11" /> + <customwidgets> + <customwidget> + <class>GammaView</class> + <extends></extends> + <header>gammaview.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>size_width</sender> + <signal>valueChanged(int)</signal> + <receiver>size_custom</receiver> + <slot>click()</slot> + <hints> + <hint type="sourcelabel" > + <x>152</x> + <y>193</y> + </hint> + <hint type="destinationlabel" > + <x>94</x> + <y>199</y> + </hint> + </hints> + </connection> + <connection> + <sender>size_height</sender> + <signal>valueChanged(int)</signal> + <receiver>size_custom</receiver> + <slot>click()</slot> + <hints> + <hint type="sourcelabel" > + <x>259</x> + <y>196</y> + </hint> + <hint type="destinationlabel" > + <x>64</x> + <y>188</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/connectdialog.ui b/tests/auto/uiloader/baseline/connectdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..bd062ebaaf724b9f5bbd5946498d40c1324c983d --- /dev/null +++ b/tests/auto/uiloader/baseline/connectdialog.ui @@ -0,0 +1,150 @@ +<ui version="4.0" > + <class>ConnectDialog</class> + <widget class="QDialog" name="ConnectDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>585</width> + <height>361</height> + </rect> + </property> + <property name="windowTitle" > + <string>Configure Connection</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" colspan="2" > + <widget class="QGroupBox" name="signalGroupBox" > + <property name="title" > + <string>GroupBox</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QListWidget" name="signalList" > + <property name="textElideMode" > + <enum>Qt::ElideMiddle</enum> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QToolButton" name="editSignalsButton" > + <property name="text" > + <string>Edit...</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item row="0" column="2" > + <widget class="QGroupBox" name="slotGroupBox" > + <property name="title" > + <string>GroupBox</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QListWidget" name="slotList" > + <property name="textElideMode" > + <enum>Qt::ElideMiddle</enum> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QToolButton" name="editSlotsButton" > + <property name="text" > + <string>Edit...</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" > + <widget class="QCheckBox" name="showAllCheckBox" > + <property name="text" > + <string>Show signals and slots inherited from QWidget</string> + </property> + </widget> + </item> + <item row="2" column="1" colspan="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>ConnectDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>ConnectDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/controller.ui b/tests/auto/uiloader/baseline/controller.ui new file mode 100644 index 0000000000000000000000000000000000000000..379015bf303433a3c5b23819bcdb189b6a34ea00 --- /dev/null +++ b/tests/auto/uiloader/baseline/controller.ui @@ -0,0 +1,64 @@ +<ui version="4.0" > + <class>Controller</class> + <widget class="QWidget" name="Controller" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>255</width> + <height>111</height> + </rect> + </property> + <property name="windowTitle" > + <string>Controller</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="1" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Controller</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QPushButton" name="decelerate" > + <property name="text" > + <string>Decelerate</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QPushButton" name="accelerate" > + <property name="text" > + <string>Accelerate</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QPushButton" name="right" > + <property name="text" > + <string>Right</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QPushButton" name="left" > + <property name="text" > + <string>Left</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/cookies.ui b/tests/auto/uiloader/baseline/cookies.ui new file mode 100644 index 0000000000000000000000000000000000000000..c4bccc548305694f9f3320c01cb4652bd775ac67 --- /dev/null +++ b/tests/auto/uiloader/baseline/cookies.ui @@ -0,0 +1,106 @@ +<ui version="4.0" > + <class>CookiesDialog</class> + <widget class="QDialog" name="CookiesDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>550</width> + <height>370</height> + </rect> + </property> + <property name="windowTitle" > + <string>Cookies</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>252</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="1" > + <widget class="SearchLineEdit" name="search" /> + </item> + <item row="1" column="0" colspan="2" > + <widget class="EditTableView" name="cookiesTable" /> + </item> + <item row="2" column="0" colspan="2" > + <layout class="QHBoxLayout" > + <item> + <widget class="QPushButton" name="removeButton" > + <property name="text" > + <string>&Remove</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="removeAllButton" > + <property name="text" > + <string>Remove &All Cookies</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="standardButtons" > + <set>QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>SearchLineEdit</class> + <extends>QLineEdit</extends> + <header>searchlineedit.h</header> + </customwidget> + <customwidget> + <class>EditTableView</class> + <extends>QTableView</extends> + <header>edittableview.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>CookiesDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>472</x> + <y>329</y> + </hint> + <hint type="destinationlabel" > + <x>461</x> + <y>356</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/cookiesexceptions.ui b/tests/auto/uiloader/baseline/cookiesexceptions.ui new file mode 100644 index 0000000000000000000000000000000000000000..3d9ef6241422673107c8bada42d86dd9b8746a35 --- /dev/null +++ b/tests/auto/uiloader/baseline/cookiesexceptions.ui @@ -0,0 +1,184 @@ +<ui version="4.0" > + <class>CookiesExceptionsDialog</class> + <widget class="QDialog" name="CookiesExceptionsDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>466</width> + <height>446</height> + </rect> + </property> + <property name="windowTitle" > + <string>Cookie Exceptions</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QGroupBox" name="newExceptionGroupBox" > + <property name="title" > + <string>New Exception</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" > + <layout class="QHBoxLayout" > + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Domain:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="domainLineEdit" /> + </item> + </layout> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" > + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>81</width> + <height>25</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="blockButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Block</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="allowForSessionButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Allow For Session</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="allowButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Allow</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="ExceptionsGroupBox" > + <property name="title" > + <string>Exceptions</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" colspan="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>252</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="3" > + <widget class="SearchLineEdit" name="search" /> + </item> + <item row="1" column="0" colspan="4" > + <widget class="EditTableView" name="exceptionTable" /> + </item> + <item row="2" column="0" > + <widget class="QPushButton" name="removeButton" > + <property name="text" > + <string>&Remove</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QPushButton" name="removeAllButton" > + <property name="text" > + <string>Remove &All</string> + </property> + </widget> + </item> + <item row="2" column="2" colspan="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>SearchLineEdit</class> + <extends>QLineEdit</extends> + <header>searchlineedit.h</header> + </customwidget> + <customwidget> + <class>EditTableView</class> + <extends>QTableView</extends> + <header>edittableview.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>CookiesExceptionsDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>381</x> + <y>428</y> + </hint> + <hint type="destinationlabel" > + <x>336</x> + <y>443</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/css_borderimage.ui b/tests/auto/uiloader/baseline/css_borderimage.ui new file mode 100644 index 0000000000000000000000000000000000000000..4a59ca2e08083cab38c192327ee4310ab31da95d --- /dev/null +++ b/tests/auto/uiloader/baseline/css_borderimage.ui @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>530</width> + <height>309</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">QLabel { border-width: 28; color: #0f0; background-color: white; } + +#label_repeat_repeat { + border-image: url("images/borderimage.png") 28 repeat repeat; +} + +#label_stretch_repeat { + border-image: url("images/borderimage.png") 28 stretch repeat; +} + +#label_round_repeat { + border-image: url("images/borderimage.png") 28 round repeat; +} + + +#label_repeat_round { + border-image: url("images/borderimage.png") 28 repeat round; +} + +#label_stretch_round { + border-image: url("images/borderimage.png") 28 stretch round; +} + +#label_round_round { + border-image: url("images/borderimage.png") 28 round round; +} + +#label_repeat_stretch { + border-image: url("images/borderimage.png") 28 repeat stretch; +} + +#label_stretch_stretch { + border-image: url("images/borderimage.png") 28 stretch stretch; +} + +#label_round_stretch { + border-image: url("images/borderimage.png") 28 round stretch; +} +</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label_stretch_stretch"> + <property name="text"> + <string>Strecth Stretch</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLabel" name="label_stretch_round"> + <property name="text"> + <string>Stretch Round</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QLabel" name="label_stretch_repeat"> + <property name="text"> + <string>Stretch repeat</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_round_stretch"> + <property name="text"> + <string>Round Stretch</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="label_round_round"> + <property name="text"> + <string>Round Round</string> + </property> + </widget> + </item> + <item row="1" column="2"> + <widget class="QLabel" name="label_round_repeat"> + <property name="text"> + <string>Round Repeat</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_repeat_stretch"> + <property name="text"> + <string>Repeat Stretch</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLabel" name="label_repeat_round"> + <property name="text"> + <string>Repeat Round</string> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QLabel" name="label_repeat_repeat"> + <property name="text"> + <string>Repeat Repeat</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_borderimage_allwidgets.ui b/tests/auto/uiloader/baseline/css_borderimage_allwidgets.ui new file mode 100644 index 0000000000000000000000000000000000000000..0ece79a08acf6f30d540e629a496e2d14de606b8 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_borderimage_allwidgets.ui @@ -0,0 +1,247 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>606</width> + <height>388</height> + </rect> + </property> + <property name="windowTitle"> + <string>MainWindow</string> + </property> + <property name="styleSheet"> + <string notr="true">* { border-image: url("images/pushbutton.png") 6 6 6 6; border-width:6px; }</string> + </property> + <widget class="QWidget" name="centralwidget"> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QFrame" name="frame_2"> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Each widget should have a background image. including the top level</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pushButton_3"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_2"> + <property name="value"> + <number>24</number> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QWidget" name="widget_2" native="true"> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QPushButton" name="pushButton_4"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox_2"/> + </item> + <item> + <widget class="QRadioButton" name="radioButton_4"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QScrollArea" name="scrollArea_2"> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents_2"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>260</width> + <height>197</height> + </rect> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="2" column="0" colspan="2"> + <widget class="QSlider" name="horizontalSlider_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLCDNumber" name="lcdNumber_2"/> + </item> + <item row="0" column="1"> + <widget class="QRadioButton" name="radioButton_5"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QRadioButton" name="radioButton_6"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QCheckBox" name="checkBox_4"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QCheckBox" name="checkBox_5"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>GroupBox</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <widget class="QCheckBox" name="checkBox_6"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit_2"> + <property name="text"> + <string>Line Edit</string> + </property> + </widget> + </item> + <item> + <widget class="QListWidget" name="listWidget_2"> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>606</width> + <height>36</height> + </rect> + </property> + <widget class="QMenu" name="menuFile"> + <property name="title"> + <string>File</string> + </property> + <addaction name="actionOpen"/> + <addaction name="actionClose"/> + </widget> + <widget class="QMenu" name="menuEdit"> + <property name="title"> + <string>Edit</string> + </property> + </widget> + <addaction name="menuFile"/> + <addaction name="menuEdit"/> + </widget> + <widget class="QStatusBar" name="statusbar"/> + <action name="actionOpen"> + <property name="text"> + <string>Open</string> + </property> + </action> + <action name="actionClose"> + <property name="text"> + <string>Close</string> + </property> + </action> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_borderradius_allwidgets.ui b/tests/auto/uiloader/baseline/css_borderradius_allwidgets.ui new file mode 100644 index 0000000000000000000000000000000000000000..8c5f57cb13f852c5813029fb8fb20e312fa8256d --- /dev/null +++ b/tests/auto/uiloader/baseline/css_borderradius_allwidgets.ui @@ -0,0 +1,458 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>698</width> + <height>589</height> + </rect> + </property> + <property name="windowTitle"> + <string>MainWindow</string> + </property> + <property name="styleSheet"> + <string notr="true">* { + background: yellow; + padding: 2px; + border-radius: 4px; +} + +QGroupBox { + border: 1px solid gray; +} + +QAbstractButton { + background: cyan; +} + +QFrame, QMenuBar { + background: magenta; +} + +QLineEdit, QSpinBox { + background: white; +} + +#gb1 * { +} + +#gb2 * { + border: 1px solid blue; +} + +#gb3 * { + border: 0px solid blue; +} + +#gb4 * { + border-image: url("images/pushbutton.png") 6 6 6 6; + border-width:6px; +} +</string> + </property> + <widget class="QWidget" name="centralwidget"> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <widget class="QGroupBox" name="gb1"> + <property name="title"> + <string>No border</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QFrame" name="frame"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QPushButton" name="pushButton_4"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox_2"/> + </item> + <item> + <widget class="QRadioButton" name="radioButton_6"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkBox_4"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit"> + <property name="text"> + <string>LineEdit</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="comboBox"> + <item> + <property name="text"> + <string>ComboBox</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QListWidget" name="listWidget_2"> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0"> + <widget class="QGroupBox" name="gb3"> + <property name="title"> + <string>0px border</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QFrame" name="frame_2"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QPushButton" name="pushButton_5"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox_3"/> + </item> + <item> + <widget class="QRadioButton" name="radioButton_7"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkBox_5"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit_2"> + <property name="text"> + <string>LineEdit</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="comboBox_2"> + <item> + <property name="text"> + <string>ComboBox</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QListWidget" name="listWidget_3"> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="1"> + <widget class="QGroupBox" name="gb4"> + <property name="title"> + <string>border-image</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QFrame" name="frame_4"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QPushButton" name="pushButton_7"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox_5"/> + </item> + <item> + <widget class="QRadioButton" name="radioButton_9"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkBox_7"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit_4"> + <property name="text"> + <string>LineEdit</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="comboBox_4"> + <item> + <property name="text"> + <string>ComboBox</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QListWidget" name="listWidget_5"> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="1"> + <widget class="QGroupBox" name="gb2"> + <property name="title"> + <string>1px border</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QFrame" name="frame_3"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QPushButton" name="pushButton_6"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="spinBox_4"/> + </item> + <item> + <widget class="QRadioButton" name="radioButton_8"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkBox_6"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="lineEdit_3"> + <property name="text"> + <string>LineEdit</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="comboBox_3"> + <item> + <property name="text"> + <string>ComboBox</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QListWidget" name="listWidget_4"> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>698</width> + <height>24</height> + </rect> + </property> + <widget class="QMenu" name="menuFile"> + <property name="title"> + <string>File</string> + </property> + <addaction name="actionOpen"/> + <addaction name="actionClose"/> + </widget> + <widget class="QMenu" name="menuEdit"> + <property name="title"> + <string>Edit</string> + </property> + </widget> + <addaction name="menuFile"/> + <addaction name="menuEdit"/> + </widget> + <widget class="QStatusBar" name="statusbar"/> + <action name="actionOpen"> + <property name="text"> + <string>Open</string> + </property> + </action> + <action name="actionClose"> + <property name="text"> + <string>Close</string> + </property> + </action> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_buttons_background.ui b/tests/auto/uiloader/baseline/css_buttons_background.ui new file mode 100644 index 0000000000000000000000000000000000000000..3d80aeb4b4756bb1b64fce9c4dd930c64122e538 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_buttons_background.ui @@ -0,0 +1,271 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Dialog</class> + <widget class="QDialog" name="Dialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>449</width> + <height>254</height> + </rect> + </property> + <property name="windowTitle"> + <string>Dialog</string> + </property> + <property name="styleSheet"> + <string notr="true">#box_color QAbstractButton { +background: pink; +color: purple; +} + +#box_gradiant QAbstractButton { + background-color: qconicalgradient(cx:0.5, cy:0.5, angle:0, stop:0 rgba(255, 255, 255, 255), stop:0.373979 rgba(255, 255, 255, 255), stop:0.373991 rgba(33, 30, 255, 255), stop:0.624018 rgba(33, 30, 255, 255), stop:0.624043 rgba(255, 0, 0, 255), stop:1 rgba(255, 0, 0, 255)); +color: cyan; +} + +#box_pixmap QAbstractButton { +background: url("images/pagefold.png") no-repeat top right; +color: yellow; +} + +</string> + </property> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <widget class="QGroupBox" name="box_color"> + <property name="title"> + <string>color</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0" colspan="2"> + <widget class="QPushButton" name="pushButton"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QToolButton" name="toolButton"> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>70</width> + <height>27</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QCheckBox" name="checkBox"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QRadioButton" name="radioButton_2"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QToolButton" name="toolButton_4"> + <property name="text"> + <string>autoraise</string> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QPushButton" name="pushButton_4"> + <property name="text"> + <string>Checked</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="1"> + <widget class="QGroupBox" name="box_gradiant"> + <property name="title"> + <string>gradiant</string> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0" colspan="2"> + <widget class="QPushButton" name="pushButton_2"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QToolButton" name="toolButton_2"> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>78</width> + <height>24</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QCheckBox" name="checkBox_2"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QRadioButton" name="radioButton"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QToolButton" name="toolButton_5"> + <property name="text"> + <string>autoraise</string> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QPushButton" name="pushButton_5"> + <property name="text"> + <string>Checked</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="2"> + <widget class="QGroupBox" name="box_pixmap"> + <property name="title"> + <string>pixmap</string> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="0" column="0" colspan="2"> + <widget class="QPushButton" name="pushButton_3"> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QToolButton" name="toolButton_3"> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>78</width> + <height>24</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QCheckBox" name="checkBox_3"> + <property name="text"> + <string>CheckBox</string> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QRadioButton" name="radioButton_3"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QToolButton" name="toolButton_6"> + <property name="text"> + <string>autoraise</string> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QPushButton" name="pushButton_6"> + <property name="text"> + <string>Checked</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>51</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_combobox_background.ui b/tests/auto/uiloader/baseline/css_combobox_background.ui new file mode 100644 index 0000000000000000000000000000000000000000..387b371976cf96236c7f6f0f0305ee14b49633a5 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_combobox_background.ui @@ -0,0 +1,306 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Dialog</class> + <widget class="QDialog" name="Dialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>295</width> + <height>229</height> + </rect> + </property> + <property name="windowTitle"> + <string>Dialog</string> + </property> + <property name="styleSheet"> + <string notr="true">#box_color QComboBox { +background: pink; +color: purple; +} + +#box_gradiant QComboBox { + background-color: qconicalgradient(cx:0.5, cy:0.5, angle:0, stop:0 rgba(255, 255, 255, 255), stop:0.373979 rgba(255, 255, 255, 255), stop:0.373991 rgba(33, 30, 255, 255), stop:0.624018 rgba(33, 30, 255, 255), stop:0.624043 rgba(255, 0, 0, 255), stop:1 rgba(255, 0, 0, 255)); +color: cyan; +} + +#box_pixmap QAbstractButton { +background: url("images/pagefold.png") no-repeat top right; +color: yellow; +} + +#comboBox_A , #comboBox_B{ border: 3px solid #4e5; } + +</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QGroupBox" name="box_color"> + <property name="title"> + <string>color</string> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="3" column="0"> + <widget class="QComboBox" name="comboBox_2"> + <property name="enabled"> + <bool>false</bool> + </property> + <item> + <property name="text"> + <string>Foo</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="0" column="0"> + <widget class="QComboBox" name="comboBox_3"> + <item> + <property name="text"> + <string>Foo</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0"> + <widget class="QComboBox" name="comboBox_4"> + <property name="editable"> + <bool>true</bool> + </property> + <item> + <property name="text"> + <string>Foo</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="4" column="0"> + <widget class="QComboBox" name="comboBox_5"> + <item> + <property name="text"> + <string>Foo</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="5" column="0"> + <widget class="QComboBox" name="comboBox_A"> + <item> + <property name="text"> + <string>ComboText</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="6" column="0"> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="box_gradiant"> + <property name="title"> + <string>color</string> + </property> + <property name="checkable"> + <bool>false</bool> + </property> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="3" column="0"> + <widget class="QComboBox" name="comboBox_6"> + <property name="enabled"> + <bool>false</bool> + </property> + <item> + <property name="text"> + <string>Foo</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="0" column="0"> + <widget class="QComboBox" name="comboBox_7"> + <item> + <property name="text"> + <string>Foo</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0"> + <widget class="QComboBox" name="comboBox_8"> + <property name="editable"> + <bool>true</bool> + </property> + <item> + <property name="text"> + <string>Foo</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="4" column="0"> + <widget class="QComboBox" name="comboBox_9"> + <item> + <property name="text"> + <string>Foo</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="5" column="0"> + <widget class="QComboBox" name="comboBox_B"> + <item> + <property name="text"> + <string>ComboText</string> + </property> + </item> + <item> + <property name="text"> + <string>Bar</string> + </property> + </item> + <item> + <property name="text"> + <string>Bouz</string> + </property> + </item> + </widget> + </item> + <item row="6" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_exemple_coffee.ui b/tests/auto/uiloader/baseline/css_exemple_coffee.ui new file mode 100644 index 0000000000000000000000000000000000000000..619f912a9939731ca894c06284d07909a91ba207 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_exemple_coffee.ui @@ -0,0 +1,469 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>413</height> + </rect> + </property> + <property name="windowTitle"> + <string>Style Sheet</string> + </property> + <property name="styleSheet"> + <string notr="true">.QWidget { + background-color: beige; +} + +/* Nice Windows-XP-style password character. */ +QLineEdit[echoMode="2"] { + lineedit-password-character: 9679; +} + +/* We provide a min-width and min-height for push buttons + so that they look elegant regardless of the width of the text. */ +QPushButton { + background-color: palegoldenrod; + border-width: 2px; + border-color: darkkhaki; + border-style: solid; + border-radius: 5; + padding: 3px; + min-width: 9ex; + min-height: 2.5ex; +} + +QPushButton:hover { + background-color: khaki; +} + +/* Increase the padding, so the text is shifted when the button is + pressed. */ +QPushButton:pressed { + padding-left: 5px; + padding-top: 5px; + background-color: #d0d67c; +} + +QLabel, QAbstractButton { + font: bold; +} + +/* Mark mandatory fields with a brownish color. */ +.mandatory { + color: brown; +} + +/* Bold text on status bar looks awful. */ +QStatusBar QLabel { + font: normal; +} + +QStatusBar::item { + border-width: 1; + border-color: darkkhaki; + border-style: solid; + border-radius: 2; +} + +QComboBox, QLineEdit, QSpinBox, QTextEdit, QListView { + background-color: cornsilk; + selection-color: #0a214c; + selection-background-color: #C19A6B; +} + +QListView { + show-decoration-selected: 1; +} + +QListView::item:hover { + background-color: wheat; +} + +/* We reserve 1 pixel space in padding. When we get the focus, + we kill the padding and enlarge the border. This makes the items + glow. */ +QLineEdit, QFrame { + border-width: 2px; + padding: 1px; + border-style: solid; + border-color: darkkhaki; + border-radius: 5px; +} + +/* As mentioned above, eliminate the padding and increase the border. */ +QLineEdit:focus, QFrame:focus { + border-width: 3px; + padding: 0px; +} + +/* A QLabel is a QFrame ... */ +QLabel { + border: none; + padding: 0; + background: none; +} + +/* A QToolTip is a QLabel ... */ +QToolTip { + border: 2px solid darkkhaki; + padding: 5px; + border-radius: 3px; + opacity: 200; +} + +/* Nice to have the background color change when hovered. */ +QRadioButton:hover, QCheckBox:hover { + background-color: wheat; +} + +/* Force the dialog's buttons to follow the Windows guidelines. */ +QDialogButtonBox { + button-layout: 0; +} + + +</string> + </property> + <widget class="QWidget" name="centralwidget"> + <layout class="QVBoxLayout"> + <property name="spacing"> + <number>6</number> + </property> + <property name="margin"> + <number>9</number> + </property> + <item> + <widget class="QFrame" name="mainFrame"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <layout class="QGridLayout"> + <property name="margin"> + <number>9</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <item row="6" column="0" colspan="5"> + <widget class="QCheckBox" name="agreeCheckBox"> + <property name="toolTip"> + <string>Please read the LICENSE file before checking</string> + </property> + <property name="text"> + <string>I &accept the terms and &conditions</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Profession:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set> + </property> + <property name="buddy"> + <cstring>professionList</cstring> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="nameLabel"> + <property name="text"> + <string>&Name:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>nameCombo</cstring> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QRadioButton" name="maleRadioButton"> + <property name="toolTip"> + <string>Check this if you are male</string> + </property> + <property name="text"> + <string>&Male</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="passwordLabel"> + <property name="text"> + <string>&Password:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>passwordEdit</cstring> + </property> + </widget> + </item> + <item row="4" column="1" colspan="4"> + <widget class="QComboBox" name="countryCombo"> + <property name="toolTip"> + <string>Specify country of origin</string> + </property> + <property name="statusTip"> + <string>Specify country of origin</string> + </property> + <property name="currentIndex"> + <number>6</number> + </property> + <item> + <property name="text"> + <string>Egypt</string> + </property> + </item> + <item> + <property name="text"> + <string>France</string> + </property> + </item> + <item> + <property name="text"> + <string>Germany</string> + </property> + </item> + <item> + <property name="text"> + <string>India</string> + </property> + </item> + <item> + <property name="text"> + <string>Italy</string> + </property> + </item> + <item> + <property name="text"> + <string>Norway</string> + </property> + </item> + <item> + <property name="text"> + <string>Pakistan</string> + </property> + </item> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="ageLabel"> + <property name="text"> + <string>&Age:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>ageSpinBox</cstring> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="countryLabel"> + <property name="text"> + <string>Country:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>countryCombo</cstring> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="genderLabel"> + <property name="text"> + <string>Gender:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="3" column="1" colspan="4"> + <widget class="QLineEdit" name="passwordEdit"> + <property name="toolTip"> + <string>Specify your password</string> + </property> + <property name="statusTip"> + <string>Specify your password</string> + </property> + <property name="text"> + <string>Password</string> + </property> + <property name="echoMode"> + <enum>QLineEdit::Password</enum> + </property> + </widget> + </item> + <item row="1" column="2" colspan="2"> + <widget class="QRadioButton" name="femaleRadioButton"> + <property name="styleSheet"> + <string>Check this if you are female</string> + </property> + <property name="text"> + <string>&Female</string> + </property> + </widget> + </item> + <item row="2" column="1" colspan="2"> + <widget class="QSpinBox" name="ageSpinBox"> + <property name="toolTip"> + <string>Specify your age</string> + </property> + <property name="statusTip"> + <string>Specify your age</string> + </property> + <property name="minimum"> + <number>12</number> + </property> + <property name="value"> + <number>22</number> + </property> + </widget> + </item> + <item row="0" column="1" colspan="4"> + <widget class="QComboBox" name="nameCombo"> + <property name="toolTip"> + <string>Specify your name</string> + </property> + <property name="editable"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="4"> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="3" colspan="2"> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>61</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="7" column="3" colspan="2"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="5" column="1" colspan="4"> + <widget class="QListWidget" name="professionList"> + <property name="toolTip"> + <string>Select your profession</string> + </property> + <property name="statusTip"> + <string>Specify your name here</string> + </property> + <property name="whatsThis"> + <string>Specify your name here</string> + </property> + <property name="currentRow"> + <number>0</number> + </property> + <item> + <property name="text"> + <string>Developer</string> + </property> + </item> + <item> + <property name="text"> + <string>Student</string> + </property> + </item> + <item> + <property name="text"> + <string>Fisherman</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>31</height> + </rect> + </property> + <widget class="QMenu" name="menu_File"> + <property name="title"> + <string>&File</string> + </property> + <addaction name="editStyleAction"/> + <addaction name="separator"/> + <addaction name="exitAction"/> + </widget> + <widget class="QMenu" name="menu_Help"> + <property name="title"> + <string>&Help</string> + </property> + <addaction name="aboutAction"/> + <addaction name="aboutQtAction"/> + </widget> + <addaction name="menu_File"/> + <addaction name="menu_Help"/> + </widget> + <widget class="QStatusBar" name="statusbar"/> + <action name="exitAction"> + <property name="text"> + <string>&Exit</string> + </property> + </action> + <action name="aboutQtAction"> + <property name="text"> + <string>About Qt</string> + </property> + </action> + <action name="editStyleAction"> + <property name="text"> + <string>Edit &Style...</string> + </property> + </action> + <action name="aboutAction"> + <property name="text"> + <string>About</string> + </property> + </action> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_exemple_pagefold.ui b/tests/auto/uiloader/baseline/css_exemple_pagefold.ui new file mode 100644 index 0000000000000000000000000000000000000000..d23fad34c41313f6787d17c103dd52e7331e067e --- /dev/null +++ b/tests/auto/uiloader/baseline/css_exemple_pagefold.ui @@ -0,0 +1,656 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>426</width> + <height>413</height> + </rect> + </property> + <property name="windowTitle"> + <string>Style Sheet</string> + </property> + <property name="styleSheet"> + <string notr="true">/* Customize any plain widget that is a child of a QMainWindow. */ +QMainWindow > .QWidget { + background-color: gainsboro; + background-image: url(images/pagefold.png); + background-position: top right; + background-repeat: no-repeat +} + +/* Provide a padding for the layout inside the frame. The frame + exists only to provide a padding for the top-right image, so we + explicitly disable the border. */ +#mainFrame { + padding-right: 30px; + border-style: none; + border-image: none; /* since we set a border-image below */ +} + +/* mainFrame won't have this border-image since we have + explicitly set it to 'none' using a more specific selector. */ +QFrame, QLineEdit, QComboBox[editable="true"], QSpinBox { + border-image: url(images/frame.png) 4; + border-width: 3; +} + +QLabel { + border: none; + border-image: none; + padding: 0; + background: none; +} + +/* Make text in message boxes selectable. */ +QMessageBox { + /* LinksAccessibleByMouse | TextSelectableByMouse */ + messagebox-text-interaction-flags: 5; +} + +/* Set the selection colors for all widgets. */ +QWidget { + selection-color: black; + selection-background-color: Silver; + color: black; +} + +/* Make the entire row selected in item views. */ +QAbstractItemView { + show-decoration-selected: 1; +} + +/* Nice WindowsXP-style password character for password line edits. */ +QLineEdit[echoMode="2"] { + lineedit-password-character: 9679; +} + +/* Customize tooltips. */ +QToolTip { + background-color: rgb(200,200,255); + border-color: darkslategray; + border-width: 1px; + border-style: solid; + padding: 3px; + font: bold; + border-radius: 3px; + opacity: 200; +} + +/* Customize radio buttons. */ + +QRadioButton { + spacing: 5px; +} + +QRadioButton::indicator { + width: 13px; + height: 13px; +} + +QRadioButton::indicator::unchecked { + image: url(images/radiobutton_unchecked.png); +} + +QRadioButton::indicator:unchecked:hover { + image: url(images/radiobutton_unchecked_hover.png); +} + +QRadioButton::indicator:unchecked:pressed { + image: url(images/radiobutton_unchecked_pressed.png); +} + +QRadioButton::indicator::checked { + image: url(images/radiobutton_checked.png); +} + +QRadioButton::indicator:checked:hover { + image: url(images/radiobutton_checked_hover.png); +} + +QRadioButton::indicator:checked:pressed { + image: url(images/radiobutton_checked_pressed.png); +} + +/* Customize arrows. */ + +*::down-arrow, *::menu-indicator { + image: url(images/down_arrow.png); + width: 7px; + height: 7px; +} + +*::down-arrow:disabled, *::down-arrow:off { + image: url(images/down_arrow_disabled.png); +} + +*::up-arrow { + image: url(images/up_arrow.png); + width: 7px; + height: 7px; +} + +*::up-arrow:disabled, *::up-arrow:off { + image: url(images/up_arrow_disabled.png); +} + +/* Customize push buttons and comboboxes. Our read-only combobox + is very similar to a push button, so they share the same border image. */ + +QPushButton { + min-width: 4em; +} + +QPushButton, QComboBox[editable="false"], +QComboBox[editable="true"]::drop-down { + border-image: url(images/pushbutton.png) 5; + border-width: 5; +} + +QPushButton:hover, QComboBox[editable="false"]:hover, +QComboBox[editable="true"]::drop-down:hover, QMenuBar::item:hover { + border-image: url(images/pushbutton_hover.png) 5; + border-width: 5; +} + +QPushButton:pressed, QComboBox[editable="false"]:on, +QComboBox[editable="true"]::drop-down:on, QMenuBar::item:on { + border-image: url(images/pushbutton_pressed.png) 5; + border-width: 5; +} + +/* Customize read-only comboboxes. */ + +QComboBox[editable="false"] { + padding-left: 3px; + padding-right: 20px; /* space for the arrow */ +} + +QComboBox[editable="false"]::drop-down { + subcontrol-origin: padding; + subcontrol-position: top right; + width: 15px; + border-left-style: solid; + border-left-color: darkgray; + border-left-width: 1px; +} + +QComboBox[editable="false"]::down-arrow { + subcontrol-origin: content; + subcontrol-position: center; + position: relative; + left: 1px; /* 1 pixel dropdown border */ +} + +/* The combobox arrow is on when the popup is open. */ +QComboBox[editable="false"]::down-arrow:on { + position: relative; + top: 1px; + left: 2px; +} + +/* Customize editable comboboxes. */ + +QComboBox[editable="true"] { + padding-right: 16px; +} + +QComboBox[editable="true"]::drop-down { + subcontrol-origin: border; + subcontrol-position: top right; + width: 13px; + position: absolute; + top: 2px; + bottom: 2px; + right: 2px; +} + +QComboBox[editable="true"]::drop-down, +QComboBox[editable="true"]::drop-down:hover, +QComboBox[editable="true"]::drop-down:on { + border-width: 0px; + border-left-width: 3px; /* we need only left and center part */ +} + +/* Shift the arrow when it's open. */ +QComboBox[editable="true"]::down-arrow:on { + position: relative; + top: 1px; + left: 1px; +} + +/* Customize check boxes. */ +QCheckBox { + spacing: 5px; +} + +QCheckBox::indicator { + width: 13px; + height: 13px; +} + +QCheckBox::indicator:unchecked { + image: url(images/checkbox_unchecked.png); +} + +QCheckBox::indicator:unchecked:hover { + image: url(images/checkbox_unchecked_hover.png); +} + +QCheckBox::indicator:unchecked:pressed { + image: url(images/checkbox_unchecked_pressed.png); +} + +QCheckBox::indicator:checked { + image: url(images/checkbox_checked.png); +} + +QCheckBox::indicator:checked:hover { + image: url(images/checkbox_checked_hover.png); +} + +QCheckBox::indicator:checked:pressed { + image: url(images/checkbox_checked_pressed.png); +} + +/* Customize the size grip. */ +QSizeGrip { + image: url(images/sizegrip.png); + width: 16px; + height: 16px; +} + +/* Customize the menu bar. */ +QMenuBar { + border-image: none; + border-style: none; + border-width: 1px; + border-bottom-style: solid; + border-bottom-color: darkslategray; + padding: 2px; +} + +/* Customize spin boxes. */ + +QSpinBox { + padding-right: 15px; +} + +QSpinBox::up-button { + subcontrol-origin: border; + subcontrol-position: top right; + + width: 16px; /* 16 + 2*1px border-width = 15px padding + 3px parent border */ + border-image: url(images/spinup.png) 1; + border-width: 1px; +} + +QSpinBox::up-button:hover { + border-image: url(images/spinup_hover.png) 1; +} + +QSpinBox::up-button:pressed { + border-image: url(images/spinup_pressed.png) 1; +} + +QSpinBox::down-button { + subcontrol-origin: border; + subcontrol-position: bottom right; + + width: 16px; + border-image: url(images/spindown.png) 1; + border-width: 1px; + border-top-width: 0; +} + +QSpinBox::down-button:hover { + border-image: url(images/spindown_hover.png) 1; +} + +QSpinBox::down-button:pressed { + border-image: url(images/spindown_pressed.png) 1; +} +</string> + </property> + <widget class="QWidget" name="centralwidget"> + <layout class="QVBoxLayout"> + <property name="spacing"> + <number>6</number> + </property> + <property name="margin"> + <number>9</number> + </property> + <item> + <widget class="QFrame" name="mainFrame"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <layout class="QGridLayout"> + <property name="margin"> + <number>9</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <item row="6" column="0" colspan="5"> + <widget class="QCheckBox" name="agreeCheckBox"> + <property name="toolTip"> + <string>Please read the LICENSE file before checking</string> + </property> + <property name="text"> + <string>I &accept the terms and &conditions</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Profession:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTop|Qt::AlignTrailing</set> + </property> + <property name="buddy"> + <cstring>professionList</cstring> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="nameLabel"> + <property name="text"> + <string>&Name:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>nameCombo</cstring> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QRadioButton" name="maleRadioButton"> + <property name="toolTip"> + <string>Check this if you are male</string> + </property> + <property name="text"> + <string>&Male</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="passwordLabel"> + <property name="text"> + <string>&Password:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>passwordEdit</cstring> + </property> + </widget> + </item> + <item row="4" column="1" colspan="4"> + <widget class="QComboBox" name="countryCombo"> + <property name="toolTip"> + <string>Specify country of origin</string> + </property> + <property name="statusTip"> + <string>Specify country of origin</string> + </property> + <property name="currentIndex"> + <number>6</number> + </property> + <item> + <property name="text"> + <string>Egypt</string> + </property> + </item> + <item> + <property name="text"> + <string>France</string> + </property> + </item> + <item> + <property name="text"> + <string>Germany</string> + </property> + </item> + <item> + <property name="text"> + <string>India</string> + </property> + </item> + <item> + <property name="text"> + <string>Italy</string> + </property> + </item> + <item> + <property name="text"> + <string>Norway</string> + </property> + </item> + <item> + <property name="text"> + <string>Pakistan</string> + </property> + </item> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="ageLabel"> + <property name="text"> + <string>&Age:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>ageSpinBox</cstring> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="countryLabel"> + <property name="text"> + <string>Country:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="buddy"> + <cstring>countryCombo</cstring> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="genderLabel"> + <property name="text"> + <string>Gender:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="3" column="1" colspan="4"> + <widget class="QLineEdit" name="passwordEdit"> + <property name="toolTip"> + <string>Specify your password</string> + </property> + <property name="statusTip"> + <string>Specify your password</string> + </property> + <property name="text"> + <string>Password</string> + </property> + <property name="echoMode"> + <enum>QLineEdit::Password</enum> + </property> + </widget> + </item> + <item row="1" column="2" colspan="2"> + <widget class="QRadioButton" name="femaleRadioButton"> + <property name="styleSheet"> + <string>Check this if you are female</string> + </property> + <property name="text"> + <string>&Female</string> + </property> + </widget> + </item> + <item row="2" column="1" colspan="2"> + <widget class="QSpinBox" name="ageSpinBox"> + <property name="toolTip"> + <string>Specify your age</string> + </property> + <property name="statusTip"> + <string>Specify your age</string> + </property> + <property name="minimum"> + <number>12</number> + </property> + <property name="value"> + <number>22</number> + </property> + </widget> + </item> + <item row="0" column="1" colspan="4"> + <widget class="QComboBox" name="nameCombo"> + <property name="toolTip"> + <string>Specify your name</string> + </property> + <property name="editable"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="4"> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="3" colspan="2"> + <spacer> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>61</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="7" column="3" colspan="2"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="5" column="1" colspan="4"> + <widget class="QListWidget" name="professionList"> + <property name="toolTip"> + <string>Select your profession</string> + </property> + <property name="statusTip"> + <string>Specify your name here</string> + </property> + <property name="whatsThis"> + <string>Specify your name here</string> + </property> + <property name="currentRow"> + <number>0</number> + </property> + <item> + <property name="text"> + <string>Developer</string> + </property> + </item> + <item> + <property name="text"> + <string>Student</string> + </property> + </item> + <item> + <property name="text"> + <string>Fisherman</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>426</width> + <height>29</height> + </rect> + </property> + <widget class="QMenu" name="menu_File"> + <property name="title"> + <string>&File</string> + </property> + <addaction name="editStyleAction"/> + <addaction name="separator"/> + <addaction name="exitAction"/> + </widget> + <widget class="QMenu" name="menu_Help"> + <property name="title"> + <string>&Help</string> + </property> + <addaction name="aboutAction"/> + <addaction name="aboutQtAction"/> + </widget> + <addaction name="menu_File"/> + <addaction name="menu_Help"/> + </widget> + <widget class="QStatusBar" name="statusbar"/> + <action name="exitAction"> + <property name="text"> + <string>&Exit</string> + </property> + </action> + <action name="aboutQtAction"> + <property name="text"> + <string>About Qt</string> + </property> + </action> + <action name="editStyleAction"> + <property name="text"> + <string>Edit &Style...</string> + </property> + </action> + <action name="aboutAction"> + <property name="text"> + <string>About</string> + </property> + </action> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_exemple_usage.ui b/tests/auto/uiloader/baseline/css_exemple_usage.ui new file mode 100644 index 0000000000000000000000000000000000000000..0ddd2ed79eabd3f1f7f0de03ed02fb04e7eed56b --- /dev/null +++ b/tests/auto/uiloader/baseline/css_exemple_usage.ui @@ -0,0 +1,91 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>322</width> + <height>203</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true"> QPushButton#evilButton { + background-color: red; + border-style: outset; + border-width: 2px; + border-radius: 10px; + border-color: beige; + font: bold 14px; + min-width: 10em; + padding: 6px; + } + QPushButton#evilButton:pressed { + background-color: rgb(224, 0, 0); + border-style: inset; + } + +QLineEdit { color: red } + QLineEdit[readOnly="true"] { color: gray } +</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QPushButton" name="evilButton"> + <property name="text"> + <string>Format C:</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>95</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0"> + <widget class="QLineEdit" name="lineEdit"> + <property name="text"> + <string>Foo</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLineEdit" name="lineEdit_2"> + <property name="text"> + <string>ReadOnly</string> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="3" column="1"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>102</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_frames.ui b/tests/auto/uiloader/baseline/css_frames.ui new file mode 100644 index 0000000000000000000000000000000000000000..d1397bb1dea32386d14d50d12fc9b89f56f46997 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_frames.ui @@ -0,0 +1,319 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>884</width> + <height>327</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true"> QLabel +{ + border: 2px dashed rgb(0, 85, 255) +} + +QGroupBox .QFrame { +margin: 20px 10px 5px 0px; +padding: 0px 10px 15px 20px; +} + +QGroupBox { +border: 5px solid white; +} + +#line1 { background-color: yellow; } +#line2 { background-color: pink; } +#line1, #line2 { + border: 1px solid rgb(170, 85, 255); +} + + +QFrame::no-frame { + background: orange; + border-color: #000; + } + +</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="1" column="0"> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>GroupBox</string> + </property> + <property name="flat"> + <bool>false</bool> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <widget class="QFrame" name="frame"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Styled</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="QFrame" name="frame_2"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Box</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_9"> + <item> + <widget class="QFrame" name="frame_6"> + <property name="frameShape"> + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <widget class="QLabel" name="label_7"> + <property name="text"> + <string>None</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_10"> + <item> + <widget class="QFrame" name="frame_4"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>Box Plain</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer_4"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_11"> + <item> + <widget class="QFrame" name="frame_3"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Panel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer_5"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_12"> + <item> + <widget class="QFrame" name="frame_5"> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Sunken</enum> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>WinPanel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer_6"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item row="1" column="1"> + <widget class="Line" name="line2"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item row="1" column="2"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="2"> + <widget class="Line" name="line1"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="lineWidth"> + <number>0</number> + </property> + <property name="text"> + <string>This test that all the frame style can handle margins and paddings correctly + (and the background of this label should be orange)</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_groupboxes.ui b/tests/auto/uiloader/baseline/css_groupboxes.ui new file mode 100644 index 0000000000000000000000000000000000000000..7f5464aa5eca0b6214b1849475cdab76b30e1901 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_groupboxes.ui @@ -0,0 +1,150 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">#groupBox_1:checked { color:magenta; } + +#groupBox_2 { background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:0, y2:0, stop:0 rgba(0, 0, 0, 255), stop:0.05 rgba(14, 8, 73, 255), stop:0.36 rgba(28, 17, 145, 255), stop:0.6 rgba(126, 14, 81, 255), stop:0.75 rgba(234, 11, 11, 255), stop:0.79 rgba(244, 70, 5, 255), stop:0.86 rgba(255, 136, 0, 255), stop:0.935 rgba(239, 236, 55, 255)); +color: rgb(33, 255, 181); } + +#groupBox_3 { padding: 20px; margin: 20px; } +#groupBox_3 QLabel { background-color: #46e; } + +#groupBox_4::title { subcontrol-position: bottom left; border: 1px solid white;} + +#groupBox_5::indicator {border: 1px solid white;} + +#groupBox_6 { border: 5px dashed pink;}</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QGroupBox" name="groupBox_1"> + <property name="title"> + <string>GroupBox</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="1"> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>GroupBox</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0"> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>GroupBox</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="1"> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>GroupBox</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5"> + <item> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="2" column="0"> + <widget class="QGroupBox" name="groupBox_5"> + <property name="title"> + <string>GroupBox</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="2" column="1"> + <widget class="QGroupBox" name="groupBox_6"> + <property name="title"> + <string>GroupBox</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_6"> + <item> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_itemview_task258382.ui b/tests/auto/uiloader/baseline/css_itemview_task258382.ui new file mode 100644 index 0000000000000000000000000000000000000000..11c56b4ba2837131cdff3108440e2da04fb78c46 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_itemview_task258382.ui @@ -0,0 +1,179 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>437</width> + <height>352</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">::item { border: 1px solid black; background-color: purple; } +::item {margin-left: 20px; } + +QAbstractItemView { selection-background-color: red; +show-decoration- selected: 0; + } + +::item:selected { background-color: yellow; }</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QTreeWidget" name="treeWidget"> + <column> + <property name="text"> + <string>1</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + <item> + <property name="text"> + <string>New Subitem</string> + </property> + <item> + <property name="text"> + <string>New Subitem</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + </item> + </item> + </widget> + </item> + <item row="1" column="0"> + <widget class="QTableWidget" name="tableWidget"> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <item row="0" column="0"> + <property name="text"> + <string>mljkh mh mjl</string> + </property> + </item> + <item row="0" column="1"> + <property name="text"> + <string>h jlh mjklh </string> + </property> + </item> + <item row="0" column="2"> + <property name="text"> + <string>mjklh mlhj mjlh m</string> + </property> + </item> + <item row="1" column="3"> + <property name="text"> + <string>mlhj lmhj </string> + </property> + </item> + <item row="2" column="0"> + <property name="text"> + <string>mlkj l</string> + </property> + </item> + <item row="2" column="1"> + <property name="text"> + <string>mlkj </string> + </property> + </item> + <item row="2" column="2"> + <property name="text"> + <string>mlkj lmkj </string> + </property> + </item> + <item row="2" column="3"> + <property name="text"> + <string>mlkhj mlh</string> + </property> + </item> + <item row="3" column="1"> + <property name="text"> + <string>mlkj lmkj </string> + </property> + </item> + <item row="4" column="0"> + <property name="text"> + <string>mlkj lmkj </string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_qprogressbar.ui b/tests/auto/uiloader/baseline/css_qprogressbar.ui new file mode 100644 index 0000000000000000000000000000000000000000..6b3e2f0e9ed6643e3d2791bf8b57038621fe23eb --- /dev/null +++ b/tests/auto/uiloader/baseline/css_qprogressbar.ui @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>326</width> + <height>170</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QProgressBar" name="progressBar"> + <property name="styleSheet"> + <string notr="true"> QProgressBar { + border: 2px solid grey; + border-radius: 5px; + } + + QProgressBar::chunk { + background-color: #05B8CC; + width: 20px; + } + + QProgressBar { + border: 2px solid grey; + border-radius: 5px; + text-align: center; + }</string> + </property> + <property name="value"> + <number>24</number> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_2"> + <property name="styleSheet"> + <string notr="true"> QProgressBar::chunk { + background-color: #CD96CD; + width: 10px; + margin: 0.5px; + } + + QProgressBar { + border: 2px solid grey; + border-radius: 5px; + text-align: center; + }</string> + </property> + <property name="value"> + <number>24</number> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_3"> + <property name="styleSheet"> + <string notr="true">QProgressBar:horizontal {border: 1px solid gray; border-radius: 3px; background: white; padding: 1px; } + QProgressBar::chunk:horizontal { background: qlineargradient(x1: 0, y1: 0.5, x2: 1, y2: 0.5, stop: 0 green, stop: 1 lightgrey);}</string> + </property> + <property name="minimum"> + <number>25</number> + </property> + <property name="maximum"> + <number>100</number> + </property> + <property name="value"> + <number>75</number> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar_4"> + <property name="styleSheet"> + <string notr="true"> + + QProgressBar::chunk { +background: +qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, +stop:0 rgba(0, 0, 0,0), stop:0.5 rgba(235, 148, 61, 255), stop:1 rgba(0, 0, 0, 0)) ; + + width: 100px; + + } + + QProgressBar { + border: 2px dashed grey; + border-radius: 5px; + }</string> + </property> + <property name="minimum"> + <number>0</number> + </property> + <property name="maximum"> + <number>0</number> + </property> + <property name="value"> + <number>-1</number> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>41</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_qtabwidget.ui b/tests/auto/uiloader/baseline/css_qtabwidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..7c2d24f3af1cdaf78a74630e7aa5ecf7012b9826 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_qtabwidget.ui @@ -0,0 +1,224 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true"/> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTabWidget" name="tabWidget"> + <property name="styleSheet"> + <string notr="true"> QTabWidget::pane { / * The tab widget frame * / + border-top: 2px solid #C2C7CB; + } + + QTabWidget::tab-bar { + left: 5px; / * move to the right by 5px * / + } + + / * Style the tab using the tab sub-control. Note that + it reads QTabBar _not_ QTabWidget * / + QTabBar::tab { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); + border: 2px solid #C4C4C3; + border-bottom-color: #C2C7CB; / * same as the pane color * / + border-top-left-radius: 4px; + border-top-right-radius: 4px; + min-width: 8ex; + padding: 2px; + } + + QTabBar::tab:selected, QTabBar::tab:hover { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #fafafa, stop: 0.4 #f4f4f4, + stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); + } + + QTabBar::tab:selected { + border-color: #9B9B9B; + border-bottom-color: #C2C7CB; / * same as pane color * / + } + + QTabBar::tab:!selected { + margin-top: 2px; / * make non-selected tabs look smaller * / + } + + +</string> + </property> + <property name="currentIndex"> + <number>1</number> + </property> + <widget class="QWidget" name="tab"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_3"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_2"> + <attribute name="title"> + <string/> + </attribute> + </widget> + </widget> + </item> + <item> + <widget class="QTabWidget" name="tabWidget_2"> + <property name="styleSheet"> + <string notr="true">QTabWidget::pane { / * The tab widget frame * / + border-top: 2px solid #C2C7CB; + } + + QTabWidget::tab-bar { + left: 5px; / * move to the right by 5px * / + } + + / * Style the tab using the tab sub-control. Note that + it reads QTabBar _not_ QTabWidget * / + QTabBar::tab { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); + border: 2px solid #C4C4C3; + border-bottom-color: #C2C7CB; / * same as the pane color * / + border-top-left-radius: 4px; + border-top-right-radius: 4px; + min-width: 8ex; + padding: 2px; + } + + QTabBar::tab:selected, QTabBar::tab:hover { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #fafafa, stop: 0.4 #f4f4f4, + stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); + } + + QTabBar::tab:selected { + border-color: #9B9B9B; + border-bottom-color: #C2C7CB; / * same as pane color * / + } + + QTabBar::tab:!selected { + margin-top: 2px; / * make non-selected tabs look smaller * / + } + + / * make use of negative margins for overlapping tabs * / + QTabBar::tab:selected { + / * expand/overlap to the left and right by 4px * / + margin-left: -4px; + margin-right: -4px; + } + + QTabBar::tab:first:selected { + margin-left: 0; / * the first selected tab has nothing to overlap with on the left * / + } + + QTabBar::tab:last:selected { + margin-right: 0; / * the last selected tab has nothing to overlap with on the right * / + } + + QTabBar::tab:only-one { + margin: 0; / * if there is only one tab, we don't want overlapping margins * / + }</string> + </property> + <property name="currentIndex"> + <number>1</number> + </property> + <widget class="QWidget" name="tab_4"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_7"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_5"> + <attribute name="title"> + <string/> + </attribute> + </widget> + </widget> + </item> + <item> + <widget class="QTabWidget" name="tabWidget_3"> + <property name="styleSheet"> + <string notr="true"> QTabWidget::pane { / * The tab widget frame * / + border-top: 2px solid #C2C7CB; + position: absolute; + top: -0.5em; + } + + QTabWidget::tab-bar { + alignment: center; + } + + / * Style the tab using the tab sub-control. Note that + it reads QTabBar _not_ QTabWidget * / + QTabBar::tab { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); + border: 2px solid #C4C4C3; + border-bottom-color: #C2C7CB; / * same as the pane color * / + border-top-left-radius: 4px; + border-top-right-radius: 4px; + min-width: 8ex; + padding: 2px; + } + + QTabBar::tab:selected, QTabBar::tab:hover { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #fafafa, stop: 0.4 #f4f4f4, + stop: 0.5 #e7e7e7, stop: 1.0 #fafafa); + } + + QTabBar::tab:selected { + border-color: #9B9B9B; + border-bottom-color: #C2C7CB; / * same as pane color * / + }</string> + </property> + <property name="currentIndex"> + <number>1</number> + </property> + <widget class="QWidget" name="tab_6"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_9"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_8"> + <attribute name="title"> + <string/> + </attribute> + </widget> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_qtbug6855.ui b/tests/auto/uiloader/baseline/css_qtbug6855.ui new file mode 100644 index 0000000000000000000000000000000000000000..0727f6ba99f094cdbd5f9daac73ba9d9886121b8 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_qtbug6855.ui @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>212</width> + <height>108</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">QPushButton { padding: 20px; }</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QPushButton" name="pushButton"> + <property name="text"> + <string>Text not cropped</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>258</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>218</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui b/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui new file mode 100644 index 0000000000000000000000000000000000000000..089cb76a1ed8d746a4f444c35a56fb4ec24f0f01 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_qtbug7737_borderimageradius.ui @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>207</width> + <height>69</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">QPushButton { border-image: url("images/pushbutton.png") 5 5 5 5; border-radius:8px; }</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QPushButton" name="pushButton"> + <property name="text"> + <string>Border image and radius</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_scroll.ui b/tests/auto/uiloader/baseline/css_scroll.ui new file mode 100644 index 0000000000000000000000000000000000000000..6ac688604f04efaf099022ccde5012c40312babe --- /dev/null +++ b/tests/auto/uiloader/baseline/css_scroll.ui @@ -0,0 +1,601 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>393</width> + <height>347</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">QScrollArea { background:red; + border: 5px dashed blue; } +QScrollArea .QWidget { background:transparent; + border: 5px dotted green;} +QScrollArea::corner { background:yellow; } + + + QScrollBar:horizontal { + border: 2px solid green; + background: cyan; + height: 15px; + margin: 0px 40px 0 0px; + } + + QScrollBar::handle:horizontal { + background: gray; + min-width: 20px; + } + + QScrollBar::add-line:horizontal { + background: blue; + width: 16px; + subcontrol-position: right; + subcontrol-origin: margin; + border: 2px solid black; + } + + QScrollBar::sub-line:horizontal { + background: magenta; + width: 16px; + subcontrol-position: top right; + subcontrol-origin: margin; + border: 2px solid black; + position: absolute; + right: 20px; + } + + QScrollBar:left-arrow:horizontal, QScrollBar::right-arrow:horizontal { + width: 3px; + height: 3px; + background: pink; + } + + QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal { + background: none; + } + + + + QScrollBar:vertical { + border: 2px solid grey; + background: #32CC99; + width: 15px; + margin: 20px 0px 20px 0px; + } + QScrollBar::handle:vertical { + background: white; + min-height: 20px; + } + QScrollBar::add-line:vertical { + border: 2px solid grey; + background: #32CC99; + height: 20px; + subcontrol-position: bottom; + subcontrol-origin: margin; + } + + QScrollBar::sub-line:vertical { + border: 2px solid grey; + background: #32CC99; + height: 20px; + subcontrol-position: top; + subcontrol-origin: margin; + } + + QScrollBar:left-arrow:vertical, QScrollBar::right-arrow:vertical { + border: 2px solid grey; + width: 3px; + height: 3px; + background: white; + } + + QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; + } + + + +</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="QScrollArea" name="scrollArea"> + <property name="widgetResizable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="scrollAreaWidgetContents"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>520</width> + <height>532</height> + </rect> + </property> + <layout class="QGridLayout" name="gridLayout_3"> + <item row="0" column="0"> + <widget class="QGroupBox" name="groupBox_4"> + <property name="title"> + <string>GroupBox</string> + </property> + <layout class="QGridLayout" name="gridLayout_4"> + <item row="0" column="0"> + <widget class="QRadioButton" name="radioButton_56"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QRadioButton" name="radioButton_83"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QRadioButton" name="radioButton_82"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QRadioButton" name="radioButton_84"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QRadioButton" name="radioButton_57"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QRadioButton" name="radioButton_62"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QRadioButton" name="radioButton_59"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QRadioButton" name="radioButton_55"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QRadioButton" name="radioButton_60"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QRadioButton" name="radioButton_61"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QRadioButton" name="radioButton_58"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QRadioButton" name="radioButton_63"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="6" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>81</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item row="0" column="1"> + <widget class="QGroupBox" name="groupBox_5"> + <property name="title"> + <string>GroupBox</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <widget class="QRadioButton" name="radioButton_64"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_65"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_66"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_67"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_68"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_69"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_70"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_71"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_72"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="2"> + <widget class="QGroupBox" name="groupBox_6"> + <property name="title"> + <string>GroupBox</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QRadioButton" name="radioButton_73"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_74"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_75"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_76"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_77"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_78"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_79"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_80"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_81"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" colspan="3"> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>GroupBox</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QRadioButton" name="radioButton_9"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_6"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_7"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_3"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_5"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_4"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_8"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_2"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="1"> + <widget class="QGroupBox" name="groupBox_2"> + <property name="title"> + <string>GroupBox</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QRadioButton" name="radioButton_10"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_11"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_12"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_13"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_14"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_15"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_16"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_17"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="radioButton_18"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="2"> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>GroupBox</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QRadioButton" name="radioButton_19"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QRadioButton" name="radioButton_20"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QRadioButton" name="radioButton_21"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QRadioButton" name="radioButton_22"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QRadioButton" name="radioButton_23"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QRadioButton" name="radioButton_24"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="6" column="0"> + <widget class="QRadioButton" name="radioButton_25"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="7" column="0"> + <widget class="QRadioButton" name="radioButton_26"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + <item row="8" column="0"> + <widget class="QRadioButton" name="radioButton_27"> + <property name="text"> + <string>RadioButton</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_scrollarea_base.ui b/tests/auto/uiloader/baseline/css_scrollarea_base.ui new file mode 100644 index 0000000000000000000000000000000000000000..495401f4079b8573e8a12ded688ffe67c4926f59 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_scrollarea_base.ui @@ -0,0 +1,197 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>407</width> + <height>339</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">QAbstractScrollArea { border: 2px dashed #e12; } +QHeaderView { border-color: blue; } + +</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QPlainTextEdit" name="plainTextEdit"> + <property name="plainText"> + <string>Note that the task 257517 requires to scroll down, and check that the backgroud is still filled with the base color (white by default) + +x +x + +x +x + +x +x + +x +x + +</string> + </property> + </widget> + </item> + <item> + <widget class="QTableWidget" name="tableWidget"> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <row> + <property name="text"> + <string>New Row</string> + </property> + </row> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + <column> + <property name="text"> + <string>New Column</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="QTextEdit" name="textEdit"> + <property name="html"> + <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> +<html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'DejaVu Sans'; font-size:10pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">x</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_splitter.ui b/tests/auto/uiloader/baseline/css_splitter.ui new file mode 100644 index 0000000000000000000000000000000000000000..99dbc180a9542c6077e064164830b6fa47ca855d --- /dev/null +++ b/tests/auto/uiloader/baseline/css_splitter.ui @@ -0,0 +1,63 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>424</width> + <height>364</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true"> QSplitter::handle:vertical { + image: url(images/splitter_horizontal.png); + } + + QSplitter::handle:horizontal { + image: url(images/splitter_vertical.png); + } + +#big_splitter::handle { background-color: blue; border: 3px dashed green; height:50px; } + + + QSplitter::handle:hover { + background-color: qlineargradient(spread:repeat, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(255, 0, 0, 255), stop:0.17 rgba(255, 0, 0, 255), stop:0.18 rgba(255, 255, 255, 255), stop:0.210212 rgba(255, 255, 255, 255), stop:0.220212 rgba(0, 16, 255, 255), stop:0.279897 rgba(0, 16, 255, 255), stop:0.289897 rgba(255, 255, 255, 255), stop:0.32 rgba(255, 255, 255, 255), stop:0.33 rgba(255, 0, 0, 255), stop:1 rgba(255, 0, 0, 255)) + } + + QSplitter::handle:pressed { + background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(9, 41, 4, 255), stop:0.085 rgba(2, 79, 0, 255), stop:0.19 rgba(50, 147, 22, 255), stop:0.275 rgba(236, 191, 49, 255), stop:0.39 rgba(243, 61, 34, 255), stop:0.555 rgba(135, 81, 60, 255), stop:0.667 rgba(121, 75, 255, 255), stop:0.825 rgba(164, 255, 244, 255), stop:0.885 rgba(104, 222, 71, 255), stop:1 rgba(93, 128, 0, 255)); + }</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QSplitter" name="splitter_3"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <widget class="QSplitter" name="big_splitter"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <widget class="QTextEdit" name="textEdit"/> + <widget class="QTextEdit" name="textEdit_5"/> + <widget class="QTextEdit" name="textEdit_4"/> + </widget> + <widget class="QSplitter" name="splitter"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <widget class="QTextEdit" name="textEdit_2"/> + <widget class="QTextEdit" name="textEdit_3"/> + </widget> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_tab_border.ui b/tests/auto/uiloader/baseline/css_tab_border.ui new file mode 100644 index 0000000000000000000000000000000000000000..cefb9d8fd91131b8b3ea4d43cca19721e08a56ec --- /dev/null +++ b/tests/auto/uiloader/baseline/css_tab_border.ui @@ -0,0 +1,104 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>379</width> + <height>277</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">#tabWidget QTabBar::tab { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E1E1E1, stop: 0.4 #DDDDDD, + stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3); + border: 2px solid #C4C4C3; + border-bottom-color: #C2C7CB; /* same as the pane color */ + border-top-left-radius: 4px; + border-top-right-radius: 4px; + padding: 2px; + } + +#tabWidget_2 QTabBar::tab { + border: 3px solid red; + } + +#tabWidget_3 QTabBar::tab { + margin: 5px; + } + + +</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTabWidget" name="tabWidget"> + <property name="currentIndex"> + <number>1</number> + </property> + <property name="tabsClosable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="tab"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_2"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + <item> + <widget class="QTabWidget" name="tabWidget_2"> + <property name="currentIndex"> + <number>1</number> + </property> + <property name="tabsClosable"> + <bool>false</bool> + </property> + <widget class="QWidget" name="tab_3"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_4"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + <item> + <widget class="QTabWidget" name="tabWidget_3"> + <property name="currentIndex"> + <number>1</number> + </property> + <property name="tabsClosable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="tab_5"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_6"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_tab_closebutton.ui b/tests/auto/uiloader/baseline/css_tab_closebutton.ui new file mode 100644 index 0000000000000000000000000000000000000000..82bd2b55021db343d71d71c8803fe3c2f106fea5 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_tab_closebutton.ui @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">*{} + +#tabWidget QTabBar::close-button +{ + background: blue; + border: 2px dotted red; + subcontrol-position: top; +} + + +#tabWidget_2 QTabBar::close-button +{ + image: url(images/checkbox_checked.png); + subcontrol-position: left; +} + +#tabWidget_2 QTabBar::close-button:hover +{ + image: url(images/checkbox_unchecked_hover.png); +} + + +#tabWidget_3 QTabBar::close-button +{ + border-image: url(images/pushbutton.png) 3px; + border-width:3px; +} + + +</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QTabWidget" name="tabWidget"> + <property name="tabsClosable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="tab"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_2"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Test the close button in the tabbar</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_2"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + <item row="0" column="1" rowspan="2"> + <widget class="QTabWidget" name="tabWidget_3"> + <property name="tabPosition"> + <enum>QTabWidget::East</enum> + </property> + <property name="currentIndex"> + <number>0</number> + </property> + <property name="tabsClosable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="tab_5"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_6"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + <item row="1" column="0"> + <widget class="QTabWidget" name="tabWidget_2"> + <property name="tabPosition"> + <enum>QTabWidget::South</enum> + </property> + <property name="currentIndex"> + <number>0</number> + </property> + <property name="tabsClosable"> + <bool>true</bool> + </property> + <widget class="QWidget" name="tab_3"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_4"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_tab_task213374.ui b/tests/auto/uiloader/baseline/css_tab_task213374.ui new file mode 100644 index 0000000000000000000000000000000000000000..f3567aede0528f8656008a4ecf0635d1a216b8de --- /dev/null +++ b/tests/auto/uiloader/baseline/css_tab_task213374.ui @@ -0,0 +1,306 @@ +<ui version="4.0" > + <class>Dialog</class> + <widget class="QDialog" name="Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>646</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QTabWidget" name="tabWidget_2" > + <property name="styleSheet" > + <string> +QTabBar::tab:bottom { + + min-width: 15px; + padding: 3px 15px 3px 10px; + border: 1px solid #7f7f7f; + + background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-right-radius: 35px 21px; + +} +QTabBar::tab:left { + padding: 10px 3px 15px 3px; + border: 1px solid #7f7f7f; + border-left-width: 0px; + background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-right-radius: 21px 35px; + margin-right: 2px; +} +QTabBar:right {subcontrol-origin: padding;} +QTabBar::tab:right { + padding: 10px 3px 15px 5px; + border: 1px solid #7f7f7f; + background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-left-radius: 21px 35px; + margin-left: 2px; +} +QTabBar::tab:bottom:!last { margin-right: -10px;} +QTabBar::tab:left:!last { margin-bottom: -10px;} +QTabBar::tab:right:!last { margin-bottom: -10px;} + +QTabBar::tab:bottom:selected { + background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, + stop: .3 #CFCFCF, stop: 1 #FFFFFF); +} +QTabBar::tab:left:selected { + background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, + stop: .3 #DFDFDF, stop: 1 #F0F0F0); +} +QTabBar::tab:right:selected { + background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, + stop: .3 #DFDFDF, stop: 1 #F0F0F0); +} + + +</string> + </property> + <property name="tabPosition" > + <enum>QTabWidget::South</enum> + </property> + <property name="currentIndex" > + <number>3</number> + </property> + <widget class="QWidget" name="tab_5" > + <attribute name="title" > + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_6" > + <attribute name="title" > + <string>Page</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_7" > + <attribute name="title" > + <string>Page</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_8" > + <attribute name="title" > + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + <item> + <widget class="QTabWidget" name="tabWidget_3" > + <property name="styleSheet" > + <string> +QTabBar::tab:bottom { + + min-width: 15px; + padding: 3px 15px 3px 10px; + border: 1px solid #7f7f7f; + + background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-right-radius: 35px 21px; + +} +QTabBar::tab:left { + padding: 10px 3px 15px 3px; + border: 1px solid #7f7f7f; + border-left-width: 0px; + background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-right-radius: 21px 35px; + margin-right: 2px; +} +QTabBar:right {subcontrol-origin: padding;} +QTabBar::tab:right { + padding: 10px 3px 15px 5px; + border: 1px solid #7f7f7f; + background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-left-radius: 21px 35px; + margin-left: 2px; +} +QTabBar::tab:bottom:!last { margin-right: -10px;} +QTabBar::tab:left:!last { margin-bottom: -10px;} +QTabBar::tab:right:!last { margin-bottom: -10px;} + +QTabBar::tab:bottom:selected { + background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, + stop: .3 #CFCFCF, stop: 1 #FFFFFF); +} +QTabBar::tab:left:selected { + background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, + stop: .3 #DFDFDF, stop: 1 #F0F0F0); +} +QTabBar::tab:right:selected { + background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, + stop: .3 #DFDFDF, stop: 1 #F0F0F0); +} + + +</string> + </property> + <property name="tabPosition" > + <enum>QTabWidget::East</enum> + </property> + <property name="currentIndex" > + <number>3</number> + </property> + <widget class="QWidget" name="tab_9" > + <attribute name="title" > + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_10" > + <attribute name="title" > + <string>Page</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_11" > + <attribute name="title" > + <string>Page</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_12" > + <attribute name="title" > + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + <item> + <widget class="QTabWidget" name="tabWidget" > + <property name="styleSheet" > + <string> +QTabBar::tab:bottom { + + min-width: 15px; + padding: 3px 15px 3px 10px; + border: 1px solid #7f7f7f; + + background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-right-radius: 35px 21px; + +} +QTabBar::tab:left { + padding: 10px 3px 15px 3px; + border: 1px solid #7f7f7f; + border-left-width: 0px; + background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-right-radius: 21px 35px; + margin-right: 2px; +} +QTabBar:right {subcontrol-origin: padding;} +QTabBar::tab:right { + padding: 10px 3px 15px 5px; + border: 1px solid #7f7f7f; + background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, + stop: .3 #FFFFFF, stop: 1 #909090); + border-bottom-left-radius: 21px 35px; + margin-left: 2px; +} +QTabBar::tab:bottom:!last { margin-right: -10px;} +QTabBar::tab:left:!last { margin-bottom: -10px;} +QTabBar::tab:right:!last { margin-bottom: -10px;} + +QTabBar::tab:bottom:selected { + background: qlineargradient(x1: 0, y1: 1, x2: 0,y2: 0, + stop: .3 #CFCFCF, stop: 1 #FFFFFF); +} +QTabBar::tab:left:selected { + background: qlineargradient(x1: 1, y1: 0, x2: 0,y2: 0, + stop: .3 #DFDFDF, stop: 1 #F0F0F0); +} +QTabBar::tab:right:selected { + background: qlineargradient(x1: 0, y1: 0, x2: 1,y2: 0, + stop: .3 #DFDFDF, stop: 1 #F0F0F0); +} + + +</string> + </property> + <property name="tabPosition" > + <enum>QTabWidget::West</enum> + </property> + <property name="currentIndex" > + <number>3</number> + </property> + <widget class="QWidget" name="tab" > + <attribute name="title" > + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_4" > + <attribute name="title" > + <string>Page</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_3" > + <attribute name="title" > + <string>Page</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_2" > + <attribute name="title" > + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>Dialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>Dialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/css_task255849_downarrow.ui b/tests/auto/uiloader/baseline/css_task255849_downarrow.ui new file mode 100644 index 0000000000000000000000000000000000000000..d3e99b161304c1cd9ce405f2aa239165451407c8 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_task255849_downarrow.ui @@ -0,0 +1,144 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>275</width> + <height>175</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">/* Some widget were not displaying the arrow if only the arrow was set */ +*::down-arrow { image: url("images/arrow-down.png") } +*::up-arrow { image: url("images/arrow-up.png") } + + +</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0" colspan="2"> + <widget class="QComboBox" name="comboBox"/> + </item> + <item row="0" column="2" rowspan="5"> + <widget class="QTreeWidget" name="treeWidget"> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <attribute name="headerShowSortIndicator" stdset="0"> + <bool>true</bool> + </attribute> + <attribute name="headerShowSortIndicator" stdset="0"> + <bool>true</bool> + </attribute> + <column> + <property name="text"> + <string>1</string> + </property> + </column> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + <item> + <property name="text"> + <string>New Item</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0"> + <widget class="QSpinBox" name="spinBox"/> + </item> + <item row="1" column="1"> + <widget class="QToolButton" name="toolButton"> + <property name="text"> + <string>foo</string> + </property> + <property name="arrowType"> + <enum>Qt::DownArrow</enum> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QDoubleSpinBox" name="doubleSpinBox"/> + </item> + <item row="3" column="0" colspan="2"> + <widget class="QPushButton" name="pushButton"> + <property name="contextMenuPolicy"> + <enum>Qt::NoContextMenu</enum> + </property> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </item> + <item row="4" column="0"> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/css_task259226_spinboxes.ui b/tests/auto/uiloader/baseline/css_task259226_spinboxes.ui new file mode 100644 index 0000000000000000000000000000000000000000..eb9ade316cee9e74854b2cf8da90c4976b9decf2 --- /dev/null +++ b/tests/auto/uiloader/baseline/css_task259226_spinboxes.ui @@ -0,0 +1,83 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>320</width> + <height>116</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <property name="styleSheet"> + <string notr="true">#spinbox1::up-button{ + subcontrol-origin: border; + subcontrol-position: top left; + } +#spinbox1::down-button { + subcontrol-origin: border; + subcontrol-position: bottom left; + } + + +#spinbox2::up-button{ + subcontrol-origin: border; + subcontrol-position: center left; + left: 0px; + height: 100%; + top: 0px; + } +#spinbox2::down-button { + subcontrol-origin: border; + subcontrol-position: center right; + right: 0px; + height: 100%; + top: 0px; + } + + + +#spinbox3::up-button{ + subcontrol-origin: border; + subcontrol-position: top left; + } + + +#spinbox4 { padding: 20px 1px; } +#spinbox4::up-button{ + subcontrol-origin: border; + subcontrol-position: top center; + width:100%; + height: 20px; + } +#spinbox4::down-button { + subcontrol-origin: border; + subcontrol-position: bottom center; + width:100%; + height: 20px; + } + +</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QSpinBox" name="spinbox1"/> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="spinbox2"/> + </item> + <item row="1" column="0"> + <widget class="QSpinBox" name="spinbox3"/> + </item> + <item row="1" column="1"> + <widget class="QSpinBox" name="spinbox4"/> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/default.ui b/tests/auto/uiloader/baseline/default.ui new file mode 100644 index 0000000000000000000000000000000000000000..431a40956e4451069e5afe5832560b9eab3a5923 --- /dev/null +++ b/tests/auto/uiloader/baseline/default.ui @@ -0,0 +1,329 @@ +<ui version="4.0" > + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>388</width> + <height>413</height> + </rect> + </property> + <property name="windowTitle" > + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralwidget" > + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="nameLabel" > + <property name="text" > + <string>&Name:</string> + </property> + <property name="buddy" > + <cstring>nameCombo</cstring> + </property> + </widget> + </item> + <item row="0" column="1" colspan="3" > + <widget class="QComboBox" name="nameCombo" > + <property name="toolTip" > + <string>Specify your name</string> + </property> + <property name="editable" > + <bool>true</bool> + </property> + <property name="currentIndex" > + <number>-1</number> + </property> + <item> + <property name="text" > + <string>Girish</string> + </property> + </item> + <item> + <property name="text" > + <string>Jasmin</string> + </property> + </item> + <item> + <property name="text" > + <string>Simon</string> + </property> + </item> + <item> + <property name="text" > + <string>Zack</string> + </property> + </item> + </widget> + </item> + <item row="1" column="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="2" > + <widget class="QRadioButton" name="femaleRadioButton" > + <property name="toolTip" > + <string>Check this if you are female</string> + </property> + <property name="text" > + <string>&Female</string> + </property> + </widget> + </item> + <item row="6" column="0" colspan="4" > + <widget class="QCheckBox" name="agreeCheckBox" > + <property name="toolTip" > + <string>Please read the license before checking this</string> + </property> + <property name="text" > + <string>I &accept the terms and conditions</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QRadioButton" name="maleRadioButton" > + <property name="toolTip" > + <string>Check this if you are male</string> + </property> + <property name="text" > + <string>&Male</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="genderLabel" > + <property name="text" > + <string>Gender:</string> + </property> + </widget> + </item> + <item row="2" column="1" colspan="3" > + <widget class="QSpinBox" name="ageSpinBox" > + <property name="toolTip" > + <string>Specify your age</string> + </property> + <property name="statusTip" > + <string>Specify your age here</string> + </property> + <property name="minimum" > + <number>12</number> + </property> + <property name="value" > + <number>22</number> + </property> + </widget> + </item> + <item row="7" column="2" colspan="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="ageLabel" > + <property name="text" > + <string>&Age:</string> + </property> + <property name="buddy" > + <cstring>ageSpinBox</cstring> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="passwordLabel" > + <property name="text" > + <string>&Password:</string> + </property> + <property name="buddy" > + <cstring>passwordEdit</cstring> + </property> + </widget> + </item> + <item row="3" column="1" colspan="3" > + <widget class="QLineEdit" name="passwordEdit" > + <property name="toolTip" > + <string>Specify your password</string> + </property> + <property name="statusTip" > + <string>Specify your password here</string> + </property> + <property name="text" > + <string>Password</string> + </property> + <property name="echoMode" > + <enum>QLineEdit::Password</enum> + </property> + </widget> + </item> + <item row="5" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Profession</string> + </property> + <property name="buddy" > + <cstring>professionList</cstring> + </property> + </widget> + </item> + <item row="4" column="0" > + <widget class="QLabel" name="countryLabel" > + <property name="text" > + <string>&Country</string> + </property> + <property name="buddy" > + <cstring>professionList</cstring> + </property> + </widget> + </item> + <item row="5" column="1" colspan="3" > + <widget class="QListWidget" name="professionList" > + <property name="toolTip" > + <string>Select your profession</string> + </property> + <property name="statusTip" > + <string>Select your profession</string> + </property> + <property name="whatsThis" > + <string>Select your profession</string> + </property> + <property name="currentRow" > + <number>1</number> + </property> + <item> + <property name="text" > + <string>Developer</string> + </property> + </item> + <item> + <property name="text" > + <string>Student</string> + </property> + </item> + <item> + <property name="text" > + <string>Fisherman</string> + </property> + </item> + </widget> + </item> + <item row="4" column="1" colspan="3" > + <widget class="QComboBox" name="countryCombo" > + <property name="toolTip" > + <string>Specify your country</string> + </property> + <property name="statusTip" > + <string>Specify your country here</string> + </property> + <property name="currentIndex" > + <number>2</number> + </property> + <item> + <property name="text" > + <string>Germany</string> + </property> + </item> + <item> + <property name="text" > + <string>India</string> + </property> + </item> + <item> + <property name="text" > + <string>Norway</string> + </property> + </item> + <item> + <property name="text" > + <string>United States Of America</string> + </property> + </item> + <item> + <property name="text" > + <string>United Kingdom</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>388</width> + <height>21</height> + </rect> + </property> + <widget class="QMenu" name="menu_File" > + <property name="title" > + <string>&File</string> + </property> + <addaction name="editStyleAction" /> + <addaction name="separator" /> + <addaction name="exitAction" /> + </widget> + <widget class="QMenu" name="menu_Help" > + <property name="title" > + <string>&Help</string> + </property> + <addaction name="aboutAction" /> + <addaction name="separator" /> + <addaction name="aboutQtAction" /> + </widget> + <addaction name="menu_File" /> + <addaction name="menu_Help" /> + </widget> + <widget class="QStatusBar" name="statusbar" /> + <action name="exitAction" > + <property name="text" > + <string>&Exit</string> + </property> + </action> + <action name="aboutQtAction" > + <property name="text" > + <string>About Qt</string> + </property> + </action> + <action name="editStyleAction" > + <property name="text" > + <string>Edit &Style</string> + </property> + </action> + <action name="aboutAction" > + <property name="text" > + <string>About</string> + </property> + </action> + </widget> + <tabstops> + <tabstop>maleRadioButton</tabstop> + <tabstop>femaleRadioButton</tabstop> + <tabstop>ageSpinBox</tabstop> + <tabstop>passwordEdit</tabstop> + <tabstop>professionList</tabstop> + <tabstop>agreeCheckBox</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/dialog.ui b/tests/auto/uiloader/baseline/dialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..e99d6fb3c42fbccea1bc86635cb0697dad78356c --- /dev/null +++ b/tests/auto/uiloader/baseline/dialog.ui @@ -0,0 +1,47 @@ +<ui version="4.0" > + <class>Dialog</class> + <widget class="QDialog" name="Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>451</width> + <height>322</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" > + <widget class="QPushButton" name="loadFromFileButton" > + <property name="text" > + <string>Load Image From File...</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Launch two of these dialogs. In the first, press the top button and load an image from a file. In the second, press the bottom button and display the loaded image from shared memory.</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QPushButton" name="loadFromSharedMemoryButton" > + <property name="text" > + <string>Display Image From Shared Memory</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/downloaditem.ui b/tests/auto/uiloader/baseline/downloaditem.ui new file mode 100644 index 0000000000000000000000000000000000000000..4a0a0fd9aa45a5ee9f2d659658ef54b7ff8489c0 --- /dev/null +++ b/tests/auto/uiloader/baseline/downloaditem.ui @@ -0,0 +1,134 @@ +<ui version="4.0" > + <class>DownloadItem</class> + <widget class="QWidget" name="DownloadItem" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>423</width> + <height>110</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout" > + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QLabel" name="fileIcon" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Ico</string> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_2" > + <item> + <widget class="SqueezeLabel" native="1" name="fileNameLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" stdset="0" > + <string>Filename</string> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressBar" > + <property name="value" > + <number>0</number> + </property> + </widget> + </item> + <item> + <widget class="SqueezeLabel" native="1" name="downloadInfoLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" stdset="0" > + <string/> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>17</width> + <height>1</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="tryAgainButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Try Again</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="stopButton" > + <property name="text" > + <string>Stop</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="openButton" > + <property name="text" > + <string>Open</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_2" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>17</width> + <height>5</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>SqueezeLabel</class> + <extends>QWidget</extends> + <header>squeezelabel.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/downloads.ui b/tests/auto/uiloader/baseline/downloads.ui new file mode 100644 index 0000000000000000000000000000000000000000..a2e256935bfe8f80bd02ac77afbf670cd9f12967 --- /dev/null +++ b/tests/auto/uiloader/baseline/downloads.ui @@ -0,0 +1,83 @@ +<ui version="4.0" > + <class>DownloadDialog</class> + <widget class="QDialog" name="DownloadDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>332</width> + <height>252</height> + </rect> + </property> + <property name="windowTitle" > + <string>Downloads</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>0</number> + </property> + <item row="0" column="0" colspan="3" > + <widget class="EditTableView" name="downloadsView" /> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QPushButton" name="cleanupButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Clean up</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>58</width> + <height>24</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="1" column="1" > + <widget class="QLabel" name="itemCount" > + <property name="text" > + <string>0 Items</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>148</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>EditTableView</class> + <extends>QTableView</extends> + <header>edittableview.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/embeddeddialog.ui b/tests/auto/uiloader/baseline/embeddeddialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..f967b1008534651ee188354ae8aa9d2ad60296ae --- /dev/null +++ b/tests/auto/uiloader/baseline/embeddeddialog.ui @@ -0,0 +1,87 @@ +<ui version="4.0" > + <class>embeddedDialog</class> + <widget class="QDialog" name="embeddedDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>407</width> + <height>134</height> + </rect> + </property> + <property name="windowTitle" > + <string>Embedded Dialog</string> + </property> + <layout class="QFormLayout" name="formLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Layout Direction:</string> + </property> + <property name="buddy" > + <cstring>layoutDirection</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="layoutDirection" > + <item> + <property name="text" > + <string>Left to Right</string> + </property> + </item> + <item> + <property name="text" > + <string>Right to Left</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Select Font:</string> + </property> + <property name="buddy" > + <cstring>fontComboBox</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QFontComboBox" name="fontComboBox" /> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Style:</string> + </property> + <property name="buddy" > + <cstring>style</cstring> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QComboBox" name="style" /> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Layout spacing:</string> + </property> + <property name="buddy" > + <cstring>spacing</cstring> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QSlider" name="spacing" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/filespage.ui b/tests/auto/uiloader/baseline/filespage.ui new file mode 100644 index 0000000000000000000000000000000000000000..d308b96646ee3fd465cf1812da6a377736f8f0a6 --- /dev/null +++ b/tests/auto/uiloader/baseline/filespage.ui @@ -0,0 +1,79 @@ +<ui version="4.0" > + <class>FilesPage</class> + <widget class="QWidget" name="FilesPage" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>417</width> + <height>242</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" colspan="2" > + <widget class="QLabel" name="fileLabel" > + <property name="text" > + <string>Files:</string> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + <item rowspan="3" row="1" column="0" > + <widget class="QListWidget" name="fileListWidget" /> + </item> + <item row="1" column="1" > + <widget class="QPushButton" name="removeButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Remove</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QPushButton" name="removeAllButton" > + <property name="text" > + <string>Remove All</string> + </property> + </widget> + </item> + <item row="3" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>75</width> + <height>16</height> + </size> + </property> + </spacer> + </item> + <item row="4" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>31</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/filternamedialog.ui b/tests/auto/uiloader/baseline/filternamedialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..be6f17dfb6d09e67ea746d78b7d97ca72f7f5854 --- /dev/null +++ b/tests/auto/uiloader/baseline/filternamedialog.ui @@ -0,0 +1,67 @@ +<ui version="4.0" > + <class>FilterNameDialogClass</class> + <widget class="QDialog" name="FilterNameDialogClass" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>312</width> + <height>95</height> + </rect> + </property> + <property name="windowTitle" > + <string>FilterNameDialog</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Filter Name:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <widget class="QLineEdit" name="lineEdit" /> + </item> + <item row="1" column="0" colspan="3" > + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11" /> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/filterpage.ui b/tests/auto/uiloader/baseline/filterpage.ui new file mode 100644 index 0000000000000000000000000000000000000000..7cda3d9bedde67cbc760113b33d5f3b93206d285 --- /dev/null +++ b/tests/auto/uiloader/baseline/filterpage.ui @@ -0,0 +1,125 @@ +<ui version="4.0" > + <class>FilterPage</class> + <widget class="QWidget" name="FilterPage" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>419</width> + <height>243</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QGridLayout" > + <item row="1" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Filter attributes for current documentation (comma separated list):</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLineEdit" name="filterLineEdit" /> + </item> + <item row="4" column="0" > + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Custom Filters</string> + </property> + <layout class="QGridLayout" > + <item rowspan="3" row="0" column="0" > + <widget class="QTreeWidget" name="customFilterWidget" > + <property name="columnCount" > + <number>2</number> + </property> + <column> + <property name="text" > + <string>1</string> + </property> + </column> + <column> + <property name="text" > + <string>2</string> + </property> + </column> + </widget> + </item> + <item row="0" column="1" > + <widget class="QPushButton" name="addButton" > + <property name="text" > + <string>Add</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QPushButton" name="removeButton" > + <property name="text" > + <string>Remove</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item row="0" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="5" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/finddialog.ui b/tests/auto/uiloader/baseline/finddialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..913a868ad10161e7bc2a03616e7b5b7d43ada879 --- /dev/null +++ b/tests/auto/uiloader/baseline/finddialog.ui @@ -0,0 +1,265 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>FindDialog</class> + <widget class="QDialog" name="FindDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>414</width> + <height>170</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Maximum" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Find</string> + </property> + <property name="whatsThis" > + <string>This window allows you to search for some text in the translation source file.</string> + </property> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>11</number> + </property> + <item> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QLabel" name="findWhat" > + <property name="text" > + <string>&Find what:</string> + </property> + <property name="buddy" > + <cstring>led</cstring> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="led" > + <property name="whatsThis" > + <string>Type in the text to search for.</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Options</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" > + <widget class="QCheckBox" name="sourceText" > + <property name="whatsThis" > + <string>Source texts are searched when checked.</string> + </property> + <property name="text" > + <string>&Source texts</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QCheckBox" name="translations" > + <property name="whatsThis" > + <string>Translations are searched when checked.</string> + </property> + <property name="text" > + <string>&Translations</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QCheckBox" name="matchCase" > + <property name="whatsThis" > + <string>Texts such as 'TeX' and 'tex' are considered as different when checked.</string> + </property> + <property name="text" > + <string>&Match case</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QCheckBox" name="comments" > + <property name="whatsThis" > + <string>Comments and contexts are searched when checked.</string> + </property> + <property name="text" > + <string>&Comments</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QCheckBox" name="ignoreAccelerators" > + <property name="text" > + <string>Ignore &accelerators</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QPushButton" name="findNxt" > + <property name="whatsThis" > + <string>Click here to find the next occurrence of the text you typed in.</string> + </property> + <property name="text" > + <string>Find Next</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + <property name="flat" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancel" > + <property name="whatsThis" > + <string>Click here to close this window.</string> + </property> + <property name="text" > + <string>Cancel</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>51</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11" /> + <tabstops> + <tabstop>led</tabstop> + <tabstop>findNxt</tabstop> + <tabstop>cancel</tabstop> + <tabstop>comments</tabstop> + <tabstop>sourceText</tabstop> + <tabstop>translations</tabstop> + <tabstop>matchCase</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>cancel</sender> + <signal>clicked()</signal> + <receiver>FindDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>372</x> + <y>58</y> + </hint> + <hint type="destinationlabel" > + <x>373</x> + <y>109</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/formwindowsettings.ui b/tests/auto/uiloader/baseline/formwindowsettings.ui new file mode 100644 index 0000000000000000000000000000000000000000..fea18fe873f7c1694198f7a4733fdd3716d851ed --- /dev/null +++ b/tests/auto/uiloader/baseline/formwindowsettings.ui @@ -0,0 +1,311 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>FormWindowSettings</class> + <widget class="QDialog" name="FormWindowSettings" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>433</width> + <height>465</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form Settings</string> + </property> + <layout class="QGridLayout" > + <item row="6" column="0" colspan="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="5" column="0" colspan="2" > + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="layoutDefaultGroupBox" > + <property name="title" > + <string>Layout &Default</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>&Spacing:</string> + </property> + <property name="buddy" > + <cstring>defaultSpacingSpinBox</cstring> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>&Margin:</string> + </property> + <property name="buddy" > + <cstring>defaultMarginSpinBox</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QSpinBox" name="defaultSpacingSpinBox" /> + </item> + <item row="0" column="1" > + <widget class="QSpinBox" name="defaultMarginSpinBox" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="layoutFunctionGroupBox" > + <property name="title" > + <string>&Layout Function</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="1" > + <widget class="QLineEdit" name="spacingFunctionLineEdit" /> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="marginFunctionLineEdit" /> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Ma&rgin:</string> + </property> + <property name="buddy" > + <cstring>marginFunctionLineEdit</cstring> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_3_2" > + <property name="text" > + <string>Spa&cing:</string> + </property> + <property name="buddy" > + <cstring>spacingFunctionLineEdit</cstring> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item row="0" column="0" colspan="2" > + <widget class="QGroupBox" name="pixmapFunctionGroupBox_2" > + <property name="title" > + <string>&Author</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLineEdit" name="authorLineEdit" /> + </item> + </layout> + </widget> + </item> + <item rowspan="2" row="3" column="0" > + <widget class="QGroupBox" name="includeHintsGroupBox" > + <property name="title" > + <string>&Include Hints</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTextEdit" name="includeHintsTextEdit" /> + </item> + </layout> + </widget> + </item> + <item row="3" column="1" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="pixmapFunctionGroupBox" > + <property name="title" > + <string>&Pixmap Function</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLineEdit" name="pixmapFunctionLineEdit" /> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item row="4" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>111</width> + <height>115</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0" colspan="2" > + <widget class="qdesigner_internal::GridPanel" name="gridPanel" > + <property name="title" > + <string>Grid</string> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>qdesigner_internal::GridPanel</class> + <extends>QGroupBox</extends> + <header location="global" >gridpanel_p.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>authorLineEdit</tabstop> + <tabstop>defaultMarginSpinBox</tabstop> + <tabstop>defaultSpacingSpinBox</tabstop> + <tabstop>marginFunctionLineEdit</tabstop> + <tabstop>spacingFunctionLineEdit</tabstop> + <tabstop>pixmapFunctionLineEdit</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>FormWindowSettings</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>294</x> + <y>442</y> + </hint> + <hint type="destinationlabel" > + <x>150</x> + <y>459</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>FormWindowSettings</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>373</x> + <y>444</y> + </hint> + <hint type="destinationlabel" > + <x>357</x> + <y>461</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/generalpage.ui b/tests/auto/uiloader/baseline/generalpage.ui new file mode 100644 index 0000000000000000000000000000000000000000..9c2babb0ae6dc049a174474034329fdb1653c6ad --- /dev/null +++ b/tests/auto/uiloader/baseline/generalpage.ui @@ -0,0 +1,69 @@ +<ui version="4.0" > + <class>GeneralPage</class> + <widget class="QWidget" name="GeneralPage" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>417</width> + <height>243</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QGridLayout" > + <item row="1" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Namespace:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="namespaceLineEdit" /> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Virtual Folder:</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="folderLineEdit" /> + </item> + <item row="0" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/gridpanel.ui b/tests/auto/uiloader/baseline/gridpanel.ui new file mode 100644 index 0000000000000000000000000000000000000000..adfdd3684a59b2e6853e2533c3c7814ac7c154fe --- /dev/null +++ b/tests/auto/uiloader/baseline/gridpanel.ui @@ -0,0 +1,144 @@ +<ui version="4.0" > + <class>qdesigner_internal::GridPanel</class> + <widget class="QWidget" name="qdesigner_internal::GridPanel" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>393</width> + <height>110</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QGroupBox" name="m_gridGroupBox" > + <property name="title" > + <string>Grid</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" > + <widget class="QCheckBox" name="m_visibleCheckBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Visible</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Grid &X</string> + </property> + <property name="buddy" > + <cstring>m_deltaXSpinBox</cstring> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QSpinBox" name="m_deltaXSpinBox" > + <property name="minimum" > + <number>2</number> + </property> + <property name="maximum" > + <number>100</number> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QCheckBox" name="m_snapXCheckBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Snap</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" > + <item> + <widget class="QPushButton" name="m_resetButton" > + <property name="text" > + <string>Reset</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="1" column="1" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Grid &Y</string> + </property> + <property name="buddy" > + <cstring>m_deltaYSpinBox</cstring> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QSpinBox" name="m_deltaYSpinBox" > + <property name="minimum" > + <number>2</number> + </property> + <property name="maximum" > + <number>100</number> + </property> + </widget> + </item> + <item row="1" column="3" > + <widget class="QCheckBox" name="m_snapYCheckBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="MinimumExpanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Snap</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/helpdialog.ui b/tests/auto/uiloader/baseline/helpdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..133f3d2af44b2e1ba932190316835a0b4a35b49c --- /dev/null +++ b/tests/auto/uiloader/baseline/helpdialog.ui @@ -0,0 +1,404 @@ +<ui version="4.0" > + <author></author> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <exportmacro></exportmacro> + <class>HelpDialog</class> + <widget class="QWidget" name="HelpDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>274</width> + <height>417</height> + </rect> + </property> + <property name="windowTitle" > + <string>Help</string> + </property> + <property name="whatsThis" > + <string><b>Help</b><p>Choose the topic you want help on from the contents list, or search the index for keywords.</p></string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTabWidget" name="tabWidget" > + <property name="whatsThis" > + <string>Displays help topics organized by category, index or bookmarks. Another tab inherits the full text search.</string> + </property> + <widget class="QWidget" name="contentPage" > + <attribute name="title" > + <string>Con&tents</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>5</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTreeWidget" name="listContents" > + <property name="contextMenuPolicy" > + <enum>Qt::CustomContextMenu</enum> + </property> + <property name="whatsThis" > + <string><b>Help topics organized by category.</b><p>Double-click an item to see the topics in that category. To view a topic, just double-click it.</p></string> + </property> + <property name="rootIsDecorated" > + <bool>true</bool> + </property> + <property name="uniformRowHeights" > + <bool>true</bool> + </property> + <column> + <property name="text" > + <string>column 1</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="indexPage" > + <attribute name="title" > + <string>&Index</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>5</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="TextLabel1" > + <property name="text" > + <string>&Look For:</string> + </property> + <property name="buddy" > + <cstring>editIndex</cstring> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="editIndex" > + <property name="toolTip" > + <string>Enter keyword</string> + </property> + <property name="whatsThis" > + <string><b>Enter a keyword.</b><p>The list will select an item that matches the entered string best.</p></string> + </property> + </widget> + </item> + <item> + <widget class="QListView" name="listIndex" > + <property name="contextMenuPolicy" > + <enum>Qt::CustomContextMenu</enum> + </property> + <property name="whatsThis" > + <string><b>List of available help topics.</b><p>Double-click on an item to open its help page. If more than one is found, you must specify which page you want.</p></string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="bookmarkPage" > + <attribute name="title" > + <string>&Bookmarks</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>5</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTreeWidget" name="listBookmarks" > + <property name="contextMenuPolicy" > + <enum>Qt::CustomContextMenu</enum> + </property> + <property name="whatsThis" > + <string>Displays the list of bookmarks.</string> + </property> + <property name="uniformRowHeights" > + <bool>true</bool> + </property> + <column> + <property name="text" > + <string>column 1</string> + </property> + </column> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="buttonAdd" > + <property name="toolTip" > + <string>Add new bookmark</string> + </property> + <property name="whatsThis" > + <string>Add the currently displayed page as a new bookmark.</string> + </property> + <property name="text" > + <string>&New</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="buttonRemove" > + <property name="toolTip" > + <string>Delete bookmark</string> + </property> + <property name="whatsThis" > + <string>Delete the selected bookmark.</string> + </property> + <property name="text" > + <string>&Delete</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QWidget" name="searchPage" > + <attribute name="title" > + <string>&Search</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>5</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="3" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="TextLabel1_2" > + <property name="text" > + <string>Searching f&or:</string> + </property> + <property name="buddy" > + <cstring>termsEdit</cstring> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLineEdit" name="termsEdit" > + <property name="toolTip" > + <string>Enter searchword(s).</string> + </property> + <property name="whatsThis" > + <string><b>Enter search word(s).</b><p>Enter here the word(s) you are looking for. The words may contain wildcards (*). For a sequence of words quote them.</p></string> + </property> + </widget> + </item> + <item row="5" column="0" > + <widget class="QListWidget" name="resultBox" > + <property name="contextMenuPolicy" > + <enum>Qt::CustomContextMenu</enum> + </property> + <property name="whatsThis" > + <string><b>Found documents</b><p>This list contains all found documents from the last search. The documents are ordered, i.e. the first document has the most matches.</p></string> + </property> + </widget> + </item> + <item row="4" column="0" > + <widget class="QLabel" name="TextLabel2" > + <property name="text" > + <string>Found &Documents:</string> + </property> + <property name="buddy" > + <cstring>resultBox</cstring> + </property> + </widget> + </item> + <item row="2" column="0" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QPushButton" name="helpButton" > + <property name="toolTip" > + <string>Display the help page.</string> + </property> + <property name="whatsThis" > + <string>Display the help page for the full text search.</string> + </property> + <property name="text" > + <string>He&lp</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>61</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="searchButton" > + <property name="toolTip" > + <string>Start searching.</string> + </property> + <property name="whatsThis" > + <string>Pressing this button starts the search.</string> + </property> + <property name="text" > + <string>&Search</string> + </property> + <property name="enabled" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </widget> + </item> + <item> + <widget class="QFrame" name="framePrepare" > + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>3</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="labelPrepare" > + <property name="text" > + <string>Preparing...</string> + </property> + </widget> + </item> + <item> + <widget class="QProgressBar" name="progressPrepare" /> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <tabstops> + <tabstop>tabWidget</tabstop> + <tabstop>listContents</tabstop> + <tabstop>editIndex</tabstop> + <tabstop>listIndex</tabstop> + <tabstop>listBookmarks</tabstop> + <tabstop>buttonAdd</tabstop> + <tabstop>buttonRemove</tabstop> + <tabstop>termsEdit</tabstop> + <tabstop>searchButton</tabstop> + <tabstop>helpButton</tabstop> + <tabstop>resultBox</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/history.ui b/tests/auto/uiloader/baseline/history.ui new file mode 100644 index 0000000000000000000000000000000000000000..0944940e7401fe4565e716820187334f5e856928 --- /dev/null +++ b/tests/auto/uiloader/baseline/history.ui @@ -0,0 +1,106 @@ +<ui version="4.0" > + <class>HistoryDialog</class> + <widget class="QDialog" name="HistoryDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>758</width> + <height>450</height> + </rect> + </property> + <property name="windowTitle" > + <string>History</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>252</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="1" > + <widget class="SearchLineEdit" name="search" /> + </item> + <item row="1" column="0" colspan="2" > + <widget class="EditTreeView" name="tree" /> + </item> + <item row="2" column="0" colspan="2" > + <layout class="QHBoxLayout" > + <item> + <widget class="QPushButton" name="removeButton" > + <property name="text" > + <string>&Remove</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="removeAllButton" > + <property name="text" > + <string>Remove &All</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="standardButtons" > + <set>QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>SearchLineEdit</class> + <extends>QLineEdit</extends> + <header>searchlineedit.h</header> + </customwidget> + <customwidget> + <class>EditTreeView</class> + <extends>QTreeView</extends> + <header>edittreeview.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>HistoryDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>472</x> + <y>329</y> + </hint> + <hint type="destinationlabel" > + <x>461</x> + <y>356</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/identifierpage.ui b/tests/auto/uiloader/baseline/identifierpage.ui new file mode 100644 index 0000000000000000000000000000000000000000..cd0df7563892ba16e4d44a3ec2886b2161a19c75 --- /dev/null +++ b/tests/auto/uiloader/baseline/identifierpage.ui @@ -0,0 +1,132 @@ +<ui version="4.0" > + <class>IdentifierPage</class> + <widget class="QWidget" name="IdentifierPage" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>417</width> + <height>242</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0" colspan="3" > + <widget class="QCheckBox" name="identifierCheckBox" > + <property name="text" > + <string>Create identifiers</string> + </property> + </widget> + </item> + <item row="1" column="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>161</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>30</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="1" > + <widget class="QRadioButton" name="globalButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Global prefix:</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QLineEdit" name="prefixLineEdit" > + <property name="enabled" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="3" column="1" colspan="2" > + <widget class="QRadioButton" name="fileNameButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Inherit prefix from file names</string> + </property> + </widget> + </item> + <item row="4" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>31</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>globalButton</sender> + <signal>toggled(bool)</signal> + <receiver>prefixLineEdit</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>122</x> + <y>72</y> + </hint> + <hint type="destinationlabel" > + <x>161</x> + <y>71</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/imagedialog.ui b/tests/auto/uiloader/baseline/imagedialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..1c5e546f2c09034e4130ba8e92021abc6a5b6af6 --- /dev/null +++ b/tests/auto/uiloader/baseline/imagedialog.ui @@ -0,0 +1,389 @@ +<ui version="4.0" > + <comment></comment> + <class>ImageDialog</class> + <widget class="QDialog" > + <property name="objectName" > + <string notr="true" >ImageDialog</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>320</width> + <height>180</height> + </rect> + </property> + <property name="windowTitle" > + <string>Create Image</string> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QGridLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" > + <widget class="QLabel" name="widthLabel" > + <property name="objectName" > + <string notr="true" >widthLabel</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>27</y> + <width>67</width> + <height>22</height> + </rect> + </property> + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + <property name="text" > + <string>Width:</string> + </property> + <property name="textFormat" > + <enum>Qt::AutoText</enum> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="heightLabel" > + <property name="objectName" > + <string notr="true" >heightLabel</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>55</y> + <width>67</width> + <height>22</height> + </rect> + </property> + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + <property name="text" > + <string>Height:</string> + </property> + <property name="textFormat" > + <enum>Qt::AutoText</enum> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QComboBox" name="colorDepthCombo" > + <property name="objectName" > + <string notr="true" >colorDepthCombo</string> + </property> + <property name="geometry" > + <rect> + <x>74</x> + <y>83</y> + <width>227</width> + <height>22</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="insertPolicy" > + <enum>QComboBox::InsertAtBottom</enum> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="nameLineEdit" > + <property name="objectName" > + <string notr="true" >nameLineEdit</string> + </property> + <property name="geometry" > + <rect> + <x>74</x> + <y>83</y> + <width>227</width> + <height>22</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Untitled image</string> + </property> + <property name="echoMode" > + <enum>QLineEdit::Normal</enum> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QSpinBox" name="spinBox" > + <property name="objectName" > + <string notr="true" >spinBox</string> + </property> + <property name="geometry" > + <rect> + <x>74</x> + <y>1</y> + <width>227</width> + <height>20</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="buttonSymbols" > + <enum>QAbstractSpinBox::UpDownArrows</enum> + </property> + <property name="value" > + <number>32</number> + </property> + <property name="maximum" > + <number>1024</number> + </property> + <property name="minimum" > + <number>1</number> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QSpinBox" name="spinBox_2" > + <property name="objectName" > + <string notr="true" >spinBox_2</string> + </property> + <property name="geometry" > + <rect> + <x>74</x> + <y>27</y> + <width>227</width> + <height>22</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="buttonSymbols" > + <enum>QAbstractSpinBox::UpDownArrows</enum> + </property> + <property name="value" > + <number>32</number> + </property> + <property name="maximum" > + <number>1024</number> + </property> + <property name="minimum" > + <number>1</number> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="nameLabel" > + <property name="objectName" > + <string notr="true" >nameLabel</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>1</y> + <width>67</width> + <height>20</height> + </rect> + </property> + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + <property name="text" > + <string>Name:</string> + </property> + <property name="textFormat" > + <enum>Qt::AutoText</enum> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="colorDepthLabel" > + <property name="objectName" > + <string notr="true" >colorDepthLabel</string> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>83</y> + <width>67</width> + <height>22</height> + </rect> + </property> + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + <property name="text" > + <string>Color depth:</string> + </property> + <property name="textFormat" > + <enum>Qt::AutoText</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <spacer> + <property name="objectName" > + <string notr="true" /> + </property> + <property name="geometry" > + <rect> + <x>9</x> + <y>121</y> + <width>302</width> + <height>18</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + </spacer> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" /> + </property> + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="objectName" > + <string notr="true" /> + </property> + <property name="geometry" > + <rect> + <x>1</x> + <y>1</y> + <width>128</width> + <height>24</height> + </rect> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="okButton" > + <property name="objectName" > + <string notr="true" >okButton</string> + </property> + <property name="geometry" > + <rect> + <x>135</x> + <y>1</y> + <width>80</width> + <height>24</height> + </rect> + </property> + <property name="text" > + <string>OK</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancelButton" > + <property name="objectName" > + <string notr="true" >cancelButton</string> + </property> + <property name="geometry" > + <rect> + <x>221</x> + <y>1</y> + <width>80</width> + <height>24</height> + </rect> + </property> + <property name="text" > + <string>Cancel</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <tabstops> + <tabstop>nameLineEdit</tabstop> + <tabstop>spinBox</tabstop> + <tabstop>spinBox_2</tabstop> + <tabstop>colorDepthCombo</tabstop> + <tabstop>okButton</tabstop> + <tabstop>cancelButton</tabstop> + </tabstops> + <connections> + <connection> + <sender>nameLineEdit</sender> + <signal>returnPressed()</signal> + <receiver>okButton</receiver> + <slot>animateClick()</slot> + <hints> + <hint type="sourcelabel" > + <x>-1</x> + <y>7</y> + </hint> + <hint type="destinationlabel" > + <x>-1</x> + <y>7</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/images/arrow-down.png b/tests/auto/uiloader/baseline/images/arrow-down.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9274f30c627b15bd8bb867ffc7a5180000e3a5 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/arrow-down.png differ diff --git a/tests/auto/uiloader/baseline/images/arrow-up.png b/tests/auto/uiloader/baseline/images/arrow-up.png new file mode 100644 index 0000000000000000000000000000000000000000..758a0d1afda7de0fd57f63f3bc7ff39a554bf377 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/arrow-up.png differ diff --git a/tests/auto/uiloader/baseline/images/borderimage.png b/tests/auto/uiloader/baseline/images/borderimage.png new file mode 100644 index 0000000000000000000000000000000000000000..199fc890f41f24d29cae671c7fd4031e672fabd8 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/borderimage.png differ diff --git a/tests/auto/uiloader/baseline/images/checkbox_checked.png b/tests/auto/uiloader/baseline/images/checkbox_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..cbf06f6513d6b11721290c3f0f3be5bd2d157e84 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_checked.png differ diff --git a/tests/auto/uiloader/baseline/images/checkbox_checked_hover.png b/tests/auto/uiloader/baseline/images/checkbox_checked_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..fb4d4d3fdb8317007df5f7daef85d2047cc13b7f Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_checked_hover.png differ diff --git a/tests/auto/uiloader/baseline/images/checkbox_checked_pressed.png b/tests/auto/uiloader/baseline/images/checkbox_checked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..852fcc0306cb561fcb1fea023a0888e9757283d6 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_checked_pressed.png differ diff --git a/tests/auto/uiloader/baseline/images/checkbox_unchecked.png b/tests/auto/uiloader/baseline/images/checkbox_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5465582a9a2e6a85adbe07a4a2da5e80b8b017 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_unchecked.png differ diff --git a/tests/auto/uiloader/baseline/images/checkbox_unchecked_hover.png b/tests/auto/uiloader/baseline/images/checkbox_unchecked_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..687364497ef12ee7a723c753e4b3e548856c00c6 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_unchecked_hover.png differ diff --git a/tests/auto/uiloader/baseline/images/checkbox_unchecked_pressed.png b/tests/auto/uiloader/baseline/images/checkbox_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..6a768c44de657b0ad4c15e21b1eb234b22725107 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/checkbox_unchecked_pressed.png differ diff --git a/tests/auto/uiloader/baseline/images/down_arrow.png b/tests/auto/uiloader/baseline/images/down_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..85004aeaf6bfa305df9bbeb7e56dbf6e42d05ff3 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/down_arrow.png differ diff --git a/tests/auto/uiloader/baseline/images/down_arrow_disabled.png b/tests/auto/uiloader/baseline/images/down_arrow_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..d9eefed4c8cb439ee82dd11a3e00387c0d5b0354 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/down_arrow_disabled.png differ diff --git a/tests/auto/uiloader/baseline/images/frame.png b/tests/auto/uiloader/baseline/images/frame.png new file mode 100644 index 0000000000000000000000000000000000000000..05a600502ed0ef7bf2187837006c7221781123e7 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/frame.png differ diff --git a/tests/auto/uiloader/baseline/images/pagefold.png b/tests/auto/uiloader/baseline/images/pagefold.png new file mode 100644 index 0000000000000000000000000000000000000000..69be8f2a38dc9be855f384a26fda391f2e0cf304 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/pagefold.png differ diff --git a/tests/auto/uiloader/baseline/images/pushbutton.png b/tests/auto/uiloader/baseline/images/pushbutton.png new file mode 100644 index 0000000000000000000000000000000000000000..c7529ba02d5d3e1ef193cedda6f5ba0e1b153ef6 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/pushbutton.png differ diff --git a/tests/auto/uiloader/baseline/images/pushbutton_hover.png b/tests/auto/uiloader/baseline/images/pushbutton_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..af0ef9d561221d6ba6501226007ee9482da6046a Binary files /dev/null and b/tests/auto/uiloader/baseline/images/pushbutton_hover.png differ diff --git a/tests/auto/uiloader/baseline/images/pushbutton_pressed.png b/tests/auto/uiloader/baseline/images/pushbutton_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..f7381f752a0cc31032beec357d287efc999b0887 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/pushbutton_pressed.png differ diff --git a/tests/auto/uiloader/baseline/images/radiobutton_checked.png b/tests/auto/uiloader/baseline/images/radiobutton_checked.png new file mode 100644 index 0000000000000000000000000000000000000000..8ab9157578050442b58d511ad791f9ba12d545d1 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_checked.png differ diff --git a/tests/auto/uiloader/baseline/images/radiobutton_checked_hover.png b/tests/auto/uiloader/baseline/images/radiobutton_checked_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..d68cb009a7c087babcda871b7614d2c5a0c38cb8 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_checked_hover.png differ diff --git a/tests/auto/uiloader/baseline/images/radiobutton_checked_pressed.png b/tests/auto/uiloader/baseline/images/radiobutton_checked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cd5a59e4be580940ff6d62a734ae09abd00995 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_checked_pressed.png differ diff --git a/tests/auto/uiloader/baseline/images/radiobutton_unchecked.png b/tests/auto/uiloader/baseline/images/radiobutton_unchecked.png new file mode 100644 index 0000000000000000000000000000000000000000..321a9a1558aaa2923dec91f9b509d5f192f6b482 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_unchecked.png differ diff --git a/tests/auto/uiloader/baseline/images/radiobutton_unchecked_hover.png b/tests/auto/uiloader/baseline/images/radiobutton_unchecked_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..666a3b0bdd4a41fad993b4f8ba9596daec337bfa Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_unchecked_hover.png differ diff --git a/tests/auto/uiloader/baseline/images/radiobutton_unchecked_pressed.png b/tests/auto/uiloader/baseline/images/radiobutton_unchecked_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..c4b0567aa9cfa14324b7be191360d934038370e3 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/radiobutton_unchecked_pressed.png differ diff --git a/tests/auto/uiloader/baseline/images/sizegrip.png b/tests/auto/uiloader/baseline/images/sizegrip.png new file mode 100644 index 0000000000000000000000000000000000000000..350583aaac4aa474ac449eaea2cc7ddd060276b9 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/sizegrip.png differ diff --git a/tests/auto/uiloader/baseline/images/spindown.png b/tests/auto/uiloader/baseline/images/spindown.png new file mode 100644 index 0000000000000000000000000000000000000000..7ff3c6492655ee56e893b89ad5addff4704f9af2 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spindown.png differ diff --git a/tests/auto/uiloader/baseline/images/spindown_hover.png b/tests/auto/uiloader/baseline/images/spindown_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..1486c4dfe46bb0bc904e6a5f620be6c9f5c3fadc Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spindown_hover.png differ diff --git a/tests/auto/uiloader/baseline/images/spindown_off.png b/tests/auto/uiloader/baseline/images/spindown_off.png new file mode 100644 index 0000000000000000000000000000000000000000..a90ab3f03846fef2972fef05be6ba0e5e6c9b7a0 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spindown_off.png differ diff --git a/tests/auto/uiloader/baseline/images/spindown_pressed.png b/tests/auto/uiloader/baseline/images/spindown_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..f6271cbde2135bbe3dfb33cd4fdae4a480a7b685 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spindown_pressed.png differ diff --git a/tests/auto/uiloader/baseline/images/spinup.png b/tests/auto/uiloader/baseline/images/spinup.png new file mode 100644 index 0000000000000000000000000000000000000000..1069dd00dfcbc95e1a70adcab926d1f12a13604f Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spinup.png differ diff --git a/tests/auto/uiloader/baseline/images/spinup_hover.png b/tests/auto/uiloader/baseline/images/spinup_hover.png new file mode 100644 index 0000000000000000000000000000000000000000..884c8d77c51b48373766795edb280ae37c8ed65a Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spinup_hover.png differ diff --git a/tests/auto/uiloader/baseline/images/spinup_off.png b/tests/auto/uiloader/baseline/images/spinup_off.png new file mode 100644 index 0000000000000000000000000000000000000000..02dad1fb2923afe80b92931537b72a7c1cc8ace5 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spinup_off.png differ diff --git a/tests/auto/uiloader/baseline/images/spinup_pressed.png b/tests/auto/uiloader/baseline/images/spinup_pressed.png new file mode 100644 index 0000000000000000000000000000000000000000..b1843e2a1fad785e51521d2aa661d3d8c7e5725c Binary files /dev/null and b/tests/auto/uiloader/baseline/images/spinup_pressed.png differ diff --git a/tests/auto/uiloader/baseline/images/splitter_horizontal.png b/tests/auto/uiloader/baseline/images/splitter_horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..66107cf548fee7db8c1d9243513eb631b3114663 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/splitter_horizontal.png differ diff --git a/tests/auto/uiloader/baseline/images/splitter_vertical.png b/tests/auto/uiloader/baseline/images/splitter_vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..f907c0b5769aeb11aba2d20fbed2f36539c93377 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/splitter_vertical.png differ diff --git a/tests/auto/uiloader/baseline/images/up_arrow.png b/tests/auto/uiloader/baseline/images/up_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..e7f7ddb3a63d964c4daee258ac00f373e79229d6 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/up_arrow.png differ diff --git a/tests/auto/uiloader/baseline/images/up_arrow_disabled.png b/tests/auto/uiloader/baseline/images/up_arrow_disabled.png new file mode 100644 index 0000000000000000000000000000000000000000..4d2c27770fe82267925cc83eac1f8a3ab51098d5 Binary files /dev/null and b/tests/auto/uiloader/baseline/images/up_arrow_disabled.png differ diff --git a/tests/auto/uiloader/baseline/inputpage.ui b/tests/auto/uiloader/baseline/inputpage.ui new file mode 100644 index 0000000000000000000000000000000000000000..e7cd3a0fadd6179b370ec1140b98039e404393d3 --- /dev/null +++ b/tests/auto/uiloader/baseline/inputpage.ui @@ -0,0 +1,79 @@ +<ui version="4.0" > + <class>InputPage</class> + <widget class="QWidget" name="InputPage" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>417</width> + <height>242</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>File name:</string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>0</number> + </property> + <item> + <widget class="QLineEdit" name="fileLineEdit" /> + </item> + <item> + <widget class="QToolButton" name="browseButton" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>31</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/installdialog.ui b/tests/auto/uiloader/baseline/installdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..21a05da77ec01c183b31a7941f3e6aeb0ee96e0f --- /dev/null +++ b/tests/auto/uiloader/baseline/installdialog.ui @@ -0,0 +1,118 @@ +<ui version="4.0" > + <class>InstallDialog</class> + <widget class="QDialog" name="InstallDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>436</width> + <height>245</height> + </rect> + </property> + <property name="windowTitle" > + <string>Install Documentation</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" colspan="4" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Available Documentation:</string> + </property> + </widget> + </item> + <item rowspan="4" row="1" column="0" colspan="4" > + <widget class="QListWidget" name="listWidget" /> + </item> + <item row="1" column="4" > + <widget class="QPushButton" name="installButton" > + <property name="text" > + <string>Install</string> + </property> + </widget> + </item> + <item row="2" column="4" > + <widget class="QPushButton" name="cancelButton" > + <property name="text" > + <string>Cancel</string> + </property> + </widget> + </item> + <item row="3" column="4" > + <widget class="QPushButton" name="closeButton" > + <property name="text" > + <string>Close</string> + </property> + </widget> + </item> + <item row="4" column="4" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>56</height> + </size> + </property> + </spacer> + </item> + <item row="5" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Installation Path:</string> + </property> + </widget> + </item> + <item row="5" column="1" colspan="2" > + <widget class="QLineEdit" name="pathLineEdit" /> + </item> + <item row="5" column="3" > + <widget class="QToolButton" name="browseButton" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="6" column="0" colspan="5" > + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="7" column="0" colspan="2" > + <widget class="QLabel" name="statusLabel" /> + </item> + <item row="7" column="2" colspan="3" > + <widget class="QProgressBar" name="progressBar" > + <property name="value" > + <number>0</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>closeButton</sender> + <signal>clicked()</signal> + <receiver>InstallDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>330</x> + <y>107</y> + </hint> + <hint type="destinationlabel" > + <x>332</x> + <y>158</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/languagesdialog.ui b/tests/auto/uiloader/baseline/languagesdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..93b490e9edb886fa2e649f96fdfe9bab3e8b59eb --- /dev/null +++ b/tests/auto/uiloader/baseline/languagesdialog.ui @@ -0,0 +1,160 @@ +<ui version="4.0" > + <class>LanguagesDialog</class> + <widget class="QDialog" name="LanguagesDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle" > + <string>Auxiliary Languages</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QTreeWidget" name="languagesList" > + <property name="indentation" > + <number>0</number> + </property> + <column> + <property name="text" > + <string>Locale</string> + </property> + </column> + <column> + <property name="text" > + <string>File</string> + </property> + </column> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QToolButton" name="upButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="toolTip" > + <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Move selected language up</p></body></html></string> + </property> + <property name="text" > + <string>up</string> + </property> + <property name="icon" > + <iconset resource="linguist.qrc" > + <normaloff>:/images/up.png</normaloff>:/images/up.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="downButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="toolTip" > + <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;">Move selected language down</p></body></html></string> + </property> + <property name="text" > + <string>down</string> + </property> + <property name="icon" > + <iconset resource="linguist.qrc" > + <normaloff>:/images/down.png</normaloff>:/images/down.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="removeButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="toolTip" > + <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Remove selected language</p></body></html></string> + </property> + <property name="text" > + <string>remove</string> + </property> + <property name="icon" > + <iconset resource="linguist.qrc" > + <normaloff>:/images/editdelete.png</normaloff>:/images/editdelete.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="openFileButton" > + <property name="enabled" > + <bool>true</bool> + </property> + <property name="toolTip" > + <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Open auxiliary language files</p></body></html></string> + </property> + <property name="text" > + <string>...</string> + </property> + <property name="icon" > + <iconset resource="linguist.qrc" > + <normaloff>:/images/mac/fileopen.png</normaloff>:/images/mac/fileopen.png</iconset> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>121</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="okButton" > + <property name="text" > + <string>OK</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources> + <include location="linguist.qrc" /> + </resources> + <connections> + <connection> + <sender>okButton</sender> + <signal>clicked()</signal> + <receiver>LanguagesDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>352</x> + <y>39</y> + </hint> + <hint type="destinationlabel" > + <x>233</x> + <y>29</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/listwidgeteditor.ui b/tests/auto/uiloader/baseline/listwidgeteditor.ui new file mode 100644 index 0000000000000000000000000000000000000000..fa7d962bdbbb69dfa578a886b636258d089bcd4f --- /dev/null +++ b/tests/auto/uiloader/baseline/listwidgeteditor.ui @@ -0,0 +1,226 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>qdesigner_internal::ListWidgetEditor</class> + <widget class="QDialog" name="qdesigner_internal::ListWidgetEditor" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>223</width> + <height>245</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>9</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Items List</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QListWidget" name="listWidget" > + <property name="toolTip" > + <string>Items List</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <widget class="QToolButton" name="newItemButton" > + <property name="toolTip" > + <string>New Item</string> + </property> + <property name="text" > + <string>&New</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="deleteItemButton" > + <property name="toolTip" > + <string>Delete Item</string> + </property> + <property name="text" > + <string>&Delete</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>16</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="moveItemUpButton" > + <property name="toolTip" > + <string>Move Item Up</string> + </property> + <property name="text" > + <string>U</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="moveItemDownButton" > + <property name="toolTip" > + <string>Move Item Down</string> + </property> + <property name="text" > + <string>D</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Icon</string> + </property> + </widget> + </item> + <item> + <widget class="qdesigner_internal::IconSelector" native="1" name="itemIconSelector" /> + </item> + <item> + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>108</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + <zorder>buttonBox</zorder> + <zorder>groupBox</zorder> + </widget> + <customwidgets> + <customwidget> + <class>qdesigner_internal::IconSelector</class> + <extends>QWidget</extends> + <header>iconselector_p.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>listWidget</tabstop> + <tabstop>newItemButton</tabstop> + <tabstop>deleteItemButton</tabstop> + <tabstop>moveItemUpButton</tabstop> + <tabstop>moveItemDownButton</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>qdesigner_internal::ListWidgetEditor</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>140</x> + <y>291</y> + </hint> + <hint type="destinationlabel" > + <x>73</x> + <y>301</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>qdesigner_internal::ListWidgetEditor</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>230</x> + <y>289</y> + </hint> + <hint type="destinationlabel" > + <x>253</x> + <y>304</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/mainwindow.ui b/tests/auto/uiloader/baseline/mainwindow.ui new file mode 100644 index 0000000000000000000000000000000000000000..f6eda4fdd6a56797b89dc394767d9a9de33e0146 --- /dev/null +++ b/tests/auto/uiloader/baseline/mainwindow.ui @@ -0,0 +1,502 @@ +<ui version="4.0" > + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>829</width> + <height>813</height> + </rect> + </property> + <property name="windowTitle" > + <string>MakeQPF</string> + </property> + <widget class="QWidget" name="centralwidget" > + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Font Properties</string> + </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Family:</string> + </property> + </widget> + </item> + <item> + <widget class="QFontComboBox" name="fontComboBox" /> + </item> + <item> + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Pixel Size:</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="pixelSize" > + <property name="minimum" > + <number>1</number> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_7" > + <property name="text" > + <string>Weight:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="weightCombo" /> + </item> + <item> + <widget class="QCheckBox" name="italic" > + <property name="text" > + <string>Italic</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2" > + <property name="title" > + <string>Glyph Coverage</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QRadioButton" name="chooseFromCodePoints" > + <property name="text" > + <string>Choose from Unicode Codepoints:</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QListWidget" name="characterRangeView" /> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QPushButton" name="selectAll" > + <property name="text" > + <string>Select &All</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="deselectAll" > + <property name="text" > + <string>&Deselect All</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="invertSelection" > + <property name="text" > + <string>&Invert Selection</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </item> + <item> + <widget class="QRadioButton" name="chooseFromSampleFile" > + <property name="text" > + <string>Choose from Sample Text File (UTF-8 Encoded):</string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label_5" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Path:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="sampleFile" > + <property name="enabled" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="browseSampleFile" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>Browse...</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="charCount" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>TextLabel</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_3" > + <property name="title" > + <string>Preview</string> + </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLineEdit" name="preview" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_4" > + <property name="title" > + <string>Output Options</string> + </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Path:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="path" /> + </item> + <item> + <widget class="QPushButton" name="browsePath" > + <property name="text" > + <string>Browse...</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Filename:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="fileName" > + <property name="enabled" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QPushButton" name="generate" > + <property name="text" > + <string>Generate Pre-Rendered Font...</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>829</width> + <height>29</height> + </rect> + </property> + <widget class="QMenu" name="menuFile" > + <property name="title" > + <string>File</string> + </property> + <addaction name="actionAdd_Custom_Font" /> + <addaction name="separator" /> + <addaction name="action_Exit" /> + </widget> + <addaction name="menuFile" /> + </widget> + <widget class="QStatusBar" name="statusbar" /> + <action name="actionAdd_Custom_Font" > + <property name="text" > + <string>&Add Custom Font...</string> + </property> + </action> + <action name="action_Exit" > + <property name="text" > + <string>&Exit</string> + </property> + </action> + </widget> + <resources/> + <connections> + <connection> + <sender>action_Exit</sender> + <signal>triggered()</signal> + <receiver>MainWindow</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel" > + <x>-1</x> + <y>-1</y> + </hint> + <hint type="destinationlabel" > + <x>383</x> + <y>215</y> + </hint> + </hints> + </connection> + <connection> + <sender>chooseFromCodePoints</sender> + <signal>toggled(bool)</signal> + <receiver>characterRangeView</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>183</x> + <y>144</y> + </hint> + <hint type="destinationlabel" > + <x>146</x> + <y>295</y> + </hint> + </hints> + </connection> + <connection> + <sender>chooseFromCodePoints</sender> + <signal>toggled(bool)</signal> + <receiver>selectAll</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>236</x> + <y>146</y> + </hint> + <hint type="destinationlabel" > + <x>46</x> + <y>508</y> + </hint> + </hints> + </connection> + <connection> + <sender>chooseFromCodePoints</sender> + <signal>toggled(bool)</signal> + <receiver>deselectAll</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>280</x> + <y>147</y> + </hint> + <hint type="destinationlabel" > + <x>158</x> + <y>502</y> + </hint> + </hints> + </connection> + <connection> + <sender>chooseFromCodePoints</sender> + <signal>toggled(bool)</signal> + <receiver>invertSelection</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>364</x> + <y>143</y> + </hint> + <hint type="destinationlabel" > + <x>281</x> + <y>509</y> + </hint> + </hints> + </connection> + <connection> + <sender>chooseFromSampleFile</sender> + <signal>toggled(bool)</signal> + <receiver>sampleFile</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>134</x> + <y>544</y> + </hint> + <hint type="destinationlabel" > + <x>64</x> + <y>569</y> + </hint> + </hints> + </connection> + <connection> + <sender>chooseFromSampleFile</sender> + <signal>toggled(bool)</signal> + <receiver>browseSampleFile</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>79</x> + <y>545</y> + </hint> + <hint type="destinationlabel" > + <x>710</x> + <y>582</y> + </hint> + </hints> + </connection> + <connection> + <sender>chooseFromSampleFile</sender> + <signal>toggled(bool)</signal> + <receiver>charCount</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>274</x> + <y>544</y> + </hint> + <hint type="destinationlabel" > + <x>790</x> + <y>569</y> + </hint> + </hints> + </connection> + <connection> + <sender>chooseFromSampleFile</sender> + <signal>toggled(bool)</signal> + <receiver>label_5</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>112</x> + <y>541</y> + </hint> + <hint type="destinationlabel" > + <x>37</x> + <y>579</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/mainwindowbase.ui b/tests/auto/uiloader/baseline/mainwindowbase.ui new file mode 100644 index 0000000000000000000000000000000000000000..27fbdc96836cff75a1460fc74f06825117ed9691 --- /dev/null +++ b/tests/auto/uiloader/baseline/mainwindowbase.ui @@ -0,0 +1,1214 @@ +<ui version="4.0" > + <author></author> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <exportmacro></exportmacro> + <class>MainWindowBase</class> + <widget class="Q3MainWindow" name="MainWindowBase" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>724</width> + <height>615</height> + </rect> + </property> + <property name="windowTitle" > + <string>Qt Configuration</string> + </property> + <widget class="QWidget" name="widget" > + <property name="geometry" > + <rect> + <x>0</x> + <y>28</y> + <width>724</width> + <height>587</height> + </rect> + </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QTextEdit" name="helpview" > + <property name="minimumSize" > + <size> + <width>200</width> + <height>0</height> + </size> + </property> + <property name="readOnly" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QTabWidget" name="TabWidget3" > + <widget class="QWidget" name="tab1" > + <attribute name="title" > + <string>Appearance</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>4</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QGroupBox" name="GroupBox40" > + <property name="title" > + <string>GUI Style</string> + </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QLabel" name="gstylebuddy" > + <property name="text" > + <string>Select GUI &Style:</string> + </property> + <property name="buddy" > + <cstring>gstylecombo</cstring> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="gstylecombo" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupAutoPalette" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>4</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Build Palette</string> + </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QLabel" name="labelMainColor" > + <property name="text" > + <string>&3-D Effects:</string> + </property> + <property name="buddy" > + <cstring>buttonMainColor</cstring> + </property> + </widget> + </item> + <item> + <widget class="ColorButton" name="buttonMainColor" /> + </item> + <item> + <widget class="QLabel" name="labelMainColor2" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>50</width> + <height>0</height> + </size> + </property> + <property name="lineWidth" > + <number>1</number> + </property> + <property name="midLineWidth" > + <number>0</number> + </property> + <property name="text" > + <string>Window Back&ground:</string> + </property> + <property name="alignment" > + <set>Qt::AlignVCenter</set> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="buddy" > + <cstring>buttonMainColor2</cstring> + </property> + </widget> + </item> + <item> + <widget class="ColorButton" name="buttonMainColor2" /> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>70</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="btnAdvanced" > + <property name="text" > + <string>&Tune Palette...</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="GroupBox126" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Preview</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="TextLabel1" > + <property name="text" > + <string>Select &Palette:</string> + </property> + <property name="buddy" > + <cstring>paletteCombo</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="paletteCombo" > + <item> + <property name="text" > + <string>Active Palette</string> + </property> + </item> + <item> + <property name="text" > + <string>Inactive Palette</string> + </property> + </item> + <item> + <property name="text" > + <string>Disabled Palette</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0" colspan="2" > + <widget class="PreviewFrame" name="previewFrame" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>410</width> + <height>260</height> + </size> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab2" > + <attribute name="title" > + <string>Fonts</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QGroupBox" name="GroupBox1" > + <property name="title" > + <string>Default Font</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item row="1" column="1" > + <widget class="QComboBox" name="stylecombo" > + <property name="autoCompletion" > + <bool>true</bool> + </property> + <property name="duplicatesEnabled" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="familycombo" > + <property name="autoCompletion" > + <bool>true</bool> + </property> + <property name="duplicatesEnabled" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QComboBox" name="psizecombo" > + <property name="editable" > + <bool>true</bool> + </property> + <property name="autoCompletion" > + <bool>true</bool> + </property> + <property name="duplicatesEnabled" > + <bool>false</bool> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="stylebuddy" > + <property name="text" > + <string>&Style:</string> + </property> + <property name="buddy" > + <cstring>stylecombo</cstring> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="psizebuddy" > + <property name="text" > + <string>&Point Size:</string> + </property> + <property name="buddy" > + <cstring>psizecombo</cstring> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="familybuddy" > + <property name="text" > + <string>F&amily:</string> + </property> + <property name="buddy" > + <cstring>familycombo</cstring> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2" > + <widget class="QLineEdit" name="samplelineedit" > + <property name="text" > + <string>Sample Text</string> + </property> + <property name="alignment" > + <set>Qt::AlignHCenter</set> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="GroupBox2" > + <property name="title" > + <string>Font Substitution</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QLabel" name="famsubbuddy" > + <property name="text" > + <string>S&elect or Enter a Family:</string> + </property> + <property name="buddy" > + <cstring>familysubcombo</cstring> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="familysubcombo" > + <property name="editable" > + <bool>true</bool> + </property> + <property name="autoCompletion" > + <bool>true</bool> + </property> + <property name="duplicatesEnabled" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="Line1" > + <property name="frameShape" > + <enum>QFrame::HLine</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="TextLabel5" > + <property name="text" > + <string>Current Substitutions:</string> + </property> + </widget> + </item> + <item> + <widget class="Q3ListBox" name="sublistbox" /> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QPushButton" name="PushButton2" > + <property name="text" > + <string>Up</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="PushButton3" > + <property name="text" > + <string>Down</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="PushButton4" > + <property name="text" > + <string>Remove</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="Line2" > + <property name="frameShape" > + <enum>QFrame::HLine</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QLabel" name="choosebuddy" > + <property name="text" > + <string>Select s&ubstitute Family:</string> + </property> + <property name="buddy" > + <cstring>choosesubcombo</cstring> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="choosesubcombo" > + <property name="autoCompletion" > + <bool>true</bool> + </property> + <property name="duplicatesEnabled" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="PushButton1" > + <property name="text" > + <string>Add</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab" > + <attribute name="title" > + <string>Interface</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>7</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QGroupBox" name="GroupBox4" > + <property name="title" > + <string>Feel Settings</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item row="0" column="1" > + <widget class="QSpinBox" name="dcispin" > + <property name="suffix" > + <string> ms</string> + </property> + <property name="maximum" > + <number>10000</number> + </property> + <property name="minimum" > + <number>10</number> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="dcibuddy" > + <property name="text" > + <string>&Double Click Interval:</string> + </property> + <property name="buddy" > + <cstring>dcispin</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QSpinBox" name="cfispin" > + <property name="specialValueText" > + <string>No blinking</string> + </property> + <property name="suffix" > + <string> ms</string> + </property> + <property name="maximum" > + <number>10000</number> + </property> + <property name="minimum" > + <number>9</number> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="cfibuddy" > + <property name="text" > + <string>&Cursor Flash Time:</string> + </property> + <property name="buddy" > + <cstring>cfispin</cstring> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QSpinBox" name="wslspin" > + <property name="suffix" > + <string> lines</string> + </property> + <property name="maximum" > + <number>20</number> + </property> + <property name="minimum" > + <number>1</number> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="wslbuddy" > + <property name="text" > + <string>Wheel &Scroll Lines:</string> + </property> + <property name="buddy" > + <cstring>wslspin</cstring> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2" > + <widget class="QCheckBox" name="resolvelinks" > + <property name="text" > + <string>Resolve symlinks in URLs</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="GroupBox3" > + <property name="title" > + <string>GUI Effects</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QCheckBox" name="effectcheckbox" > + <property name="text" > + <string>&Enable</string> + </property> + <property name="shortcut" > + <string>Alt+E</string> + </property> + </widget> + </item> + <item> + <widget class="Q3Frame" name="effectbase" > + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="meffectbuddy" > + <property name="text" > + <string>&Menu Effect:</string> + </property> + <property name="buddy" > + <cstring>menueffect</cstring> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="ceffectbuddy" > + <property name="text" > + <string>C&omboBox Effect:</string> + </property> + <property name="buddy" > + <cstring>comboeffect</cstring> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="teffectbuddy" > + <property name="text" > + <string>&ToolTip Effect:</string> + </property> + <property name="buddy" > + <cstring>tooltipeffect</cstring> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="beffectbuddy" > + <property name="text" > + <string>Tool&Box Effect:</string> + </property> + <property name="buddy" > + <cstring>toolboxeffect</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="menueffect" > + <property name="currentIndex" > + <number>0</number> + </property> + <property name="autoCompletion" > + <bool>true</bool> + </property> + <item> + <property name="text" > + <string>Disable</string> + </property> + </item> + <item> + <property name="text" > + <string>Animate</string> + </property> + </item> + <item> + <property name="text" > + <string>Fade</string> + </property> + </item> + </widget> + </item> + <item row="1" column="1" > + <widget class="QComboBox" name="comboeffect" > + <item> + <property name="text" > + <string>Disable</string> + </property> + </item> + <item> + <property name="text" > + <string>Animate</string> + </property> + </item> + </widget> + </item> + <item row="2" column="1" > + <widget class="QComboBox" name="tooltipeffect" > + <item> + <property name="text" > + <string>Disable</string> + </property> + </item> + <item> + <property name="text" > + <string>Animate</string> + </property> + </item> + <item> + <property name="text" > + <string>Fade</string> + </property> + </item> + </widget> + </item> + <item row="3" column="1" > + <widget class="QComboBox" name="toolboxeffect" > + <item> + <property name="text" > + <string>Disable</string> + </property> + </item> + <item> + <property name="text" > + <string>Animate</string> + </property> + </item> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="GroupBox5" > + <property name="title" > + <string>Global Strut</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="swbuddy" > + <property name="text" > + <string>Minimum &Width:</string> + </property> + <property name="buddy" > + <cstring>strutwidth</cstring> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="shbuddy" > + <property name="text" > + <string>Minimum Hei&ght:</string> + </property> + <property name="buddy" > + <cstring>strutheight</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QSpinBox" name="strutwidth" > + <property name="suffix" > + <string> pixels</string> + </property> + <property name="maximum" > + <number>1000</number> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QSpinBox" name="strutheight" > + <property name="suffix" > + <string> pixels</string> + </property> + <property name="maximum" > + <number>1000</number> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QCheckBox" name="rtlExtensions" > + <property name="text" > + <string>Enhanced support for languages written right-to-left</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="inputStyleLabel" > + <property name="text" > + <string>XIM Input Style:</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="inputStyle" > + <property name="currentIndex" > + <number>0</number> + </property> + <item> + <property name="text" > + <string>On The Spot</string> + </property> + </item> + <item> + <property name="text" > + <string>Over The Spot</string> + </property> + </item> + <item> + <property name="text" > + <string>Off The Spot</string> + </property> + </item> + <item> + <property name="text" > + <string>Root</string> + </property> + </item> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab3" > + <attribute name="title" > + <string>Printer</string> + </attribute> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <widget class="QCheckBox" name="fontembeddingcheckbox" > + <property name="text" > + <string>Enable Font embedding</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="GroupBox10" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Font Paths</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item> + <layout class="QGridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item row="1" column="0" > + <widget class="QPushButton" name="PushButton11" > + <property name="text" > + <string>Up</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QPushButton" name="PushButton13" > + <property name="text" > + <string>Remove</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QPushButton" name="PushButton12" > + <property name="text" > + <string>Down</string> + </property> + </widget> + </item> + <item row="0" column="0" colspan="3" > + <widget class="Q3ListBox" name="fontpathlistbox" /> + </item> + </layout> + </item> + <item> + <layout class="QGridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>4</number> + </property> + <item row="2" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Minimum</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="2" > + <widget class="QPushButton" name="PushButton15" > + <property name="text" > + <string>Add</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QPushButton" name="PushButton14" > + <property name="text" > + <string>Browse...</string> + </property> + </widget> + </item> + <item row="0" column="0" colspan="3" > + <widget class="QLabel" name="TextLabel15_2" > + <property name="text" > + <string>Press the <b>Browse</b> button or enter a directory and press Enter to add them to the list.</string> + </property> + </widget> + </item> + <item row="1" column="0" colspan="3" > + <widget class="QLineEdit" name="fontpathlineedit" /> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>724</width> + <height>27</height> + </rect> + </property> + <widget class="QMenu" name="PopupMenu" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>480</height> + </rect> + </property> + <property name="title" > + <string>&File</string> + </property> + <action name="" /> + <action name="" /> + <action name="" /> + <addaction name="fileSaveAction" /> + <addaction name="separator" /> + <addaction name="fileExitAction" /> + </widget> + <widget class="QMenu" name="PopupMenu_2" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>480</height> + </rect> + </property> + <property name="title" > + <string>&Help</string> + </property> + <addaction name="helpAboutAction" /> + <addaction name="helpAboutQtAction" /> + </widget> + <action name="" /> + <action name="" /> + <action name="" /> + <addaction name="PopupMenu" /> + <addaction name="separator" /> + <addaction name="PopupMenu_2" /> + </widget> + <action name="fileSaveAction" > + <property name="text" > + <string>&Save</string> + </property> + <property name="iconText" > + <string>Save</string> + </property> + <property name="shortcut" > + <string>Ctrl+S</string> + </property> + </action> + <action name="fileExitAction" > + <property name="text" > + <string>E&xit</string> + </property> + <property name="iconText" > + <string>Exit</string> + </property> + <property name="shortcut" > + <string/> + </property> + </action> + <action name="helpAboutAction" > + <property name="text" > + <string>&About</string> + </property> + <property name="iconText" > + <string>About</string> + </property> + <property name="shortcut" > + <string/> + </property> + </action> + <action name="helpAboutQtAction" > + <property name="text" > + <string>About &Qt</string> + </property> + <property name="iconText" > + <string>About Qt</string> + </property> + </action> + </widget> + <pixmapfunction></pixmapfunction> + <customwidgets> + <customwidget> + <class>Q3ListBox</class> + <extends></extends> + <header>q3listbox.h</header> + <container>0</container> + <pixmap></pixmap> + </customwidget> + <customwidget> + <class>ColorButton</class> + <extends></extends> + <header>colorbutton.h</header> + <container>0</container> + <pixmap></pixmap> + </customwidget> + <customwidget> + <class>Q3Frame</class> + <extends></extends> + <header>Qt3Support/Q3Frame</header> + <container>1</container> + <pixmap></pixmap> + </customwidget> + <customwidget> + <class>PreviewFrame</class> + <extends></extends> + <header>previewframe.h</header> + <container>0</container> + <pixmap></pixmap> + </customwidget> + <customwidget> + <class>Q3MainWindow</class> + <extends></extends> + <header>q3mainwindow.h</header> + <container>1</container> + <pixmap></pixmap> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>helpview</tabstop> + <tabstop>TabWidget3</tabstop> + <tabstop>familycombo</tabstop> + <tabstop>stylecombo</tabstop> + <tabstop>psizecombo</tabstop> + <tabstop>samplelineedit</tabstop> + <tabstop>familysubcombo</tabstop> + <tabstop>PushButton2</tabstop> + <tabstop>PushButton3</tabstop> + <tabstop>PushButton4</tabstop> + <tabstop>choosesubcombo</tabstop> + <tabstop>PushButton1</tabstop> + <tabstop>dcispin</tabstop> + <tabstop>cfispin</tabstop> + <tabstop>wslspin</tabstop> + <tabstop>effectcheckbox</tabstop> + <tabstop>menueffect</tabstop> + <tabstop>comboeffect</tabstop> + <tabstop>tooltipeffect</tabstop> + <tabstop>strutwidth</tabstop> + <tabstop>strutheight</tabstop> + <tabstop>sublistbox</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/mydialog.ui b/tests/auto/uiloader/baseline/mydialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..d765b307607e509bf85157ac384fc352b9de960a --- /dev/null +++ b/tests/auto/uiloader/baseline/mydialog.ui @@ -0,0 +1,47 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>MyDialog</class> + <widget class="QDialog" name="MyDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>401</width> + <height>70</height> + </rect> + </property> + <property name="windowTitle" > + <string>Mach 2!</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="aLabel" > + <property name="text" > + <string>Join the life in the fastlane; - PCH enable your project today! -</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="aButton" > + <property name="text" > + <string>&Quit</string> + </property> + <property name="shortcut" > + <string>Alt+Q</string> + </property> + </widget> + </item> + </layout> + </widget> + <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/myform.ui b/tests/auto/uiloader/baseline/myform.ui new file mode 100644 index 0000000000000000000000000000000000000000..00702e860a744f887e5be4e59c15ad43a835e2c8 --- /dev/null +++ b/tests/auto/uiloader/baseline/myform.ui @@ -0,0 +1,130 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>Form</class> + <widget class="QWidget" name="Form" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>258</width> + <height>224</height> + </rect> + </property> + <property name="windowTitle" > + <string>Export Document</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Export Options</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" > + <widget class="QRadioButton" name="radioButton_2" > + <property name="text" > + <string>&DocBook</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QRadioButton" name="radioButton" > + <property name="text" > + <string>&LaTeX</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QCheckBox" name="checkBox_2" > + <property name="text" > + <string>Include p&ictures</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="5" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="1" > + <widget class="QCheckBox" name="checkBox" > + <property name="text" > + <string>&Compress</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QRadioButton" name="radioButton_2_2" > + <property name="text" > + <string>&HTML</string> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QRadioButton" name="radioButton_3" > + <property name="text" > + <string>&PostScript</string> + </property> + </widget> + </item> + <item row="4" column="0" > + <widget class="QRadioButton" name="radioButton_4" > + <property name="text" > + <string>PD&F</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QCheckBox" name="checkBox_3" > + <property name="text" > + <string>Include &metadata</string> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QCheckBox" name="checkBox_4" > + <property name="text" > + <string>Create inde&x</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/newactiondialog.ui b/tests/auto/uiloader/baseline/newactiondialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..ae6212f868b11647fe91c2cea7c46296e6ccb353 --- /dev/null +++ b/tests/auto/uiloader/baseline/newactiondialog.ui @@ -0,0 +1,202 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>qdesigner_internal::NewActionDialog</class> + <widget class="QDialog" name="qdesigner_internal::NewActionDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>363</width> + <height>156</height> + </rect> + </property> + <property name="windowTitle" > + <string>New Action...</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <layout class="QFormLayout" name="formLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>&Text:</string> + </property> + <property name="buddy" > + <cstring>editActionText</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="editActionText" > + <property name="minimumSize" > + <size> + <width>255</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Object &name:</string> + </property> + <property name="buddy" > + <cstring>editObjectName</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="editObjectName" /> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>&Icon:</string> + </property> + <property name="buddy" > + <cstring>iconSelector</cstring> + </property> + </widget> + </item> + <item row="2" column="1" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="qdesigner_internal::IconSelector" native="1" name="iconSelector" /> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </item> + <item> + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>qdesigner_internal::IconSelector</class> + <extends>QWidget</extends> + <header>iconselector_p.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>editActionText</tabstop> + <tabstop>editObjectName</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>qdesigner_internal::NewActionDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>165</x> + <y>162</y> + </hint> + <hint type="destinationlabel" > + <x>291</x> + <y>94</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>qdesigner_internal::NewActionDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>259</x> + <y>162</y> + </hint> + <hint type="destinationlabel" > + <x>293</x> + <y>128</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/newdynamicpropertydialog.ui b/tests/auto/uiloader/baseline/newdynamicpropertydialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..2aa91f3e9e0a1aa90a207f3752d451acff872f90 --- /dev/null +++ b/tests/auto/uiloader/baseline/newdynamicpropertydialog.ui @@ -0,0 +1,106 @@ +<ui version="4.0" > + <class>qdesigner_internal::NewDynamicPropertyDialog</class> + <widget class="QDialog" name="qdesigner_internal::NewDynamicPropertyDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>340</width> + <height>118</height> + </rect> + </property> + <property name="windowTitle" > + <string>Create Dynamic Property</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <layout class="QFormLayout" name="formLayout" > + <item row="0" column="1" > + <widget class="QLineEdit" name="m_lineEdit" > + <property name="minimumSize" > + <size> + <width>220</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Property Name</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QComboBox" name="m_comboBox" /> + </item> + <item> + <spacer name="horizontalSpacer" > + <property name="spacerName" stdset="0" > + <string>horizontalSpacer</string> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Property Type</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <spacer> + <property name="spacerName" stdset="0" > + <string/> + </property> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + </spacer> + </item> + <item> + <widget class="QDialogButtonBox" name="m_buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + <property name="centerButtons" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/newform.ui b/tests/auto/uiloader/baseline/newform.ui new file mode 100644 index 0000000000000000000000000000000000000000..3f0a92dfb1ccb9e67400aad455c85e92bbef7d31 --- /dev/null +++ b/tests/auto/uiloader/baseline/newform.ui @@ -0,0 +1,153 @@ +<ui version="4.0" > + <author></author> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <exportmacro></exportmacro> + <class>NewForm</class> + <widget class="QDialog" name="NewForm" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>495</width> + <height>319</height> + </rect> + </property> + <property name="windowTitle" > + <string>New Form</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>1</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTreeWidget" name="treeWidget" > + <property name="iconSize" > + <size> + <width>128</width> + <height>128</height> + </size> + </property> + <property name="rootIsDecorated" > + <bool>false</bool> + </property> + <property name="columnCount" > + <number>1</number> + </property> + <column> + <property name="text" > + <string>0</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="QLabel" name="lblPreview" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="lineWidth" > + <number>1</number> + </property> + <property name="text" > + <string>Choose a template for a preview</string> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + <property name="margin" > + <number>5</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QFrame" name="horizontalLine" > + <property name="frameShape" > + <enum>QFrame::HLine</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="chkShowOnStartup" > + <property name="text" > + <string>Show this Dialog on Startup</string> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" /> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <customwidgets> + <customwidget> + <class>QDialogButtonBox</class> + <extends>QWidget</extends> + <header>qdialogbuttonbox.h</header> + <container>1</container> + <pixmap></pixmap> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/orderdialog.ui b/tests/auto/uiloader/baseline/orderdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..b44824778f09cc05f974f928124c1e43c75c94f2 --- /dev/null +++ b/tests/auto/uiloader/baseline/orderdialog.ui @@ -0,0 +1,198 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>qdesigner_internal::OrderDialog</class> + <widget class="QDialog" name="qdesigner_internal::OrderDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>467</width> + <height>310</height> + </rect> + </property> + <property name="windowTitle" > + <string>Change Page Order</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Page Order</string> + </property> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>9</number> + </property> + <property name="topMargin" > + <number>9</number> + </property> + <property name="rightMargin" > + <number>9</number> + </property> + <property name="bottomMargin" > + <number>9</number> + </property> + <item> + <widget class="QListWidget" name="pageList" > + <property name="minimumSize" > + <size> + <width>344</width> + <height>0</height> + </size> + </property> + <property name="dragDropMode" > + <enum>QAbstractItemView::InternalMove</enum> + </property> + <property name="selectionMode" > + <enum>QAbstractItemView::ContiguousSelection</enum> + </property> + <property name="movement" > + <enum>QListView::Snap</enum> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QToolButton" name="upButton" > + <property name="toolTip" > + <string>Move page up</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="downButton" > + <property name="toolTip" > + <string>Move page down</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>99</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>qdesigner_internal::OrderDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>50</x> + <y>163</y> + </hint> + <hint type="destinationlabel" > + <x>6</x> + <y>151</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>qdesigner_internal::OrderDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>300</x> + <y>160</y> + </hint> + <hint type="destinationlabel" > + <x>348</x> + <y>148</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/outputpage.ui b/tests/auto/uiloader/baseline/outputpage.ui new file mode 100644 index 0000000000000000000000000000000000000000..755f8180853d974e1ba6a5c4d9ac37734f68e263 --- /dev/null +++ b/tests/auto/uiloader/baseline/outputpage.ui @@ -0,0 +1,95 @@ +<ui version="4.0" > + <class>OutputPage</class> + <widget class="QWidget" name="OutputPage" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>417</width> + <height>242</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Project file name:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="projectLineEdit" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_2" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Collection file name:</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="collectionLineEdit" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="3" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/pagefold.ui b/tests/auto/uiloader/baseline/pagefold.ui new file mode 100644 index 0000000000000000000000000000000000000000..7ae313c3318f7c4d85f1f0a004ac9b8fd86f9f83 --- /dev/null +++ b/tests/auto/uiloader/baseline/pagefold.ui @@ -0,0 +1,349 @@ +<ui version="4.0" > + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>392</width> + <height>412</height> + </rect> + </property> + <property name="windowTitle" > + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralwidget" > + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QFrame" name="mainFrame" > + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" colspan="3" > + <widget class="QComboBox" name="nameCombo" > + <property name="toolTip" > + <string>Specify your name</string> + </property> + <property name="editable" > + <bool>true</bool> + </property> + <property name="currentIndex" > + <number>-1</number> + </property> + <item> + <property name="text" > + <string>Girish</string> + </property> + </item> + <item> + <property name="text" > + <string>Jasmin</string> + </property> + </item> + <item> + <property name="text" > + <string>Simon</string> + </property> + </item> + <item> + <property name="text" > + <string>Zack</string> + </property> + </item> + </widget> + </item> + <item row="1" column="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="2" > + <widget class="QRadioButton" name="femaleRadioButton" > + <property name="styleSheet" > + <string>Check this if you are female</string> + </property> + <property name="text" > + <string>&Female</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="genderLabel" > + <property name="text" > + <string>Gender:</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="ageLabel" > + <property name="text" > + <string>&Age:</string> + </property> + <property name="buddy" > + <cstring>ageSpinBox</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QRadioButton" name="maleRadioButton" > + <property name="toolTip" > + <string>Check this if you are male</string> + </property> + <property name="text" > + <string>&Male</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="nameLabel" > + <property name="text" > + <string>&Name:</string> + </property> + <property name="buddy" > + <cstring>nameCombo</cstring> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="passwordLabel" > + <property name="text" > + <string>&Password:</string> + </property> + <property name="buddy" > + <cstring>passwordEdit</cstring> + </property> + </widget> + </item> + <item row="2" column="1" colspan="3" > + <widget class="QSpinBox" name="ageSpinBox" > + <property name="toolTip" > + <string>Specify your age</string> + </property> + <property name="statusTip" > + <string>Specify your age</string> + </property> + <property name="minimum" > + <number>12</number> + </property> + <property name="value" > + <number>22</number> + </property> + </widget> + </item> + <item row="7" column="2" colspan="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="6" column="0" colspan="4" > + <widget class="QCheckBox" name="agreeCheckBox" > + <property name="toolTip" > + <string>Please read the LICENSE file before checking</string> + </property> + <property name="text" > + <string>I &accept the terms and &conditions</string> + </property> + </widget> + </item> + <item row="3" column="1" colspan="3" > + <widget class="QLineEdit" name="passwordEdit" > + <property name="toolTip" > + <string>Specify your password</string> + </property> + <property name="statusTip" > + <string>Specify your password</string> + </property> + <property name="text" > + <string>Password</string> + </property> + <property name="echoMode" > + <enum>QLineEdit::Password</enum> + </property> + </widget> + </item> + <item row="5" column="1" colspan="3" > + <widget class="QListWidget" name="professionList" > + <property name="toolTip" > + <string>Select your profession</string> + </property> + <property name="statusTip" > + <string>Specify your name here</string> + </property> + <property name="whatsThis" > + <string>Specify your name here</string> + </property> + <property name="currentRow" > + <number>0</number> + </property> + <item> + <property name="text" > + <string>Developer</string> + </property> + </item> + <item> + <property name="text" > + <string>Student</string> + </property> + </item> + <item> + <property name="text" > + <string>Fisherman</string> + </property> + </item> + </widget> + </item> + <item row="5" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Profession:</string> + </property> + <property name="buddy" > + <cstring>professionList</cstring> + </property> + </widget> + </item> + <item row="4" column="1" colspan="3" > + <widget class="QComboBox" name="countryCombo" > + <property name="toolTip" > + <string>Specify country of origin</string> + </property> + <property name="statusTip" > + <string>Specify country of origin</string> + </property> + <property name="currentIndex" > + <number>6</number> + </property> + <item> + <property name="text" > + <string>Egypt</string> + </property> + </item> + <item> + <property name="text" > + <string>France</string> + </property> + </item> + <item> + <property name="text" > + <string>Germany</string> + </property> + </item> + <item> + <property name="text" > + <string>India</string> + </property> + </item> + <item> + <property name="text" > + <string>Italy</string> + </property> + </item> + <item> + <property name="text" > + <string>Korea</string> + </property> + </item> + <item> + <property name="text" > + <string>Norway</string> + </property> + </item> + </widget> + </item> + <item row="4" column="0" > + <widget class="QLabel" name="countryLabel" > + <property name="text" > + <string>Pro&fession</string> + </property> + <property name="buddy" > + <cstring>professionList</cstring> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>392</width> + <height>25</height> + </rect> + </property> + <widget class="QMenu" name="menu_File" > + <property name="title" > + <string>&File</string> + </property> + <addaction name="editStyleAction" /> + <addaction name="separator" /> + <addaction name="exitAction" /> + </widget> + <widget class="QMenu" name="menu_Help" > + <property name="title" > + <string>&Help</string> + </property> + <addaction name="aboutAction" /> + <addaction name="separator" /> + <addaction name="aboutQtAction" /> + </widget> + <addaction name="menu_File" /> + <addaction name="menu_Help" /> + </widget> + <widget class="QStatusBar" name="statusbar" /> + <action name="exitAction" > + <property name="text" > + <string>&Exit</string> + </property> + </action> + <action name="aboutQtAction" > + <property name="text" > + <string>About Qt</string> + </property> + </action> + <action name="editStyleAction" > + <property name="text" > + <string>Edit &Style</string> + </property> + </action> + <action name="aboutAction" > + <property name="text" > + <string>About</string> + </property> + </action> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/paletteeditor.ui b/tests/auto/uiloader/baseline/paletteeditor.ui new file mode 100644 index 0000000000000000000000000000000000000000..1cc6a185830c8c3d92c3b8705b0d958e1a3dc250 --- /dev/null +++ b/tests/auto/uiloader/baseline/paletteeditor.ui @@ -0,0 +1,264 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>qdesigner_internal::PaletteEditor</class> + <widget class="QDialog" name="qdesigner_internal::PaletteEditor" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>365</width> + <height>409</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Edit Palette</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="advancedBox" > + <property name="minimumSize" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>16777215</width> + <height>16777215</height> + </size> + </property> + <property name="title" > + <string>Tune Palette</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QtColorButton" name="buildButton" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>13</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string/> + </property> + </widget> + </item> + <item row="1" column="0" colspan="4" > + <widget class="QTreeView" name="paletteView" > + <property name="minimumSize" > + <size> + <width>0</width> + <height>200</height> + </size> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QRadioButton" name="detailsRadio" > + <property name="text" > + <string>Show Details</string> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QRadioButton" name="computeRadio" > + <property name="text" > + <string>Compute Details</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Quick</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="GroupBox126" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Preview</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="2" > + <widget class="QRadioButton" name="disabledRadio" > + <property name="text" > + <string>Disabled</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QRadioButton" name="inactiveRadio" > + <property name="text" > + <string>Inactive</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QRadioButton" name="activeRadio" > + <property name="text" > + <string>Active</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0" colspan="3" > + <widget class="qdesigner_internal::PreviewFrame" native="1" name="previewFrame" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>7</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>QtColorButton</class> + <extends>QToolButton</extends> + <header>qtcolorbutton.h</header> + </customwidget> + <customwidget> + <class>qdesigner_internal::PreviewFrame</class> + <extends>QWidget</extends> + <header>previewframe.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>qdesigner_internal::PaletteEditor</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>180</x> + <y>331</y> + </hint> + <hint type="destinationlabel" > + <x>134</x> + <y>341</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>qdesigner_internal::PaletteEditor</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>287</x> + <y>329</y> + </hint> + <hint type="destinationlabel" > + <x>302</x> + <y>342</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/paletteeditoradvancedbase.ui b/tests/auto/uiloader/baseline/paletteeditoradvancedbase.ui new file mode 100644 index 0000000000000000000000000000000000000000..4de888aa318ec4c13e324fb76316e19ef0c99255 --- /dev/null +++ b/tests/auto/uiloader/baseline/paletteeditoradvancedbase.ui @@ -0,0 +1,617 @@ +<ui version="4.0" stdsetdef="1" > + <author></author> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <exportmacro></exportmacro> + <class>PaletteEditorAdvancedBase</class> + <widget class="QDialog" name="PaletteEditorAdvancedBase" > + <property name="objectName" > + <string notr="true" >PaletteEditorAdvancedBase</string> + </property> + <property name="enabled" > + <bool>true</bool> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>295</width> + <height>346</height> + </rect> + </property> + <property name="windowTitle" > + <string>Tune Palette</string> + </property> + <property name="sizeGripEnabled" > + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0" > + <string><b>Edit Palette</b><p>Change the palette of the current widget or form.</p><p>Use a generated palette or select colors for each color group and each color role.</p><p>The palette can be tested with different widget layouts in the preview section.</p></string> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="TextLabel1" > + <property name="objectName" > + <string notr="true" >TextLabel1</string> + </property> + <property name="text" > + <string>Select &Palette:</string> + </property> + <property name="buddy" stdset="0" > + <cstring>paletteCombo</cstring> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="paletteCombo" > + <property name="objectName" > + <string notr="true" >paletteCombo</string> + </property> + <item> + <property name="text" > + <string>Active Palette</string> + </property> + </item> + <item> + <property name="text" > + <string>Inactive Palette</string> + </property> + </item> + <item> + <property name="text" > + <string>Disabled Palette</string> + </property> + </item> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Q3ButtonGroup" name="ButtonGroup1" > + <property name="objectName" > + <string notr="true" >ButtonGroup1</string> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>4</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Auto</string> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QCheckBox" name="checkBuildInactive" > + <property name="objectName" > + <string notr="true" >checkBuildInactive</string> + </property> + <property name="text" > + <string>Build inactive palette from active</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkBuildDisabled" > + <property name="objectName" > + <string notr="true" >checkBuildDisabled</string> + </property> + <property name="text" > + <string>Build disabled palette from active</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="Q3GroupBox" name="groupCentral" > + <property name="objectName" > + <string notr="true" >groupCentral</string> + </property> + <property name="title" > + <string>Central color &roles</string> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QComboBox" name="comboCentral" > + <property name="objectName" > + <string notr="true" >comboCentral</string> + </property> + <property name="toolTip" stdset="0" > + <string>Choose central color role</string> + </property> + <property name="whatsThis" stdset="0" > + <string><b>Select a color role.</b><p>Available central roles are: <ul> <li>Window - general background color.</li> <li>WindowText - general foreground color. </li> <li>Base - used as background color for e.g. text entry widgets, usually white or another light color. </li> <li>Text - the foreground color used with Base. Usually this is the same as WindowText, in what case it must provide good contrast both with Window and Base. </li> <li>Button - general button background color, where buttons need a background different from Window, as in the Macintosh style. </li> <li>ButtonText - a foreground color used with the Button color. </li> <li>Highlight - a color to indicate a selected or highlighted item. </li> <li>HighlightedText - a text color that contrasts to Highlight. </li> <li>BrightText - a text color that is very different from WindowText and contrasts well with e.g. black. </li> </ul> </p></string> + </property> + <item> + <property name="text" > + <string>Window</string> + </property> + </item> + <item> + <property name="text" > + <string>WindowText</string> + </property> + </item> + <item> + <property name="text" > + <string>Button</string> + </property> + </item> + <item> + <property name="text" > + <string>Base</string> + </property> + </item> + <item> + <property name="text" > + <string>Text</string> + </property> + </item> + <item> + <property name="text" > + <string>BrightText</string> + </property> + </item> + <item> + <property name="text" > + <string>ButtonText</string> + </property> + </item> + <item> + <property name="text" > + <string>Highlight</string> + </property> + </item> + <item> + <property name="text" > + <string>HighlightedText</string> + </property> + </item> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer name="Horizontal_Spacing1" > + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="sizeType" > + <enum>Expanding</enum> + </property> + <property name="orientation" > + <enum>Horizontal</enum> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="labelCentral" > + <property name="objectName" > + <string notr="true" >labelCentral</string> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string>&Select Color:</string> + </property> + <property name="buddy" stdset="0" > + <cstring>buttonCentral</cstring> + </property> + </widget> + </item> + <item> + <widget class="ColorButton" name="buttonCentral" > + <property name="objectName" > + <string notr="true" >buttonCentral</string> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy" > + <enum>Qt::TabFocus</enum> + </property> + <property name="toolTip" stdset="0" > + <string>Choose a color</string> + </property> + <property name="whatsThis" stdset="0" > + <string>Choose a color for the selected central color role.</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="Q3GroupBox" name="groupEffect" > + <property name="objectName" > + <string notr="true" >groupEffect</string> + </property> + <property name="title" > + <string>3-D shadow &effects</string> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QCheckBox" name="checkBuildEffect" > + <property name="objectName" > + <string notr="true" >checkBuildEffect</string> + </property> + <property name="text" > + <string>Build &from button color</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + <property name="toolTip" stdset="0" > + <string>Generate shadings</string> + </property> + <property name="whatsThis" stdset="0" > + <string>Check to let 3D-effect colors be calculated from button-color.</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="comboEffect" > + <property name="objectName" > + <string notr="true" >comboEffect</string> + </property> + <property name="toolTip" stdset="0" > + <string>Choose 3D-effect color role</string> + </property> + <property name="whatsThis" stdset="0" > + <string><b>Select a color role.</b><p>Available effect roles are: <ul> <li>Light - lighter than Button color. </li> <li>Midlight - between Button and Light. </li> <li>Mid - between Button and Dark. </li> <li>Dark - darker than Button. </li> <li>Shadow - a very dark color. </li> </ul></string> + </property> + <item> + <property name="text" > + <string>Light</string> + </property> + </item> + <item> + <property name="text" > + <string>Midlight</string> + </property> + </item> + <item> + <property name="text" > + <string>Mid</string> + </property> + </item> + <item> + <property name="text" > + <string>Dark</string> + </property> + </item> + <item> + <property name="text" > + <string>Shadow</string> + </property> + </item> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer name="Horizontal_Spacing3" > + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="sizeType" > + <enum>Expanding</enum> + </property> + <property name="orientation" > + <enum>Horizontal</enum> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="labelEffect" > + <property name="objectName" > + <string notr="true" >labelEffect</string> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string>Select Co&lor:</string> + </property> + <property name="buddy" stdset="0" > + <cstring>buttonEffect</cstring> + </property> + </widget> + </item> + <item> + <widget class="ColorButton" name="buttonEffect" > + <property name="objectName" > + <string notr="true" >buttonEffect</string> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy" > + <enum>Qt::TabFocus</enum> + </property> + <property name="toolTip" stdset="0" > + <string>Choose a color</string> + </property> + <property name="whatsThis" stdset="0" > + <string>Choose a color for the selected effect color role.</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer name="Horizontal_Spacing2" > + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="sizeType" > + <enum>Expanding</enum> + </property> + <property name="orientation" > + <enum>Horizontal</enum> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="buttonOk" > + <property name="objectName" > + <string notr="true" >buttonOk</string> + </property> + <property name="text" > + <string>OK</string> + </property> + <property name="autoDefault" > + <bool>true</bool> + </property> + <property name="default" > + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0" > + <string>Close dialog and apply all changes.</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="buttonCancel" > + <property name="objectName" > + <string notr="true" >buttonCancel</string> + </property> + <property name="text" > + <string>Cancel</string> + </property> + <property name="autoDefault" > + <bool>true</bool> + </property> + <property name="whatsThis" stdset="0" > + <string>Close dialog and discard all changes.</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <customwidgets> + <customwidget> + <class>ColorButton</class> + <extends></extends> + <header location="local" >colorbutton.h</header> + <sizehint> + <width>40</width> + <height>25</height> + </sizehint> + <container>0</container> + <sizepolicy> + <hordata>5</hordata> + <verdata>5</verdata> + </sizepolicy> + <pixmap>image0</pixmap> + <properties> + <property type="Color" >color</property> + <property type="Pixmap" >pixmap</property> + </properties> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>buttonOk</tabstop> + <tabstop>buttonCancel</tabstop> + <tabstop>paletteCombo</tabstop> + <tabstop>checkBuildInactive</tabstop> + <tabstop>checkBuildDisabled</tabstop> + <tabstop>comboCentral</tabstop> + <tabstop>buttonCentral</tabstop> + <tabstop>checkBuildEffect</tabstop> + <tabstop>comboEffect</tabstop> + <tabstop>buttonEffect</tabstop> + </tabstops> + <images> + <image name="image0" > + <data format="XPM.GZ" length="646" >789c6dd2c10ac2300c00d07bbf2234b7229d1be245fc04c5a3201e4615f430059d0711ff5ddb2e6bb236ec90eed134cb5a19d8ef36602af5ecdbfeeac05dda0798d3abebde87e3faa374d3807fa0d633a52d38d8de6f679fe33fc776e196f53cd010188256a3600a292882096246517815ca99884606e18044a3a40d91824820924265a7923a2e8bcd05f33db1173e002913175f2a6be6d3294871a2d95fa00e8a94ee017b69d339d90df1e77c57ea072ede6758</data> + </image> + </images> +</ui> diff --git a/tests/auto/uiloader/baseline/passworddialog.ui b/tests/auto/uiloader/baseline/passworddialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..7c1665867aa17b938ac9f4b53dba6896d85c62f7 --- /dev/null +++ b/tests/auto/uiloader/baseline/passworddialog.ui @@ -0,0 +1,111 @@ +<ui version="4.0" > + <class>PasswordDialog</class> + <widget class="QDialog" name="PasswordDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>399</width> + <height>148</height> + </rect> + </property> + <property name="windowTitle" > + <string>Authentication Required</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" colspan="2" > + <layout class="QHBoxLayout" > + <item> + <widget class="QLabel" name="iconLabel" > + <property name="text" > + <string>DUMMY ICON</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="introLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>INTRO TEXT DUMMY</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Username:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="userNameLineEdit" /> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="lblPassword" > + <property name="text" > + <string>Password:</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="passwordLineEdit" > + <property name="echoMode" > + <enum>QLineEdit::Password</enum> + </property> + </widget> + </item> + <item row="3" column="0" colspan="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>PasswordDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>PasswordDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/pathpage.ui b/tests/auto/uiloader/baseline/pathpage.ui new file mode 100644 index 0000000000000000000000000000000000000000..89083915ddf93fae5c811e34b00f167f01226727 --- /dev/null +++ b/tests/auto/uiloader/baseline/pathpage.ui @@ -0,0 +1,114 @@ +<ui version="4.0" > + <class>PathPage</class> + <widget class="QWidget" name="PathPage" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>417</width> + <height>243</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label_2" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>File filters:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <widget class="QLineEdit" name="filterLineEdit" /> + </item> + <item row="1" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" colspan="3" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Documentation source file paths:</string> + </property> + </widget> + </item> + <item rowspan="3" row="3" column="0" colspan="3" > + <widget class="QListWidget" name="pathListWidget" /> + </item> + <item row="3" column="3" > + <widget class="QPushButton" name="addButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Add</string> + </property> + </widget> + </item> + <item row="4" column="3" > + <widget class="QPushButton" name="removeButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Remove</string> + </property> + </widget> + </item> + <item row="5" column="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>51</height> + </size> + </property> + </spacer> + </item> + <item row="6" column="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>31</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/phrasebookbox.ui b/tests/auto/uiloader/baseline/phrasebookbox.ui new file mode 100644 index 0000000000000000000000000000000000000000..66558ea28acb0e327fc18169553597cb7dec7928 --- /dev/null +++ b/tests/auto/uiloader/baseline/phrasebookbox.ui @@ -0,0 +1,211 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>PhraseBookBox</class> + <widget class="QDialog" name="PhraseBookBox" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>596</width> + <height>454</height> + </rect> + </property> + <property name="windowTitle" > + <string>Edit Phrase Book</string> + </property> + <property name="whatsThis" > + <string>This window allows you to add, modify, or delete phrases in a phrase book.</string> + </property> + <layout class="QHBoxLayout" name="unnamed" > + <item> + <layout class="QVBoxLayout" name="inputsLayout" > + <item> + <layout class="QGridLayout" name="gridLayout" > + <item row="1" column="0" > + <widget class="QLabel" name="target" > + <property name="text" > + <string>&Translation:</string> + </property> + <property name="buddy" > + <cstring>targetLed</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="targetLed" > + <property name="whatsThis" > + <string>This is the phrase in the target language corresponding to the source phrase.</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="source" > + <property name="text" > + <string>S&ource phrase:</string> + </property> + <property name="buddy" > + <cstring>sourceLed</cstring> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="definitionLed" > + <property name="whatsThis" > + <string>This is a definition for the source phrase.</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="sourceLed" > + <property name="whatsThis" > + <string>This is the phrase in the source language.</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="definition" > + <property name="text" > + <string>&Definition:</string> + </property> + <property name="buddy" > + <cstring>definitionLed</cstring> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QTreeView" name="phraseList" > + <property name="rootIsDecorated" > + <bool>false</bool> + </property> + <property name="uniformRowHeights" > + <bool>true</bool> + </property> + <property name="itemsExpandable" > + <bool>false</bool> + </property> + <property name="sortingEnabled" > + <bool>true</bool> + </property> + <property name="expandsOnDoubleClick" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" name="buttonLayout" > + <item> + <widget class="QPushButton" name="newBut" > + <property name="whatsThis" > + <string>Click here to add the phrase to the phrase book.</string> + </property> + <property name="text" > + <string>&New Phrase</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="removeBut" > + <property name="whatsThis" > + <string>Click here to remove the phrase from the phrase book.</string> + </property> + <property name="text" > + <string>&Remove Phrase</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="saveBut" > + <property name="whatsThis" > + <string>Click here to save the changes made.</string> + </property> + <property name="text" > + <string>&Save</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="closeBut" > + <property name="whatsThis" > + <string>Click here to close this window.</string> + </property> + <property name="text" > + <string>Close</string> + </property> + </widget> + </item> + <item> + <spacer name="spacer1" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>51</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11" /> + <tabstops> + <tabstop>sourceLed</tabstop> + <tabstop>targetLed</tabstop> + <tabstop>definitionLed</tabstop> + <tabstop>newBut</tabstop> + <tabstop>removeBut</tabstop> + <tabstop>saveBut</tabstop> + <tabstop>closeBut</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/plugindialog.ui b/tests/auto/uiloader/baseline/plugindialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..d4bec98834fc5f0870f49ee460581243bccee3e0 --- /dev/null +++ b/tests/auto/uiloader/baseline/plugindialog.ui @@ -0,0 +1,153 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>PluginDialog</class> + <widget class="QDialog" name="PluginDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>401</width> + <height>331</height> + </rect> + </property> + <property name="windowTitle" > + <string>Plugin Information</string> + </property> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>8</number> + </property> + <property name="topMargin" > + <number>8</number> + </property> + <property name="rightMargin" > + <number>8</number> + </property> + <property name="bottomMargin" > + <number>8</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>TextLabel</string> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QTreeWidget" name="treeWidget" > + <property name="textElideMode" > + <enum>Qt::ElideNone</enum> + </property> + <column> + <property name="text" > + <string>1</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="QLabel" name="message" > + <property name="text" > + <string>TextLabel</string> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + </layout> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>PluginDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>154</x> + <y>307</y> + </hint> + <hint type="destinationlabel" > + <x>401</x> + <y>280</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/preferencesdialog.ui b/tests/auto/uiloader/baseline/preferencesdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..3092fcb53cc6e54f0a023cac9cc3ef364f87cd63 --- /dev/null +++ b/tests/auto/uiloader/baseline/preferencesdialog.ui @@ -0,0 +1,165 @@ +<ui version="4.0" > + <class>PreferencesDialog</class> + <widget class="QDialog" name="PreferencesDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>455</width> + <height>359</height> + </rect> + </property> + <property name="windowTitle" > + <string>Preferences</string> + </property> + <property name="modal" > + <bool>true</bool> + </property> + <layout class="QVBoxLayout" > + <item> + <layout class="QHBoxLayout" > + <item> + <layout class="QVBoxLayout" > + <item> + <widget class="QGroupBox" name="m_uiModeGroupBox" > + <property name="title" > + <string>User Interface Mode</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QComboBox" name="m_uiModeCombo" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="FontPanel" name="m_fontPanel" /> + </item> + <item> + <widget class="qdesigner_internal::PreviewConfigurationWidget" name="m_previewConfigurationWidget" /> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" > + <item> + <widget class="QGroupBox" name="m_templatePathGroupBox" > + <property name="title" > + <string>Additional Template Paths</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" colspan="3" > + <widget class="QListWidget" name="m_templatePathListWidget" /> + </item> + <item row="1" column="0" > + <widget class="QToolButton" name="m_addTemplatePathButton" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QToolButton" name="m_removeTemplatePathButton" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <widget class="qdesigner_internal::GridPanel" name="m_gridPanel" /> + </item> + </layout> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="m_dialogButtonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>FontPanel</class> + <extends>QGroupBox</extends> + <header>fontpanel.h</header> + <container>1</container> + </customwidget> + <customwidget> + <class>qdesigner_internal::GridPanel</class> + <extends>QGroupBox</extends> + <header>gridpanel_p.h</header> + <container>1</container> + </customwidget> + <customwidget> + <class>qdesigner_internal::PreviewConfigurationWidget</class> + <extends>QGroupBox</extends> + <header location="global" >previewconfigurationwidget_p.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>m_dialogButtonBox</sender> + <signal>accepted()</signal> + <receiver>PreferencesDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>m_dialogButtonBox</sender> + <signal>rejected()</signal> + <receiver>PreferencesDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/previewconfigurationwidget.ui b/tests/auto/uiloader/baseline/previewconfigurationwidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..2f18766ff7d861ced1192e1f202f0ea746c1e7c7 --- /dev/null +++ b/tests/auto/uiloader/baseline/previewconfigurationwidget.ui @@ -0,0 +1,91 @@ +<ui version="4.0" > + <class>PreviewConfigurationWidget</class> + <widget class="QGroupBox" name="PreviewConfigurationWidget" > + <property name="windowTitle" > + <string>Form</string> + </property> + <property name="title" > + <string>Print/Preview Configuration</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <layout class="QFormLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="m_styleLabel" > + <property name="text" > + <string>Style</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="m_styleCombo" /> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="m_appStyleSheetLabel" > + <property name="text" > + <string>Style sheet</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <layout class="QHBoxLayout" > + <item> + <widget class="qdesigner_internal::TextPropertyEditor" name="m_appStyleSheetLineEdit" > + <property name="minimumSize" > + <size> + <width>149</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="m_appStyleSheetChangeButton" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="m_appStyleSheetClearButton" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="m_skinLabel" > + <property name="text" > + <string>Device skin</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <layout class="QHBoxLayout" > + <item> + <widget class="QComboBox" name="m_skinCombo" /> + </item> + <item> + <widget class="QToolButton" name="m_skinRemoveButton" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>qdesigner_internal::TextPropertyEditor</class> + <extends>QLineEdit</extends> + <header location="global" >textpropertyeditor_p.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/previewdialogbase.ui b/tests/auto/uiloader/baseline/previewdialogbase.ui new file mode 100644 index 0000000000000000000000000000000000000000..593ee33577db57fb89899472b341f1a348c67a0f --- /dev/null +++ b/tests/auto/uiloader/baseline/previewdialogbase.ui @@ -0,0 +1,224 @@ +<ui version="4.0" > + <class>PreviewDialogBase</class> + <widget class="QDialog" name="PreviewDialogBase" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>733</width> + <height>479</height> + </rect> + </property> + <property name="windowTitle" > + <string>Print Preview</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>&Paper Size:</string> + </property> + <property name="buddy" > + <cstring>paperSizeCombo</cstring> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="paperSizeCombo" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>&Orientation:</string> + </property> + <property name="buddy" > + <cstring>paperOrientationCombo</cstring> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="paperOrientationCombo" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QTreeWidget" name="pageList" > + <property name="indentation" > + <number>0</number> + </property> + <property name="rootIsDecorated" > + <bool>false</bool> + </property> + <property name="uniformRowHeights" > + <bool>true</bool> + </property> + <property name="itemsExpandable" > + <bool>false</bool> + </property> + <property name="columnCount" > + <number>1</number> + </property> + <column> + <property name="text" > + <string>1</string> + </property> + </column> + </widget> + </item> + <item> + <widget class="QScrollArea" native="1" name="previewArea" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QProgressBar" name="progressBar" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>7</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="value" > + <number>0</number> + </property> + <property name="textVisible" > + <bool>false</bool> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>QScrollArea</class> + <extends>QWidget</extends> + <header>qscrollarea.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>PreviewDialogBase</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>696</x> + <y>526</y> + </hint> + <hint type="destinationlabel" > + <x>677</x> + <y>446</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>PreviewDialogBase</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>587</x> + <y>529</y> + </hint> + <hint type="destinationlabel" > + <x>547</x> + <y>448</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/previewwidget.ui b/tests/auto/uiloader/baseline/previewwidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..d38ab7cf30b420e48df7ad0447905dff6c56ce2b --- /dev/null +++ b/tests/auto/uiloader/baseline/previewwidget.ui @@ -0,0 +1,238 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>qdesigner_internal::PreviewWidget</class> + <widget class="QWidget" name="qdesigner_internal::PreviewWidget" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>471</width> + <height>251</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Preview Window</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item rowspan="3" row="0" column="1" > + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLineEdit" name="LineEdit1" > + <property name="text" > + <string>LineEdit</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="ComboBox1" > + <item> + <property name="text" > + <string>ComboBox</string> + </property> + </item> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QSpinBox" name="SpinBox1" /> + </item> + <item> + <widget class="QPushButton" name="PushButton1" > + <property name="text" > + <string>PushButton</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QScrollBar" name="ScrollBar1" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QSlider" name="Slider1" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QListWidget" name="listWidget" > + <property name="maximumSize" > + <size> + <width>32767</width> + <height>50</height> + </size> + </property> + </widget> + </item> + </layout> + </item> + <item row="3" column="0" colspan="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" > + <widget class="QProgressBar" name="ProgressBar1" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QGroupBox" name="ButtonGroup2" > + <property name="title" > + <string>ButtonGroup2</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QCheckBox" name="CheckBox1" > + <property name="text" > + <string>CheckBox1</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="CheckBox2" > + <property name="text" > + <string>CheckBox2</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="0" > + <widget class="QGroupBox" name="ButtonGroup1" > + <property name="title" > + <string>ButtonGroup</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QRadioButton" name="RadioButton1" > + <property name="text" > + <string>RadioButton1</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="RadioButton2" > + <property name="text" > + <string>RadioButton2</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="RadioButton3" > + <property name="text" > + <string>RadioButton3</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/previewwidgetbase.ui b/tests/auto/uiloader/baseline/previewwidgetbase.ui new file mode 100644 index 0000000000000000000000000000000000000000..3e0570092ddf9070ef115271fe2956c6c5becfb6 --- /dev/null +++ b/tests/auto/uiloader/baseline/previewwidgetbase.ui @@ -0,0 +1,340 @@ +<ui version="4.0" stdsetdef="1" > + <author></author> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <exportmacro></exportmacro> + <class>PreviewWidgetBase</class> + <widget class="QWidget" name="PreviewWidgetBase" > + <property name="objectName" > + <string notr="true" >PreviewWidgetBase</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>378</width> + <height>236</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>1</hsizetype> + <vsizetype>1</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Preview Window</string> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="Q3ButtonGroup" name="ButtonGroup1" > + <property name="objectName" > + <string notr="true" >ButtonGroup1</string> + </property> + <property name="title" > + <string>ButtonGroup</string> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QRadioButton" name="RadioButton1" > + <property name="objectName" > + <string notr="true" >RadioButton1</string> + </property> + <property name="text" > + <string>RadioButton1</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="RadioButton2" > + <property name="objectName" > + <string notr="true" >RadioButton2</string> + </property> + <property name="text" > + <string>RadioButton2</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="RadioButton3" > + <property name="objectName" > + <string notr="true" >RadioButton3</string> + </property> + <property name="text" > + <string>RadioButton3</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="Q3ButtonGroup" name="ButtonGroup2" > + <property name="objectName" > + <string notr="true" >ButtonGroup2</string> + </property> + <property name="title" > + <string>ButtonGroup2</string> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QCheckBox" name="CheckBox1" > + <property name="objectName" > + <string notr="true" >CheckBox1</string> + </property> + <property name="text" > + <string>CheckBox1</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="CheckBox2" > + <property name="objectName" > + <string notr="true" >CheckBox2</string> + </property> + <property name="text" > + <string>CheckBox2</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QProgressBar" name="ProgressBar1" > + <property name="objectName" > + <string notr="true" >ProgressBar1</string> + </property> + <property name="value" > + <number>50</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLineEdit" name="LineEdit1" > + <property name="objectName" > + <string notr="true" >LineEdit1</string> + </property> + <property name="text" > + <string>LineEdit</string> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="ComboBox1" > + <property name="objectName" > + <string notr="true" >ComboBox1</string> + </property> + <item> + <property name="text" > + <string>ComboBox</string> + </property> + </item> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QSpinBox" name="SpinBox1" > + <property name="objectName" > + <string notr="true" >SpinBox1</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="PushButton1" > + <property name="objectName" > + <string notr="true" >PushButton1</string> + </property> + <property name="text" > + <string>PushButton</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QScrollBar" name="ScrollBar1" > + <property name="objectName" > + <string notr="true" >ScrollBar1</string> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QSlider" name="Slider1" > + <property name="objectName" > + <string notr="true" >Slider1</string> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QTextEdit" name="textView" > + <property name="objectName" > + <string notr="true" >textView</string> + </property> + <property name="maximumSize" > + <size> + <width>32767</width> + <height>50</height> + </size> + </property> + <property name="readOnly" > + <bool>true</bool> + </property> + <property name="text" > + <string><p> +<a href="http://qt.nokia.com">http://qt.nokia.com</a> +</p> +<p> +<a href="http://www.kde.org">http://www.kde.org</a> +</p></string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + <item> + <spacer name="Spacer2" > + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="sizeType" > + <enum>Expanding</enum> + </property> + <property name="orientation" > + <enum>Vertical</enum> + </property> + </spacer> + </item> + </layout> + </widget> + <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> +</ui> diff --git a/tests/auto/uiloader/baseline/proxy.ui b/tests/auto/uiloader/baseline/proxy.ui new file mode 100644 index 0000000000000000000000000000000000000000..62a8be62733b64fe483b6fdac37c157af5f48ea6 --- /dev/null +++ b/tests/auto/uiloader/baseline/proxy.ui @@ -0,0 +1,104 @@ +<ui version="4.0" > + <class>ProxyDialog</class> + <widget class="QDialog" name="ProxyDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>369</width> + <height>144</height> + </rect> + </property> + <property name="windowTitle" > + <string>Proxy Authentication</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="iconLabel" > + <property name="text" > + <string>ICON</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <widget class="QLabel" name="introLabel" > + <property name="text" > + <string>Connect to proxy</string> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0" colspan="2" > + <widget class="QLabel" name="usernameLabel" > + <property name="text" > + <string>Username:</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QLineEdit" name="userNameLineEdit" /> + </item> + <item row="2" column="0" colspan="2" > + <widget class="QLabel" name="passwordLabel" > + <property name="text" > + <string>Password:</string> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QLineEdit" name="passwordLineEdit" > + <property name="echoMode" > + <enum>QLineEdit::Password</enum> + </property> + </widget> + </item> + <item row="3" column="0" colspan="3" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>ProxyDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>ProxyDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/qfiledialog.ui b/tests/auto/uiloader/baseline/qfiledialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..85f5991722ecdba2b2ec8d53b295719a80202037 --- /dev/null +++ b/tests/auto/uiloader/baseline/qfiledialog.ui @@ -0,0 +1,320 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>QFileDialog</class> + <widget class="QDialog" name="QFileDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>521</width> + <height>316</height> + </rect> + </property> + <property name="sizeGripEnabled" > + <bool>true</bool> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="lookInLabel" > + <property name="text" > + <string>Look in:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <item> + <widget class="QFileDialogComboBox" name="lookInCombo" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Ignored" > + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>50</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="backButton" > + <property name="toolTip" > + <string>Back</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="forwardButton" > + <property name="toolTip" > + <string>Forward</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="toParentButton" > + <property name="toolTip" > + <string>Parent Directory</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="newFolderButton" > + <property name="toolTip" > + <string>Create New Folder</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="listModeButton" > + <property name="toolTip" > + <string>List View</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="detailModeButton" > + <property name="toolTip" > + <string>Detail View</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="0" colspan="3" > + <widget class="QSplitter" name="splitter" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <widget class="QSidebar" name="sidebar" /> + <widget class="QFrame" name="frame" > + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>0</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QStackedWidget" name="stackedWidget" > + <property name="currentIndex" > + <number>0</number> + </property> + <widget class="QWidget" name="page" > + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>0</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QFileDialogListView" name="listView" /> + </item> + </layout> + </widget> + <widget class="QWidget" name="page_2" > + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>0</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QFileDialogTreeView" name="treeView" /> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="fileNameLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QFileDialogLineEdit" name="fileNameEdit" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item rowspan="2" row="2" column="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="fileTypeLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Files of type:</string> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QComboBox" name="fileTypeCombo" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>QFileDialogTreeView</class> + <extends>QTreeView</extends> + <header>qfiledialog_p.h</header> + </customwidget> + <customwidget> + <class>QFileDialogListView</class> + <extends>QListView</extends> + <header>qfiledialog_p.h</header> + </customwidget> + <customwidget> + <class>QSidebar</class> + <extends>QListWidget</extends> + <header>qsidebar_p.h</header> + </customwidget> + <customwidget> + <class>QFileDialogLineEdit</class> + <extends>QLineEdit</extends> + <header>qfiledialog_p.h</header> + </customwidget> + <customwidget> + <class>QFileDialogComboBox</class> + <extends>QComboBox</extends> + <header>qfiledialog_p.h</header> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>lookInCombo</tabstop> + <tabstop>backButton</tabstop> + <tabstop>forwardButton</tabstop> + <tabstop>toParentButton</tabstop> + <tabstop>newFolderButton</tabstop> + <tabstop>listModeButton</tabstop> + <tabstop>detailModeButton</tabstop> + <tabstop>sidebar</tabstop> + <tabstop>listView</tabstop> + <tabstop>fileNameEdit</tabstop> + <tabstop>fileTypeCombo</tabstop> + <tabstop>buttonBox</tabstop> + <tabstop>treeView</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/qpagesetupwidget.ui b/tests/auto/uiloader/baseline/qpagesetupwidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..ace2ab8f4470f1c4e9352f3c9f5db9dccb915596 --- /dev/null +++ b/tests/auto/uiloader/baseline/qpagesetupwidget.ui @@ -0,0 +1,353 @@ +<ui version="4.0" > + <class>QPageSetupWidget</class> + <widget class="QWidget" name="QPageSetupWidget" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>416</width> + <height>488</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QGridLayout" name="gridLayout_3" > + <property name="margin" > + <number>0</number> + </property> + <item row="0" column="0" colspan="2" > + <layout class="QHBoxLayout" name="horizontalLayout_4" > + <item> + <widget class="QComboBox" name="unit" /> + </item> + <item> + <spacer name="horizontalSpacer_3" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="1" column="0" colspan="2" > + <widget class="QGroupBox" name="groupBox_2" > + <property name="title" > + <string>Paper</string> + </property> + <layout class="QGridLayout" name="gridLayout_2" > + <item row="0" column="0" > + <widget class="QLabel" name="pageSizeLabel" > + <property name="text" > + <string>Page size:</string> + </property> + <property name="buddy" > + <cstring>paperSize</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="paperSize" /> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="widthLabel" > + <property name="text" > + <string>Width:</string> + </property> + <property name="buddy" > + <cstring>paperWidth</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <layout class="QHBoxLayout" name="horizontalLayout_3" > + <item> + <widget class="QDoubleSpinBox" name="paperWidth" > + <property name="maximum" > + <double>9999.989999999999782</double> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="heightLabel" > + <property name="text" > + <string>Height:</string> + </property> + <property name="buddy" > + <cstring>paperHeight</cstring> + </property> + </widget> + </item> + <item> + <widget class="QDoubleSpinBox" name="paperHeight" > + <property name="maximum" > + <double>9999.989999999999782</double> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="paperSourceLabel" > + <property name="text" > + <string>Paper source:</string> + </property> + <property name="buddy" > + <cstring>paperSource</cstring> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QComboBox" name="paperSource" /> + </item> + <item row="1" column="2" > + <spacer name="horizontalSpacer_4" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item row="2" column="0" > + <widget class="QGroupBox" name="groupBox_3" > + <property name="title" > + <string>Orientation</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QRadioButton" name="portrait" > + <property name="text" > + <string>Portrait</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="landscape" > + <property name="text" > + <string>Landscape</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="reverseLandscape" > + <property name="text" > + <string>Reverse landscape</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="reversePortrait" > + <property name="text" > + <string>Reverse portrait</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_5" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item rowspan="2" row="2" column="1" > + <widget class="QWidget" native="1" name="preview" /> + </item> + <item row="3" column="0" > + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Margins</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="1" > + <widget class="QDoubleSpinBox" name="topMargin" > + <property name="toolTip" > + <string>top margin</string> + </property> + <property name="accessibleName" > + <string>top margin</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="maximum" > + <double>999.990000000000009</double> + </property> + </widget> + </item> + <item row="1" column="0" colspan="3" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <spacer name="horizontalSpacer_7" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDoubleSpinBox" name="leftMargin" > + <property name="toolTip" > + <string>left margin</string> + </property> + <property name="accessibleName" > + <string>left margin</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="maximum" > + <double>999.990000000000009</double> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::MinimumExpanding</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QDoubleSpinBox" name="rightMargin" > + <property name="toolTip" > + <string>right margin</string> + </property> + <property name="accessibleName" > + <string>right margin</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="maximum" > + <double>999.990000000000009</double> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_8" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="1" > + <widget class="QDoubleSpinBox" name="bottomMargin" > + <property name="toolTip" > + <string>bottom margin</string> + </property> + <property name="accessibleName" > + <string>bottom margin</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="maximum" > + <double>999.990000000000009</double> + </property> + </widget> + </item> + <item row="0" column="2" > + <spacer name="horizontalSpacer_2" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::MinimumExpanding</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0" > + <spacer name="horizontalSpacer_5" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::MinimumExpanding</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item row="4" column="0" > + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>20</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/qprintpropertieswidget.ui b/tests/auto/uiloader/baseline/qprintpropertieswidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..26fa09599e357121b165fd2cadc3662b529afd4e --- /dev/null +++ b/tests/auto/uiloader/baseline/qprintpropertieswidget.ui @@ -0,0 +1,70 @@ +<ui version="4.0" > + <class>QPrintPropertiesWidget</class> + <widget class="QWidget" name="QPrintPropertiesWidget" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>396</width> + <height>288</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4" > + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QTabWidget" name="tabs" > + <property name="currentIndex" > + <number>0</number> + </property> + <widget class="QWidget" name="tabPage" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>392</width> + <height>261</height> + </rect> + </property> + <attribute name="title" > + <string>Page</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QPageSetupWidget" native="1" name="pageSetup" /> + </item> + </layout> + </widget> + <widget class="QWidget" name="cupsPropertiesPage" > + <attribute name="title" > + <string>Advanced</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <widget class="QTreeView" name="treeView" > + <property name="alternatingRowColors" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>QPageSetupWidget</class> + <extends>QWidget</extends> + <header>qpagesetupdialog_unix_p.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/qprintsettingsoutput.ui b/tests/auto/uiloader/baseline/qprintsettingsoutput.ui new file mode 100644 index 0000000000000000000000000000000000000000..de8f4faeeb2f83221cfce40815c7e0c597271aff --- /dev/null +++ b/tests/auto/uiloader/baseline/qprintsettingsoutput.ui @@ -0,0 +1,371 @@ +<ui version="4.0" > + <class>QPrintSettingsOutput</class> + <widget class="QWidget" name="QPrintSettingsOutput" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>416</width> + <height>166</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QTabWidget" name="tabs" > + <property name="currentIndex" > + <number>0</number> + </property> + <widget class="QWidget" name="copiesTab" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>412</width> + <height>139</height> + </rect> + </property> + <attribute name="title" > + <string>Copies</string> + </attribute> + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QGroupBox" name="gbPrintRange" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Print range</string> + </property> + <layout class="QVBoxLayout" name="_3" > + <property name="spacing" > + <number>4</number> + </property> + <property name="margin" > + <number>6</number> + </property> + <item> + <widget class="QRadioButton" name="printAll" > + <property name="text" > + <string>Print all</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="_4" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QRadioButton" name="printRange" > + <property name="text" > + <string>Pages from</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="from" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="minimum" > + <number>1</number> + </property> + <property name="maximum" > + <number>999</number> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>to</string> + </property> + </widget> + </item> + <item> + <widget class="QSpinBox" name="to" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="minimum" > + <number>1</number> + </property> + <property name="maximum" > + <number>999</number> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QRadioButton" name="printSelection" > + <property name="text" > + <string>Selection</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>1</width> + <height>1</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Output Settings</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Copies:</string> + </property> + <property name="buddy" > + <cstring>copies</cstring> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <widget class="QSpinBox" name="copies" > + <property name="minimum" > + <number>1</number> + </property> + <property name="maximum" > + <number>999</number> + </property> + </widget> + </item> + <item row="0" column="3" > + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>91</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0" colspan="2" > + <widget class="QCheckBox" name="collate" > + <property name="text" > + <string>Collate</string> + </property> + </widget> + </item> + <item rowspan="2" row="1" column="2" colspan="2" > + <widget class="QLabel" name="outputIcon" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Ignored" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2" > + <widget class="QCheckBox" name="reverse" > + <property name="text" > + <string>Reverse</string> + </property> + </widget> + </item> + <item row="3" column="0" colspan="4" > + <spacer name="verticalSpacer_2" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>1</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="optionsTab" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>412</width> + <height>139</height> + </rect> + </property> + <attribute name="title" > + <string>Options</string> + </attribute> + <layout class="QGridLayout" name="gridLayout_2" > + <item row="0" column="1" > + <widget class="QGroupBox" name="colorMode" > + <property name="title" > + <string>Color Mode</string> + </property> + <layout class="QGridLayout" name="gridLayout_4" > + <item row="2" column="0" > + <spacer name="verticalSpacer_6" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>1</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0" > + <widget class="QRadioButton" name="color" > + <property name="text" > + <string>Color</string> + </property> + </widget> + </item> + <item rowspan="3" row="0" column="1" > + <widget class="QLabel" name="colorIcon" /> + </item> + <item row="1" column="0" > + <widget class="QRadioButton" name="grayscale" > + <property name="text" > + <string>Grayscale</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item row="0" column="0" > + <widget class="QGroupBox" name="duplex" > + <property name="title" > + <string>Duplex Printing</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QRadioButton" name="noDuplex" > + <property name="text" > + <string>None</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="duplexLong" > + <property name="text" > + <string>Long side</string> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="duplexShort" > + <property name="text" > + <string>Short side</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer" > + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>1</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>printRange</sender> + <signal>toggled(bool)</signal> + <receiver>from</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>76</x> + <y>59</y> + </hint> + <hint type="destinationlabel" > + <x>122</x> + <y>57</y> + </hint> + </hints> + </connection> + <connection> + <sender>printRange</sender> + <signal>toggled(bool)</signal> + <receiver>to</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>69</x> + <y>67</y> + </hint> + <hint type="destinationlabel" > + <x>215</x> + <y>67</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/qprintwidget.ui b/tests/auto/uiloader/baseline/qprintwidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..8a4f3bde0a2803820d4365aa046dd33a68985767 --- /dev/null +++ b/tests/auto/uiloader/baseline/qprintwidget.ui @@ -0,0 +1,116 @@ +<ui version="4.0" > + <class>QPrintWidget</class> + <widget class="QWidget" name="QPrintWidget" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>443</width> + <height>175</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QGroupBox" name="printerGroup" > + <property name="title" > + <string>Printer</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>&Name:</string> + </property> + <property name="buddy" > + <cstring>printers</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QComboBox" name="printers" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>3</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QPushButton" name="properties" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>P&roperties</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Location:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLabel" name="location" /> + </item> + <item row="1" column="2" > + <widget class="QCheckBox" name="preview" > + <property name="text" > + <string>Preview</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Type:</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLabel" name="type" /> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="lOutput" > + <property name="text" > + <string>Output &file:</string> + </property> + <property name="buddy" > + <cstring>filename</cstring> + </property> + </widget> + </item> + <item row="3" column="1" colspan="2" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QLineEdit" name="filename" /> + </item> + <item> + <widget class="QToolButton" name="fileBrowser" > + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/qsqlconnectiondialog.ui b/tests/auto/uiloader/baseline/qsqlconnectiondialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..91a8700579da81428922b743fa67aa6c94b2b7ca --- /dev/null +++ b/tests/auto/uiloader/baseline/qsqlconnectiondialog.ui @@ -0,0 +1,224 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>QSqlConnectionDialogUi</class> + <widget class="QDialog" name="QSqlConnectionDialogUi" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>315</width> + <height>302</height> + </rect> + </property> + <property name="windowTitle" > + <string>Connect...</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="connGroupBox" > + <property name="title" > + <string>Connection settings</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QComboBox" name="comboDriver" /> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="textLabel4" > + <property name="text" > + <string>&Username:</string> + </property> + <property name="buddy" > + <cstring>editUsername</cstring> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="textLabel2" > + <property name="text" > + <string>D&river</string> + </property> + <property name="buddy" > + <cstring>comboDriver</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLineEdit" name="editDatabase" /> + </item> + <item row="5" column="1" > + <widget class="QSpinBox" name="portSpinBox" > + <property name="specialValueText" > + <string>Default</string> + </property> + <property name="maximum" > + <number>65535</number> + </property> + <property name="minimum" > + <number>-1</number> + </property> + <property name="value" > + <number>-1</number> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="textLabel3" > + <property name="text" > + <string>Database Name:</string> + </property> + <property name="buddy" > + <cstring>editDatabase</cstring> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QLineEdit" name="editPassword" > + <property name="echoMode" > + <enum>QLineEdit::Password</enum> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLineEdit" name="editUsername" /> + </item> + <item row="4" column="1" > + <widget class="QLineEdit" name="editHostname" /> + </item> + <item row="4" column="0" > + <widget class="QLabel" name="textLabel5" > + <property name="text" > + <string>&Hostname:</string> + </property> + <property name="buddy" > + <cstring>editHostname</cstring> + </property> + </widget> + </item> + <item row="5" column="0" > + <widget class="QLabel" name="textLabel5_2" > + <property name="text" > + <string>P&ort:</string> + </property> + <property name="buddy" > + <cstring>portSpinBox</cstring> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="textLabel4_2" > + <property name="text" > + <string>&Password:</string> + </property> + <property name="buddy" > + <cstring>editPassword</cstring> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QCheckBox" name="dbCheckBox" > + <property name="text" > + <string>Us&e predefined in-memory database</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="okButton" > + <property name="text" > + <string>&OK</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancelButton" > + <property name="text" > + <string>&Cancel</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <tabstops> + <tabstop>comboDriver</tabstop> + <tabstop>editDatabase</tabstop> + <tabstop>editUsername</tabstop> + <tabstop>editPassword</tabstop> + <tabstop>editHostname</tabstop> + <tabstop>portSpinBox</tabstop> + <tabstop>dbCheckBox</tabstop> + <tabstop>okButton</tabstop> + <tabstop>cancelButton</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/qtgradientdialog.ui b/tests/auto/uiloader/baseline/qtgradientdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..0c5578fd0b448dbda48b432da796c2126f52c58d --- /dev/null +++ b/tests/auto/uiloader/baseline/qtgradientdialog.ui @@ -0,0 +1,121 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>QtGradientDialog</class> + <widget class="QDialog" name="QtGradientDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>178</width> + <height>81</height> + </rect> + </property> + <property name="windowTitle" > + <string>Edit Gradient</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QtGradientEditor" name="gradientEditor" > + <property name="sizePolicy" > + <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>QtGradientEditor</class> + <extends>QFrame</extends> + <header>qtgradienteditor.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>QtGradientDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>72</x> + <y>224</y> + </hint> + <hint type="destinationlabel" > + <x>21</x> + <y>243</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>QtGradientDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>168</x> + <y>233</y> + </hint> + <hint type="destinationlabel" > + <x>152</x> + <y>251</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/qtgradienteditor.ui b/tests/auto/uiloader/baseline/qtgradienteditor.ui new file mode 100644 index 0000000000000000000000000000000000000000..7d7a3344135b991c0f0410d9d4dc210f14a6d1f3 --- /dev/null +++ b/tests/auto/uiloader/baseline/qtgradienteditor.ui @@ -0,0 +1,1377 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>QtGradientEditor</class> + <widget class="QWidget" name="QtGradientEditor" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>364</width> + <height>518</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <widget class="QFrame" name="frame" > + <property name="geometry" > + <rect> + <x>10</x> + <y>69</y> + <width>193</width> + <height>150</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QtGradientWidget" native="1" name="gradientWidget" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Gradient Editor</string> + </property> + <property name="whatsThis" > + <string>This area shows a preview of the gradient being edited. It also allows you to edit parameters specific to the gradient's type such as start and final point, radius, etc. by drag & drop.</string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QLabel" name="label1" > + <property name="geometry" > + <rect> + <x>209</x> + <y>69</y> + <width>64</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>1</string> + </property> + </widget> + <widget class="QDoubleSpinBox" name="spinBox1" > + <property name="geometry" > + <rect> + <x>279</x> + <y>69</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="decimals" > + <number>3</number> + </property> + <property name="maximum" > + <double>1.000000000000000</double> + </property> + <property name="singleStep" > + <double>0.010000000000000</double> + </property> + </widget> + <widget class="QLabel" name="label2" > + <property name="geometry" > + <rect> + <x>209</x> + <y>99</y> + <width>64</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>2</string> + </property> + </widget> + <widget class="QDoubleSpinBox" name="spinBox2" > + <property name="geometry" > + <rect> + <x>279</x> + <y>99</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="decimals" > + <number>3</number> + </property> + <property name="maximum" > + <double>1.000000000000000</double> + </property> + <property name="singleStep" > + <double>0.010000000000000</double> + </property> + </widget> + <widget class="QLabel" name="label3" > + <property name="geometry" > + <rect> + <x>209</x> + <y>129</y> + <width>64</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>3</string> + </property> + </widget> + <widget class="QDoubleSpinBox" name="spinBox3" > + <property name="geometry" > + <rect> + <x>279</x> + <y>129</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="decimals" > + <number>3</number> + </property> + <property name="maximum" > + <double>1.000000000000000</double> + </property> + <property name="singleStep" > + <double>0.010000000000000</double> + </property> + </widget> + <widget class="QLabel" name="label4" > + <property name="geometry" > + <rect> + <x>209</x> + <y>159</y> + <width>64</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>4</string> + </property> + </widget> + <widget class="QDoubleSpinBox" name="spinBox4" > + <property name="geometry" > + <rect> + <x>279</x> + <y>159</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="decimals" > + <number>3</number> + </property> + <property name="maximum" > + <double>1.000000000000000</double> + </property> + <property name="singleStep" > + <double>0.010000000000000</double> + </property> + </widget> + <widget class="QLabel" name="label5" > + <property name="geometry" > + <rect> + <x>209</x> + <y>189</y> + <width>64</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>5</string> + </property> + </widget> + <widget class="QDoubleSpinBox" name="spinBox5" > + <property name="geometry" > + <rect> + <x>279</x> + <y>189</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="decimals" > + <number>3</number> + </property> + <property name="maximum" > + <double>1.000000000000000</double> + </property> + <property name="singleStep" > + <double>0.010000000000000</double> + </property> + </widget> + <widget class="QtGradientStopsWidget" native="1" name="gradientStopsWidget" > + <property name="geometry" > + <rect> + <x>10</x> + <y>225</y> + <width>193</width> + <height>67</height> + </rect> + </property> + <property name="toolTip" > + <string>Gradient Stops Editor</string> + </property> + <property name="whatsThis" > + <string>This area allows you to edit gradient stops. Double click on the existing stop handle to duplicate it. Double click outside of the existing stop handles to create a new stop. Drag & drop the handle to reposition it. Use right mouse button to popup context menu with extra actions.</string> + </property> + </widget> + <widget class="QLabel" name="zoomLabel" > + <property name="geometry" > + <rect> + <x>209</x> + <y>231</y> + <width>64</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>Zoom</string> + </property> + </widget> + <widget class="QToolButton" name="zoomAllButton" > + <property name="geometry" > + <rect> + <x>279</x> + <y>260</y> + <width>72</width> + <height>26</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Reset Zoom</string> + </property> + <property name="text" > + <string>Reset Zoom</string> + </property> + </widget> + <widget class="QLabel" name="positionLabel" > + <property name="geometry" > + <rect> + <x>209</x> + <y>304</y> + <width>64</width> + <height>23</height> + </rect> + </property> + <property name="text" > + <string>Position</string> + </property> + </widget> + <widget class="QLabel" name="hLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>335</y> + <width>32</width> + <height>18</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Hue</string> + </property> + <property name="text" > + <string>H</string> + </property> + </widget> + <widget class="QFrame" name="frame_2" > + <property name="geometry" > + <rect> + <x>48</x> + <y>333</y> + <width>155</width> + <height>23</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QtColorLine" native="1" name="hueColorLine" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Hue</string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QLabel" name="hueLabel" > + <property name="geometry" > + <rect> + <x>209</x> + <y>335</y> + <width>64</width> + <height>18</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Hue</string> + </property> + </widget> + <widget class="QLabel" name="sLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>364</y> + <width>32</width> + <height>18</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Saturation</string> + </property> + <property name="text" > + <string>S</string> + </property> + </widget> + <widget class="QFrame" name="frame_5" > + <property name="geometry" > + <rect> + <x>48</x> + <y>362</y> + <width>155</width> + <height>23</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QtColorLine" native="1" name="saturationColorLine" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Saturation</string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QLabel" name="saturationLabel" > + <property name="geometry" > + <rect> + <x>209</x> + <y>364</y> + <width>64</width> + <height>18</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Sat</string> + </property> + </widget> + <widget class="QLabel" name="vLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>393</y> + <width>32</width> + <height>18</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Value</string> + </property> + <property name="text" > + <string>V</string> + </property> + </widget> + <widget class="QFrame" name="frame_3" > + <property name="geometry" > + <rect> + <x>48</x> + <y>391</y> + <width>155</width> + <height>23</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QtColorLine" native="1" name="valueColorLine" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Value</string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QLabel" name="valueLabel" > + <property name="geometry" > + <rect> + <x>209</x> + <y>393</y> + <width>64</width> + <height>18</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Val</string> + </property> + </widget> + <widget class="QLabel" name="aLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>422</y> + <width>32</width> + <height>18</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Alpha</string> + </property> + <property name="text" > + <string>A</string> + </property> + </widget> + <widget class="QFrame" name="frame_4" > + <property name="geometry" > + <rect> + <x>48</x> + <y>420</y> + <width>155</width> + <height>23</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QtColorLine" native="1" name="alphaColorLine" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Expanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Alpha</string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QLabel" name="alphaLabel" > + <property name="geometry" > + <rect> + <x>209</x> + <y>422</y> + <width>64</width> + <height>18</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Alpha</string> + </property> + </widget> + <widget class="QComboBox" name="typeComboBox" > + <property name="geometry" > + <rect> + <x>10</x> + <y>40</y> + <width>79</width> + <height>22</height> + </rect> + </property> + <property name="toolTip" > + <string>Type</string> + </property> + </widget> + <widget class="QComboBox" name="spreadComboBox" > + <property name="geometry" > + <rect> + <x>96</x> + <y>40</y> + <width>72</width> + <height>22</height> + </rect> + </property> + <property name="toolTip" > + <string>Spread</string> + </property> + </widget> + <widget class="QLabel" name="colorLabel" > + <property name="geometry" > + <rect> + <x>10</x> + <y>298</y> + <width>32</width> + <height>29</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Color</string> + </property> + </widget> + <widget class="QtColorButton" name="colorButton" > + <property name="geometry" > + <rect> + <x>48</x> + <y>300</y> + <width>26</width> + <height>25</height> + </rect> + </property> + <property name="toolTip" > + <string>Current stop's color</string> + </property> + <property name="text" > + <string/> + </property> + </widget> + <widget class="QRadioButton" name="hsvRadioButton" > + <property name="geometry" > + <rect> + <x>80</x> + <y>301</y> + <width>49</width> + <height>23</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Show HSV specification</string> + </property> + <property name="text" > + <string>HSV</string> + </property> + <property name="checked" > + <bool>true</bool> + </property> + </widget> + <widget class="QRadioButton" name="rgbRadioButton" > + <property name="geometry" > + <rect> + <x>135</x> + <y>301</y> + <width>49</width> + <height>23</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Show RGB specification</string> + </property> + <property name="text" > + <string>RGB</string> + </property> + </widget> + <widget class="QWidget" native="1" name="positionWidget" > + <property name="geometry" > + <rect> + <x>279</x> + <y>304</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QDoubleSpinBox" name="positionSpinBox" > + <property name="toolTip" > + <string>Current stop's position</string> + </property> + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="decimals" > + <number>3</number> + </property> + <property name="minimum" > + <double>0.000000000000000</double> + </property> + <property name="maximum" > + <double>1.000000000000000</double> + </property> + <property name="singleStep" > + <double>0.010000000000000</double> + </property> + <property name="value" > + <double>0.000000000000000</double> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" native="1" name="hueWidget" > + <property name="geometry" > + <rect> + <x>279</x> + <y>333</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QSpinBox" name="hueSpinBox" > + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="maximum" > + <number>359</number> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" native="1" name="saturationWidget" > + <property name="geometry" > + <rect> + <x>279</x> + <y>362</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QSpinBox" name="saturationSpinBox" > + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="maximum" > + <number>255</number> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" native="1" name="valueWidget" > + <property name="geometry" > + <rect> + <x>279</x> + <y>391</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QSpinBox" name="valueSpinBox" > + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="maximum" > + <number>255</number> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" native="1" name="alphaWidget" > + <property name="geometry" > + <rect> + <x>279</x> + <y>420</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QSpinBox" name="alphaSpinBox" > + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="maximum" > + <number>255</number> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" native="1" name="zoomWidget" > + <property name="geometry" > + <rect> + <x>279</x> + <y>231</y> + <width>73</width> + <height>23</height> + </rect> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QSpinBox" name="zoomSpinBox" > + <property name="keyboardTracking" > + <bool>false</bool> + </property> + <property name="suffix" > + <string>%</string> + </property> + <property name="minimum" > + <number>100</number> + </property> + <property name="maximum" > + <number>10000</number> + </property> + <property name="singleStep" > + <number>100</number> + </property> + <property name="value" > + <number>100</number> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" native="1" name="line1Widget" > + <property name="geometry" > + <rect> + <x>209</x> + <y>219</y> + <width>143</width> + <height>16</height> + </rect> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="Line" name="line1" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" native="1" name="line2Widget" > + <property name="geometry" > + <rect> + <x>209</x> + <y>292</y> + <width>143</width> + <height>16</height> + </rect> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="Line" name="line2" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" native="1" name="zoomButtonsWidget" > + <property name="geometry" > + <rect> + <x>209</x> + <y>260</y> + <width>64</width> + <height>26</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QHBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QToolButton" name="zoomInButton" > + <property name="toolTip" > + <string>Zoom In</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="zoomOutButton" > + <property name="toolTip" > + <string>Zoom Out</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <widget class="QToolButton" name="detailsButton" > + <property name="geometry" > + <rect> + <x>176</x> + <y>40</y> + <width>25</width> + <height>22</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Ignored" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Toggle details extension</string> + </property> + <property name="text" > + <string>></string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + <widget class="QToolButton" name="linearButton" > + <property name="geometry" > + <rect> + <x>10</x> + <y>10</y> + <width>30</width> + <height>26</height> + </rect> + </property> + <property name="toolTip" > + <string>Linear Type</string> + </property> + <property name="text" > + <string>...</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + <widget class="QToolButton" name="radialButton" > + <property name="geometry" > + <rect> + <x>40</x> + <y>10</y> + <width>30</width> + <height>26</height> + </rect> + </property> + <property name="toolTip" > + <string>Radial Type</string> + </property> + <property name="text" > + <string>...</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + <widget class="QToolButton" name="conicalButton" > + <property name="geometry" > + <rect> + <x>70</x> + <y>10</y> + <width>30</width> + <height>26</height> + </rect> + </property> + <property name="toolTip" > + <string>Conical Type</string> + </property> + <property name="text" > + <string>...</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + <widget class="QToolButton" name="padButton" > + <property name="geometry" > + <rect> + <x>110</x> + <y>10</y> + <width>30</width> + <height>26</height> + </rect> + </property> + <property name="toolTip" > + <string>Pad Spread</string> + </property> + <property name="text" > + <string>...</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + <widget class="QToolButton" name="repeatButton" > + <property name="geometry" > + <rect> + <x>140</x> + <y>10</y> + <width>30</width> + <height>26</height> + </rect> + </property> + <property name="toolTip" > + <string>Repeat Spread</string> + </property> + <property name="text" > + <string>...</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + <widget class="QToolButton" name="reflectButton" > + <property name="geometry" > + <rect> + <x>170</x> + <y>10</y> + <width>30</width> + <height>26</height> + </rect> + </property> + <property name="toolTip" > + <string>Reflect Spread</string> + </property> + <property name="text" > + <string>...</string> + </property> + <property name="checkable" > + <bool>true</bool> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + </widget> + <customwidgets> + <customwidget> + <class>QtColorButton</class> + <extends>QToolButton</extends> + <header>qtcolorbutton.h</header> + </customwidget> + <customwidget> + <class>QtColorLine</class> + <extends>QWidget</extends> + <header>qtcolorline.h</header> + <container>1</container> + </customwidget> + <customwidget> + <class>QtGradientStopsWidget</class> + <extends>QWidget</extends> + <header>qtgradientstopswidget.h</header> + <container>1</container> + </customwidget> + <customwidget> + <class>QtGradientWidget</class> + <extends>QWidget</extends> + <header>qtgradientwidget.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>typeComboBox</tabstop> + <tabstop>spreadComboBox</tabstop> + <tabstop>detailsButton</tabstop> + <tabstop>spinBox1</tabstop> + <tabstop>spinBox2</tabstop> + <tabstop>spinBox3</tabstop> + <tabstop>spinBox4</tabstop> + <tabstop>spinBox5</tabstop> + <tabstop>zoomSpinBox</tabstop> + <tabstop>zoomInButton</tabstop> + <tabstop>zoomOutButton</tabstop> + <tabstop>zoomAllButton</tabstop> + <tabstop>colorButton</tabstop> + <tabstop>hsvRadioButton</tabstop> + <tabstop>rgbRadioButton</tabstop> + <tabstop>positionSpinBox</tabstop> + <tabstop>hueSpinBox</tabstop> + <tabstop>saturationSpinBox</tabstop> + <tabstop>valueSpinBox</tabstop> + <tabstop>alphaSpinBox</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/qtgradientview.ui b/tests/auto/uiloader/baseline/qtgradientview.ui new file mode 100644 index 0000000000000000000000000000000000000000..af7267ea2b0be7220a95caa6fdd3b450ff3555ea --- /dev/null +++ b/tests/auto/uiloader/baseline/qtgradientview.ui @@ -0,0 +1,135 @@ +<ui version="4.0" > + <class>QtGradientView</class> + <widget class="QWidget" name="QtGradientView" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>484</width> + <height>228</height> + </rect> + </property> + <property name="windowTitle" > + <string>Gradient View</string> + </property> + <layout class="QVBoxLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QToolButton" name="newButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>New...</string> + </property> + <property name="toolButtonStyle" > + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="editButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Edit...</string> + </property> + <property name="toolButtonStyle" > + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="renameButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Rename</string> + </property> + <property name="toolButtonStyle" > + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="removeButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Minimum" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Remove</string> + </property> + <property name="toolButtonStyle" > + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>71</width> + <height>26</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QListWidget" name="listWidget" /> + </item> + </layout> + </widget> + <tabstops> + <tabstop>listWidget</tabstop> + <tabstop>newButton</tabstop> + <tabstop>editButton</tabstop> + <tabstop>renameButton</tabstop> + <tabstop>removeButton</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/qtgradientviewdialog.ui b/tests/auto/uiloader/baseline/qtgradientviewdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..c84907289b39518244520c9b545ce340307a76df --- /dev/null +++ b/tests/auto/uiloader/baseline/qtgradientviewdialog.ui @@ -0,0 +1,121 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>QtGradientViewDialog</class> + <widget class="QDialog" name="QtGradientViewDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>178</width> + <height>72</height> + </rect> + </property> + <property name="windowTitle" > + <string>Select Gradient</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QtGradientView" name="gradientView" > + <property name="sizePolicy" > + <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>QtGradientView</class> + <extends>QFrame</extends> + <header>qtgradientview.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>QtGradientViewDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>72</x> + <y>224</y> + </hint> + <hint type="destinationlabel" > + <x>21</x> + <y>243</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>QtGradientViewDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>168</x> + <y>233</y> + </hint> + <hint type="destinationlabel" > + <x>152</x> + <y>251</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/qtresourceeditordialog.ui b/tests/auto/uiloader/baseline/qtresourceeditordialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..2205da4d5020b515a73c55e6bcb3adb49bce7879 --- /dev/null +++ b/tests/auto/uiloader/baseline/qtresourceeditordialog.ui @@ -0,0 +1,180 @@ +<ui version="4.0" > + <class>QtResourceEditorDialog</class> + <widget class="QDialog" name="QtResourceEditorDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>469</width> + <height>317</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <widget class="QSplitter" name="splitter" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <widget class="QWidget" name="layoutWidget" > + <layout class="QGridLayout" > + <item row="0" column="0" colspan="4" > + <widget class="QListWidget" name="qrcFileList" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QToolButton" name="newQrcButton" > + <property name="toolTip" > + <string>New File</string> + </property> + <property name="text" > + <string>N</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QToolButton" name="removeQrcButton" > + <property name="toolTip" > + <string>Remove File</string> + </property> + <property name="text" > + <string>R</string> + </property> + </widget> + </item> + <item row="1" column="3" > + <spacer> + <property name="spacerName" stdset="0" > + <string/> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Ignored</enum> + </property> + <property name="sizeHint" > + <size> + <width>21</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="1" > + <widget class="QToolButton" name="importQrcButton" > + <property name="text" > + <string>I</string> + </property> + </widget> + </item> + </layout> + </widget> + <widget class="QWidget" name="" > + <layout class="QGridLayout" > + <item row="0" column="0" colspan="4" > + <widget class="QTreeView" name="resourceTreeView" /> + </item> + <item row="1" column="0" > + <widget class="QToolButton" name="newResourceButton" > + <property name="toolTip" > + <string>New Resource</string> + </property> + <property name="text" > + <string>N</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QToolButton" name="addResourceButton" > + <property name="text" > + <string>A</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QToolButton" name="removeResourceButton" > + <property name="toolTip" > + <string>Remove Resource or File</string> + </property> + <property name="text" > + <string>R</string> + </property> + </widget> + </item> + <item row="1" column="3" > + <spacer name="horizontalSpacer" > + <property name="spacerName" stdset="0" > + <string>horizontalSpacer</string> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>QtResourceEditorDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>QtResourceEditorDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/qttoolbardialog.ui b/tests/auto/uiloader/baseline/qttoolbardialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..c4ad934f80eb977a0f903ee4ac4f11050bc075bf --- /dev/null +++ b/tests/auto/uiloader/baseline/qttoolbardialog.ui @@ -0,0 +1,207 @@ +<ui version="4.0" > + <class>QtToolBarDialog</class> + <widget class="QDialog" name="QtToolBarDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>583</width> + <height>508</height> + </rect> + </property> + <property name="windowTitle" > + <string>Customize Toolbars</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item rowspan="3" row="1" column="0" > + <widget class="QTreeWidget" name="actionTree" > + <column> + <property name="text" > + <string>1</string> + </property> + </column> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Actions</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Toolbars</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="newButton" > + <property name="toolTip" > + <string>Add new toolbar</string> + </property> + <property name="text" > + <string>New</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="removeButton" > + <property name="toolTip" > + <string>Remove selected toolbar</string> + </property> + <property name="text" > + <string>Remove</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="renameButton" > + <property name="toolTip" > + <string>Rename toolbar</string> + </property> + <property name="text" > + <string>Rename</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="3" column="1" > + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QToolButton" name="upButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Move action up</string> + </property> + <property name="text" > + <string>Up</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="leftButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Remove action from toolbar</string> + </property> + <property name="text" > + <string><-</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="rightButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Add action to toolbar</string> + </property> + <property name="text" > + <string>-></string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="downButton" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip" > + <string>Move action down</string> + </property> + <property name="text" > + <string>Down</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>29</width> + <height>16</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="3" column="2" > + <widget class="QListWidget" name="currentToolBarList" /> + </item> + <item row="2" column="1" colspan="2" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Current Toolbar Actions</string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2" > + <widget class="QListWidget" name="toolBarList" /> + </item> + <item row="5" column="0" colspan="3" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="standardButtons" > + <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults</set> + </property> + </widget> + </item> + </layout> + </widget> + <tabstops> + <tabstop>newButton</tabstop> + <tabstop>removeButton</tabstop> + <tabstop>renameButton</tabstop> + <tabstop>toolBarList</tabstop> + <tabstop>upButton</tabstop> + <tabstop>leftButton</tabstop> + <tabstop>rightButton</tabstop> + <tabstop>downButton</tabstop> + <tabstop>currentToolBarList</tabstop> + </tabstops> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/querywidget.ui b/tests/auto/uiloader/baseline/querywidget.ui new file mode 100644 index 0000000000000000000000000000000000000000..53fa62227b68bb81d5dc5819e01f1ab4a5b2176a --- /dev/null +++ b/tests/auto/uiloader/baseline/querywidget.ui @@ -0,0 +1,163 @@ +<ui version="4.0" > + <class>QueryWidget</class> + <widget class="QMainWindow" name="QueryWidget" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>545</width> + <height>531</height> + </rect> + </property> + <property name="windowTitle" > + <string>Recipes XQuery Example</string> + </property> + <widget class="QWidget" name="centralwidget" > + <property name="geometry" > + <rect> + <x>0</x> + <y>29</y> + <width>545</width> + <height>480</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QGroupBox" name="inputGroupBox" > + <property name="minimumSize" > + <size> + <width>550</width> + <height>120</height> + </size> + </property> + <property name="title" > + <string>Input Document</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4" > + <item> + <layout class="QVBoxLayout" name="_2" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QTextEdit" name="inputTextEdit" /> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="queryGroupBox" > + <property name="minimumSize" > + <size> + <width>550</width> + <height>120</height> + </size> + </property> + <property name="title" > + <string>Select your query:</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_5" > + <item> + <widget class="QComboBox" name="defaultQueries" /> + </item> + <item> + <widget class="QTextEdit" name="queryTextEdit" > + <property name="minimumSize" > + <size> + <width>400</width> + <height>60</height> + </size> + </property> + <property name="readOnly" > + <bool>true</bool> + </property> + <property name="acceptRichText" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="outputGroupBox" > + <property name="minimumSize" > + <size> + <width>550</width> + <height>120</height> + </size> + </property> + <property name="title" > + <string>Output Document</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_6" > + <item> + <layout class="QVBoxLayout" name="_3" > + <property name="spacing" > + <number>6</number> + </property> + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QTextEdit" name="outputTextEdit" > + <property name="minimumSize" > + <size> + <width>500</width> + <height>80</height> + </size> + </property> + <property name="readOnly" > + <bool>true</bool> + </property> + <property name="acceptRichText" > + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menubar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>545</width> + <height>29</height> + </rect> + </property> + </widget> + <widget class="QStatusBar" name="statusbar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>509</y> + <width>545</width> + <height>22</height> + </rect> + </property> + </widget> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/remotecontrol.ui b/tests/auto/uiloader/baseline/remotecontrol.ui new file mode 100644 index 0000000000000000000000000000000000000000..1cfc7f54007dd0d097e16fc63ebfa16e70a54089 --- /dev/null +++ b/tests/auto/uiloader/baseline/remotecontrol.ui @@ -0,0 +1,228 @@ +<ui version="4.0" > + <class>RemoteControlClass</class> + <widget class="QMainWindow" name="RemoteControlClass" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>344</width> + <height>364</height> + </rect> + </property> + <property name="windowTitle" > + <string>RemoteControl</string> + </property> + <widget class="QWidget" name="centralWidget" > + <layout class="QGridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Start URL:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <widget class="QLineEdit" name="startUrlLineEdit" /> + </item> + <item row="1" column="1" > + <widget class="QPushButton" name="launchButton" > + <property name="text" > + <string>Launch Qt HelpViewer</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>101</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>113</width> + <height>16</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="0" colspan="3" > + <widget class="QGroupBox" name="actionGroupBox" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="title" > + <string>Actions</string> + </property> + <layout class="QGridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Search in Index:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>0</number> + </property> + <item> + <widget class="QLineEdit" name="indexLineEdit" /> + </item> + <item> + <widget class="QToolButton" name="indexButton" > + <property name="text" > + <string/> + </property> + <property name="icon" > + <iconset resource="remotecontrol.qrc" >:/remotecontrol/enter.png</iconset> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Identifier:</string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>0</number> + </property> + <item> + <widget class="QLineEdit" name="identifierLineEdit" /> + </item> + <item> + <widget class="QToolButton" name="identifierButton" > + <property name="text" > + <string/> + </property> + <property name="icon" > + <iconset resource="remotecontrol.qrc" >:/remotecontrol/enter.png</iconset> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Show URL:</string> + </property> + </widget> + </item> + <item row="2" column="1" colspan="2" > + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>0</number> + </property> + <item> + <widget class="QLineEdit" name="urlLineEdit" /> + </item> + <item> + <widget class="QToolButton" name="urlButton" > + <property name="text" > + <string/> + </property> + <property name="icon" > + <iconset resource="remotecontrol.qrc" >:/remotecontrol/enter.png</iconset> + </property> + </widget> + </item> + </layout> + </item> + <item row="3" column="1" > + <widget class="QPushButton" name="syncContentsButton" > + <property name="text" > + <string>Sync Contents</string> + </property> + </widget> + </item> + <item row="3" column="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>81</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="4" column="0" colspan="3" > + <widget class="QCheckBox" name="contentsCheckBox" > + <property name="text" > + <string>Show Contents</string> + </property> + </widget> + </item> + <item row="5" column="0" > + <widget class="QCheckBox" name="indexCheckBox" > + <property name="text" > + <string>Show Index</string> + </property> + </widget> + </item> + <item row="6" column="0" colspan="3" > + <widget class="QCheckBox" name="bookmarksCheckBox" > + <property name="text" > + <string>Show Bookmarks</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <widget class="QMenuBar" name="menuBar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>344</width> + <height>21</height> + </rect> + </property> + <widget class="QMenu" name="menuFile" > + <property name="title" > + <string>File</string> + </property> + <addaction name="actionQuit" /> + </widget> + <addaction name="menuFile" /> + </widget> + <widget class="QStatusBar" name="statusBar" /> + <action name="actionQuit" > + <property name="text" > + <string>Quit</string> + </property> + </action> + </widget> + <layoutdefault spacing="6" margin="11" /> + <resources> + <include location="remotecontrol.qrc" /> + </resources> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/saveformastemplate.ui b/tests/auto/uiloader/baseline/saveformastemplate.ui new file mode 100644 index 0000000000000000000000000000000000000000..81d55d3b63d5720f8c5b7a86b2cf82cf08c48346 --- /dev/null +++ b/tests/auto/uiloader/baseline/saveformastemplate.ui @@ -0,0 +1,166 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>SaveFormAsTemplate</class> + <widget class="QDialog" name="SaveFormAsTemplate" > + <property name="windowTitle" > + <string>Save Form As Template</string> + </property> + <layout class="QVBoxLayout" > + <item> + <layout class="QFormLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + <property name="text" > + <string>&Name:</string> + </property> + <property name="textFormat" > + <enum>Qt::AutoText</enum> + </property> + <property name="buddy" > + <cstring>templateNameEdit</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="templateNameEdit" > + <property name="minimumSize" > + <size> + <width>222</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string/> + </property> + <property name="echoMode" > + <enum>QLineEdit::Normal</enum> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="frameShape" > + <enum>QFrame::NoFrame</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Plain</enum> + </property> + <property name="text" > + <string>&Category:</string> + </property> + <property name="textFormat" > + <enum>Qt::AutoText</enum> + </property> + <property name="buddy" > + <cstring>categoryCombo</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QComboBox" name="categoryCombo" /> + </item> + </layout> + </item> + <item> + <widget class="QFrame" name="horizontalLine" > + <property name="frameShape" > + <enum>QFrame::HLine</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>SaveFormAsTemplate</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>256</x> + <y>124</y> + </hint> + <hint type="destinationlabel" > + <x>113</x> + <y>143</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>SaveFormAsTemplate</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>332</x> + <y>127</y> + </hint> + <hint type="destinationlabel" > + <x>372</x> + <y>147</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/settings.ui b/tests/auto/uiloader/baseline/settings.ui new file mode 100644 index 0000000000000000000000000000000000000000..fcf698ba85a5a611fd5d25b251f0afc11f361641 --- /dev/null +++ b/tests/auto/uiloader/baseline/settings.ui @@ -0,0 +1,262 @@ +<ui version="4.0" > + <class>Dialog</class> + <widget class="QDialog" name="Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>392</width> + <height>176</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QLabel" name="label" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>90</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string>Audio device:</string> + </property> + <property name="alignment" > + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="deviceCombo" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QLabel" name="label_6" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>90</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string>Audio effect:</string> + </property> + <property name="alignment" > + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + </widget> + </item> + <item> + <widget class="QComboBox" name="audioEffectsCombo" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QLabel" name="crossFadeLabel" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Maximum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>90</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string>Cross fade:</string> + </property> + <property name="alignment" > + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" > + <item> + <widget class="QSlider" name="crossFadeSlider" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimum" > + <number>-20</number> + </property> + <property name="maximum" > + <number>20</number> + </property> + <property name="singleStep" > + <number>1</number> + </property> + <property name="pageStep" > + <number>2</number> + </property> + <property name="value" > + <number>0</number> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="tickPosition" > + <enum>QSlider::TicksBelow</enum> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QLabel" name="label_3" > + <property name="font" > + <font> + <pointsize>9</pointsize> + </font> + </property> + <property name="text" > + <string>-10 Sec</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="label_5" > + <property name="font" > + <font> + <pointsize>9</pointsize> + </font> + </property> + <property name="text" > + <string>0</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLabel" name="label_4" > + <property name="font" > + <font> + <pointsize>9</pointsize> + </font> + </property> + <property name="text" > + <string>10 Sec</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </item> + </layout> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>Dialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>Dialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/signalslotdialog.ui b/tests/auto/uiloader/baseline/signalslotdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..1a8a8d92192ff99f5f8f4caf1666a5ca15ac933a --- /dev/null +++ b/tests/auto/uiloader/baseline/signalslotdialog.ui @@ -0,0 +1,129 @@ +<ui version="4.0" > + <class>SignalSlotDialogClass</class> + <widget class="QDialog" name="SignalSlotDialogClass" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>617</width> + <height>535</height> + </rect> + </property> + <property name="windowTitle" > + <string>Signals and slots</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QGroupBox" name="slotGroupBox" > + <property name="title" > + <string>Slots</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QListView" name="slotListView" /> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QToolButton" name="addSlotButton" > + <property name="toolTip" > + <string>Add</string> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="removeSlotButton" > + <property name="toolTip" > + <string>Delete</string> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="signalGroupBox" > + <property name="title" > + <string>Signals</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QListView" name="signalListView" /> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QToolButton" name="addSignalButton" > + <property name="toolTip" > + <string>Add</string> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="removeSignalButton" > + <property name="toolTip" > + <string>Delete</string> + </property> + <property name="text" > + <string>...</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="spacerName" stdset="0" > + <string/> + </property> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11" /> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/sslclient.ui b/tests/auto/uiloader/baseline/sslclient.ui new file mode 100644 index 0000000000000000000000000000000000000000..5a24751168fde0c996358da069c8e6b80b4f8e7d --- /dev/null +++ b/tests/auto/uiloader/baseline/sslclient.ui @@ -0,0 +1,190 @@ +<ui version="4.0" > + <class>Form</class> + <widget class="QWidget" name="Form" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>343</width> + <height>320</height> + </rect> + </property> + <property name="windowTitle" > + <string>Secure Socket Client</string> + </property> + <layout class="QVBoxLayout" > + <item> + <layout class="QGridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="hostNameLabel" > + <property name="text" > + <string>Host name:</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="hostNameEdit" > + <property name="text" > + <string>imap.example.com</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="portLabel" > + <property name="text" > + <string>Port:</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QSpinBox" name="portBox" > + <property name="minimum" > + <number>1</number> + </property> + <property name="maximum" > + <number>65535</number> + </property> + <property name="value" > + <number>993</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QPushButton" name="connectButton" > + <property name="enabled" > + <bool>true</bool> + </property> + <property name="text" > + <string>Connect to host</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="sessionBox" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="title" > + <string>Active session</string> + </property> + <layout class="QVBoxLayout" > + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QLabel" name="cipherText" > + <property name="text" > + <string>Cryptographic Cipher:</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="cipherLabel" > + <property name="text" > + <string><none></string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QTextEdit" name="sessionOutput" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> + </property> + <property name="readOnly" > + <bool>true</bool> + </property> + <property name="html" > + <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html></string> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QLabel" name="sessionInputLabel" > + <property name="text" > + <string>Input:</string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="sessionInput" > + <property name="enabled" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="sendButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="focusPolicy" > + <enum>Qt::TabFocus</enum> + </property> + <property name="text" > + <string>&Send</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>hostNameEdit</sender> + <signal>returnPressed()</signal> + <receiver>connectButton</receiver> + <slot>animateClick()</slot> + <hints> + <hint type="sourcelabel" > + <x>126</x> + <y>20</y> + </hint> + <hint type="destinationlabel" > + <x>142</x> + <y>78</y> + </hint> + </hints> + </connection> + <connection> + <sender>sessionInput</sender> + <signal>returnPressed()</signal> + <receiver>sendButton</receiver> + <slot>animateClick()</slot> + <hints> + <hint type="sourcelabel" > + <x>142</x> + <y>241</y> + </hint> + <hint type="destinationlabel" > + <x>297</x> + <y>234</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/sslerrors.ui b/tests/auto/uiloader/baseline/sslerrors.ui new file mode 100644 index 0000000000000000000000000000000000000000..4aac18cddbd060963e46d95e517b860bc2c8ed19 --- /dev/null +++ b/tests/auto/uiloader/baseline/sslerrors.ui @@ -0,0 +1,110 @@ +<ui version="4.0" > + <class>SslErrors</class> + <widget class="QDialog" name="SslErrors" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>371</width> + <height>216</height> + </rect> + </property> + <property name="windowTitle" > + <string>Unable To Validate The Connection</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string><html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600; color:#ff0000;">Warning</span><span style=" color:#ff0000;">:</span><span style=" color:#000000;"> One or more errors with this connection prevent validating the authenticity of the host you are connecting to. Please review the following list of errors, and click </span><span style=" color:#000000;">Ignore</span><span style=" color:#000000;"> to continue, or </span><span style=" color:#000000;">Cancel</span><span style=" color:#000000;"> to abort the connection.</span></p></body></html></string> + </property> + <property name="wordWrap" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QListWidget" name="sslErrorList" /> + </item> + <item> + <layout class="QHBoxLayout" > + <item> + <widget class="QPushButton" name="certificateChainButton" > + <property name="text" > + <string>View Certificate Chain</string> + </property> + <property name="autoDefault" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="pushButton" > + <property name="text" > + <string>Ignore</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pushButton_2" > + <property name="text" > + <string>Cancel</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>pushButton</sender> + <signal>clicked()</signal> + <receiver>SslErrors</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>235</x> + <y>185</y> + </hint> + <hint type="destinationlabel" > + <x>228</x> + <y>287</y> + </hint> + </hints> + </connection> + <connection> + <sender>pushButton_2</sender> + <signal>clicked()</signal> + <receiver>SslErrors</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>325</x> + <y>192</y> + </hint> + <hint type="destinationlabel" > + <x>333</x> + <y>231</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/statistics.ui b/tests/auto/uiloader/baseline/statistics.ui new file mode 100644 index 0000000000000000000000000000000000000000..ba752e386a504c03c150e76ed5c72df08465f74b --- /dev/null +++ b/tests/auto/uiloader/baseline/statistics.ui @@ -0,0 +1,242 @@ +<ui version="4.0" stdsetdef="1" > + <class>Statistics</class> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <widget class="QDialog" name="Statistics" > + <property name="objectName" > + <string notr="true" >linguist_stats</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>336</width> + <height>164</height> + </rect> + </property> + <property name="windowTitle" > + <string>Statistics</string> + </property> + <layout class="QGridLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <item row="1" column="0" > + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <item> + <spacer name="spacer4_2" > + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + <property name="sizeType" > + <enum>Expanding</enum> + </property> + <property name="orientation" > + <enum>Horizontal</enum> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="closeBtn" > + <property name="objectName" > + <string notr="true" >closeBtn</string> + </property> + <property name="text" > + <string>&Close</string> + </property> + </widget> + </item> + <item> + <spacer name="spacer4" > + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + <property name="sizeType" > + <enum>Expanding</enum> + </property> + <property name="orientation" > + <enum>Horizontal</enum> + </property> + </spacer> + </item> + </layout> + </item> + <item row="0" column="0" > + <widget class="QFrame" name="frame4" > + <property name="objectName" > + <string notr="true" >frame4</string> + </property> + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QGridLayout" > + <property name="objectName" > + <string notr="true" >unnamed</string> + </property> + <item row="0" column="2" > + <widget class="QLabel" name="textLabel4" > + <property name="objectName" > + <string notr="true" >textLabel4</string> + </property> + <property name="text" > + <string>Translation</string> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="textLabel5" > + <property name="objectName" > + <string notr="true" >textLabel5</string> + </property> + <property name="text" > + <string>Source</string> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QLabel" name="untrWords" > + <property name="objectName" > + <string notr="true" >untrWords</string> + </property> + <property name="text" > + <string>0</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QLabel" name="trWords" > + <property name="objectName" > + <string notr="true" >trWords</string> + </property> + <property name="text" > + <string>0</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="textLabel1" > + <property name="objectName" > + <string notr="true" >textLabel1</string> + </property> + <property name="text" > + <string>Words:</string> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QLabel" name="trChars" > + <property name="objectName" > + <string notr="true" >trChars</string> + </property> + <property name="text" > + <string>0</string> + </property> + </widget> + </item> + <item row="2" column="1" > + <widget class="QLabel" name="untrChars" > + <property name="objectName" > + <string notr="true" >untrChars</string> + </property> + <property name="text" > + <string>0</string> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="textLabel3" > + <property name="objectName" > + <string notr="true" >textLabel3</string> + </property> + <property name="text" > + <string>Characters:</string> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLabel" name="textLabel6" > + <property name="objectName" > + <string notr="true" >textLabel6</string> + </property> + <property name="text" > + <string>Characters (with spaces):</string> + </property> + </widget> + </item> + <item row="3" column="2" > + <widget class="QLabel" name="trCharsSpc" > + <property name="objectName" > + <string notr="true" >trCharsSpc</string> + </property> + <property name="text" > + <string>0</string> + </property> + </widget> + </item> + <item row="3" column="1" > + <widget class="QLabel" name="untrCharsSpc" > + <property name="objectName" > + <string notr="true" >untrCharsSpc</string> + </property> + <property name="text" > + <string>0</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11" /> +</ui> diff --git a/tests/auto/uiloader/baseline/stringlisteditor.ui b/tests/auto/uiloader/baseline/stringlisteditor.ui new file mode 100644 index 0000000000000000000000000000000000000000..96fff1c3eaf51918292d96a79b337a9ed85f5151 --- /dev/null +++ b/tests/auto/uiloader/baseline/stringlisteditor.ui @@ -0,0 +1,265 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>qdesigner_internal::Dialog</class> + <widget class="QDialog" name="qdesigner_internal::Dialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle" > + <string>Dialog</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>StringList</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="1" column="0" colspan="2" > + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QToolButton" name="newButton" > + <property name="toolTip" > + <string>New String</string> + </property> + <property name="text" > + <string>&New</string> + </property> + <property name="toolButtonStyle" > + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="deleteButton" > + <property name="toolTip" > + <string>Delete String</string> + </property> + <property name="text" > + <string>&Delete</string> + </property> + <property name="toolButtonStyle" > + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>&Value:</string> + </property> + <property name="buddy" > + <cstring>valueEdit</cstring> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="valueEdit" /> + </item> + </layout> + </item> + </layout> + </item> + <item row="0" column="1" > + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="upButton" > + <property name="toolTip" > + <string>Move String Up</string> + </property> + <property name="text" > + <string>Up</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="downButton" > + <property name="toolTip" > + <string>Move String Down</string> + </property> + <property name="text" > + <string>Down</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="0" column="0" > + <widget class="QListView" name="listView" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>qdesigner_internal::Dialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>258</x> + <y>283</y> + </hint> + <hint type="destinationlabel" > + <x>138</x> + <y>294</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>qdesigner_internal::Dialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>350</x> + <y>284</y> + </hint> + <hint type="destinationlabel" > + <x>369</x> + <y>295</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/stylesheeteditor.ui b/tests/auto/uiloader/baseline/stylesheeteditor.ui new file mode 100644 index 0000000000000000000000000000000000000000..34cd7f6d041a161443a46f26812b33ad9e035143 --- /dev/null +++ b/tests/auto/uiloader/baseline/stylesheeteditor.ui @@ -0,0 +1,171 @@ +<ui version="4.0" > + <class>StyleSheetEditor</class> + <widget class="QWidget" name="StyleSheetEditor" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>445</width> + <height>289</height> + </rect> + </property> + <property name="windowTitle" > + <string>Style Editor</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="6" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::MinimumExpanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>32</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::MinimumExpanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>32</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="5" > + <widget class="QComboBox" name="styleSheetCombo" > + <item> + <property name="text" > + <string>Default</string> + </property> + </item> + <item> + <property name="text" > + <string>Coffee</string> + </property> + </item> + <item> + <property name="text" > + <string>Pagefold</string> + </property> + </item> + </widget> + </item> + <item row="0" column="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>10</width> + <height>16</height> + </size> + </property> + </spacer> + </item> + <item row="0" column="2" > + <widget class="QComboBox" name="styleCombo" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>5</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLabel" name="label_7" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Style:</string> + </property> + </widget> + </item> + <item row="2" column="0" colspan="7" > + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>321</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="applyButton" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="text" > + <string>&Apply</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="1" column="0" colspan="7" > + <widget class="QTextEdit" name="styleTextEdit" /> + </item> + <item row="0" column="4" > + <widget class="QLabel" name="label_8" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>5</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text" > + <string>Style Sheet:</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/tabbedbrowser.ui b/tests/auto/uiloader/baseline/tabbedbrowser.ui new file mode 100644 index 0000000000000000000000000000000000000000..6bb608f79f390eca314a64c4e52529ea9c79e15e --- /dev/null +++ b/tests/auto/uiloader/baseline/tabbedbrowser.ui @@ -0,0 +1,233 @@ +<ui version="4.0" > + <author></author> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <exportmacro></exportmacro> + <class>TabbedBrowser</class> + <widget class="QWidget" name="TabbedBrowser" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>710</width> + <height>664</height> + </rect> + </property> + <property name="windowTitle" > + <string>TabbedBrowser</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>0</number> + </property> + <item> + <widget class="QTabWidget" name="tab" > + <widget class="QWidget" name="frontpage" > + <attribute name="title" > + <string>Untitled</string> + </attribute> + <layout class="QGridLayout" > + <property name="margin" > + <number>8</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + </layout> + </widget> + </widget> + </item> + <item> + <widget class="QFrame" name="frameFind" > + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QToolButton" name="toolClose" > + <property name="text" > + <string/> + </property> + <property name="icon" > + <iconset resource="assistant.qrc" >:/trolltech/assistant/images/close.png</iconset> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="editFind" > + <property name="sizePolicy" > + <sizepolicy> + <hsizetype>0</hsizetype> + <vsizetype>0</vsizetype> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimumSize" > + <size> + <width>150</width> + <height>0</height> + </size> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="toolPrevious" > + <property name="text" > + <string>Previous</string> + </property> + <property name="icon" > + <iconset resource="assistant.qrc" >:/trolltech/assistant/images/win/previous.png</iconset> + </property> + <property name="toolButtonStyle" > + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="toolNext" > + <property name="minimumSize" > + <size> + <width>0</width> + <height>0</height> + </size> + </property> + <property name="text" > + <string>Next</string> + </property> + <property name="icon" > + <iconset resource="assistant.qrc" >:/trolltech/assistant/images/win/next.png</iconset> + </property> + <property name="toolButtonStyle" > + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + <property name="autoRaise" > + <bool>true</bool> + </property> + <property name="arrowType" > + <enum>Qt::NoArrow</enum> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkCase" > + <property name="text" > + <string>Case Sensitive</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="checkWholeWords" > + <property name="text" > + <string>Whole words</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="labelWrapped" > + <property name="minimumSize" > + <size> + <width>0</width> + <height>20</height> + </size> + </property> + <property name="maximumSize" > + <size> + <width>105</width> + <height>20</height> + </size> + </property> + <property name="text" > + <string><img src=":/trolltech/assistant/images/wrap.png">&nbsp;Search wrapped</string> + </property> + <property name="textFormat" > + <enum>Qt::RichText</enum> + </property> + <property name="scaledContents" > + <bool>true</bool> + </property> + <property name="alignment" > + <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>81</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + <pixmapfunction></pixmapfunction> + <resources> + <include location="assistant.qrc" /> + </resources> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/tablewidgeteditor.ui b/tests/auto/uiloader/baseline/tablewidgeteditor.ui new file mode 100644 index 0000000000000000000000000000000000000000..ebd15a2f803f13c9d238378a27845ee4313ae0c5 --- /dev/null +++ b/tests/auto/uiloader/baseline/tablewidgeteditor.ui @@ -0,0 +1,403 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>qdesigner_internal::TableWidgetEditor</class> + <widget class="QDialog" name="qdesigner_internal::TableWidgetEditor" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>591</width> + <height>455</height> + </rect> + </property> + <property name="windowTitle" > + <string>Edit Table Widget</string> + </property> + <layout class="QGridLayout" name="gridLayout_4" > + <item row="0" column="0" > + <widget class="QGroupBox" name="itemsBox" > + <property name="title" > + <string>Table Items</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QTableWidget" name="tableWidget" > + <property name="toolTip" > + <string>Table Items</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout_5" > + <item> + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Icon</string> + </property> + </widget> + </item> + <item> + <widget class="qdesigner_internal::IconSelector" native="1" name="itemIconSelector" /> + </item> + <item> + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" colspan="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QWidget" native="1" name="widget" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <layout class="QVBoxLayout" name="verticalLayout" > + <property name="margin" > + <number>0</number> + </property> + <item> + <widget class="QGroupBox" name="columnsBox" > + <property name="title" > + <string>Columns</string> + </property> + <layout class="QGridLayout" name="gridLayout_2" > + <item row="0" column="0" > + <widget class="QListWidget" name="columnsListWidget" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy" > + <enum>Qt::TabFocus</enum> + </property> + <property name="toolTip" > + <string>Table Columns</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout_3" > + <item> + <widget class="QToolButton" name="newColumnButton" > + <property name="toolTip" > + <string>New Column</string> + </property> + <property name="text" > + <string>New</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="deleteColumnButton" > + <property name="toolTip" > + <string>Delete Column</string> + </property> + <property name="text" > + <string>Delete</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>23</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="moveColumnUpButton" > + <property name="toolTip" > + <string>Move Column Up</string> + </property> + <property name="text" > + <string>U</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="moveColumnDownButton" > + <property name="toolTip" > + <string>Move Column Down</string> + </property> + <property name="text" > + <string>D</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Icon</string> + </property> + </widget> + </item> + <item> + <widget class="qdesigner_internal::IconSelector" native="1" name="columnIconSelector" /> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="rowsBox" > + <property name="title" > + <string>Rows</string> + </property> + <layout class="QGridLayout" name="gridLayout_3" > + <item row="0" column="0" > + <widget class="QListWidget" name="rowsListWidget" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy" > + <enum>Qt::TabFocus</enum> + </property> + <property name="toolTip" > + <string>Table Rows</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout_4" > + <item> + <widget class="QToolButton" name="newRowButton" > + <property name="toolTip" > + <string>New Row</string> + </property> + <property name="text" > + <string>New</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="deleteRowButton" > + <property name="toolTip" > + <string>Delete Row</string> + </property> + <property name="text" > + <string>Delete</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>23</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="moveRowUpButton" > + <property name="toolTip" > + <string>Move Row Up</string> + </property> + <property name="text" > + <string>U</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="moveRowDownButton" > + <property name="toolTip" > + <string>Move Row Down</string> + </property> + <property name="text" > + <string>D</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Icon</string> + </property> + </widget> + </item> + <item> + <widget class="qdesigner_internal::IconSelector" native="1" name="rowIconSelector" /> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + <zorder>itemsBox</zorder> + <zorder>buttonBox</zorder> + <zorder>widget</zorder> + </widget> + <customwidgets> + <customwidget> + <class>qdesigner_internal::IconSelector</class> + <extends>QWidget</extends> + <header>iconselector_p.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>tableWidget</tabstop> + <tabstop>columnsListWidget</tabstop> + <tabstop>newColumnButton</tabstop> + <tabstop>deleteColumnButton</tabstop> + <tabstop>moveColumnUpButton</tabstop> + <tabstop>moveColumnDownButton</tabstop> + <tabstop>rowsListWidget</tabstop> + <tabstop>newRowButton</tabstop> + <tabstop>deleteRowButton</tabstop> + <tabstop>moveRowUpButton</tabstop> + <tabstop>moveRowDownButton</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>qdesigner_internal::TableWidgetEditor</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>431</x> + <y>351</y> + </hint> + <hint type="destinationlabel" > + <x>373</x> + <y>362</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>qdesigner_internal::TableWidgetEditor</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>547</x> + <y>354</y> + </hint> + <hint type="destinationlabel" > + <x>562</x> + <y>362</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/tetrixwindow.ui b/tests/auto/uiloader/baseline/tetrixwindow.ui new file mode 100644 index 0000000000000000000000000000000000000000..a13f538aa8d69b6c65c08d63fb8263fc0716d044 --- /dev/null +++ b/tests/auto/uiloader/baseline/tetrixwindow.ui @@ -0,0 +1,164 @@ +<ui version="4.0" > + <class>TetrixWindow</class> + <widget class="QWidget" name="TetrixWindow" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>537</width> + <height>475</height> + </rect> + </property> + <property name="windowTitle" > + <string>Tetrix</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QGridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="4" column="0" > + <widget class="QPushButton" name="startButton" > + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> + </property> + <property name="text" > + <string>&Start</string> + </property> + </widget> + </item> + <item row="3" column="2" > + <widget class="QLCDNumber" name="linesLcd" > + <property name="segmentStyle" > + <enum>QLCDNumber::Filled</enum> + </property> + </widget> + </item> + <item row="2" column="2" > + <widget class="QLabel" name="linesRemovedLabel" > + <property name="text" > + <string>LINES REMOVED</string> + </property> + <property name="alignment" > + <set>Qt::AlignBottom|Qt::AlignHCenter</set> + </property> + </widget> + </item> + <item row="5" column="2" > + <widget class="QPushButton" name="pauseButton" > + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> + </property> + <property name="text" > + <string>&Pause</string> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QLCDNumber" name="scoreLcd" > + <property name="segmentStyle" > + <enum>QLCDNumber::Filled</enum> + </property> + </widget> + </item> + <item rowspan="6" row="0" column="1" > + <widget class="TetrixBoard" name="board" > + <property name="focusPolicy" > + <enum>Qt::StrongFocus</enum> + </property> + <property name="frameShape" > + <enum>QFrame::Panel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + </widget> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="levelLabel" > + <property name="text" > + <string>LEVEL</string> + </property> + <property name="alignment" > + <set>Qt::AlignBottom|Qt::AlignHCenter</set> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="nextLabel" > + <property name="text" > + <string>NEXT</string> + </property> + <property name="alignment" > + <set>Qt::AlignBottom|Qt::AlignHCenter</set> + </property> + </widget> + </item> + <item row="3" column="0" > + <widget class="QLCDNumber" name="levelLcd" > + <property name="segmentStyle" > + <enum>QLCDNumber::Filled</enum> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QLabel" name="scoreLabel" > + <property name="text" > + <string>SCORE</string> + </property> + <property name="alignment" > + <set>Qt::AlignBottom|Qt::AlignHCenter</set> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="nextPieceLabel" > + <property name="frameShape" > + <enum>QFrame::Box</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Raised</enum> + </property> + <property name="text" > + <string/> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item row="4" column="2" > + <widget class="QPushButton" name="quitButton" > + <property name="focusPolicy" > + <enum>Qt::NoFocus</enum> + </property> + <property name="text" > + <string>&Quit</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>TetrixBoard</class> + <extends>QFrame</extends> + <header>tetrixboard.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/textfinder.ui b/tests/auto/uiloader/baseline/textfinder.ui new file mode 100644 index 0000000000000000000000000000000000000000..af05192dbdd699e03f90f385fc546381ad0b1b5b --- /dev/null +++ b/tests/auto/uiloader/baseline/textfinder.ui @@ -0,0 +1,89 @@ +<ui version="4.0" > + <class>Form</class> + <widget class="QWidget" name="Form" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>378</width> + <height>158</height> + </rect> + </property> + <property name="windowTitle" > + <string>Find Text</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QGridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QLineEdit" name="lineEdit" /> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="searchLabel" > + <property name="text" > + <string>&Keyword:</string> + </property> + <property name="buddy" > + <cstring>lineEdit</cstring> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QPushButton" name="findButton" > + <property name="text" > + <string>&Find</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QTextEdit" name="textEdit" /> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>16</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>lineEdit</sender> + <signal>returnPressed()</signal> + <receiver>findButton</receiver> + <slot>animateClick()</slot> + <hints> + <hint type="sourcelabel" > + <x>261</x> + <y>17</y> + </hint> + <hint type="destinationlabel" > + <x>320</x> + <y>17</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/topicchooser.ui b/tests/auto/uiloader/baseline/topicchooser.ui new file mode 100644 index 0000000000000000000000000000000000000000..d4c90bb4b3bfd699d9dc607e3c465b388e00bedc --- /dev/null +++ b/tests/auto/uiloader/baseline/topicchooser.ui @@ -0,0 +1,116 @@ +<UI version="4.0" stdsetdef="1" > + <class>TopicChooser</class> + <widget class="QDialog" name="TopicChooser" > + <property name="objectName" > + <string notr="true">TopicChooser</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>391</width> + <height>223</height> + </rect> + </property> + <property name="windowTitle" > + <string>Choose Topic</string> + </property> + <property name="sizeGripEnabled" > + <bool>true</bool> + </property> + <layout class="QVBoxLayout" > + <property name="objectName" > + <string notr="true">unnamed</string> + </property> + <property name="margin" > + <number>11</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QLabel" name="label" > + <property name="objectName" > + <string notr="true">label</string> + </property> + <property name="text" > + <string>&Topics</string> + </property> + <property name="buddy" stdset="0" > + <cstring>listWidget</cstring> + </property> + </widget> + </item> + <item> + <widget class="QListWidget" name="listWidget" > + <property name="objectName" > + <string notr="true">listWidget</string> + </property> + </widget> + </item> + <item> + <widget class="QWidget" name="Layout16" > + <property name="objectName" > + <string notr="true">Layout16</string> + </property> + <layout class="QHBoxLayout" > + <property name="objectName" > + <string notr="true">unnamed</string> + </property> + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer name="Horizontal Spacing2" > + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + <property name="sizeType" > + <enum>Expanding</enum> + </property> + <property name="orientation" > + <enum>Horizontal</enum> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="buttonDisplay" > + <property name="objectName" > + <string notr="true">buttonDisplay</string> + </property> + <property name="text" > + <string>&Display</string> + </property> + <property name="autoDefault" > + <bool>true</bool> + </property> + <property name="default" > + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="buttonCancel" > + <property name="objectName" > + <string notr="true">buttonCancel</string> + </property> + <property name="text" > + <string>&Close</string> + </property> + <property name="autoDefault" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </widget> +</UI> diff --git a/tests/auto/uiloader/baseline/translatedialog.ui b/tests/auto/uiloader/baseline/translatedialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..b1cd99cbe7adac8671fba640b30721424423a8a5 --- /dev/null +++ b/tests/auto/uiloader/baseline/translatedialog.ui @@ -0,0 +1,301 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>TranslateDialog</class> + <widget class="QDialog" name="TranslateDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>407</width> + <height>145</height> + </rect> + </property> + <property name="sizePolicy" > + <sizepolicy vsizetype="Maximum" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="windowTitle" > + <string>Qt Linguist</string> + </property> + <property name="whatsThis" > + <string>This window allows you to search for some text in the translation source file.</string> + </property> + <layout class="QHBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>9</number> + </property> + <property name="topMargin" > + <number>9</number> + </property> + <property name="rightMargin" > + <number>9</number> + </property> + <property name="bottomMargin" > + <number>9</number> + </property> + <item> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <layout class="QGridLayout" > + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <property name="horizontalSpacing" > + <number>6</number> + </property> + <property name="verticalSpacing" > + <number>6</number> + </property> + <item row="1" column="1" > + <widget class="QLineEdit" name="ledTranslateTo" > + <property name="whatsThis" > + <string>Type in the text to search for.</string> + </property> + </widget> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="findWhat" > + <property name="text" > + <string>Find &source text:</string> + </property> + <property name="buddy" > + <cstring>ledFindWhat</cstring> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="translateTo" > + <property name="text" > + <string>&Translate to:</string> + </property> + <property name="buddy" > + <cstring>ledTranslateTo</cstring> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QLineEdit" name="ledFindWhat" > + <property name="whatsThis" > + <string>Type in the text to search for.</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Search options</string> + </property> + <layout class="QVBoxLayout" > + <item> + <widget class="QCheckBox" name="ckMatchCase" > + <property name="whatsThis" > + <string>Texts such as 'TeX' and 'tex' are considered as different when checked.</string> + </property> + <property name="text" > + <string>Match &case</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="ckMarkFinished" > + <property name="text" > + <string>Mark new translation as &finished</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QVBoxLayout" > + <property name="spacing" > + <number>6</number> + </property> + <property name="leftMargin" > + <number>0</number> + </property> + <property name="topMargin" > + <number>0</number> + </property> + <property name="rightMargin" > + <number>0</number> + </property> + <property name="bottomMargin" > + <number>0</number> + </property> + <item> + <widget class="QPushButton" name="findNxt" > + <property name="whatsThis" > + <string>Click here to find the next occurrence of the text you typed in.</string> + </property> + <property name="text" > + <string>Find Next</string> + </property> + <property name="default" > + <bool>true</bool> + </property> + <property name="flat" > + <bool>false</bool> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="translate" > + <property name="text" > + <string>Translate</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="translateAll" > + <property name="text" > + <string>Translate All</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="cancel" > + <property name="whatsThis" > + <string>Click here to close this window.</string> + </property> + <property name="text" > + <string>Cancel</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Expanding</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>51</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + <layoutdefault spacing="6" margin="11" /> + <tabstops> + <tabstop>ledFindWhat</tabstop> + <tabstop>ledTranslateTo</tabstop> + <tabstop>findNxt</tabstop> + <tabstop>translate</tabstop> + <tabstop>translateAll</tabstop> + <tabstop>cancel</tabstop> + <tabstop>ckMatchCase</tabstop> + <tabstop>ckMarkFinished</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>cancel</sender> + <signal>clicked()</signal> + <receiver>TranslateDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>397</x> + <y>157</y> + </hint> + <hint type="destinationlabel" > + <x>373</x> + <y>109</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/translationsettings.ui b/tests/auto/uiloader/baseline/translationsettings.ui new file mode 100644 index 0000000000000000000000000000000000000000..4bd4be9e09361abcc55b9b917ddea1edfe374838 --- /dev/null +++ b/tests/auto/uiloader/baseline/translationsettings.ui @@ -0,0 +1,107 @@ +<ui version="4.0" > + <class>TranslationSettings</class> + <widget class="QDialog" name="TranslationSettings" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>346</width> + <height>125</height> + </rect> + </property> + <property name="windowTitle" > + <string>Qt Linguist - Translation file settings</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>Target language</string> + </property> + <layout class="QGridLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="1" > + <widget class="QComboBox" name="cbLanguageList" /> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Language</string> + </property> + <property name="buddy" > + <cstring>cbLanguageList</cstring> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QComboBox" name="cbCountryList" /> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="lblCountry" > + <property name="text" > + <string>Country/Region</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>TranslationSettings</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>244</x> + <y>224</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>242</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>TranslationSettings</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>312</x> + <y>230</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>242</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/treewidgeteditor.ui b/tests/auto/uiloader/baseline/treewidgeteditor.ui new file mode 100644 index 0000000000000000000000000000000000000000..1256a0a2fa94698ed74972ad7a391b73fca3dd09 --- /dev/null +++ b/tests/auto/uiloader/baseline/treewidgeteditor.ui @@ -0,0 +1,379 @@ +<ui version="4.0" > + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <class>qdesigner_internal::TreeWidgetEditor</class> + <widget class="QDialog" name="qdesigner_internal::TreeWidgetEditor" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>619</width> + <height>321</height> + </rect> + </property> + <property name="windowTitle" > + <string>Edit Tree Widget</string> + </property> + <layout class="QGridLayout" name="gridLayout_3" > + <item row="0" column="0" > + <widget class="QGroupBox" name="itemsBox" > + <property name="title" > + <string>Tree Items</string> + </property> + <layout class="QGridLayout" name="gridLayout" > + <item row="0" column="0" > + <widget class="QTreeWidget" name="treeWidget" > + <property name="focusPolicy" > + <enum>Qt::TabFocus</enum> + </property> + <property name="toolTip" > + <string>Tree Items</string> + </property> + <column> + <property name="text" > + <string>1</string> + </property> + </column> + </widget> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout_4" > + <item> + <widget class="QToolButton" name="newItemButton" > + <property name="toolTip" > + <string>New Item</string> + </property> + <property name="text" > + <string>&New</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="newSubItemButton" > + <property name="toolTip" > + <string>New Subitem</string> + </property> + <property name="text" > + <string>New &Subitem</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="deleteItemButton" > + <property name="toolTip" > + <string>Delete Item</string> + </property> + <property name="text" > + <string>&Delete</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>28</width> + <height>23</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="moveItemLeftButton" > + <property name="toolTip" > + <string>Move Item Left (before Parent Item)</string> + </property> + <property name="text" > + <string>L</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="moveItemRightButton" > + <property name="toolTip" > + <string>Move Item Right (as a First Subitem of the Next Sibling Item)</string> + </property> + <property name="text" > + <string>R</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="moveItemUpButton" > + <property name="toolTip" > + <string>Move Item Up</string> + </property> + <property name="text" > + <string>U</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="moveItemDownButton" > + <property name="toolTip" > + <string>Move Item Down</string> + </property> + <property name="text" > + <string>D</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout_2" > + <item> + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Icon</string> + </property> + </widget> + </item> + <item> + <widget class="qdesigner_internal::IconSelector" native="1" name="itemIconSelector" /> + </item> + <item> + <spacer name="horizontalSpacer" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>288</width> + <height>21</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item row="0" column="1" > + <widget class="QGroupBox" name="columnsBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Preferred" hsizetype="Fixed" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title" > + <string>Columns</string> + </property> + <layout class="QGridLayout" name="gridLayout_2" > + <item row="0" column="0" > + <widget class="QListWidget" name="listWidget" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Expanding" hsizetype="Ignored" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy" > + <enum>Qt::TabFocus</enum> + </property> + <property name="toolTip" > + <string>Tree Columns</string> + </property> + </widget> + </item> + <item row="1" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout_3" > + <item> + <widget class="QToolButton" name="newColumnButton" > + <property name="toolTip" > + <string>New Column</string> + </property> + <property name="text" > + <string>New</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="deleteColumnButton" > + <property name="toolTip" > + <string>Delete Column</string> + </property> + <property name="text" > + <string>Delete</string> + </property> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>13</width> + <height>23</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QToolButton" name="moveColumnUpButton" > + <property name="toolTip" > + <string>Move Column Up</string> + </property> + <property name="text" > + <string>U</string> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="moveColumnDownButton" > + <property name="toolTip" > + <string>Move Column Down</string> + </property> + <property name="text" > + <string>D</string> + </property> + </widget> + </item> + </layout> + </item> + <item row="2" column="0" > + <layout class="QHBoxLayout" name="horizontalLayout" > + <item> + <widget class="QLabel" name="label" > + <property name="text" > + <string>Icon</string> + </property> + </widget> + </item> + <item> + <widget class="qdesigner_internal::IconSelector" native="1" name="columnIconSelector" /> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0" > + <size> + <width>0</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item row="1" column="0" colspan="2" > + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>qdesigner_internal::IconSelector</class> + <extends>QWidget</extends> + <header>iconselector_p.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>treeWidget</tabstop> + <tabstop>newItemButton</tabstop> + <tabstop>newSubItemButton</tabstop> + <tabstop>deleteItemButton</tabstop> + <tabstop>moveItemLeftButton</tabstop> + <tabstop>moveItemRightButton</tabstop> + <tabstop>moveItemUpButton</tabstop> + <tabstop>moveItemDownButton</tabstop> + <tabstop>listWidget</tabstop> + <tabstop>newColumnButton</tabstop> + <tabstop>deleteColumnButton</tabstop> + <tabstop>moveColumnUpButton</tabstop> + <tabstop>moveColumnDownButton</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>qdesigner_internal::TreeWidgetEditor</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>450</x> + <y>259</y> + </hint> + <hint type="destinationlabel" > + <x>292</x> + <y>272</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>qdesigner_internal::TreeWidgetEditor</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>539</x> + <y>266</y> + </hint> + <hint type="destinationlabel" > + <x>556</x> + <y>275</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/trpreviewtool.ui b/tests/auto/uiloader/baseline/trpreviewtool.ui new file mode 100644 index 0000000000000000000000000000000000000000..03441139ed56f4cd267ed26206268bfc575faf11 --- /dev/null +++ b/tests/auto/uiloader/baseline/trpreviewtool.ui @@ -0,0 +1,189 @@ +<ui version="4.0" > + <author></author> + <comment>********************************************************************* +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the autotests of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +*********************************************************************</comment> + <exportmacro></exportmacro> + <class>TrPreviewToolClass</class> + <widget class="QMainWindow" name="TrPreviewToolClass" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>593</width> + <height>466</height> + </rect> + </property> + <property name="windowTitle" > + <string>Qt Translation Preview Tool</string> + </property> + <widget class="QWidget" name="centralWidget" /> + <widget class="QMenuBar" name="menuBar" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>593</width> + <height>21</height> + </rect> + </property> + <widget class="QMenu" name="menuView" > + <property name="title" > + <string>&View</string> + </property> + <widget class="QMenu" name="menuViewViews" > + <property name="title" > + <string>&Views</string> + </property> + </widget> + <addaction name="menuViewViews" /> + </widget> + <widget class="QMenu" name="menuHelp" > + <property name="title" > + <string>&Help</string> + </property> + <addaction name="actionAbout" /> + <addaction name="actionAbout_Qt" /> + </widget> + <widget class="QMenu" name="menuFile" > + <property name="title" > + <string>&File</string> + </property> + <addaction name="actionOpenForm" /> + <addaction name="actionLoadTranslation" /> + <addaction name="actionReloadTranslations" /> + <addaction name="separator" /> + <addaction name="actionClose" /> + </widget> + <addaction name="menuFile" /> + <addaction name="menuView" /> + <addaction name="menuHelp" /> + </widget> + <widget class="QToolBar" name="mainToolBar" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <attribute name="toolBarArea" > + <number>4</number> + </attribute> + <addaction name="actionOpenForm" /> + <addaction name="actionLoadTranslation" /> + <addaction name="actionReloadTranslations" /> + </widget> + <widget class="QStatusBar" name="statusBar" /> + <widget class="QDockWidget" name="dwForms" > + <property name="windowTitle" > + <string>Forms</string> + </property> + <attribute name="dockWidgetArea" > + <number>1</number> + </attribute> + <widget class="QWidget" name="dockWidgetContents" > + <layout class="QVBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>0</number> + </property> + <item> + <widget class="QListView" name="viewForms" > + <property name="editTriggers" > + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="alternatingRowColors" > + <bool>true</bool> + </property> + <property name="uniformItemSizes" > + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </widget> + <action name="actionOpenForm" > + <property name="icon" > + <iconset resource="qttrpreviewtool.qrc" >:/images/open_form.png</iconset> + </property> + <property name="text" > + <string>&Open Form...</string> + </property> + </action> + <action name="actionLoadTranslation" > + <property name="icon" > + <iconset resource="qttrpreviewtool.qrc" >:/images/load_translation.png</iconset> + </property> + <property name="text" > + <string>&Load Translation...</string> + </property> + </action> + <action name="actionReloadTranslations" > + <property name="icon" > + <iconset resource="qttrpreviewtool.qrc" >:/images/reload_translations.png</iconset> + </property> + <property name="text" > + <string>&Reload Translations</string> + </property> + <property name="shortcut" > + <string>F5</string> + </property> + </action> + <action name="actionClose" > + <property name="text" > + <string>&Close</string> + </property> + </action> + <action name="actionAbout" > + <property name="text" > + <string>About</string> + </property> + </action> + <action name="actionAbout_Qt" > + <property name="text" > + <string>About Qt</string> + </property> + </action> + </widget> + <layoutdefault spacing="6" margin="11" /> + <pixmapfunction></pixmapfunction> + <resources/> + <connections/> +</ui> diff --git a/tests/auto/uiloader/baseline/validators.ui b/tests/auto/uiloader/baseline/validators.ui new file mode 100644 index 0000000000000000000000000000000000000000..f05b96fbe0cfb6646b162bbf389829a687e2861d --- /dev/null +++ b/tests/auto/uiloader/baseline/validators.ui @@ -0,0 +1,467 @@ +<ui version="4.0" > + <class>ValidatorsForm</class> + <widget class="QWidget" name="ValidatorsForm" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>526</width> + <height>668</height> + </rect> + </property> + <property name="windowTitle" > + <string>Form</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="LocaleSelector" name="localeSelector" /> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QGroupBox" name="groupBox" > + <property name="title" > + <string>QIntValidator</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QGridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Min:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QSpinBox" name="minVal" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimum" > + <number>-1000000</number> + </property> + <property name="maximum" > + <number>1000000</number> + </property> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Max:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QSpinBox" name="maxVal" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimum" > + <number>-1000000</number> + </property> + <property name="maximum" > + <number>1000000</number> + </property> + <property name="value" > + <number>1000</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QFrame" name="frame" > + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="LEDWidget" name="ledWidget" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="pixmap" > + <pixmap resource="validators.qrc" >:/ledoff.png</pixmap> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_7" > + <property name="text" > + <string>editingFinished()</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLineEdit" name="editor" /> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_2" > + <property name="title" > + <string>QDoubleValidator</string> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <layout class="QGridLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item row="0" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Min:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="1" > + <widget class="QDoubleSpinBox" name="doubleMinVal" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimum" > + <double>-100000.000000000000000</double> + </property> + <property name="maximum" > + <double>100000.000000000000000</double> + </property> + <property name="value" > + <double>0.000000000000000</double> + </property> + </widget> + </item> + <item row="0" column="2" > + <widget class="QLabel" name="label_5" > + <property name="text" > + <string>Format:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="0" column="3" > + <widget class="QComboBox" name="doubleFormat" > + <item> + <property name="text" > + <string>Standard</string> + </property> + </item> + <item> + <property name="text" > + <string>Scientific</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Max:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="1" column="1" > + <widget class="QDoubleSpinBox" name="doubleMaxVal" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Minimum" > + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="minimum" > + <double>-100000.000000000000000</double> + </property> + <property name="maximum" > + <double>100000.000000000000000</double> + </property> + <property name="value" > + <double>1000.000000000000000</double> + </property> + </widget> + </item> + <item row="1" column="2" > + <widget class="QLabel" name="label_6" > + <property name="text" > + <string>Decimals:</string> + </property> + <property name="alignment" > + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + </item> + <item row="1" column="3" > + <widget class="QSpinBox" name="doubleDecimals" > + <property name="value" > + <number>2</number> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QFrame" name="frame_2" > + <property name="frameShape" > + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow" > + <enum>QFrame::Sunken</enum> + </property> + <layout class="QVBoxLayout" > + <property name="margin" > + <number>9</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <widget class="LEDWidget" name="doubleLedWidget" > + <property name="text" > + <string/> + </property> + <property name="pixmap" > + <pixmap resource="validators.qrc" >:/ledoff.png</pixmap> + </property> + <property name="alignment" > + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_8" > + <property name="text" > + <string>editingFinished()</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QLineEdit" name="doubleEditor" /> + </item> + </layout> + </widget> + </item> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>111</height> + </size> + </property> + </spacer> + </item> + <item> + <layout class="QHBoxLayout" > + <property name="margin" > + <number>0</number> + </property> + <property name="spacing" > + <number>6</number> + </property> + <item> + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item> + <widget class="QPushButton" name="pushButton" > + <property name="text" > + <string>Quit</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>LEDWidget</class> + <extends>QLabel</extends> + <header>ledwidget.h</header> + </customwidget> + <customwidget> + <class>LocaleSelector</class> + <extends>QComboBox</extends> + <header>localeselector.h</header> + </customwidget> + </customwidgets> + <resources> + <include location="validators.qrc" /> + </resources> + <connections> + <connection> + <sender>pushButton</sender> + <signal>clicked()</signal> + <receiver>ValidatorsForm</receiver> + <slot>close()</slot> + <hints> + <hint type="sourcelabel" > + <x>94</x> + <y>274</y> + </hint> + <hint type="destinationlabel" > + <x>131</x> + <y>260</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/baseline/wateringconfigdialog.ui b/tests/auto/uiloader/baseline/wateringconfigdialog.ui new file mode 100644 index 0000000000000000000000000000000000000000..a7f5349d78a58d226a02528448e9791904192446 --- /dev/null +++ b/tests/auto/uiloader/baseline/wateringconfigdialog.ui @@ -0,0 +1,446 @@ +<ui version="4.0" > + <class>WateringConfigDialog</class> + <widget class="QDialog" name="WateringConfigDialog" > + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>334</width> + <height>550</height> + </rect> + </property> + <property name="windowTitle" > + <string>Watering Configuration</string> + </property> + <layout class="QVBoxLayout" > + <item> + <layout class="QGridLayout" > + <item row="0" column="0" > + <widget class="QLabel" name="label_3" > + <property name="text" > + <string>Plant:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="3" > + <widget class="QComboBox" name="plantComboBox" > + <property name="sizePolicy" > + <sizepolicy vsizetype="Fixed" hsizetype="Preferred" > + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <item> + <property name="text" > + <string>Squash</string> + </property> + </item> + <item> + <property name="text" > + <string>Bean</string> + </property> + </item> + <item> + <property name="text" > + <string>Carrot</string> + </property> + </item> + <item> + <property name="text" > + <string>Strawberry</string> + </property> + </item> + <item> + <property name="text" > + <string>Raspberry</string> + </property> + </item> + <item> + <property name="text" > + <string>Blueberry</string> + </property> + </item> + </widget> + </item> + <item row="1" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>67</width> + <height>16</height> + </size> + </property> + </spacer> + </item> + <item row="2" column="0" > + <widget class="QLabel" name="label_2" > + <property name="text" > + <string>Water when:</string> + </property> + </widget> + </item> + <item row="3" column="1" colspan="3" > + <widget class="QCheckBox" name="temperatureCheckBox" > + <property name="text" > + <string>Temperature is higher than:</string> + </property> + </widget> + </item> + <item row="4" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>16</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="4" column="2" > + <widget class="QSpinBox" name="temperatureSpinBox" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="specialValueText" > + <string/> + </property> + <property name="suffix" > + <string>C</string> + </property> + <property name="minimum" > + <number>10</number> + </property> + <property name="maximum" > + <number>60</number> + </property> + <property name="value" > + <number>20</number> + </property> + </widget> + </item> + <item row="4" column="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="5" column="1" colspan="3" > + <widget class="QCheckBox" name="rainCheckBox" > + <property name="text" > + <string>Rain less than:</string> + </property> + </widget> + </item> + <item row="6" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>16</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="6" column="2" > + <widget class="QSpinBox" name="rainSpinBox" > + <property name="enabled" > + <bool>false</bool> + </property> + <property name="specialValueText" > + <string/> + </property> + <property name="suffix" > + <string>mm</string> + </property> + <property name="minimum" > + <number>1</number> + </property> + </widget> + </item> + <item row="6" column="3" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="7" column="2" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="8" column="0" > + <widget class="QLabel" name="label" > + <property name="text" > + <string>Starting Time:</string> + </property> + </widget> + </item> + <item row="8" column="1" colspan="3" > + <widget class="QTimeEdit" name="startTimeEdit" /> + </item> + <item row="9" column="0" > + <widget class="QLabel" name="label_4" > + <property name="text" > + <string>Amount:</string> + </property> + </widget> + </item> + <item row="9" column="1" colspan="3" > + <widget class="QSpinBox" name="amountSpinBox" > + <property name="suffix" > + <string>l</string> + </property> + <property name="minimum" > + <number>100</number> + </property> + <property name="maximum" > + <number>10000</number> + </property> + <property name="singleStep" > + <number>100</number> + </property> + <property name="value" > + <number>1000</number> + </property> + </widget> + </item> + <item row="10" column="0" > + <widget class="QLabel" name="label_5" > + <property name="text" > + <string>Source:</string> + </property> + </widget> + </item> + <item row="10" column="1" colspan="3" > + <widget class="QComboBox" name="sourceComboBox" > + <item> + <property name="text" > + <string>Foundain</string> + </property> + </item> + <item> + <property name="text" > + <string>River</string> + </property> + </item> + <item> + <property name="text" > + <string>Lake</string> + </property> + </item> + <item> + <property name="text" > + <string>Public Water System</string> + </property> + </item> + </widget> + </item> + <item row="11" column="0" > + <widget class="QLabel" name="label_6" > + <property name="text" > + <string>Filter:</string> + </property> + </widget> + </item> + <item row="11" column="1" colspan="2" > + <widget class="QCheckBox" name="filterCheckBox" > + <property name="text" > + <string/> + </property> + </widget> + </item> + <item row="12" column="0" > + <spacer> + <property name="orientation" > + <enum>Qt::Vertical</enum> + </property> + <property name="sizeType" > + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" > + <size> + <width>20</width> + <height>10</height> + </size> + </property> + </spacer> + </item> + <item row="4" column="4" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <layout class="QGridLayout" > + <item row="0" column="1" > + <spacer> + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" > + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="1" column="0" colspan="2" > + <widget class="HelpBrowser" name="helpBrowser" /> + </item> + <item row="0" column="0" > + <widget class="QLabel" name="helpLabel" > + <property name="text" > + <string><a href="test">Show Details</a></string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox" > + <property name="orientation" > + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons" > + <set>QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>HelpBrowser</class> + <extends>QTextBrowser</extends> + <header>helpbrowser.h</header> + </customwidget> + </customwidgets> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>WateringConfigDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel" > + <x>227</x> + <y>372</y> + </hint> + <hint type="destinationlabel" > + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>WateringConfigDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel" > + <x>286</x> + <y>378</y> + </hint> + <hint type="destinationlabel" > + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>temperatureCheckBox</sender> + <signal>toggled(bool)</signal> + <receiver>temperatureSpinBox</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>132</x> + <y>101</y> + </hint> + <hint type="destinationlabel" > + <x>132</x> + <y>125</y> + </hint> + </hints> + </connection> + <connection> + <sender>rainCheckBox</sender> + <signal>toggled(bool)</signal> + <receiver>rainSpinBox</receiver> + <slot>setEnabled(bool)</slot> + <hints> + <hint type="sourcelabel" > + <x>110</x> + <y>154</y> + </hint> + <hint type="destinationlabel" > + <x>113</x> + <y>169</y> + </hint> + </hints> + </connection> + </connections> +</ui> diff --git a/tests/auto/uiloader/desert.ini b/tests/auto/uiloader/desert.ini new file mode 100644 index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119 --- /dev/null +++ b/tests/auto/uiloader/desert.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/dole.ini b/tests/auto/uiloader/dole.ini new file mode 100644 index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119 --- /dev/null +++ b/tests/auto/uiloader/dole.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/gravlaks.ini b/tests/auto/uiloader/gravlaks.ini new file mode 100644 index 0000000000000000000000000000000000000000..3a11cf2a49d1c20ec4a6b271a46e39ec86c77f4e --- /dev/null +++ b/tests/auto/uiloader/gravlaks.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=gravlaks.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/jackychan.ini b/tests/auto/uiloader/jackychan.ini new file mode 100644 index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119 --- /dev/null +++ b/tests/auto/uiloader/jackychan.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/jeunehomme.ini b/tests/auto/uiloader/jeunehomme.ini new file mode 100644 index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119 --- /dev/null +++ b/tests/auto/uiloader/jeunehomme.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/kangaroo.ini b/tests/auto/uiloader/kangaroo.ini new file mode 100644 index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119 --- /dev/null +++ b/tests/auto/uiloader/kangaroo.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/kayak.ini b/tests/auto/uiloader/kayak.ini new file mode 100644 index 0000000000000000000000000000000000000000..751a3883fd45a9dc09f5a16545ea10facbbb4052 --- /dev/null +++ b/tests/auto/uiloader/kayak.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=wartburg +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/scruffy.ini b/tests/auto/uiloader/scruffy.ini new file mode 100644 index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119 --- /dev/null +++ b/tests/auto/uiloader/scruffy.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/troll15.ini b/tests/auto/uiloader/troll15.ini new file mode 100644 index 0000000000000000000000000000000000000000..57f5cd826553d65a3e4aa16e325dcfbc60dda2b1 --- /dev/null +++ b/tests/auto/uiloader/troll15.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer.nokia.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/tundra.ini b/tests/auto/uiloader/tundra.ini new file mode 100644 index 0000000000000000000000000000000000000000..799b2244980c31ee20fcd7778cd58362d5497119 --- /dev/null +++ b/tests/auto/uiloader/tundra.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=kramer.troll.no +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1 diff --git a/tests/auto/uiloader/uiloader.pro b/tests/auto/uiloader/uiloader.pro new file mode 100644 index 0000000000000000000000000000000000000000..30ecb2fa103953a7193f1a8cabf579ca547605e7 --- /dev/null +++ b/tests/auto/uiloader/uiloader.pro @@ -0,0 +1,3 @@ +TEMPLATE = subdirs +SUBDIRS += tst_screenshot \ + uiloader diff --git a/tests/auto/uiloader/uiloader/tst_uiloader.cpp b/tests/auto/uiloader/uiloader/tst_uiloader.cpp new file mode 100644 index 0000000000000000000000000000000000000000..30b0c3c9db2f9ee68f6c75babf509a6090cdd5ee --- /dev/null +++ b/tests/auto/uiloader/uiloader/tst_uiloader.cpp @@ -0,0 +1,107 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include "uiloader.h" + +#include <QtTest/QtTest> +#include <QApplication> +#include <QDir> + +#ifdef Q_OS_SYMBIAN +#define SRCDIR "" +#endif + +class uiLoaderAutotest: public QObject +{ + +Q_OBJECT + +public slots: + void init(); + +private slots: + void imageDiffTest(); + +private: + QString currentDir; + +}; + + + +void uiLoaderAutotest::init() +{ + currentDir = QDir::currentPath(); +#ifndef Q_OS_IRIX + QDir::setCurrent(QString(SRCDIR) + QString("/..")); +#endif +} + +void uiLoaderAutotest::imageDiffTest() +{ + //QApplication app(argc, argv); + + QString pathToProgram = currentDir + "/tst_screenshot/tst_screenshot"; + +#ifdef Q_WS_MAC + pathToProgram += ".app/Contents/MacOS/tst_screenshot"; +#endif + +#ifdef Q_WS_WIN + pathToProgram += ".exe"; +#endif + uiLoader wrapper(pathToProgram); + QString errorMessage; + switch(wrapper.runAutoTests(&errorMessage)) { + case uiLoader::TestRunDone: + break; + case uiLoader::TestConfigError: + QVERIFY2(false, qPrintable(errorMessage)); + break; + case uiLoader::TestNoConfig: + QSKIP(qPrintable(errorMessage), SkipAll); + break; + } +} + +QTEST_MAIN(uiLoaderAutotest) +#include "tst_uiloader.moc" diff --git a/tests/auto/uiloader/uiloader/uiloader.cpp b/tests/auto/uiloader/uiloader/uiloader.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9246c30d805cc8257dea9753aca8af4218a71872 --- /dev/null +++ b/tests/auto/uiloader/uiloader/uiloader.cpp @@ -0,0 +1,814 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#include "uiloader.h" + +#include <QtCore/QDir> +#include <QtCore/QProcess> +#include <QtCore/QSettings> +#include <QtCore/QCoreApplication> + +#include <QtTest/QSignalSpy> +#include <QTest> + +#include <QString> +#include <QHash> +#include <QFile> +#include <QFtp> +#include <QObject> +#include <QHostInfo> +#include <QWidget> +#include <QImage> + +#include <QLibraryInfo> + + +/* + * Our own QVERIFY since the one from QTest can't be used in non-void functions. + * Just pass the desired return value as third argument. + */ + +#define QVERIFY3(statement, description, returnValue) \ +do {\ + if (statement) {\ + if (!QTest::qVerify(true, #statement, (description), __FILE__, __LINE__))\ + return returnValue;\ + } else {\ + if (!QTest::qVerify(false, #statement, (description), __FILE__, __LINE__))\ + return returnValue;\ + }\ +} while (0) + + + +uiLoader::uiLoader(const QString &_pathToProgram) + : pathToProgram(_pathToProgram) +{ + // initTests(); +} + + + + +/* + * Load the configuration file for your machine. + * Return true if everything was loaded, else false. + * + * If the hostname is 'kayak', the config file should be 'kayak.ini': + * + * [General] + * ftpBaseDir=/arthurtest + * ftpHost=wartburg + * ftpPass=anonymouspass + * ftpUser=anonymous + * output=testresults + * + * [engines] + * 1\engine=uic + * size=1 + */ + +bool uiLoader::loadConfig(const QString &filePath, QString *errorMessage) +{ + qDebug() << " ========== Loading config file " << filePath; + configPath = filePath; + + // If there is no config file, dont proceed; + QSettings settings( filePath, QSettings::IniFormat, this ); + + // all keys available? + QStringList keyList; + keyList << QLatin1String("output") << QLatin1String("ftpUser") << QLatin1String("ftpPass") << QLatin1String("ftpHost") << QLatin1String("ftpBaseDir"); + for (int i = 0; i < keyList.size(); ++i) { + const QString currentKey = keyList.at(i); + if (!settings.contains(currentKey)) { + *errorMessage = QString::fromLatin1("Config file '%1' does not contain the required key '%2'.").arg(filePath, currentKey); + return false; + } + + qDebug() << "\t\t(I)" << currentKey << "\t" << settings.value(currentKey).toString(); + } + + const int size = settings.beginReadArray(QLatin1String("engines")); + if (!size) { + *errorMessage = QString::fromLatin1("Config file '%1' does not contain the necessary section engines.").arg(filePath); + return false; + } + + // get the values + for ( int i = 0; i < size; ++i ) { + settings.setArrayIndex(i); + qDebug() << "\t\t(I)" << "engine" << "\t" << settings.value( "engine" ).toString(); + enginesToTest.insert(settings.value(QLatin1String("engine")).toString(), QLatin1String("Info here please :p")); + } + settings.endArray(); + + output = settings.value(QLatin1String("output")).toString(); + output += QDir::separator() + QLibraryInfo::buildKey() + QDir::separator() + QString( qVersion() ); + ftpUser = settings.value( QLatin1String("ftpUser") ).toString(); + ftpPass = settings.value( QLatin1String("ftpPass") ).toString(); + ftpHost = settings.value( QLatin1String("ftpHost") ).toString(); + ftpBaseDir = settings.value( QLatin1String("ftpBaseDir") ).toString() + QDir::separator() + QHostInfo::localHostName().split( QLatin1Char('.')).first(); + threshold = settings.value( QLatin1String("threshold") ).toString(); + + qDebug() << "\t(I) Values adapted:"; + qDebug() << "\t\t(I)" << "ftpBaseDir" << "\t" << ftpBaseDir; + qDebug() << "\t\t(I)" << "output" << "\t" << output; + + return true; +} + +/* + * Upload testresults to the server in order to create the new baseline. + */ + +void uiLoader::createBaseline() +{ + // can't use ftpUploadFile() here + qDebug() << " ========== Uploading baseline of only the latest test values "; + + QFtp ftp; + ftp.connectToHost( ftpHost ); + ftp.login( ftpUser, ftpPass ); + ftp.cd( ftpBaseDir ); + + QDir dir( output ); + + // Upload all the latest test results to the FTP server's baseline directory. + QHashIterator<QString, QString> i(enginesToTest); + while ( i.hasNext() ) { + i.next(); + + dir.cd( i.key() ); + ftp.cd( i.key() + ".baseline" ); + + dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); + dir.setNameFilters( QStringList() << "*.png" ); + QFileInfoList list = dir.entryInfoList(); + + dir.cd( ".." ); + + for (int n = 0; n < list.size(); n++) { + QFileInfo fileInfo = list.at( n ); + QFile file( QString( output ) + "/" + i.key() + "/" + fileInfo.fileName() ); + + errorMsg = "could not open file " + fileInfo.fileName(); + QVERIFY2( file.open(QIODevice::ReadOnly), qPrintable(errorMsg)); + + QByteArray fileData = file.readAll(); + file.close(); + + ftp.put( fileData, fileInfo.fileName(), QFtp::Binary ); + qDebug() << "\t(I) Uploading:" << fileInfo.fileName() << "with file size" << fileData.size(); + } + + ftp.cd( ".." ); + } + + ftp.close(); + + while ( ftp.hasPendingCommands() ) + QCoreApplication::instance()->processEvents(); +} + + + +/* + * Download baseline from server in order to compare results. + */ + +void uiLoader::downloadBaseline() +{ + qDebug() << " ========== Downloading baseline..."; + + QHashIterator<QString, QString> i(enginesToTest); + while ( i.hasNext() ) { + i.next(); + QString engineName = i.key(); + + QString dirWithFiles = ftpBaseDir + '/' + engineName + ".baseline"; + QString ftpDir = ftpBaseDir + '/' + engineName + ".baseline"; + QString saveToDir = QDir::currentPath() + '/' + output + '/' + engineName + ".baseline"; + + ftpList(dirWithFiles); + + QList<QString> filesToDownload(lsDirList); + ftpGetFiles(filesToDownload, ftpDir, saveToDir); + } +} + + + +/* + * Enter the dir pathDir local and remove all files (not recursive!) + */ + +void uiLoader::clearDirectory(const QString& pathDir) +{ + qDebug() << "\t(I) Clearing directory local: " << pathDir; + + QDir dir(pathDir); + dir.setFilter(QDir::Files); + QStringList list = dir.entryList(); + + for (int n = 0; n < list.size(); n++) { + QString filePath = pathDir + "/" + list.at(n); + QFile file(filePath); + + errorMsg = "could not remove file " + filePath; + QVERIFY2( file.remove(), qPrintable(errorMsg)); + } + +} + + + +/* + * Setup the local environment. + */ + +void uiLoader::setupLocal() +{ + qDebug( " ========== Setting up local environment" ); + + QDir dir; + + errorMsg = "could not create path " + output; + QVERIFY2( dir.mkpath(output), qPrintable(errorMsg) ); + + QHashIterator<QString, QString> j(enginesToTest); + while ( j.hasNext() ) { + j.next(); + + QString engineName = j.key(); + QString engineDir = output + '/' + engineName; + + // create <engine> or clean it + QString tmpPath = output + '/' + engineName; + if ( dir.exists(tmpPath) ) { + clearDirectory(tmpPath); + } else { + dir.mkdir(tmpPath); + } + + // create *.baseline or clean it + tmpPath = output + '/' + engineName + ".baseline"; + if ( dir.exists(tmpPath) ) { + clearDirectory(tmpPath); + } else { + dir.mkdir(tmpPath); + } + + // create *.diff or clean it + tmpPath = output + '/' + engineName + ".diff"; + if ( dir.exists(tmpPath) ) { + clearDirectory(tmpPath); + } else { + dir.mkdir(tmpPath); + } + + // create *.failed or clean it + tmpPath = output + '/' + engineName + ".failed"; + if ( dir.exists(tmpPath) ) { + clearDirectory(tmpPath); + } else { + dir.mkdir(tmpPath); + } + } + + qDebug() << "\t(I) Created on local machine:" << output; +} + + + +/* + * Setup the remote environment. + */ + +void uiLoader::setupFTP() +{ + qDebug( " ========== Setting up FTP environment" ); + + // create dirs on ftp server + ftpMkDir( ftpBaseDir ); + ftpBaseDir += "/" + QLibraryInfo::buildKey(); + ftpMkDir( ftpBaseDir ); + ftpBaseDir += "/" + QString( qVersion() ); + ftpMkDir( ftpBaseDir ); + + QString dir = ""; + ftpList(ftpBaseDir + '/' + dir); + QList<QString> dirListing(lsDirList); + + // create *.failed, *.diff if necessary, else remove the files in it + // if *.baseline does not exist, memorize it + QHashIterator<QString, QString> j(enginesToTest); + while ( j.hasNext() ) { + j.next(); + + QString curDir = QString( j.key() ) + ".failed"; + if ( dirListing.contains( curDir ) ) { + ftpClearDirectory(ftpBaseDir + "/" + curDir + "/"); + } else { + ftpMkDir(ftpBaseDir + "/" + curDir + "/"); + } + + curDir = QString( j.key() ) + ".diff"; + if ( dirListing.contains( curDir ) ) { + ftpClearDirectory(ftpBaseDir + "/" + curDir + "/"); + } else { + ftpMkDir(ftpBaseDir + "/" + curDir + "/"); + } + + curDir = QString( j.key() ) + ".baseline"; + lsNeedBaseline.clear(); + if ( !dirListing.contains( curDir ) ) { + ftpMkDir(ftpBaseDir + "/" + curDir + "/"); + lsNeedBaseline << j.key(); + } else { + qDebug() << "\t(I)" << curDir << "exists on server."; + } + } +} + + + +/* + * Download files listed in fileLisiting from dir pathRemoteDir on sever and save + * them in pathSaveDir. + */ + +void uiLoader::ftpGetFiles(QList<QString>& fileListing, const QString& pathRemoteDir, const QString& pathSaveDir) +{ + QFtp ftp; + ftp.connectToHost( ftpHost ); + ftp.login( ftpUser, ftpPass ); + + if ( !fileListing.empty() ) { + for ( int i = 0; i < fileListing.size(); ++i ) { + QFile file( pathSaveDir + "/" + fileListing.at(i) ); + + errorMsg = "could not open file for writing: " + file.fileName(); + QVERIFY2( file.open(QIODevice::WriteOnly), qPrintable(errorMsg) ); + + QString ftpFileName = pathRemoteDir + '/' + fileListing.at(i); + ftp.get( ftpFileName, &file ); + //qDebug() << "\t(I) Got" << file.fileName(); + ftp.list(); //Only there to fill up a slot in the pendingCommands queue. + + while ( ftp.hasPendingCommands() ) + QCoreApplication::instance()->processEvents(); + + file.close(); + } + } + + ftp.close(); + + while ( ftp.hasPendingCommands() ) + QCoreApplication::instance()->processEvents(); + + fileListing.clear(); +} + + + +/* + * Upload the file filePath to the server and save it there at filePathRemote. + * + * HINT: It seems you can't use this function in a loop, to many connections + * are established?! + */ + +bool uiLoader::ftpUploadFile(const QString& filePathRemote, const QString& filePath) +{ + QFile file(filePath); + + errorMsg = "could not open file: " + filePath; + QVERIFY3( file.open(QIODevice::ReadOnly), qPrintable(errorMsg), false ); + + QByteArray contents = file.readAll(); + file.close(); + + qDebug() << "\t(I) Uploading file to" << filePathRemote; + + QFtp ftp; + ftp.connectToHost( ftpHost ); + ftp.login( ftpUser, ftpPass ); + + ftp.put( contents, filePathRemote, QFtp::Binary ); + + ftp.close(); + + while ( ftp.hasPendingCommands() ) + QCoreApplication::instance()->processEvents(); + + return true; +} + + + +/* + * Enter the dir dir on the server and remove all files (not recursive!) + */ + +void uiLoader::ftpClearDirectory(const QString& pathDir) +{ + qDebug() << "\t(I) Clearing directory remote: " << pathDir; + + ftpList(pathDir); + QList<QString> dirListing(lsDirList); + + QFtp ftp; + ftp.connectToHost( ftpHost ); + ftp.login( ftpUser, ftpPass ); + + for (int i = 0; i < dirListing.size(); ++i) { + QString file = dirListing.at(i); + qDebug() << "\t(I) Removing" << pathDir + file; + ftp.remove(pathDir + file); + } + + ftp.close(); + + while ( ftp.hasPendingCommands() ) + QCoreApplication::instance()->processEvents(); +} + + + +/* + * Get a directory listing from the server in the dir dir. + * You can access it via lsDirList. + */ + +void uiLoader::ftpList(const QString & dir) { + qDebug() << "\t(I) Getting list of files in dir" << dir; + + lsDirList.clear(); + + QFtp ftp; + QObject::connect( &ftp, SIGNAL( listInfo( const QUrlInfo & ) ), this, SLOT( ftpAddLsEntry(const QUrlInfo & ) ) ); + //QObject::connect( &ftp, SIGNAL( done( bool ) ), this, SLOT( ftpAddLsDone( bool ) ) ); + + ftp.connectToHost( ftpHost ); + ftp.login( ftpUser, ftpPass ); + + ftp.list( dir ); + ftp.close(); + + while ( ftp.hasPendingCommands() ) + QCoreApplication::instance()->processEvents(); +} + + + +/* + * Creates a dir on the ftp server. + * + * Hint: If the ftp.mkdir() fails we just assume the dir already exist. + */ + +void uiLoader::ftpMkDir( QString pathDir ) +{ + QFtp ftp; + + QSignalSpy commandSpy(&ftp, SIGNAL(commandFinished(int, bool))); + + ftp.connectToHost( ftpHost ); + ftp.login( ftpUser, ftpPass ); + const int command = ftp.mkdir( pathDir ); + ftp.close(); + + while ( ftp.hasPendingCommands() ) + QCoreApplication::instance()->processEvents(); + + // check wheter there was an error or not + for (int i = 0; i < commandSpy.count(); ++i) { + if (commandSpy.at(i).at(0) == command) { + if ( !commandSpy.at(i).at(1).toBool() ) { + qDebug() << "\t(I) Created at remote machine:" << pathDir; + } else { + qDebug() << "\t(I) Could not create on remote machine - probably the dir exists"; + } + } + } +} + + + +/* + * Just a slot, needed for ftpList(). + */ + +void uiLoader::ftpAddLsEntry( const QUrlInfo &urlInfo ) +{ + //Just adding the file to the list + lsDirList << urlInfo.name(); +} + +/* + * Return a list of the test case ui files + */ + +QStringList uiLoader::uiFiles() const +{ + QString baselinePath = QDir::currentPath(); + baselinePath += QLatin1String("/baseline"); + QDir dir(baselinePath); + dir.setFilter(QDir::Files); + dir.setNameFilters(QStringList(QLatin1String("*.ui"))); + const QFileInfoList list = dir.entryInfoList(); + QStringList rc; + const QChar slash = QLatin1Char('/'); + foreach (const QFileInfo &fi, list) { + QString fileAbsolutePath = baselinePath; + fileAbsolutePath += slash; + fileAbsolutePath += fi.fileName(); + rc.push_back(fileAbsolutePath); + } + return rc; +} +/* + * The actual method for generating local files that will be compared + * to the baseline. + * + * The external program uiscreenshot/uiscreenshot is called to generate + * *.png files of *.ui files. + */ + +void uiLoader::executeTests() +{ + qDebug(" ========== Executing the tests...[generating pngs from uis]"); + + qDebug() << "Current Dir" << QDir::currentPath(); + + qDebug() << "\t(I) Using" << pathToProgram; + + QProcess myProcess; + foreach(const QString &fileAbsolutePath, uiFiles()) { + qDebug() << "\t(I) Current file:" << fileAbsolutePath; + + QHashIterator<QString, QString> j(enginesToTest); + while ( j.hasNext() ) { + j.next(); + + QString outputDirectory = output + '/' + j.key(); + + QStringList arguments; + arguments << fileAbsolutePath; + arguments << outputDirectory; + + myProcess.start(pathToProgram, arguments); + + // took too long? + errorMsg = "process does not exited normally (QProcess timeout) - " + pathToProgram; + QVERIFY2( myProcess.waitForFinished(), qPrintable(errorMsg) ); + + qDebug() << "\n" << myProcess.readAllStandardError(); + + // check exit code/status + errorMsg = "process does not exited normally - " + pathToProgram; + QVERIFY2( myProcess.exitStatus() == QProcess::NormalExit, qPrintable(errorMsg) ); + QVERIFY2( myProcess.exitCode() == EXIT_SUCCESS, qPrintable(errorMsg) ); + } + } +} + +/* + * Comparing generated files to the baseline. + */ + +bool uiLoader::compare() +{ + qDebug( " ========== Now comparing the results to the baseline" ); + + QDir dir(output); + + QHashIterator<QString, QString> i(enginesToTest); + while ( i.hasNext() ) { + i.next(); + + QString engineName = i.key(); + + // Perform comparisons between the two directories. + dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); + dir.setNameFilters( QStringList() << "*.png" ); + dir.cd( engineName + ".baseline" ); + + QFileInfoList list = dir.entryInfoList(); + + for (int i = 0; i < list.size(); ++i) { + QFileInfo fileInfo = list.at(i); + diff(output, engineName, fileInfo.fileName()); + } + } + + return true; +} + + + + +void uiLoader::diff(const QString& basedir, const QString& engine, const QString& fileName) +{ + QString filePathBaseline = basedir + "/" + engine + ".baseline/" + fileName; + QString filePathGenerated = basedir + "/" + engine + '/' + fileName; + + qDebug() << "\t(I) Comparing" << filePathBaseline; + qDebug() << "\t(I) Comparing" << filePathGenerated; + + QString filePathDiffImage = basedir + "/" + engine + ".diff/" + fileName; + + if ( QFile::exists(filePathGenerated) ) { + QString filePathDiffImage = basedir + "/" + engine + ".diff/" + fileName; + int pixelDiff = imgDiff(filePathBaseline, filePathGenerated, filePathDiffImage); + + if ( pixelDiff <= threshold.toInt() ) { + qDebug() << "\t(I) TEST OK"; + QVERIFY(true); + } else { + qDebug() << "\t(I) TEST FAILED"; + qDebug() << "\t(I)\t...saving baseline in *.failed"; + + // local: save in *.failed + QString filePathFailed = basedir + "/" + engine + ".failed/" + fileName; + errorMsg = "Could not save " + filePathGenerated + " to " + filePathFailed; + QVERIFY2( QFile::copy(filePathGenerated, filePathFailed), qPrintable(errorMsg) ); + + // remote: save in *.failed + QString filePathFailedRemote = ftpBaseDir + "/" + engine + ".failed" + "/" + fileName; + ftpUploadFile(filePathFailedRemote, filePathGenerated); + + errorMsg = "Something broke in the image comparison with " + filePathDiffImage; + QVERIFY2( (pixelDiff != -1), qPrintable(errorMsg) ); + + // remote: save in *.diff + QString filePathDiffRemote = ftpBaseDir + "/" + engine + ".diff" + "/" + fileName; + ftpUploadFile(filePathDiffRemote, filePathDiffImage); + QFAIL(qPrintable(fileName)); + } + + } else { + qWarning() << "\t(W) Expected generated file" << filePathGenerated << "does not exist."; + qWarning() << "\t(W) ...saving baseline in *.failed"; + + // save local + QString filePathMissing = basedir + '/' + engine + ".failed/" + fileName + "_missing"; + errorMsg = "Could not save " + filePathMissing; + QVERIFY2( QFile::copy(filePathBaseline, filePathMissing), qPrintable(errorMsg) ); + + // save remote + QString filePathDiffRemote = ftpBaseDir + "/" + engine + ".diff" + "/" + fileName; + ftpUploadFile(filePathDiffRemote, filePathBaseline); + + errorMsg = filePathGenerated + " was not generated, but baseline for this file exists"; + QVERIFY2(false, qPrintable(errorMsg)); + } + +} + +/* + * Execution starts here. + */ + +uiLoader::TestResult uiLoader::runAutoTests(QString *errorMessage) +{ + // SVG needs this widget... + QWidget dummy; + + qDebug() << "Running test on buildkey:" << QLibraryInfo::buildKey() << " qt version:" << qVersion(); + qDebug() << "Initializing tests..."; + + // load config + const QString configFileName = QHostInfo::localHostName().split(QLatin1Char('.')).first() + QLatin1String(".ini"); + const QFileInfo fi(configFileName); + if (!fi.isFile() || !fi.isReadable()) { + *errorMessage = QString::fromLatin1("Config file '%1' does not exist or is not readable.").arg(configFileName); + return TestNoConfig; + } + + if (!loadConfig(configFileName, errorMessage)) + return TestConfigError; + + // reset the local environment where the results are stored + setupLocal(); + + // reset the FTP environment where the results are stored + setupFTP(); + + // retrieve the latest test result baseline from the FTP server. + downloadBaseline(); + + // execute tests + executeTests(); + + // upload testresults as new baseline or compare results + if ( lsNeedBaseline.size() ) + createBaseline(); + else + compare(); + + return TestRunDone; +} + +int uiLoader::imgDiff(const QString fileA, const QString fileB, const QString output) +{ +// qDebug() << "Comparing " << fileA << " and " << fileB << " outputting to " << output; + QImage imageA(fileA); + QImage imageB(fileB); + + // Invalid images + if (imageA.isNull() || imageB.isNull()) + { + qDebug() << "Fatal error: unable to open one or more input images."; + return false; + } + + //Choose the largest image size, so that the output can capture the entire diff. + QSize largestSize = imageA.size(); + QSize otherSize = imageB.size(); + + if (largestSize.width() < otherSize.width()) + largestSize.setWidth(otherSize.width()); + + if (largestSize.height() < otherSize.height()) + largestSize.setHeight(otherSize.height()); + + QImage imageDiff(largestSize, QImage::Format_ARGB32); + + imageA = imageA.convertToFormat(QImage::Format_ARGB32); + imageB = imageB.convertToFormat(QImage::Format_ARGB32); + + int pixelDiff = 0; + + for (int y = 0; y < imageDiff.height(); ++y) + { + for (int x = 0; x < imageDiff.width(); ++x) + { + //Are the pixels within range? Else, draw a black pixel in diff. + if (imageA.valid(x,y) && imageB.valid(x,y)) + { + //Both images have a pixel at x,y - are they the same? If not, black pixel in diff. + if (imageA.pixel(x,y) != imageB.pixel(x,y)) + { + imageDiff.setPixel(x,y,0xff000000); + pixelDiff++; + } + else + imageDiff.setPixel(x,y,0xffffffff); + } + else + { + imageDiff.setPixel(x,y,0xff000000); + pixelDiff++; + } + } + } + + imageDiff.setText("comment", QString::number(pixelDiff)); + + if (!imageDiff.save(output, "PNG")) + pixelDiff = -1; + + return pixelDiff; +} diff --git a/tests/auto/uiloader/uiloader/uiloader.h b/tests/auto/uiloader/uiloader/uiloader.h new file mode 100644 index 0000000000000000000000000000000000000000..b7ee45fd575cdb6e4d0c07289cc0d41ccbc28c6a --- /dev/null +++ b/tests/auto/uiloader/uiloader/uiloader.h @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ +#ifndef ATWRAPPER_H +#define ATWRAPPER_H + +#include <QHash> +#include <QString> +#include <QUrlInfo> +#include <QList> +#include <QImage> + +class uiLoader : public QObject +{ + Q_OBJECT + + public: + uiLoader(const QString &pathToProgram); + + enum TestResult { TestRunDone, TestConfigError, TestNoConfig }; + TestResult runAutoTests(QString *errorMessage); + + private: + bool loadConfig(const QString &, QString *errorMessage); + void initTests(); + + void setupFTP(); + void setupLocal(); + void clearDirectory(const QString&); + + void ftpMkDir( QString ); + void ftpGetFiles(QList<QString>&, const QString&, const QString&); + void ftpList(const QString&); + void ftpClearDirectory(const QString&); + bool ftpUploadFile(const QString&, const QString&); + void executeTests(); + + void createBaseline(); + void downloadBaseline(); + + bool compare(); + + void diff(const QString&, const QString&, const QString&); + int imgDiff(const QString fileA, const QString fileB, const QString output); + QStringList uiFiles() const; + + QHash<QString, QString> enginesToTest; + + QString framework; + QString suite; + QString output; + QString ftpUser; + QString ftpPass; + QString ftpHost; + QString ftpBaseDir; + QString threshold; + + QString errorMsg; + + QList<QString> lsDirList; + QList<QString> lsNeedBaseline; + + QString configPath; + + QString pathToProgram; + + private slots: + //void ftpAddLsDone( bool ); + void ftpAddLsEntry( const QUrlInfo &urlInfo ); +}; + +#endif diff --git a/tests/auto/uiloader/uiloader/uiloader.pro b/tests/auto/uiloader/uiloader/uiloader.pro new file mode 100644 index 0000000000000000000000000000000000000000..12624703ff80b9fa7eebd040e814927db03f7b92 --- /dev/null +++ b/tests/auto/uiloader/uiloader/uiloader.pro @@ -0,0 +1,30 @@ +load(qttest_p4) + +TEMPLATE = app +!embedded:CONFIG += uitools +TARGET = ../tst_uiloader +!symbian:DEFINES += SRCDIR=\\\"$$PWD\\\" + +win32 { + CONFIG(debug, debug|release) { + TARGET = ../../debug/tst_uiloader +} else { + TARGET = ../../release/tst_uiloader + } +} + +QT += widgets network + +wince*|symbian: { + configuration.files = ../*.ini + configuration.path = . + + screenapp.files = ../tst_screenshot/tst_screenshot.exe + screenapp.path = tst_screenshot + + DEPLOYMENT += configuration screenapp +} + +# Input +HEADERS += uiloader.h +SOURCES += tst_uiloader.cpp uiloader.cpp diff --git a/tests/auto/uiloader/wartburg.ini b/tests/auto/uiloader/wartburg.ini new file mode 100644 index 0000000000000000000000000000000000000000..751a3883fd45a9dc09f5a16545ea10facbbb4052 --- /dev/null +++ b/tests/auto/uiloader/wartburg.ini @@ -0,0 +1,11 @@ +[General] +ftpBaseDir=/arthurtest +ftpHost=wartburg +ftpPass=anonymouspass +ftpUser=anonymous +output=testresults +threshold=20 + +[engines] +1\engine=uic +size=1