aboutsummaryrefslogtreecommitdiffstats
path: root/examples/declarative
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2022-09-15 13:21:53 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2022-09-16 10:30:36 +0200
commitcf32b66adbfb489cd6e5d5c0bf3f741b59ba204c (patch)
tree44be69c9487f5d4db1092d061a555bd6001c1ab4 /examples/declarative
parentb20d6f6906f91f9df608d7800f4e27f7a7160abe (diff)
Move examples around
Change the directory structure to closer match that of Qt. Task-number: PYSIDE-841 Change-Id: I87aca346b6654aafe94dd1fb83c184c182ceb2e6 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'examples/declarative')
-rw-r--r--examples/declarative/editingmodel/MovingRectangle.qml78
-rw-r--r--examples/declarative/editingmodel/doc/editingmodel.rst14
-rw-r--r--examples/declarative/editingmodel/doc/qabstractlistmodelqml.pngbin45810 -> 0 bytes
-rw-r--r--examples/declarative/editingmodel/main.py21
-rw-r--r--examples/declarative/editingmodel/main.pyproject3
-rw-r--r--examples/declarative/editingmodel/main.qml106
-rw-r--r--examples/declarative/editingmodel/model.py157
-rw-r--r--examples/declarative/extending/chapter1-basics/app.qml27
-rw-r--r--examples/declarative/extending/chapter1-basics/basics.py68
-rw-r--r--examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject3
-rw-r--r--examples/declarative/extending/chapter2-methods/app.qml33
-rw-r--r--examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject3
-rw-r--r--examples/declarative/extending/chapter2-methods/methods.py75
-rw-r--r--examples/declarative/extending/chapter3-bindings/app.qml41
-rw-r--r--examples/declarative/extending/chapter3-bindings/bindings.py79
-rw-r--r--examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject3
-rw-r--r--examples/declarative/extending/chapter4-customPropertyTypes/app.qml23
-rw-r--r--examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject3
-rw-r--r--examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py82
-rw-r--r--examples/declarative/extending/chapter5-listproperties/app.qml33
-rw-r--r--examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject3
-rw-r--r--examples/declarative/extending/chapter5-listproperties/listproperties.py96
-rw-r--r--examples/declarative/extending/chapter6-plugins/Charts/piechart.py40
-rw-r--r--examples/declarative/extending/chapter6-plugins/Charts/pieslice.py52
-rw-r--r--examples/declarative/extending/chapter6-plugins/Charts/plugins.pngbin5014 -> 0 bytes
-rw-r--r--examples/declarative/extending/chapter6-plugins/app.qml32
-rw-r--r--examples/declarative/extending/chapter6-plugins/chapter6-plugins.pyproject3
-rw-r--r--examples/declarative/extending/chapter6-plugins/doc/chapter6-plugins.rst21
-rw-r--r--examples/declarative/extending/chapter6-plugins/doc/plugins.pngbin5014 -> 0 bytes
-rw-r--r--examples/declarative/objectlistmodel/doc/objectlistmodel.pngbin1327 -> 0 bytes
-rw-r--r--examples/declarative/objectlistmodel/doc/objectlistmodel.rst12
-rw-r--r--examples/declarative/objectlistmodel/objectlistmodel.py61
-rw-r--r--examples/declarative/objectlistmodel/objectlistmodel.pyproject3
-rw-r--r--examples/declarative/objectlistmodel/view.qml15
-rw-r--r--examples/declarative/openglunderqml/doc/openglunderqml.rst21
-rw-r--r--examples/declarative/openglunderqml/doc/squircle.pngbin37963 -> 0 bytes
-rw-r--r--examples/declarative/openglunderqml/main.py27
-rw-r--r--examples/declarative/openglunderqml/main.qml39
-rw-r--r--examples/declarative/openglunderqml/openglunderqml.pyproject3
-rw-r--r--examples/declarative/openglunderqml/squircle.py79
-rw-r--r--examples/declarative/openglunderqml/squirclerenderer.py99
-rw-r--r--examples/declarative/referenceexamples/adding/adding.pyproject5
-rw-r--r--examples/declarative/referenceexamples/adding/doc/adding.rst67
-rw-r--r--examples/declarative/referenceexamples/adding/example.qml9
-rw-r--r--examples/declarative/referenceexamples/adding/main.py30
-rw-r--r--examples/declarative/referenceexamples/adding/person.py35
-rw-r--r--examples/declarative/referenceexamples/attached/attached.pyproject3
-rw-r--r--examples/declarative/referenceexamples/attached/birthdayparty.py63
-rw-r--r--examples/declarative/referenceexamples/attached/doc/attached.rst12
-rw-r--r--examples/declarative/referenceexamples/attached/example.qml22
-rw-r--r--examples/declarative/referenceexamples/attached/main.py46
-rw-r--r--examples/declarative/referenceexamples/attached/person.py46
-rw-r--r--examples/declarative/referenceexamples/binding/binding.pyproject3
-rw-r--r--examples/declarative/referenceexamples/binding/birthdayparty.py83
-rw-r--r--examples/declarative/referenceexamples/binding/doc/binding.rst17
-rw-r--r--examples/declarative/referenceexamples/binding/example.qml29
-rw-r--r--examples/declarative/referenceexamples/binding/happybirthdaysong.py47
-rw-r--r--examples/declarative/referenceexamples/binding/main.py52
-rw-r--r--examples/declarative/referenceexamples/binding/person.py53
-rw-r--r--examples/declarative/referenceexamples/coercion/birthdayparty.py41
-rw-r--r--examples/declarative/referenceexamples/coercion/coercion.pyproject3
-rw-r--r--examples/declarative/referenceexamples/coercion/doc/coercion.rst35
-rw-r--r--examples/declarative/referenceexamples/coercion/example.qml16
-rw-r--r--examples/declarative/referenceexamples/coercion/main.py36
-rw-r--r--examples/declarative/referenceexamples/coercion/person.py47
-rw-r--r--examples/declarative/referenceexamples/default/birthdayparty.py42
-rw-r--r--examples/declarative/referenceexamples/default/default.pyproject3
-rw-r--r--examples/declarative/referenceexamples/default/doc/default.rst30
-rw-r--r--examples/declarative/referenceexamples/default/example.qml15
-rw-r--r--examples/declarative/referenceexamples/default/main.py36
-rw-r--r--examples/declarative/referenceexamples/default/person.py46
-rw-r--r--examples/declarative/referenceexamples/extended/doc/extended.rst41
-rw-r--r--examples/declarative/referenceexamples/extended/example.qml8
-rw-r--r--examples/declarative/referenceexamples/extended/extended.pyproject3
-rw-r--r--examples/declarative/referenceexamples/extended/main.py95
-rw-r--r--examples/declarative/referenceexamples/grouped/birthdayparty.py42
-rw-r--r--examples/declarative/referenceexamples/grouped/doc/grouped.rst17
-rw-r--r--examples/declarative/referenceexamples/grouped/example.qml33
-rw-r--r--examples/declarative/referenceexamples/grouped/grouped.pyproject3
-rw-r--r--examples/declarative/referenceexamples/grouped/main.py43
-rw-r--r--examples/declarative/referenceexamples/grouped/person.py85
-rw-r--r--examples/declarative/referenceexamples/methods/birthdayparty.py47
-rw-r--r--examples/declarative/referenceexamples/methods/doc/methods.rst15
-rw-r--r--examples/declarative/referenceexamples/methods/example.qml19
-rw-r--r--examples/declarative/referenceexamples/methods/main.py32
-rw-r--r--examples/declarative/referenceexamples/methods/methods.pyproject3
-rw-r--r--examples/declarative/referenceexamples/methods/person.py34
-rw-r--r--examples/declarative/referenceexamples/properties/birthdayparty.py41
-rw-r--r--examples/declarative/referenceexamples/properties/doc/properties.rst89
-rw-r--r--examples/declarative/referenceexamples/properties/example.qml16
-rw-r--r--examples/declarative/referenceexamples/properties/main.py34
-rw-r--r--examples/declarative/referenceexamples/properties/person.py35
-rw-r--r--examples/declarative/referenceexamples/properties/properties.pyproject6
-rw-r--r--examples/declarative/referenceexamples/valuesource/birthdayparty.py76
-rw-r--r--examples/declarative/referenceexamples/valuesource/doc/valuesource.rst20
-rw-r--r--examples/declarative/referenceexamples/valuesource/example.qml27
-rw-r--r--examples/declarative/referenceexamples/valuesource/happybirthdaysong.py47
-rw-r--r--examples/declarative/referenceexamples/valuesource/main.py51
-rw-r--r--examples/declarative/referenceexamples/valuesource/person.py46
-rw-r--r--examples/declarative/referenceexamples/valuesource/valuesource.pyproject3
-rw-r--r--examples/declarative/rendercontrol/rendercontrol_opengl/cuberenderer.py186
-rw-r--r--examples/declarative/rendercontrol/rendercontrol_opengl/demo.qml161
-rw-r--r--examples/declarative/rendercontrol/rendercontrol_opengl/doc/rendercontrol_opengl.rst5
-rw-r--r--examples/declarative/rendercontrol/rendercontrol_opengl/main.py20
-rw-r--r--examples/declarative/rendercontrol/rendercontrol_opengl/rendercontrol_opengl.pyproject6
-rw-r--r--examples/declarative/rendercontrol/rendercontrol_opengl/window_singlethreaded.py275
-rw-r--r--examples/declarative/shared/Button.qml50
-rw-r--r--examples/declarative/shared/CheckBox.qml59
-rw-r--r--examples/declarative/shared/FlickrRssModel.qml45
-rw-r--r--examples/declarative/shared/Images.qml14
-rw-r--r--examples/declarative/shared/Label.qml9
-rw-r--r--examples/declarative/shared/LauncherList.qml205
-rw-r--r--examples/declarative/shared/README11
-rw-r--r--examples/declarative/shared/SimpleLauncherDelegate.qml96
-rw-r--r--examples/declarative/shared/Slider.qml82
-rw-r--r--examples/declarative/shared/TabSet.qml69
-rw-r--r--examples/declarative/shared/TextField.qml43
-rw-r--r--examples/declarative/shared/images/back.pngbin1590 -> 0 bytes
-rw-r--r--examples/declarative/shared/images/checkmark.pngbin809 -> 0 bytes
-rw-r--r--examples/declarative/shared/images/next.pngbin1371 -> 0 bytes
-rw-r--r--examples/declarative/shared/images/qt-logo.pngbin6208 -> 0 bytes
-rw-r--r--examples/declarative/shared/images/slider_handle.pngbin887 -> 0 bytes
-rw-r--r--examples/declarative/shared/images/tab.pngbin309 -> 0 bytes
-rw-r--r--examples/declarative/shared/qmldir11
-rw-r--r--examples/declarative/shared/quick_shared.qrc15
-rw-r--r--examples/declarative/shared/shared.qrc21
-rw-r--r--examples/declarative/shared/shared_rc.py1884
-rw-r--r--examples/declarative/signals/pytoqml1/main.py31
-rw-r--r--examples/declarative/signals/pytoqml1/pytoqml1.pyproject3
-rw-r--r--examples/declarative/signals/pytoqml1/view.qml36
-rw-r--r--examples/declarative/signals/pytoqml2/main.py54
-rw-r--r--examples/declarative/signals/pytoqml2/pytoqml2.pyproject3
-rw-r--r--examples/declarative/signals/pytoqml2/view.qml30
-rw-r--r--examples/declarative/signals/qmltopy1/main.py50
-rw-r--r--examples/declarative/signals/qmltopy1/qmltopy1.pyproject3
-rw-r--r--examples/declarative/signals/qmltopy1/view.qml54
-rw-r--r--examples/declarative/signals/qmltopy2/main.py45
-rw-r--r--examples/declarative/signals/qmltopy2/qmltopy2.pyproject3
-rw-r--r--examples/declarative/signals/qmltopy2/view.qml49
-rw-r--r--examples/declarative/signals/qmltopy3/main.py33
-rw-r--r--examples/declarative/signals/qmltopy3/qmltopy3.pyproject3
-rw-r--r--examples/declarative/signals/qmltopy3/view.qml66
-rw-r--r--examples/declarative/signals/qmltopy4/main.py33
-rw-r--r--examples/declarative/signals/qmltopy4/qmltopy4.pyproject3
-rw-r--r--examples/declarative/signals/qmltopy4/view.qml31
-rw-r--r--examples/declarative/stringlistmodel/doc/stringlistmodel.pngbin1978 -> 0 bytes
-rw-r--r--examples/declarative/stringlistmodel/doc/stringlistmodel.rst9
-rw-r--r--examples/declarative/stringlistmodel/stringlistmodel.py26
-rw-r--r--examples/declarative/stringlistmodel/stringlistmodel.pyproject3
-rw-r--r--examples/declarative/stringlistmodel/view.qml17
-rw-r--r--examples/declarative/textproperties/doc/textproperties.pngbin14082 -> 0 bytes
-rw-r--r--examples/declarative/textproperties/doc/textproperties.rst9
-rw-r--r--examples/declarative/textproperties/main.py76
-rw-r--r--examples/declarative/textproperties/textproperties.pyproject3
-rw-r--r--examples/declarative/textproperties/view.qml160
-rw-r--r--examples/declarative/usingmodel/doc/usingmodel.pngbin2791 -> 0 bytes
-rw-r--r--examples/declarative/usingmodel/doc/usingmodel.rst9
-rw-r--r--examples/declarative/usingmodel/usingmodel.py70
-rw-r--r--examples/declarative/usingmodel/usingmodel.pyproject3
-rw-r--r--examples/declarative/usingmodel/view.qml29
-rw-r--r--examples/declarative/window/AllScreens.qml42
-rw-r--r--examples/declarative/window/CurrentScreen.qml83
-rw-r--r--examples/declarative/window/Splash.qml42
-rw-r--r--examples/declarative/window/doc/window.pngbin9863 -> 0 bytes
-rw-r--r--examples/declarative/window/doc/window.rst35
-rw-r--r--examples/declarative/window/main.py37
-rw-r--r--examples/declarative/window/resources/icon.icnsbin59662 -> 0 bytes
-rw-r--r--examples/declarative/window/resources/icon.icobin11825 -> 0 bytes
-rw-r--r--examples/declarative/window/resources/icon.svg208
-rw-r--r--examples/declarative/window/resources/icon64.pngbin3004 -> 0 bytes
-rw-r--r--examples/declarative/window/window.pyproject3
-rw-r--r--examples/declarative/window/window.qml151
-rw-r--r--examples/declarative/window/window.qrc8
-rw-r--r--examples/declarative/window/window_rc.py328
174 files changed, 0 insertions, 8589 deletions
diff --git a/examples/declarative/editingmodel/MovingRectangle.qml b/examples/declarative/editingmodel/MovingRectangle.qml
deleted file mode 100644
index b99a5f4dc..000000000
--- a/examples/declarative/editingmodel/MovingRectangle.qml
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-
-import QtQuick
-import QtQuick.Controls
-
-Rectangle {
- id: root
- property int modelIndex
- property Item dragParent
- property Item sizeParent
- property alias text: zone.text
- property alias bgColor: root.color
-
- anchors {
- horizontalCenter: parent.horizontalCenter
- verticalCenter: parent.verticalCenter
- }
- color: backgroundColor
- anchors.fill: sizeParent
- border.color: "yellow"
- border.width: 0
- TextArea {
- id: zone
- anchors.centerIn: parent
- text: display
- onTextChanged: model.edit = text
- }
-
- MouseArea {
- id: zoneMouseArea
- anchors.fill: parent
-
- acceptedButtons: Qt.MiddleButton
- onClicked: function(mouse) {
- if (mouse.button == Qt.MiddleButton)
- lv.model.remove(index)
- else
- mouse.accepted = false
- }
- }
- DragHandler {
- id: dragHandler
- xAxis {
-
- enabled: true
- minimum: 0
- maximum: lv.width - droparea.width
- }
- yAxis.enabled: false
- acceptedButtons: Qt.LeftButton
- }
- Drag.active: dragHandler.active
- Drag.source: root
- Drag.hotSpot.x: width / 2
-
- states: [
- State {
- when: dragHandler.active
- ParentChange {
- target: root
- parent: root.dragParent
- }
-
- AnchorChanges {
- target: root
- anchors.horizontalCenter: undefined
- anchors.verticalCenter: undefined
- }
- PropertyChanges {
- target: root
- opacity: 0.6
- border.width: 3
- }
- }
- ]
-}
diff --git a/examples/declarative/editingmodel/doc/editingmodel.rst b/examples/declarative/editingmodel/doc/editingmodel.rst
deleted file mode 100644
index d76bebc22..000000000
--- a/examples/declarative/editingmodel/doc/editingmodel.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-QAbstractListModel in QML
-=========================
-
-This example shows how to add, remove and move items inside a QML
-ListView, but showing and editing the data via roles using a
-QAbstractListModel from Python.
-
-You can add new elements and reset the view using the two top buttons,
-remove elements by 'middle click' the element, and move the elements
-with a 'left click' plus dragging the item around.
-
-.. image:: qabstractlistmodelqml.png
- :width: 400
- :alt: QAbstractListModel/ListView Screenshot
diff --git a/examples/declarative/editingmodel/doc/qabstractlistmodelqml.png b/examples/declarative/editingmodel/doc/qabstractlistmodelqml.png
deleted file mode 100644
index 6e181fba1..000000000
--- a/examples/declarative/editingmodel/doc/qabstractlistmodelqml.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/editingmodel/main.py b/examples/declarative/editingmodel/main.py
deleted file mode 100644
index 00b3ae2b1..000000000
--- a/examples/declarative/editingmodel/main.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import sys
-from pathlib import Path
-
-from PySide6.QtCore import QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQml import QQmlApplicationEngine
-
-from model import BaseModel
-
-if __name__ == "__main__":
- app = QGuiApplication(sys.argv)
- engine = QQmlApplicationEngine()
- qml_file = Path(__file__).parent / "main.qml"
- engine.load(QUrl.fromLocalFile(qml_file))
-
- if not engine.rootObjects():
- sys.exit(-1)
- sys.exit(app.exec())
diff --git a/examples/declarative/editingmodel/main.pyproject b/examples/declarative/editingmodel/main.pyproject
deleted file mode 100644
index 71272a973..000000000
--- a/examples/declarative/editingmodel/main.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["model.py","main.qml","main.py","MovingRectangle.qml"]
-}
diff --git a/examples/declarative/editingmodel/main.qml b/examples/declarative/editingmodel/main.qml
deleted file mode 100644
index 2318ae8b3..000000000
--- a/examples/declarative/editingmodel/main.qml
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import QtQuick.Controls
-import QtQuick.Window
-import BaseModel
-
-Window {
- title: "Moving Rectangle"
- width: 800
- height: 480
- visible: true
- id: mainWindow
-
- Column {
- spacing: 20
- anchors.fill: parent
- id: mainColumn
- Text {
- padding: 20
- font.pointSize: 10
- width: 600
- wrapMode: Text.Wrap
- text: "This example shows how to add, remove and move items inside a QML ListView.\n
-It shows and edits data via roles using QAbstractListModel on the Python side.\n
-Use the 'Middle click' on top of a rectangle to remove an item.\n
-'Left click' and drag to move the items."
- }
-
- Button {
- anchors {
- left: mainColumn.left
- right: mainColumn.right
- margins: 30
- }
- text: "Reset view"
- onClicked: lv.model.reset()
- }
-
- Button {
- anchors {
- left: mainColumn.left
- right: mainColumn.right
- margins: 30
- }
- text: "Add element"
- onClicked: lv.model.append()
- }
-
- ListView {
- id: lv
- anchors {
- left: mainColumn.left
- right: mainColumn.right
- margins: 30
- }
-
- height: 200
- model: BaseModel {}
- orientation: ListView.Horizontal
- displaced: Transition {
- NumberAnimation {
- properties: "x,y"
- easing.type: Easing.OutQuad
- }
- }
- delegate: DropArea {
- id: droparea
- width: ratio * lv.width
- height: lv.height
-
- onEntered: function (drag) {
- let dragindex = drag.source.modelIndex
- if (index === dragindex)
- return
- lv.model.move(dragindex, index)
- }
-
- MovingRectangle {
- modelIndex: index
- dragParent: lv
- sizeParent: droparea
- }
- }
-
- MouseArea {
- id: lvMousearea
- anchors.fill: lv
- z: -1
- }
- Rectangle {
- id: lvBackground
- anchors.fill: lv
- anchors.margins: -border.width
- color: "white"
- border.color: "black"
- border.width: 5
- z: -1
- }
- Component.onCompleted: {
- lv.model.reset()
- }
- }
- }
-}
diff --git a/examples/declarative/editingmodel/model.py b/examples/declarative/editingmodel/model.py
deleted file mode 100644
index 591497872..000000000
--- a/examples/declarative/editingmodel/model.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-
-from PySide6.QtCore import (QAbstractListModel, QByteArray, QModelIndex, Qt,
- Slot)
-from PySide6.QtGui import QColor
-from PySide6.QtQml import QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "BaseModel"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class BaseModel(QAbstractListModel):
-
- RatioRole = Qt.UserRole + 1
-
- def __init__(self, parent=None):
- super().__init__(parent=parent)
- self.db = []
-
- def rowCount(self, parent=QModelIndex()):
- return len(self.db)
-
- def roleNames(self):
- default = super().roleNames()
- default[self.RatioRole] = QByteArray(b"ratio")
- default[Qt.BackgroundRole] = QByteArray(b"backgroundColor")
- return default
-
- def data(self, index, role: int):
- if not self.db:
- ret = None
- elif not index.isValid():
- ret = None
- elif role == Qt.DisplayRole:
- ret = self.db[index.row()]["text"]
- elif role == Qt.BackgroundRole:
- ret = self.db[index.row()]["bgColor"]
- elif role == self.RatioRole:
- ret = self.db[index.row()]["ratio"]
- else:
- ret = None
- return ret
-
- def setData(self, index, value, role):
- if not index.isValid():
- return False
- if role == Qt.EditRole:
- self.db[index.row()]["text"] = value
- return True
-
- @Slot(result=bool)
- def append(self):
- """Slot to append a row at the end"""
- return self.insertRow(self.rowCount())
-
- def insertRow(self, row):
- """Insert a single row at row"""
- return self.insertRows(row, 0)
-
- def insertRows(self, row: int, count, index=QModelIndex()):
- """Insert n rows (n = 1 + count) at row"""
-
- self.beginInsertRows(QModelIndex(), row, row + count)
-
- # start database work
- if len(self.db):
- newid = max(x["id"] for x in self.db) + 1
- else:
- newid = 1
- for i in range(count + 1): # at least one row
- self.db.insert(
- row, {"id": newid, "text": "new", "bgColor": QColor("purple"), "ratio": 0.2}
- )
- # end database work
- self.endInsertRows()
- return True
-
- @Slot(int, int, result=bool)
- def move(self, source: int, target: int):
- """Slot to move a single row from source to target"""
- return self.moveRow(QModelIndex(), source, QModelIndex(), target)
-
- def moveRow(self, sourceParent, sourceRow, dstParent, dstChild):
- """Move a single row"""
- return self.moveRows(sourceParent, sourceRow, 0, dstParent, dstChild)
-
- def moveRows(self, sourceParent, sourceRow, count, dstParent, dstChild):
- """Move n rows (n=1+ count) from sourceRow to dstChild"""
-
- if sourceRow == dstChild:
- return False
-
- elif sourceRow > dstChild:
- end = dstChild
-
- else:
- end = dstChild + 1
-
- self.beginMoveRows(QModelIndex(), sourceRow, sourceRow + count, QModelIndex(), end)
-
- # start database work
- pops = self.db[sourceRow : sourceRow + count + 1]
- if sourceRow > dstChild:
- self.db = (
- self.db[:dstChild]
- + pops
- + self.db[dstChild:sourceRow]
- + self.db[sourceRow + count + 1 :]
- )
- else:
- start = self.db[:sourceRow]
- middle = self.db[dstChild : dstChild + 1]
- endlist = self.db[dstChild + count + 1 :]
- self.db = start + middle + pops + endlist
- # end database work
-
- self.endMoveRows()
- return True
-
- @Slot(int, result=bool)
- def remove(self, row: int):
- """Slot to remove one row"""
- return self.removeRow(row)
-
- def removeRow(self, row, parent=QModelIndex()):
- """Remove one row at index row"""
- return self.removeRows(row, 0, parent)
-
- def removeRows(self, row: int, count: int, parent=QModelIndex()):
- """Remove n rows (n=1+count) starting at row"""
- self.beginRemoveRows(QModelIndex(), row, row + count)
-
- # start database work
- self.db = self.db[:row] + self.db[row + count + 1 :]
- # end database work
-
- self.endRemoveRows()
- return True
-
- @Slot(result=bool)
- def reset(self):
- self.beginResetModel()
- self.resetInternalData() # should work without calling it ?
- self.endResetModel()
- return True
-
- def resetInternalData(self):
- self.db = [
- {"id": 3, "bgColor": QColor("red"), "ratio": 0.15, "text": "first"},
- {"id": 1, "bgColor": QColor("blue"), "ratio": 0.1, "text": "second"},
- {"id": 2, "bgColor": QColor("green"), "ratio": 0.2, "text": "third"},
- ]
diff --git a/examples/declarative/extending/chapter1-basics/app.qml b/examples/declarative/extending/chapter1-basics/app.qml
deleted file mode 100644
index 415183596..000000000
--- a/examples/declarative/extending/chapter1-basics/app.qml
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//![0]
-import Charts
-import QtQuick
-
-Item {
- width: 300; height: 200
-
- PieChart {
- id: aPieChart
- anchors.centerIn: parent
- width: 100; height: 100
- name: "A simple pie chart"
- color: "red"
- }
-
- Text {
- anchors {
- bottom: parent.bottom;
- horizontalCenter: parent.horizontalCenter;
- bottomMargin: 20
- }
- text: aPieChart.name
- }
-}
-//![0]
diff --git a/examples/declarative/extending/chapter1-basics/basics.py b/examples/declarative/extending/chapter1-basics/basics.py
deleted file mode 100644
index f76183705..000000000
--- a/examples/declarative/extending/chapter1-basics/basics.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter1-basics example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, Signal, QUrl
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import QmlElement
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "Charts"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class PieChart (QQuickPaintedItem):
-
- nameChanged = Signal()
-
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._name = u''
- self._color = QColor()
-
- def paint(self, painter):
- pen = QPen(self.color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- self._color = value
-
- @Property(str, notify=nameChanged)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject b/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject
deleted file mode 100644
index 869556bb8..000000000
--- a/examples/declarative/extending/chapter1-basics/chapter1-basics.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["basics.py", "app.qml"]
-}
diff --git a/examples/declarative/extending/chapter2-methods/app.qml b/examples/declarative/extending/chapter2-methods/app.qml
deleted file mode 100644
index d330f3b64..000000000
--- a/examples/declarative/extending/chapter2-methods/app.qml
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//![0]
-import Charts
-import QtQuick
-
-Item {
- width: 300; height: 200
-
- PieChart {
- id: aPieChart
- anchors.centerIn: parent
- width: 100; height: 100
- color: "red"
-
- onChartCleared: console.log("The chart has been cleared")
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: aPieChart.clearChart()
- }
-
- Text {
- anchors {
- bottom: parent.bottom;
- horizontalCenter: parent.horizontalCenter;
- bottomMargin: 20
- }
- text: "Click anywhere to clear the chart"
- }
-}
-//![0]
diff --git a/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject b/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject
deleted file mode 100644
index cdf33be7f..000000000
--- a/examples/declarative/extending/chapter2-methods/chapter2-methods.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["methods.py", "app.qml"]
-}
diff --git a/examples/declarative/extending/chapter2-methods/methods.py b/examples/declarative/extending/chapter2-methods/methods.py
deleted file mode 100644
index f8241db72..000000000
--- a/examples/declarative/extending/chapter2-methods/methods.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter2-methods example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, Signal, Slot, Qt, QUrl
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import QmlElement
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "Charts"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class PieChart(QQuickPaintedItem):
-
- chartCleared = Signal()
- nameChanged = Signal()
-
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._name = u''
- self._color = QColor()
-
- def paint(self, painter):
- pen = QPen(self.color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- self._color = value
-
- @Property(str, notify=nameChanged)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
- @Slot() # This should be something like @Invokable
- def clearChart(self):
- self.color = Qt.transparent
- self.update()
- self.chartCleared.emit()
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter3-bindings/app.qml b/examples/declarative/extending/chapter3-bindings/app.qml
deleted file mode 100644
index ee24a428a..000000000
--- a/examples/declarative/extending/chapter3-bindings/app.qml
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//![0]
-import Charts
-import QtQuick
-
-Item {
- width: 300; height: 200
-
- Row {
- anchors.centerIn: parent
- spacing: 20
-
- PieChart {
- id: chartA
- width: 100; height: 100
- color: "red"
- }
-
- PieChart {
- id: chartB
- width: 100; height: 100
- color: chartA.color
- }
- }
-
- MouseArea {
- anchors.fill: parent
- onClicked: { chartA.color = "blue" }
- }
-
- Text {
- anchors {
- bottom: parent.bottom;
- horizontalCenter: parent.horizontalCenter;
- bottomMargin: 20
- }
- text: "Click anywhere to change the chart color"
- }
-}
-//![0]
diff --git a/examples/declarative/extending/chapter3-bindings/bindings.py b/examples/declarative/extending/chapter3-bindings/bindings.py
deleted file mode 100644
index e50f08397..000000000
--- a/examples/declarative/extending/chapter3-bindings/bindings.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter3-bindings example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, Signal, Slot, QUrl, Qt
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import QmlElement
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "Charts"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class PieChart (QQuickPaintedItem):
-
- chartCleared = Signal()
- nameChanged = Signal()
- colorChanged = Signal()
-
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._name = u''
- self._color = QColor()
-
- def paint(self, painter):
- pen = QPen(self._color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
-
- @Property(QColor, notify=colorChanged)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- if value != self._color:
- self._color = value
- self.update()
- self.colorChanged.emit()
-
- @Property(str, notify=nameChanged)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
- @Slot() # This should be something like @Invokable
- def clearChart(self):
- self.color = Qt.transparent
- self.update()
- self.chartCleared.emit()
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject b/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject
deleted file mode 100644
index 6e21f86f9..000000000
--- a/examples/declarative/extending/chapter3-bindings/chapter3-bindings.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["app.qml", "bindings.py"]
-}
diff --git a/examples/declarative/extending/chapter4-customPropertyTypes/app.qml b/examples/declarative/extending/chapter4-customPropertyTypes/app.qml
deleted file mode 100644
index 954e6465c..000000000
--- a/examples/declarative/extending/chapter4-customPropertyTypes/app.qml
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//![0]
-import Charts
-import QtQuick
-
-Item {
- width: 300; height: 200
-
- PieChart {
- id: chart
- anchors.centerIn: parent
- width: 100; height: 100
-
- pieSlice: PieSlice {
- anchors.fill: parent
- color: "red"
- }
- }
-
- Component.onCompleted: console.log("The pie is colored " + chart.pieSlice.color)
-}
-//![0]
diff --git a/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject b/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject
deleted file mode 100644
index af1cfefb7..000000000
--- a/examples/declarative/extending/chapter4-customPropertyTypes/chapter4-customPropertyTypes.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["app.qml", "customPropertyTypes.py"]
-}
diff --git a/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py b/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py
deleted file mode 100644
index ee10f0894..000000000
--- a/examples/declarative/extending/chapter4-customPropertyTypes/customPropertyTypes.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter4-customPropertyTypes example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, QUrl
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import QmlElement
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView, QQuickItem
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "Charts"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class PieSlice (QQuickPaintedItem):
-
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._color = QColor()
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- self._color = value
-
- def paint(self, painter):
- pen = QPen(self._color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), 90 * 16, 290 * 16)
-
-
-@QmlElement
-class PieChart (QQuickItem):
- def __init__(self, parent=None):
- QQuickItem.__init__(self, parent)
- self._name = None
- self._pieSlice = None
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
- @Property(PieSlice)
- def pieSlice(self):
- return self._pieSlice
-
- @pieSlice.setter
- def pieSlice(self, value):
- self._pieSlice = value
- self._pieSlice.setParentItem(self)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter5-listproperties/app.qml b/examples/declarative/extending/chapter5-listproperties/app.qml
deleted file mode 100644
index edbf3e770..000000000
--- a/examples/declarative/extending/chapter5-listproperties/app.qml
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-//![0]
-import Charts
-import QtQuick
-
-Item {
- width: 300; height: 200
-
- PieChart {
- anchors.centerIn: parent
- width: 100; height: 100
-
- slices: [
- PieSlice {
- anchors.fill: parent
- color: "red"
- fromAngle: 0; angleSpan: 110
- },
- PieSlice {
- anchors.fill: parent
- color: "black"
- fromAngle: 110; angleSpan: 50
- },
- PieSlice {
- anchors.fill: parent
- color: "blue"
- fromAngle: 160; angleSpan: 100
- }
- ]
- }
-}
-//![0]
diff --git a/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject b/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject
deleted file mode 100644
index a3f89d575..000000000
--- a/examples/declarative/extending/chapter5-listproperties/chapter5-listproperties.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["app.qml", "listproperties.py"]
-}
diff --git a/examples/declarative/extending/chapter5-listproperties/listproperties.py b/examples/declarative/extending/chapter5-listproperties/listproperties.py
deleted file mode 100644
index 95a393fa3..000000000
--- a/examples/declarative/extending/chapter5-listproperties/listproperties.py
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/tutorials/extending-qml/chapter5-listproperties example from Qt v5.x"""
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import Property, QUrl
-from PySide6.QtGui import QGuiApplication, QPen, QPainter, QColor
-from PySide6.QtQml import QmlElement, ListProperty
-from PySide6.QtQuick import QQuickPaintedItem, QQuickView, QQuickItem
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "Charts"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class PieSlice (QQuickPaintedItem):
- def __init__(self, parent=None):
- QQuickPaintedItem.__init__(self, parent)
- self._color = QColor()
- self._fromAngle = 0
- self._angleSpan = 0
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, value):
- self._color = value
-
- @Property(int)
- def fromAngle(self):
- return self._angle
-
- @fromAngle.setter
- def fromAngle(self, value):
- self._fromAngle = value
-
- @Property(int)
- def angleSpan(self):
- return self._angleSpan
-
- @angleSpan.setter
- def angleSpan(self, value):
- self._angleSpan = value
-
- def paint(self, painter):
- pen = QPen(self._color, 2)
- painter.setPen(pen)
- painter.setRenderHints(QPainter.Antialiasing, True)
- painter.drawPie(self.boundingRect().adjusted(1, 1, -1, -1), self._fromAngle * 16, self._angleSpan * 16)
-
-
-@QmlElement
-class PieChart (QQuickItem):
- def __init__(self, parent=None):
- QQuickItem.__init__(self, parent)
- self._name = u''
- self._slices = []
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, value):
- self._name = value
-
- def appendSlice(self, _slice):
- _slice.setParentItem(self)
- self._slices.append(_slice)
-
- slices = ListProperty(PieSlice, appendSlice)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'app.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/extending/chapter6-plugins/Charts/piechart.py b/examples/declarative/extending/chapter6-plugins/Charts/piechart.py
deleted file mode 100644
index b721a7130..000000000
--- a/examples/declarative/extending/chapter6-plugins/Charts/piechart.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import Property
-from PySide6.QtQml import QmlElement, ListProperty
-from PySide6.QtQuick import QQuickItem
-
-from pieslice import PieSlice
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "Charts"
-QML_IMPORT_MAJOR_VERSION = 1
-
-@QmlElement
-class PieChart(QQuickItem):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._slices = []
- self._name = ''
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, name):
- self._name = name
-
- def slice(self, n):
- return self._slices[n]
-
- def sliceCount(self):
- return len(self._slices)
-
- def append_and_setparent(self, slice):
- self._slices.append(slice)
- slice.setParentItem(self)
-
- slices = ListProperty(PieSlice, append_and_setparent)
diff --git a/examples/declarative/extending/chapter6-plugins/Charts/pieslice.py b/examples/declarative/extending/chapter6-plugins/Charts/pieslice.py
deleted file mode 100644
index 7945eff12..000000000
--- a/examples/declarative/extending/chapter6-plugins/Charts/pieslice.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import Property, QRectF
-from PySide6.QtGui import QColor, QPainter, QPen
-from PySide6.QtQuick import QQuickPaintedItem
-from PySide6.QtQml import QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "Charts"
-QML_IMPORT_MAJOR_VERSION = 1
-
-@QmlElement
-class PieSlice(QQuickPaintedItem):
- def __init__(self, parent=None):
- super().__init__(parent)
-
- self._color = QColor()
- self._from_angle = 0
- self._angle_span = 0
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, color):
- self._color = QColor(color)
-
- @Property(int)
- def fromAngle(self):
- return self._from_angle
-
- @fromAngle.setter
- def fromAngle(self, fromAngle):
- self._from_angle = fromAngle
-
- @Property(int)
- def angleSpan(self):
- return self._angle_span
-
- @angleSpan.setter
- def angleSpan(self, angleSpan):
- self._angle_span = angleSpan
-
- def paint(self, painter):
- painter.setPen(QPen(self._color, 2))
- painter.setRenderHint(QPainter.RenderHint.Antialiasing, True)
-
- rect = QRectF(0, 0, self.width(), self.height()).adjusted(1, 1, -1, -1)
- painter.drawPie(rect, self._from_angle * 16, self._angle_span * 16)
diff --git a/examples/declarative/extending/chapter6-plugins/Charts/plugins.png b/examples/declarative/extending/chapter6-plugins/Charts/plugins.png
deleted file mode 100644
index 8992e89c0..000000000
--- a/examples/declarative/extending/chapter6-plugins/Charts/plugins.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/extending/chapter6-plugins/app.qml b/examples/declarative/extending/chapter6-plugins/app.qml
deleted file mode 100644
index 70761619f..000000000
--- a/examples/declarative/extending/chapter6-plugins/app.qml
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.0
-import Charts 1.0
-
-Item {
- width: 300; height: 200
-
- PieChart {
- anchors.centerIn: parent
- width: 100; height: 100
-
- slices: [
- PieSlice {
- anchors.fill: parent
- color: "red"
- fromAngle: 0; angleSpan: 110
- },
- PieSlice {
- anchors.fill: parent
- color: "black"
- fromAngle: 110; angleSpan: 50
- },
- PieSlice {
- anchors.fill: parent
- color: "blue"
- fromAngle: 160; angleSpan: 100
- }
- ]
- }
-}
diff --git a/examples/declarative/extending/chapter6-plugins/chapter6-plugins.pyproject b/examples/declarative/extending/chapter6-plugins/chapter6-plugins.pyproject
deleted file mode 100644
index cc684401f..000000000
--- a/examples/declarative/extending/chapter6-plugins/chapter6-plugins.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["app.qml", "Charts/piechart.py", "Charts/pieslice.py"]
-}
diff --git a/examples/declarative/extending/chapter6-plugins/doc/chapter6-plugins.rst b/examples/declarative/extending/chapter6-plugins/doc/chapter6-plugins.rst
deleted file mode 100644
index 10aba1e8f..000000000
--- a/examples/declarative/extending/chapter6-plugins/doc/chapter6-plugins.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-.. _qml-chapter6-plugins-example:
-
-Extending QML - Plugins Example
-===============================
-
-This example refers to the Python version of using a QML plugin in Python. The idea of plugins in
-Python is non-existent because Python modules are dynamically loaded anyway. We use this idea and
-our QML type registration decorators - QmlELement/QmlNamedElement - to register the QML modules as
-they are imported. The pyside6-qml tool does this for you by simply pointing to the .qml file.
-
-.. image:: plugins.png
- :width: 400
- :alt: Plugins Example
-
-
-Running the Example
--------------------
-
-.. code-block:: shell
-
- pyside6-pyqml examples/declarative/extending/chapter6-plugins/app.qml -I examples/declarative/extending/chapter6-plugins/Charts
diff --git a/examples/declarative/extending/chapter6-plugins/doc/plugins.png b/examples/declarative/extending/chapter6-plugins/doc/plugins.png
deleted file mode 100644
index 8992e89c0..000000000
--- a/examples/declarative/extending/chapter6-plugins/doc/plugins.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/objectlistmodel/doc/objectlistmodel.png b/examples/declarative/objectlistmodel/doc/objectlistmodel.png
deleted file mode 100644
index 416e08a85..000000000
--- a/examples/declarative/objectlistmodel/doc/objectlistmodel.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/objectlistmodel/doc/objectlistmodel.rst b/examples/declarative/objectlistmodel/doc/objectlistmodel.rst
deleted file mode 100644
index d71ee61df..000000000
--- a/examples/declarative/objectlistmodel/doc/objectlistmodel.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-Object List Model Example
-=========================
-
-A list of QObject values can also be used as a model.
-A list[QObject,] provides the properties of the objects in the list as roles.
-
-The following application creates a DataObject class with Property values
-that will be accessible as named roles when a list[DataObject,] is exposed to QML:
-
-.. image:: objectlistmodel.png
- :width: 400
- :alt: Object List Model Screenshot
diff --git a/examples/declarative/objectlistmodel/objectlistmodel.py b/examples/declarative/objectlistmodel/objectlistmodel.py
deleted file mode 100644
index 0843ae480..000000000
--- a/examples/declarative/objectlistmodel/objectlistmodel.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QUrl, Property, Signal
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-# This example illustrates exposing a list of QObjects as a model in QML
-
-class DataObject(QObject):
-
- nameChanged = Signal()
- colorChanged = Signal()
-
- def __init__(self, name, color, parent=None):
- super().__init__(parent)
- self._name = name
- self._color = color
-
- def name(self):
- return self._name
-
- def setName(self, name):
- if name != self._name:
- self._name = name
- nameChanged.emit()
-
- def color(self):
- return self._color
-
- def setColor(self, color):
- if color != self._color:
- self._color = color
- colorChanged.emit()
-
-
- name = Property(str, name, setName, notify=nameChanged)
- color = Property(str, color, setColor, notify=colorChanged)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- dataList = [DataObject("Item 1", "red"),
- DataObject("Item 2", "green"),
- DataObject("Item 3", "blue"),
- DataObject("Item 4", "yellow")]
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- view.setInitialProperties({"model": dataList})
-
- qml_file = Path(__file__).parent / "view.qml"
- view.setSource(QUrl.fromLocalFile(qml_file))
- view.show()
-
- r = app.exec()
- del view
- sys.exit(r)
diff --git a/examples/declarative/objectlistmodel/objectlistmodel.pyproject b/examples/declarative/objectlistmodel/objectlistmodel.pyproject
deleted file mode 100644
index 556e399f4..000000000
--- a/examples/declarative/objectlistmodel/objectlistmodel.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["objectlistmodel.py", "view.qml"]
-}
diff --git a/examples/declarative/objectlistmodel/view.qml b/examples/declarative/objectlistmodel/view.qml
deleted file mode 100644
index b7cf68a9b..000000000
--- a/examples/declarative/objectlistmodel/view.qml
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-
-ListView {
- width: 100; height: 100
-
- delegate: Rectangle {
- color: model.modelData.color
- height: 25
- width: 100
- Text { text: model.modelData.name }
- }
-}
diff --git a/examples/declarative/openglunderqml/doc/openglunderqml.rst b/examples/declarative/openglunderqml/doc/openglunderqml.rst
deleted file mode 100644
index 6a89a99d9..000000000
--- a/examples/declarative/openglunderqml/doc/openglunderqml.rst
+++ /dev/null
@@ -1,21 +0,0 @@
-OpenGL under QML Squircle
-=========================
-
-The OpenGL under QML example shows how an application can make use of the
-QQuickWindow::beforeRendering() signal to draw custom OpenGL content under a Qt
-Quick scene. This signal is emitted at the start of every frame, before the
-scene graph starts its rendering, thus any OpenGL draw calls that are made as
-a response to this signal, will stack under the Qt Quick items.
-
-As an alternative, applications that wish to render OpenGL content on top of
-the Qt Quick scene, can do so by connecting to the
-QQuickWindow::afterRendering() signal.
-
-In this example, we will also see how it is possible to have values that are
-exposed to QML which affect the OpenGL rendering. We animate the threshold
-value using a NumberAnimation in the QML file and this value is used by the
-OpenGL shader program that draws the squircles.
-
-.. image:: squircle.png
- :width: 400
- :alt: Squircle Screenshot
diff --git a/examples/declarative/openglunderqml/doc/squircle.png b/examples/declarative/openglunderqml/doc/squircle.png
deleted file mode 100644
index c099a6b7e..000000000
--- a/examples/declarative/openglunderqml/doc/squircle.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/openglunderqml/main.py b/examples/declarative/openglunderqml/main.py
deleted file mode 100644
index a79d1bed8..000000000
--- a/examples/declarative/openglunderqml/main.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import sys
-from pathlib import Path
-
-from PySide6.QtCore import QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView, QQuickWindow, QSGRendererInterface
-
-from squircle import Squircle
-
-if __name__ == "__main__":
- app = QGuiApplication(sys.argv)
-
- QQuickWindow.setGraphicsApi(QSGRendererInterface.OpenGL)
-
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
- qml_file = Path(__file__).parent / "main.qml"
- view.setSource(QUrl.fromLocalFile(qml_file))
-
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
-
- sys.exit(app.exec())
diff --git a/examples/declarative/openglunderqml/main.qml b/examples/declarative/openglunderqml/main.qml
deleted file mode 100644
index 73bfa3262..000000000
--- a/examples/declarative/openglunderqml/main.qml
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import OpenGLUnderQML
-
-Item {
-
- width: 320
- height: 480
-
- Squircle {
- SequentialAnimation on t {
- NumberAnimation { to: 1; duration: 2500; easing.type: Easing.InQuad }
- NumberAnimation { to: 0; duration: 2500; easing.type: Easing.OutQuad }
- loops: Animation.Infinite
- running: true
- }
- }
- Rectangle {
- color: Qt.rgba(1, 1, 1, 0.7)
- radius: 10
- border.width: 1
- border.color: "white"
- anchors.fill: label
- anchors.margins: -10
- }
-
- Text {
- id: label
- color: "black"
- wrapMode: Text.WordWrap
- text: "The background here is a squircle rendered with raw OpenGL using the 'beforeRender()' signal in QQuickWindow. This text label and its border is rendered using QML"
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.bottom: parent.bottom
- anchors.margins: 20
- }
-}
diff --git a/examples/declarative/openglunderqml/openglunderqml.pyproject b/examples/declarative/openglunderqml/openglunderqml.pyproject
deleted file mode 100644
index e7cfbc570..000000000
--- a/examples/declarative/openglunderqml/openglunderqml.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": [ "main.py", "main.qml", "squircle.py", "squirclerenderer.py"]
-}
diff --git a/examples/declarative/openglunderqml/squircle.py b/examples/declarative/openglunderqml/squircle.py
deleted file mode 100644
index d2900198b..000000000
--- a/examples/declarative/openglunderqml/squircle.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import Property, QRunnable, Qt, Signal, Slot
-from PySide6.QtQml import QmlElement
-from PySide6.QtQuick import QQuickItem, QQuickWindow
-
-from squirclerenderer import SquircleRenderer
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "OpenGLUnderQML"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-class CleanupJob(QRunnable):
- def __init__(self, renderer):
- super().__init__()
- self._renderer = renderer
-
- def run(self):
- del self._renderer
-
-
-@QmlElement
-class Squircle(QQuickItem):
-
- tChanged = Signal()
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._t = 0.0
- self._renderer = None
- self.windowChanged.connect(self.handleWindowChanged)
-
- def t(self):
- return self._t
-
- def setT(self, value):
- if self._t == value:
- return
- self._t = value
- self.tChanged.emit()
- if self.window():
- self.window().update()
-
- @Slot(QQuickWindow)
- def handleWindowChanged(self, win):
- if win:
- win.beforeSynchronizing.connect(self.sync, type=Qt.DirectConnection)
- win.sceneGraphInvalidated.connect(self.cleanup, type=Qt.DirectConnection)
- win.setColor(Qt.black)
- self.sync()
-
- @Slot()
- def cleanup(self):
- del self._renderer
- self._renderer = None
-
- @Slot()
- def sync(self):
- window = self.window()
- if not self._renderer:
- self._renderer = SquircleRenderer()
- window.beforeRendering.connect(self._renderer.init, Qt.DirectConnection)
- window.beforeRenderPassRecording.connect(
- self._renderer.paint, Qt.DirectConnection
- )
- self._renderer.setViewportSize(window.size() * window.devicePixelRatio())
- self._renderer.setT(self._t)
- self._renderer.setWindow(window)
-
- def releaseResources(self):
- self.window().scheduleRenderJob(
- CleanupJob(self._renderer), QQuickWindow.BeforeSynchronizingStage
- )
- self._renderer = None
-
- t = Property(float, t, setT, notify=tChanged)
diff --git a/examples/declarative/openglunderqml/squirclerenderer.py b/examples/declarative/openglunderqml/squirclerenderer.py
deleted file mode 100644
index 5d1759251..000000000
--- a/examples/declarative/openglunderqml/squirclerenderer.py
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from textwrap import dedent
-
-import numpy as np
-from OpenGL.GL import (GL_ARRAY_BUFFER, GL_BLEND, GL_DEPTH_TEST, GL_FLOAT,
- GL_ONE, GL_SRC_ALPHA, GL_TRIANGLE_STRIP)
-from PySide6.QtCore import QSize, Slot
-from PySide6.QtGui import QOpenGLFunctions
-from PySide6.QtOpenGL import (QOpenGLShader, QOpenGLShaderProgram,
- QOpenGLVersionProfile)
-from PySide6.QtQuick import QQuickWindow, QSGRendererInterface
-
-VERTEX_SHADER = dedent(
- """\
- attribute highp vec4 vertices;
- varying highp vec2 coords;
- void main() {
- gl_Position = vertices;
- coords = vertices.xy;
- }
- """
-)
-FRAGMENT_SHADER = dedent(
- """\
- uniform lowp float t;
- varying highp vec2 coords;
- void main() {
- lowp float i = 1. - (pow(abs(coords.x), 4.) + pow(abs(coords.y), 4.));
- i = smoothstep(t - 0.8, t + 0.8, i);
- i = floor(i * 20.) / 20.;
- gl_FragColor = vec4(coords * .5 + .5, i, i);
- }
- """
-)
-
-
-class SquircleRenderer(QOpenGLFunctions):
- def __init__(self):
- QOpenGLFunctions.__init__(self)
- self._viewport_size = QSize()
- self._t = 0.0
- self._program = None
- self._window = QQuickWindow()
-
- def setT(self, t):
- self._t = t
-
- def setViewportSize(self, size):
- self._viewport_size = size
-
- def setWindow(self, window):
- self._window = window
-
- @Slot()
- def init(self):
- if not self._program:
- rif = self._window.rendererInterface()
- assert (rif.graphicsApi() == QSGRendererInterface.OpenGL)
- self.initializeOpenGLFunctions()
- self._program = QOpenGLShaderProgram()
- self._program.addCacheableShaderFromSourceCode(QOpenGLShader.Vertex, VERTEX_SHADER)
- self._program.addCacheableShaderFromSourceCode(QOpenGLShader.Fragment, FRAGMENT_SHADER)
- self._program.bindAttributeLocation("vertices", 0)
- self._program.link()
-
- @Slot()
- def paint(self):
- # Play nice with the RHI. Not strictly needed when the scenegraph uses
- # OpenGL directly.
- self._window.beginExternalCommands()
-
- self._program.bind()
-
- self._program.enableAttributeArray(0)
-
- values = np.array([-1, -1, 1, -1, -1, 1, 1, 1], dtype="single")
-
- # This example relies on (deprecated) client-side pointers for the vertex
- # input. Therefore, we have to make sure no vertex buffer is bound.
- self.glBindBuffer(GL_ARRAY_BUFFER, 0)
-
- self._program.setAttributeArray(0, GL_FLOAT, values, 2)
- self._program.setUniformValue1f("t", self._t)
-
- self.glViewport(0, 0, self._viewport_size.width(), self._viewport_size.height())
-
- self.glDisable(GL_DEPTH_TEST)
-
- self.glEnable(GL_BLEND)
- self.glBlendFunc(GL_SRC_ALPHA, GL_ONE)
-
- self.glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)
-
- self._program.disableAttributeArray(0)
- self._program.release()
-
- self._window.endExternalCommands()
diff --git a/examples/declarative/referenceexamples/adding/adding.pyproject b/examples/declarative/referenceexamples/adding/adding.pyproject
deleted file mode 100644
index 46df4b253..000000000
--- a/examples/declarative/referenceexamples/adding/adding.pyproject
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "files": ["example.qml",
- "main.py",
- "person.py"]
-}
diff --git a/examples/declarative/referenceexamples/adding/doc/adding.rst b/examples/declarative/referenceexamples/adding/doc/adding.rst
deleted file mode 100644
index 55f6105b7..000000000
--- a/examples/declarative/referenceexamples/adding/doc/adding.rst
+++ /dev/null
@@ -1,67 +0,0 @@
-.. _qml-adding-types-example:
-
-Extending QML - Adding Types Example
-====================================
-
-The Adding Types Example shows how to add a new object type, ``Person``, to QML.
-The ``Person`` type can be used from QML like this:
-
-.. code-block:: javascript
-
- import examples.adding.people
-
- Person {
- name: "Bob Jones"
- shoe_size: 12
- }
-
-Declare the Person Class
-------------------------
-
-All QML types map to C++ types. Here we declare a basic C++ Person class
-with the two properties we want accessible on the QML type - name and shoeSize.
-Although in this example we use the same name for the C++ class as the QML
-type, the C++ class can be named differently, or appear in a namespace.
-
-The Person class implementation is quite basic. The property accessors simply
-return members of the object instance.
-
-.. code-block:: python
-
- from PySide6.QtCore import QObject, Property
- from PySide6.QtQml import QmlElement
-
- # To be used on the @QmlElement decorator
- # (QML_IMPORT_MINOR_VERSION is optional)
- QML_IMPORT_NAME = "examples.adding.people"
- QML_IMPORT_MAJOR_VERSION = 1
-
-
- @QmlElement
- class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(int)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- self._shoe_size = s
-
-Running the Example
--------------------
-
-The main.py file in the example includes a simple shell application that
-loads and runs the QML snippet shown at the beginning of this page.
diff --git a/examples/declarative/referenceexamples/adding/example.qml b/examples/declarative/referenceexamples/adding/example.qml
deleted file mode 100644
index 42d47dea9..000000000
--- a/examples/declarative/referenceexamples/adding/example.qml
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import examples.adding.people
-
-Person {
- name: "Bob Jones"
- shoe_size: 12
-}
diff --git a/examples/declarative/referenceexamples/adding/main.py b/examples/declarative/referenceexamples/adding/main.py
deleted file mode 100644
index f10b77bc1..000000000
--- a/examples/declarative/referenceexamples/adding/main.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/adding example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine
-
-from person import Person
-
-
-if __name__ == '__main__':
- app = QCoreApplication(sys.argv)
-
- qml_file = Path(__file__).parent / "example.qml"
- url = QUrl.fromLocalFile(qml_file)
- engine = QQmlEngine()
- component = QQmlComponent(engine, url)
-
- person = component.create()
- if person:
- print(f"The person's name is {person.name}")
- print(f"They wear a {person.shoe_size} sized shoe")
- else:
- print(component.errors())
- del engine
- sys.exit(0)
diff --git a/examples/declarative/referenceexamples/adding/person.py b/examples/declarative/referenceexamples/adding/person.py
deleted file mode 100644
index 0c2b5b124..000000000
--- a/examples/declarative/referenceexamples/adding/person.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.adding.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(int)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- self._shoe_size = s
-
diff --git a/examples/declarative/referenceexamples/attached/attached.pyproject b/examples/declarative/referenceexamples/attached/attached.pyproject
deleted file mode 100644
index 3c01c40c2..000000000
--- a/examples/declarative/referenceexamples/attached/attached.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "birthdayparty.py", "person.py", "example.qml"]
-}
diff --git a/examples/declarative/referenceexamples/attached/birthdayparty.py b/examples/declarative/referenceexamples/attached/birthdayparty.py
deleted file mode 100644
index d83236e26..000000000
--- a/examples/declarative/referenceexamples/attached/birthdayparty.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QDate, QObject, ClassInfo, Property
-from PySide6.QtQml import QmlAnonymous, QmlAttached, QmlElement, ListProperty
-
-from person import Person
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.default.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlAnonymous
-class BirthdayPartyAttached(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._rsvp = QDate()
-
- @Property(QDate)
- def rsvp(self):
- return self._rsvp
-
- @rsvp.setter
- def rsvp(self, d):
- self._rsvp = d
-
-
-@QmlElement
-@ClassInfo(DefaultProperty="guests")
-@QmlAttached(BirthdayPartyAttached)
-class BirthdayParty(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- @Property(Person)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- self._host = h
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- @staticmethod
- def qmlAttachedProperties(self, o):
- return BirthdayPartyAttached(o)
-
- guests = ListProperty(Person, appendGuest)
diff --git a/examples/declarative/referenceexamples/attached/doc/attached.rst b/examples/declarative/referenceexamples/attached/doc/attached.rst
deleted file mode 100644
index 95fb5c43c..000000000
--- a/examples/declarative/referenceexamples/attached/doc/attached.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-.. _qml-attached-properties-example:
-
-Extending QML - Attached Properties Example
-===========================================
-
-This example builds on the :ref:`qml-default-property-example`,
-:ref:`qml-inheritance-and-coercion-example`,
-:ref:`qml-object-and-list-property-types-example`
-and the :ref:`qml-adding-types-example`.
-
-The Attached Properties Example example shows how to inject
-properties to child objects.
diff --git a/examples/declarative/referenceexamples/attached/example.qml b/examples/declarative/referenceexamples/attached/example.qml
deleted file mode 100644
index f038b3ece..000000000
--- a/examples/declarative/referenceexamples/attached/example.qml
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import examples.default.people
-
-BirthdayParty {
- Boy {
- name: "Robert Campbell"
- BirthdayParty.rsvp: "2009-07-01"
- }
-
- Boy {
- name: "Leo Hodges"
- shoe_size: 10
- BirthdayParty.rsvp: "2009-07-06"
- }
-
- host: Boy {
- name: "Jack Smith"
- shoe_size: 8
- }
-}
diff --git a/examples/declarative/referenceexamples/attached/main.py b/examples/declarative/referenceexamples/attached/main.py
deleted file mode 100644
index d7483559f..000000000
--- a/examples/declarative/referenceexamples/attached/main.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/attached example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine, qmlAttachedPropertiesObject
-
-from person import Boy, Girl
-from birthdayparty import BirthdayParty
-
-
-app = QCoreApplication(sys.argv)
-qml_file = Path(__file__).parent / "example.qml"
-url = QUrl.fromLocalFile(qml_file)
-engine = QQmlEngine()
-component = QQmlComponent(engine, url)
-party = component.create()
-if not party:
- print(component.errors())
- del engine
- sys.exit(-1)
-host = party.host
-print(f"{host.name} is having a birthday!")
-if isinstance(host, Boy):
- print("He is inviting:")
-else:
- print("She is inviting:")
-for g in range(party.guestCount()):
- guest = party.guest(g)
- name = guest.name
-
- rsvp_date = None
- attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False)
- if attached:
- rsvp_date = attached.rsvp.toString()
- if rsvp_date:
- print(f" {name} RSVP date: {rsvp_date}")
- else:
- print(f" {name} RSVP date: Hasn't RSVP'd")
-
-del engine
-sys.exit(0)
diff --git a/examples/declarative/referenceexamples/attached/person.py b/examples/declarative/referenceexamples/attached/person.py
deleted file mode 100644
index 7164bd645..000000000
--- a/examples/declarative/referenceexamples/attached/person.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlAnonymous, QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.default.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlAnonymous
-class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(int)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- self._shoe_size = s
-
-
-@QmlElement
-class Boy(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
-
-
-@QmlElement
-class Girl(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
diff --git a/examples/declarative/referenceexamples/binding/binding.pyproject b/examples/declarative/referenceexamples/binding/binding.pyproject
deleted file mode 100644
index a782d5c8a..000000000
--- a/examples/declarative/referenceexamples/binding/binding.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "birthdayparty.py", "happybirthdaysong.py", "person.py", "example.qml"]
-}
diff --git a/examples/declarative/referenceexamples/binding/birthdayparty.py b/examples/declarative/referenceexamples/binding/birthdayparty.py
deleted file mode 100644
index 78f0314b4..000000000
--- a/examples/declarative/referenceexamples/binding/birthdayparty.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QDate, QObject, ClassInfo, Property, QTime, Signal
-from PySide6.QtQml import QmlAnonymous, QmlAttached, QmlElement, ListProperty
-
-from person import Person
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.binding.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlAnonymous
-class BirthdayPartyAttached(QObject):
-
- rsvp_changed = Signal()
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._rsvp = QDate()
-
- @Property(QDate, notify=rsvp_changed)
- def rsvp(self):
- return self._rsvp
-
- @rsvp.setter
- def rsvp(self, d):
- if self._rsvp != d:
- self._rsvp = d
- self.rsvp_changed.emit()
-
-
-@QmlElement
-@ClassInfo(DefaultProperty="guests")
-@QmlAttached(BirthdayPartyAttached)
-class BirthdayParty(QObject):
-
- partyStarted = Signal(QTime)
- host_changed = Signal()
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- def startParty(self):
- self.partyStarted.emit(QTime.currentTime())
-
- @Property(Person, notify=host_changed)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- if self._host != h:
- self._host = h
- self.host_changed.emit()
-
- @Property(str)
- def announcement(self):
- return ""
-
- @announcement.setter
- def announcement(self, a):
- print(a)
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- @staticmethod
- def qmlAttachedProperties(self, o):
- return BirthdayPartyAttached(o)
-
- guests = ListProperty(Person, appendGuest)
diff --git a/examples/declarative/referenceexamples/binding/doc/binding.rst b/examples/declarative/referenceexamples/binding/doc/binding.rst
deleted file mode 100644
index 5c0ed21be..000000000
--- a/examples/declarative/referenceexamples/binding/doc/binding.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-.. _qml-binding-example:
-
-Extending QML - Binding Example
-===============================
-
-This example builds on the :ref:`qml-adding-types-example`,
-the :ref:`qml-attached-properties-example`,
-the :ref:`qml-default-property-example`,
-the :ref:`qml-inheritance-and-coercion-example`
-the :ref:`qml-object-and-list-property-types-example`
-and the :ref:`qml-valuesource-example`.
-
-Running the Example
--------------------
-
-The ``main.py`` file in the example includes a simple shell application that
-loads and runs the QML snippet shown below.
diff --git a/examples/declarative/referenceexamples/binding/example.qml b/examples/declarative/referenceexamples/binding/example.qml
deleted file mode 100644
index ca0958810..000000000
--- a/examples/declarative/referenceexamples/binding/example.qml
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import examples.binding.people
-
-BirthdayParty {
- id: theParty
-
- HappyBirthdaySong on announcement { name: theParty.host.name }
-
- onPartyStarted: (time) => { console.log("This party started rockin' at " + time); }
-
- host: Boy {
- name: "Bob Jones"
- shoe_size: 12
- }
-
- Boy {
- name: "Leo Hodges"
- BirthdayParty.rsvp: "2009-07-06"
- }
- Boy {
- name: "Jack Smith"
- }
- Girl {
- name: "Anne Brown"
- BirthdayParty.rsvp: "2009-07-01"
- }
-}
diff --git a/examples/declarative/referenceexamples/binding/happybirthdaysong.py b/examples/declarative/referenceexamples/binding/happybirthdaysong.py
deleted file mode 100644
index cfe34eb82..000000000
--- a/examples/declarative/referenceexamples/binding/happybirthdaysong.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, QTimer, Property, Slot
-from PySide6.QtQml import QmlElement, QPyQmlPropertyValueSource
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.binding.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class HappyBirthdaySong(QPyQmlPropertyValueSource):
-
- def __init__(self, parent=None):
- super().__init__(parent)
-
- self.m_target = None
- self.m_name = ""
- self.m_line = -1
- self.m_lyrics = []
-
- self.m_timer = QTimer(self)
- self.m_timer.timeout.connect(self.advance)
- self.m_timer.start(1000)
-
- def setTarget(self, property):
- self.m_target = property
-
- @Property(str)
- def name(self):
- return self.m_name
-
- @name.setter
- def name(self, n):
- self.m_name = n
- self.m_lyrics = ["Happy birthday to you,",
- "Happy birthday to you,",
- f"Happy birthday dear {self.m_name},",
- "Happy birthday to you!",
- ""]
-
- @Slot()
- def advance(self):
- self.m_line = (self.m_line + 1) % len(self.m_lyrics)
- self.m_target.write(self.m_lyrics[self.m_line])
diff --git a/examples/declarative/referenceexamples/binding/main.py b/examples/declarative/referenceexamples/binding/main.py
deleted file mode 100644
index dcbd547ad..000000000
--- a/examples/declarative/referenceexamples/binding/main.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/binding example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine, qmlAttachedPropertiesObject
-
-from person import Boy, Girl
-from birthdayparty import BirthdayParty
-from happybirthdaysong import HappyBirthdaySong
-
-
-if __name__ == "__main__":
- app = QCoreApplication(sys.argv)
- qml_file = Path(__file__).parent / "example.qml"
- url = QUrl.fromLocalFile(qml_file)
- engine = QQmlEngine()
- component = QQmlComponent(engine, url)
- party = component.create()
- if not party:
- print(component.errors())
- del engine
- sys.exit(-1)
- host = party.host
- print(f"{host.name} is having a birthday!")
- if isinstance(host, Boy):
- print("He is inviting:")
- else:
- print("She is inviting:")
- for g in range(party.guestCount()):
- guest = party.guest(g)
- name = guest.name
-
- rsvp_date = None
- attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False)
- if attached:
- rsvp_date = attached.rsvp.toString()
- if rsvp_date:
- print(f" {name} RSVP date: {rsvp_date}")
- else:
- print(f" {name} RSVP date: Hasn't RSVP'd")
-
- party.startParty()
-
- r = app.exec()
-
- del engine
- sys.exit(r)
diff --git a/examples/declarative/referenceexamples/binding/person.py b/examples/declarative/referenceexamples/binding/person.py
deleted file mode 100644
index 9e7d799e1..000000000
--- a/examples/declarative/referenceexamples/binding/person.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property, Signal
-from PySide6.QtQml import QmlAnonymous, QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.binding.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlAnonymous
-class Person(QObject):
- name_changed = Signal()
- shoe_size_changed = Signal()
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str, notify=name_changed)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- if self._name != n:
- self._name = n
- self.name_changed.emit()
-
- @Property(int, notify=shoe_size_changed)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- if self._shoe_size != s:
- self._shoe_size = s
- self.shoe_size_changed.emit()
-
-
-@QmlElement
-class Boy(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
-
-
-@QmlElement
-class Girl(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
diff --git a/examples/declarative/referenceexamples/coercion/birthdayparty.py b/examples/declarative/referenceexamples/coercion/birthdayparty.py
deleted file mode 100644
index f6ad1ac35..000000000
--- a/examples/declarative/referenceexamples/coercion/birthdayparty.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlElement, ListProperty
-
-from person import Person
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.coercion.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class BirthdayParty(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- @Property(Person)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- self._host = h
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- guests = ListProperty(Person, appendGuest)
diff --git a/examples/declarative/referenceexamples/coercion/coercion.pyproject b/examples/declarative/referenceexamples/coercion/coercion.pyproject
deleted file mode 100644
index 3c01c40c2..000000000
--- a/examples/declarative/referenceexamples/coercion/coercion.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "birthdayparty.py", "person.py", "example.qml"]
-}
diff --git a/examples/declarative/referenceexamples/coercion/doc/coercion.rst b/examples/declarative/referenceexamples/coercion/doc/coercion.rst
deleted file mode 100644
index 2ccdaeb4f..000000000
--- a/examples/declarative/referenceexamples/coercion/doc/coercion.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-.. _qml-inheritance-and-coercion-example:
-
-Extending QML - Inheritance and Coercion Example
-================================================
-
-This example builds on the :ref:`qml-adding-types-example` and the
-:ref:`qml-object-and-list-property-types-example` .
-
-The Inheritance and Coercion Example shows how to use base classes to assign
-types of more than one type to a property. It specializes the Person type
-developed in the previous examples into two types - a ``Boy`` and a ``Girl``.
-
-Declare Boy and Girl
---------------------
-
-The Person class remains unaltered in this example and the Boy and Girl C++
-classes are trivial extensions of it. The types and their QML name are
-registered with the QML engine.
-
-As an example, the inheritance used here is a little contrived, but in real
-applications it is likely that the two extensions would add additional
-properties or modify the Person classes behavior.
-
-Running the Example
--------------------
-
-The BirthdayParty type has not changed since the previous example. The
-celebrant and guests property still use the People type.
-
-However, as all three types, Person, Boy and Girl, have been registered with the
-QML system, on assignment QML automatically (and type-safely) converts the Boy
-and Girl objects into a Person.
-
-The main.py file in the example includes a simple shell application that
-loads and runs the QML snippet shown below.
diff --git a/examples/declarative/referenceexamples/coercion/example.qml b/examples/declarative/referenceexamples/coercion/example.qml
deleted file mode 100644
index c47678483..000000000
--- a/examples/declarative/referenceexamples/coercion/example.qml
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import examples.coercion.people
-
-BirthdayParty {
- host: Boy {
- name: "Bob Jones"
- shoe_size: 12
- }
- guests: [
- Boy { name: "Leo Hodges" },
- Boy { name: "Jack Smith" },
- Girl { name: "Anne Brown" }
- ]
-}
diff --git a/examples/declarative/referenceexamples/coercion/main.py b/examples/declarative/referenceexamples/coercion/main.py
deleted file mode 100644
index 9f49bc1da..000000000
--- a/examples/declarative/referenceexamples/coercion/main.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/coercion example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine
-
-from person import Boy, Girl
-from birthdayparty import BirthdayParty
-
-
-app = QCoreApplication(sys.argv)
-qml_file = Path(__file__).parent / "example.qml"
-url = QUrl.fromLocalFile(qml_file)
-engine = QQmlEngine()
-component = QQmlComponent(engine, url)
-party = component.create()
-if not party:
- print(component.errors())
- del engine
- sys.exit(-1)
-host = party.host
-print(f"{host.name} is having a birthday!")
-if isinstance(host, Boy):
- print("He is inviting:")
-else:
- print("She is inviting:")
-for g in range(party.guestCount()):
- name = party.guest(g).name
- print(f" {name}")
-del engine
-sys.exit(0)
diff --git a/examples/declarative/referenceexamples/coercion/person.py b/examples/declarative/referenceexamples/coercion/person.py
deleted file mode 100644
index 69056014c..000000000
--- a/examples/declarative/referenceexamples/coercion/person.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlElement, QmlUncreatable
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.coercion.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-@QmlUncreatable("Person is an abstract base class.")
-class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(int)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- self._shoe_size = s
-
-
-@QmlElement
-class Boy(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
-
-
-@QmlElement
-class Girl(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
diff --git a/examples/declarative/referenceexamples/default/birthdayparty.py b/examples/declarative/referenceexamples/default/birthdayparty.py
deleted file mode 100644
index 3c13ca6cf..000000000
--- a/examples/declarative/referenceexamples/default/birthdayparty.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, ClassInfo, Property
-from PySide6.QtQml import QmlElement, ListProperty
-
-from person import Person
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.default.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-@ClassInfo(DefaultProperty="guests")
-class BirthdayParty(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- @Property(Person)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- self._host = h
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- guests = ListProperty(Person, appendGuest)
diff --git a/examples/declarative/referenceexamples/default/default.pyproject b/examples/declarative/referenceexamples/default/default.pyproject
deleted file mode 100644
index 3c01c40c2..000000000
--- a/examples/declarative/referenceexamples/default/default.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "birthdayparty.py", "person.py", "example.qml"]
-}
diff --git a/examples/declarative/referenceexamples/default/doc/default.rst b/examples/declarative/referenceexamples/default/doc/default.rst
deleted file mode 100644
index 1b28519a7..000000000
--- a/examples/declarative/referenceexamples/default/doc/default.rst
+++ /dev/null
@@ -1,30 +0,0 @@
-.. _qml-default-property-example:
-
-Extending QML - Default Property Example
-========================================
-
-This example builds on the :ref:`qml-adding-types-example`,
-the :ref:`qml-object-and-list-property-types-example` and
-the :ref:`qml-inheritance-and-coercion-example`.
-
-The Default Property Example is a minor modification of the
-:ref:`qml-inheritance-and-coercion-example` that simplifies the
-specification of a BirthdayParty through the use of a default property.
-
-Declaring the BirthdayParty Class
----------------------------------
-
-The only difference between this example and the last, is the addition of a
-``DefaultProperty`` class info annotation.
-
-The default property specifies the property to assign to whenever an explicit
-property is not specified, in the case of the BirthdayParty type the guest
-property. It is purely a syntactic simplification, the behavior is identical
-to specifying the property by name, but it can add a more natural feel in many
-situations. The default property must be either an object or list property.
-
-Running the Example
--------------------
-
-The main.py file in the example includes a simple shell application that
-loads and runs the QML snippet shown below.
diff --git a/examples/declarative/referenceexamples/default/example.qml b/examples/declarative/referenceexamples/default/example.qml
deleted file mode 100644
index 435be7860..000000000
--- a/examples/declarative/referenceexamples/default/example.qml
+++ /dev/null
@@ -1,15 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import examples.default.people
-
-BirthdayParty {
- host: Boy {
- name: "Bob Jones"
- shoe_size: 12
- }
-
- Boy { name: "Leo Hodges" }
- Boy { name: "Jack Smith" }
- Girl { name: "Anne Brown" }
-}
diff --git a/examples/declarative/referenceexamples/default/main.py b/examples/declarative/referenceexamples/default/main.py
deleted file mode 100644
index a4ce2f08a..000000000
--- a/examples/declarative/referenceexamples/default/main.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/default example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine
-
-from person import Boy, Girl
-from birthdayparty import BirthdayParty
-
-
-app = QCoreApplication(sys.argv)
-qml_file = Path(__file__).parent / "example.qml"
-url = QUrl.fromLocalFile(qml_file)
-engine = QQmlEngine()
-component = QQmlComponent(engine, url)
-party = component.create()
-if not party:
- print(component.errors())
- del engine
- sys.exit(-1)
-host = party.host
-print(f"{host.name} is having a birthday!")
-if isinstance(host, Boy):
- print("He is inviting:")
-else:
- print("She is inviting:")
-for g in range(party.guestCount()):
- name = party.guest(g).name
- print(f" {name}")
-del engine
-sys.exit(0)
diff --git a/examples/declarative/referenceexamples/default/person.py b/examples/declarative/referenceexamples/default/person.py
deleted file mode 100644
index 7164bd645..000000000
--- a/examples/declarative/referenceexamples/default/person.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlAnonymous, QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.default.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlAnonymous
-class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(int)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- self._shoe_size = s
-
-
-@QmlElement
-class Boy(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
-
-
-@QmlElement
-class Girl(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
diff --git a/examples/declarative/referenceexamples/extended/doc/extended.rst b/examples/declarative/referenceexamples/extended/doc/extended.rst
deleted file mode 100644
index 745960535..000000000
--- a/examples/declarative/referenceexamples/extended/doc/extended.rst
+++ /dev/null
@@ -1,41 +0,0 @@
-.. _qml-extension-objects-example:
-
-Extending QML - Extension Objects Example
-=========================================
-
-This example builds on the the :ref:`qml-adding-types-example`.
-
-Shows how to use QmlExtended decorator to provide an extension object to a
-QLineEdit without modifying or subclassing it.
-
-Firstly, the LineEditExtension class is registered with the QML system as an
-extension of QLineEdit. We declare a foreign type to do this as we cannot
-modify Qt's internal QLineEdit class.
-
-.. code-block:: python
-
- @QmlNamedElement("QLineEdit")
- @QmlExtended(LineEditExtension)
- @QmlForeign(QLineEdit)
- class LineEditForeign(QObject):
-
-
-Note the usage of ``QmlNamedElement()`` instead of ``QmlElement()``.
-``QmlElement()`` uses the name of the containing type by default,
-``LineEditExtension`` in this case. As the class being an extension class is
-an implementation detail, we choose the more natural name ``QLineEdit``
-instead.
-
-The QML engine then instantiates a QLineEdit.
-
-In QML, a property is set on the line edit that only exists in the
-``LineEditExtension`` class:
-
-.. code-block:: javascript
-
- QLineEdit {
- left_margin: 20
- }
-
-The extension type performs calls on the ``QLineEdit`` that otherwise will not
-be accessible to the QML engine.
diff --git a/examples/declarative/referenceexamples/extended/example.qml b/examples/declarative/referenceexamples/extended/example.qml
deleted file mode 100644
index e4af3bec5..000000000
--- a/examples/declarative/referenceexamples/extended/example.qml
+++ /dev/null
@@ -1,8 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import examples.extend 1.0
-
-QLineEdit {
- left_margin: 20
-}
diff --git a/examples/declarative/referenceexamples/extended/extended.pyproject b/examples/declarative/referenceexamples/extended/extended.pyproject
deleted file mode 100644
index 127a3a76a..000000000
--- a/examples/declarative/referenceexamples/extended/extended.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "example.qml"]
-}
diff --git a/examples/declarative/referenceexamples/extended/main.py b/examples/declarative/referenceexamples/extended/main.py
deleted file mode 100644
index 6ee386401..000000000
--- a/examples/declarative/referenceexamples/extended/main.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/extended example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QObject, QUrl, Property
-from PySide6.QtWidgets import QApplication, QLineEdit
-from PySide6.QtQml import (QQmlComponent, QQmlEngine, QmlForeign, QmlExtended,
- QmlNamedElement)
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.extend"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-class LineEditExtension(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._line_edit = parent
-
- @Property(int)
- def left_margin(self):
- return self._line_edit.textMargins().left()
-
- @left_margin.setter
- def left_margin(self, m):
- margins = self._line_edit.textMargins()
- margins.setLeft(m)
- self._line_edit.setTextMargins(margins)
-
- @Property(int)
- def right_margin(self):
- return self._line_edit.textMargins().right()
-
- @right_margin.setter
- def right_margin(self, m):
- margins = self._line_edit.textMargins()
- margins.setRight(m)
- self._line_edit.setTextMargins(margins)
-
- @Property(int)
- def top_margin(self):
- return self._line_edit.textMargins().top()
-
- @top_margin.setter
- def top_margin(self, m):
- margins = self._line_edit.textMargins()
- margins.setTop(m)
- self._line_edit.setTextMargins(margins)
-
- @Property(int)
- def bottom_margin(self):
- return self._line_edit.textMargins().bottom()
-
- @bottom_margin.setter
- def bottom_margin(self, m):
- margins = self._line_edit.textMargins()
- margins.setBottom(m)
- self._line_edit.setTextMargins(margins)
-
-
-@QmlNamedElement("QLineEdit")
-@QmlExtended(LineEditExtension)
-@QmlForeign(QLineEdit)
-class LineEditForeign(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
-
-
-if __name__ == '__main__':
- app = QApplication(sys.argv)
-
- qml_file = Path(__file__).parent / "example.qml"
- url = QUrl.fromLocalFile(qml_file)
- engine = QQmlEngine()
- component = QQmlComponent(engine, url)
- widget = component.create()
- if not widget:
- print(component.errors())
- del engine
- sys.exit(-1)
-
- widget.show()
- r = app.exec()
- # Deleting the engine before it goes out of scope is required to make sure
- # all child QML instances are destroyed in the correct order.
- del engine
- sys.exit(r)
diff --git a/examples/declarative/referenceexamples/grouped/birthdayparty.py b/examples/declarative/referenceexamples/grouped/birthdayparty.py
deleted file mode 100644
index 9f414441e..000000000
--- a/examples/declarative/referenceexamples/grouped/birthdayparty.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, ClassInfo, Property
-from PySide6.QtQml import QmlElement, ListProperty
-
-from person import Person
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.grouped.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-@ClassInfo(DefaultProperty="guests")
-class BirthdayParty(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- @Property(Person)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- self._host = h
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- guests = ListProperty(Person, appendGuest)
diff --git a/examples/declarative/referenceexamples/grouped/doc/grouped.rst b/examples/declarative/referenceexamples/grouped/doc/grouped.rst
deleted file mode 100644
index 691c1d393..000000000
--- a/examples/declarative/referenceexamples/grouped/doc/grouped.rst
+++ /dev/null
@@ -1,17 +0,0 @@
-.. _qml-grouped-example:
-
-Extending QML - Grouped Properties Example
-==========================================
-
-Grouped Properties.
-
-This example builds on the the :ref:`qml-default-property-example`,
-the :ref:`qml-inheritance-and-coercion-example`
-the :ref:`qml-object-and-list-property-types-example`
-and the :ref:`qml-adding-types-example`.
-
-Running the Example
--------------------
-
-The ``main.py`` file in the example includes a simple shell application that
-loads and runs the QML snippet shown below.
diff --git a/examples/declarative/referenceexamples/grouped/example.qml b/examples/declarative/referenceexamples/grouped/example.qml
deleted file mode 100644
index d0db4f193..000000000
--- a/examples/declarative/referenceexamples/grouped/example.qml
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-
-import examples.grouped.people
-
-BirthdayParty {
- host: Boy {
- name: "Bob Jones"
- shoe { size: 12; color: "white"; brand: "Bikey"; price: 90.0 }
- }
-
- Boy {
- name: "Leo Hodges"
- shoe { size: 10; color: "black"; brand: "Thebok"; price: 59.95 }
- }
- Boy { name: "Jack Smith"
- shoe {
- size: 8
- color: "blue"
- brand: "Luma"
- price: 19.95
- }
- }
- Girl {
- name: "Anne Brown"
- shoe.size: 7
- shoe.color: "red"
- shoe.brand: "Job Macobs"
- shoe.price: 699.99
- }
-}
diff --git a/examples/declarative/referenceexamples/grouped/grouped.pyproject b/examples/declarative/referenceexamples/grouped/grouped.pyproject
deleted file mode 100644
index 3c01c40c2..000000000
--- a/examples/declarative/referenceexamples/grouped/grouped.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "birthdayparty.py", "person.py", "example.qml"]
-}
diff --git a/examples/declarative/referenceexamples/grouped/main.py b/examples/declarative/referenceexamples/grouped/main.py
deleted file mode 100644
index f1edb8b94..000000000
--- a/examples/declarative/referenceexamples/grouped/main.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/default example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine
-
-from person import Boy, Girl
-from birthdayparty import BirthdayParty
-
-
-if __name__ == '__main__':
- app = QCoreApplication(sys.argv)
- qml_file = Path(__file__).parent / "example.qml"
- url = QUrl.fromLocalFile(qml_file)
- engine = QQmlEngine()
- component = QQmlComponent(engine, url)
- party = component.create()
- if not party:
- print(component.errors())
- del engine
- sys.exit(-1)
- host = party.host
- print(f"{host.name} is having a birthday!")
- if isinstance(host, Boy):
- print("He is inviting:")
- else:
- print("She is inviting:")
- best_shoe = None
- for g in range(party.guestCount()):
- guest = party.guest(g)
- name = guest.name
- print(f" {name}")
- if not best_shoe or best_shoe.shoe.price < guest.shoe.price:
- best_shoe = guest;
- if best_shoe:
- print(f"{best_shoe.name} is wearing the best shoes!");
- del engine
- sys.exit(0)
diff --git a/examples/declarative/referenceexamples/grouped/person.py b/examples/declarative/referenceexamples/grouped/person.py
deleted file mode 100644
index a1edf077e..000000000
--- a/examples/declarative/referenceexamples/grouped/person.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtGui import QColor
-from PySide6.QtQml import QmlAnonymous, QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.grouped.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlAnonymous
-class ShoeDescription(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._brand = ''
- self._size = 0
- self._price = 0
- self._color = QColor()
-
- @Property(str)
- def brand(self):
- return self._brand
-
- @brand.setter
- def brand(self, b):
- self._brand = b
-
- @Property(int)
- def size(self):
- return self._size
-
- @size.setter
- def size(self, s):
- self._size = s
-
- @Property(float)
- def price(self):
- return self._price
-
- @price.setter
- def price(self, p):
- self._price = p
-
- @Property(QColor)
- def color(self):
- return self._color
-
- @color.setter
- def color(self, c):
- self._color = c
-
-
-@QmlAnonymous
-class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe = ShoeDescription()
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(ShoeDescription)
- def shoe(self):
- return self._shoe
-
-
-@QmlElement
-class Boy(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
-
-
-@QmlElement
-class Girl(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
diff --git a/examples/declarative/referenceexamples/methods/birthdayparty.py b/examples/declarative/referenceexamples/methods/birthdayparty.py
deleted file mode 100644
index 41425a2b1..000000000
--- a/examples/declarative/referenceexamples/methods/birthdayparty.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property, Slot
-from PySide6.QtQml import QmlElement, ListProperty
-
-from person import Person
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.methods.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class BirthdayParty(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- @Property(Person)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- self._host = h
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- @Slot(str)
- def invite(self, name):
- guest = Person(self)
- guest.name = name
- self.appendGuest(guest)
-
- guests = ListProperty(Person, appendGuest)
diff --git a/examples/declarative/referenceexamples/methods/doc/methods.rst b/examples/declarative/referenceexamples/methods/doc/methods.rst
deleted file mode 100644
index bda2ede5a..000000000
--- a/examples/declarative/referenceexamples/methods/doc/methods.rst
+++ /dev/null
@@ -1,15 +0,0 @@
-.. _qml-methods-example:
-
-Extending QML - Methods Example
-===============================
-
-This example builds on the :ref:`qml-adding-types-example`,
-the :ref:`qml-object-and-list-property-types-example` and
-the :ref:`qml-inheritance-and-coercion-example`.
-
-The Methods Example has an additional method in the ``BirthdayParty`` class:
-``invite()``. ``invite()`` is decorated with ``@Slot`` so that it can be
-called from QML.
-
-In ``example.qml``, the ``invite()`` method is called
-in the ``QtQml.Component.completed()`` signal handler.
diff --git a/examples/declarative/referenceexamples/methods/example.qml b/examples/declarative/referenceexamples/methods/example.qml
deleted file mode 100644
index c48e952fd..000000000
--- a/examples/declarative/referenceexamples/methods/example.qml
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import examples.methods.people
-
-BirthdayParty {
- host: Person {
- name: "Bob Jones"
- shoe_size: 12
- }
- guests: [
- Person { name: "Leo Hodges" },
- Person { name: "Jack Smith" },
- Person { name: "Anne Brown" }
- ]
-
- Component.onCompleted: invite("William Green")
-}
diff --git a/examples/declarative/referenceexamples/methods/main.py b/examples/declarative/referenceexamples/methods/main.py
deleted file mode 100644
index 31748ff2b..000000000
--- a/examples/declarative/referenceexamples/methods/main.py
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/methods example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine
-
-from person import Person
-from birthdayparty import BirthdayParty
-
-
-app = QCoreApplication(sys.argv)
-qml_file = Path(__file__).parent / "example.qml"
-url = QUrl.fromLocalFile(qml_file)
-engine = QQmlEngine()
-component = QQmlComponent(engine, url)
-party = component.create()
-if not party:
- print(component.errors())
- del engine
- sys.exit(-1)
-host = party.host
-print(f"{host.name} is having a birthday!\nThey are inviting:")
-for g in range(party.guestCount()):
- name = party.guest(g).name
- print(f" {name}")
-del engine
-sys.exit(0)
diff --git a/examples/declarative/referenceexamples/methods/methods.pyproject b/examples/declarative/referenceexamples/methods/methods.pyproject
deleted file mode 100644
index 3c01c40c2..000000000
--- a/examples/declarative/referenceexamples/methods/methods.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "birthdayparty.py", "person.py", "example.qml"]
-}
diff --git a/examples/declarative/referenceexamples/methods/person.py b/examples/declarative/referenceexamples/methods/person.py
deleted file mode 100644
index b5e0bd899..000000000
--- a/examples/declarative/referenceexamples/methods/person.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.methods.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(int)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- self._shoe_size = s
diff --git a/examples/declarative/referenceexamples/properties/birthdayparty.py b/examples/declarative/referenceexamples/properties/birthdayparty.py
deleted file mode 100644
index 1a115101b..000000000
--- a/examples/declarative/referenceexamples/properties/birthdayparty.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlElement, ListProperty
-
-from person import Person
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.properties.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class BirthdayParty(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- @Property(Person)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- self._host = h
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- guests = ListProperty(Person, appendGuest)
diff --git a/examples/declarative/referenceexamples/properties/doc/properties.rst b/examples/declarative/referenceexamples/properties/doc/properties.rst
deleted file mode 100644
index 909434c3c..000000000
--- a/examples/declarative/referenceexamples/properties/doc/properties.rst
+++ /dev/null
@@ -1,89 +0,0 @@
-.. _qml-object-and-list-property-types-example:
-
-Extending QML - Object and List Property Types Example
-======================================================
-
-Exporting C++ Properties.
-
-This example builds on :ref:`qml-adding-types-example`.
-
-The Object and List Property Types example shows how to add object and list
-properties in QML. This example adds a BirthdayParty type that specifies a
-birthday party, consisting of a celebrant and a list of guests. People are
-specified using the People QML type built in the previous example.
-
-import examples.properties.people
-
-.. code-block:: javascript
-
- BirthdayParty {
- host: Person {
- name: "Bob Jones"
- shoe_size: 12
- }
- guests: [
- Person { name: "Leo Hodges" },
- Person { name: "Jack Smith" },
- Person { name: "Anne Brown" }
- ]
- }
-
-Declare the BirthdayParty
--------------------------
-
-The BirthdayParty class is declared like this:
-
-.. code-block:: python
-
- from person import Person
-
-
- # To be used on the @QmlElement decorator
- # (QML_IMPORT_MINOR_VERSION is optional)
- QML_IMPORT_NAME = "examples.properties.people"
- QML_IMPORT_MAJOR_VERSION = 1
-
-
- @QmlElement
- class BirthdayParty(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- @Property(Person)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- self._host = h
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- guests = ListProperty(Person, appendGuest)
-
-The class contains a member to store the celebrant object, and also a
-list member storing the Person instances.
-
-In QML, the type of a list properties - and the guests property is a list of
-people - are all of type ListProperty. ListProperty is simple value
-type that contains a set of functions. QML calls these functions
-whenever it needs to read from, write to or otherwise interact with
-the list. In addition to concrete lists like the people list used in this
-example, the use of QQmlListProperty allows for "virtual lists" and other advanced
-scenarios.
-
-Running the Example
--------------------
-
-The main.py file in the example includes a simple shell application that
-loads and runs the QML snippet shown at the beginning of this page.
diff --git a/examples/declarative/referenceexamples/properties/example.qml b/examples/declarative/referenceexamples/properties/example.qml
deleted file mode 100644
index 1486a0f92..000000000
--- a/examples/declarative/referenceexamples/properties/example.qml
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import examples.properties.people
-
-BirthdayParty {
- host: Person {
- name: "Bob Jones"
- shoe_size: 12
- }
- guests: [
- Person { name: "Leo Hodges" },
- Person { name: "Jack Smith" },
- Person { name: "Anne Brown" }
- ]
-}
diff --git a/examples/declarative/referenceexamples/properties/main.py b/examples/declarative/referenceexamples/properties/main.py
deleted file mode 100644
index a980b25aa..000000000
--- a/examples/declarative/referenceexamples/properties/main.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/properties example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine
-
-from person import Person
-from birthdayparty import BirthdayParty
-
-
-if __name__ == '__main__':
- app = QCoreApplication(sys.argv)
-
- qml_file = Path(__file__).parent / "example.qml"
- url = QUrl.fromLocalFile(qml_file)
- engine = QQmlEngine()
- component = QQmlComponent(engine, url)
-
- party = component.create()
- if party:
- print(f"{party.host} is having a birthday!\nThey are inviting:")
- for g in range(party.guestCount()):
- name = party.guest(g).name
- print(f" {name}")
- else:
- print(component.errors())
-
- del engine
- sys.exit(0)
diff --git a/examples/declarative/referenceexamples/properties/person.py b/examples/declarative/referenceexamples/properties/person.py
deleted file mode 100644
index 4cc54260a..000000000
--- a/examples/declarative/referenceexamples/properties/person.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.properties.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(int)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- self._shoe_size = s
-
diff --git a/examples/declarative/referenceexamples/properties/properties.pyproject b/examples/declarative/referenceexamples/properties/properties.pyproject
deleted file mode 100644
index 0f5958fc3..000000000
--- a/examples/declarative/referenceexamples/properties/properties.pyproject
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "files": ["example.qml",
- "main.py",
- "person.py",
- "birthdayparty.py"]
-}
diff --git a/examples/declarative/referenceexamples/valuesource/birthdayparty.py b/examples/declarative/referenceexamples/valuesource/birthdayparty.py
deleted file mode 100644
index 3bc75e819..000000000
--- a/examples/declarative/referenceexamples/valuesource/birthdayparty.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QDate, QObject, ClassInfo, Property, QTime, Signal
-from PySide6.QtQml import QmlAnonymous, QmlAttached, QmlElement, ListProperty
-
-from person import Person
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.valuesource.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlAnonymous
-class BirthdayPartyAttached(QObject):
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._rsvp = QDate()
-
- @Property(QDate)
- def rsvp(self):
- return self._rsvp
-
- @rsvp.setter
- def rsvp(self, d):
- self._rsvp = d
-
-
-@QmlElement
-@ClassInfo(DefaultProperty="guests")
-@QmlAttached(BirthdayPartyAttached)
-class BirthdayParty(QObject):
-
- partyStarted = Signal(QTime)
-
- def __init__(self, parent=None):
- super().__init__(parent)
- self._host = None
- self._guests = []
-
- def startParty(self):
- self.partyStarted.emit(QTime.currentTime())
-
- @Property(Person)
- def host(self):
- return self._host
-
- @host.setter
- def host(self, h):
- self._host = h
-
- @Property(str)
- def announcement(self):
- return ""
-
- @announcement.setter
- def announcement(self, a):
- print(a)
-
- def guest(self, n):
- return self._guests[n]
-
- def guestCount(self):
- return len(self._guests)
-
- def appendGuest(self, guest):
- self._guests.append(guest)
-
- @staticmethod
- def qmlAttachedProperties(self, o):
- return BirthdayPartyAttached(o)
-
- guests = ListProperty(Person, appendGuest)
diff --git a/examples/declarative/referenceexamples/valuesource/doc/valuesource.rst b/examples/declarative/referenceexamples/valuesource/doc/valuesource.rst
deleted file mode 100644
index 81fbc827f..000000000
--- a/examples/declarative/referenceexamples/valuesource/doc/valuesource.rst
+++ /dev/null
@@ -1,20 +0,0 @@
-.. _qml-valuesource-example:
-
-Extending QML - Value Source Example
-====================================
-
-This example builds on the :ref:`qml-adding-types-example`,
-the :ref:`qml-attached-properties-example`,
-the :ref:`qml-default-property-example`,
-the :ref:`qml-inheritance-and-coercion-example` and
-the :ref:`qml-object-and-list-property-types-example`.
-
-It demonstrates implementing a
-`property value source <https://doc.qt.io/qt-6/qtqml-cppintegration-definetypes.html#property-value-sources>`_
-in Python.
-
-Running the Example
--------------------
-
-The main.py file in the example includes a simple shell application that
-loads and runs the QML snippet shown below.
diff --git a/examples/declarative/referenceexamples/valuesource/example.qml b/examples/declarative/referenceexamples/valuesource/example.qml
deleted file mode 100644
index cb9683f3a..000000000
--- a/examples/declarative/referenceexamples/valuesource/example.qml
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright (C) 2022 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import examples.valuesource.people
-
-BirthdayParty {
- HappyBirthdaySong on announcement { name: "Bob Jones" }
-
- onPartyStarted: (time) => { console.log("This party started rockin' at " + time); }
-
- host: Boy {
- name: "Bob Jones"
- shoe_size: 12
- }
-
- Boy {
- name: "Leo Hodges"
- BirthdayParty.rsvp: "2009-07-06"
- }
- Boy {
- name: "Jack Smith"
- }
- Girl {
- name: "Anne Brown"
- BirthdayParty.rsvp: "2009-07-01"
- }
-}
diff --git a/examples/declarative/referenceexamples/valuesource/happybirthdaysong.py b/examples/declarative/referenceexamples/valuesource/happybirthdaysong.py
deleted file mode 100644
index cffddd39e..000000000
--- a/examples/declarative/referenceexamples/valuesource/happybirthdaysong.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, QTimer, Property, Slot
-from PySide6.QtQml import QmlElement, QPyQmlPropertyValueSource
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.valuesource.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class HappyBirthdaySong(QPyQmlPropertyValueSource):
-
- def __init__(self, parent=None):
- super().__init__(parent)
-
- self.m_target = None
- self.m_name = ""
- self.m_line = -1
- self.m_lyrics = []
-
- self.m_timer = QTimer(self)
- self.m_timer.timeout.connect(self.advance)
- self.m_timer.start(1000)
-
- def setTarget(self, property):
- self.m_target = property
-
- @Property(str)
- def name(self):
- return self.m_name
-
- @name.setter
- def name(self, n):
- self.m_name = n
- self.m_lyrics = ["Happy birthday to you,",
- "Happy birthday to you,",
- f"Happy birthday dear {self.m_name},",
- "Happy birthday to you!",
- ""]
-
- @Slot()
- def advance(self):
- self.m_line = (self.m_line + 1) % len(self.m_lyrics)
- self.m_target.write(self.m_lyrics[self.m_line])
diff --git a/examples/declarative/referenceexamples/valuesource/main.py b/examples/declarative/referenceexamples/valuesource/main.py
deleted file mode 100644
index c3ded4be9..000000000
--- a/examples/declarative/referenceexamples/valuesource/main.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-"""PySide6 port of the qml/examples/qml/referenceexamples/valuesource example from Qt v6.x"""
-
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QCoreApplication, QUrl
-from PySide6.QtQml import QQmlComponent, QQmlEngine, qmlAttachedPropertiesObject
-
-from person import Boy, Girl
-from birthdayparty import BirthdayParty
-from happybirthdaysong import HappyBirthdaySong
-
-
-app = QCoreApplication(sys.argv)
-qml_file = Path(__file__).parent / "example.qml"
-url = QUrl.fromLocalFile(qml_file)
-engine = QQmlEngine()
-component = QQmlComponent(engine, url)
-party = component.create()
-if not party:
- print(component.errors())
- del engine
- sys.exit(-1)
-host = party.host
-print(f"{host.name} is having a birthday!")
-if isinstance(host, Boy):
- print("He is inviting:")
-else:
- print("She is inviting:")
-for g in range(party.guestCount()):
- guest = party.guest(g)
- name = guest.name
-
- rsvp_date = None
- attached = qmlAttachedPropertiesObject(BirthdayParty, guest, False)
- if attached:
- rsvp_date = attached.rsvp.toString()
- if rsvp_date:
- print(f" {name} RSVP date: {rsvp_date}")
- else:
- print(f" {name} RSVP date: Hasn't RSVP'd")
-
-party.startParty()
-
-r = app.exec()
-
-del engine
-sys.exit(r)
diff --git a/examples/declarative/referenceexamples/valuesource/person.py b/examples/declarative/referenceexamples/valuesource/person.py
deleted file mode 100644
index 5cd04e38a..000000000
--- a/examples/declarative/referenceexamples/valuesource/person.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from PySide6.QtCore import QObject, Property
-from PySide6.QtQml import QmlAnonymous, QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.valuesource.people"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlAnonymous
-class Person(QObject):
- def __init__(self, parent=None):
- super().__init__(parent)
- self._name = ''
- self._shoe_size = 0
-
- @Property(str)
- def name(self):
- return self._name
-
- @name.setter
- def name(self, n):
- self._name = n
-
- @Property(int)
- def shoe_size(self):
- return self._shoe_size
-
- @shoe_size.setter
- def shoe_size(self, s):
- self._shoe_size = s
-
-
-@QmlElement
-class Boy(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
-
-
-@QmlElement
-class Girl(Person):
- def __init__(self, parent=None):
- super().__init__(parent)
diff --git a/examples/declarative/referenceexamples/valuesource/valuesource.pyproject b/examples/declarative/referenceexamples/valuesource/valuesource.pyproject
deleted file mode 100644
index a782d5c8a..000000000
--- a/examples/declarative/referenceexamples/valuesource/valuesource.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "birthdayparty.py", "happybirthdaysong.py", "person.py", "example.qml"]
-}
diff --git a/examples/declarative/rendercontrol/rendercontrol_opengl/cuberenderer.py b/examples/declarative/rendercontrol/rendercontrol_opengl/cuberenderer.py
deleted file mode 100644
index 4a3bf737c..000000000
--- a/examples/declarative/rendercontrol/rendercontrol_opengl/cuberenderer.py
+++ /dev/null
@@ -1,186 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import ctypes
-import numpy
-from OpenGL.GL import (GL_COLOR_BUFFER_BIT, GL_CULL_FACE, GL_CW,
- GL_DEPTH_BUFFER_BIT, GL_DEPTH_TEST, GL_FALSE, GL_FLOAT,
- GL_TEXTURE_2D, GL_TRIANGLES)
-
-from PySide6.QtGui import (QMatrix4x4, QOffscreenSurface, QOpenGLContext,
- QOpenGLFunctions, QWindow)
-from PySide6.QtOpenGL import (QOpenGLBuffer, QOpenGLShader,
- QOpenGLShaderProgram, QOpenGLVertexArrayObject)
-from shiboken6 import VoidPtr
-
-
-VERTEXSHADER_SOURCE = """attribute highp vec4 vertex;
-attribute lowp vec2 coord;
-varying lowp vec2 v_coord;
-uniform highp mat4 matrix;
-void main() {
- v_coord = coord;
- gl_Position = matrix * vertex;
-}
-"""
-
-
-FRAGMENTSHADER_SOURCE = """varying lowp vec2 v_coord;
-uniform sampler2D sampler;
-void main() {
- gl_FragColor = vec4(texture2D(sampler, v_coord).rgb, 1.0);
-}
-"""
-
-
-FLOAT_SIZE = ctypes.sizeof(ctypes.c_float)
-
-
-VERTEXES = numpy.array([-0.5, 0.5, 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5,
- 0.5, -0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5, 0.5,
- -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5,
- 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, -0.5, -0.5,
-
- 0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5, 0.5, -0.5,
- 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, -0.5, 0.5,
- -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, -0.5,
- -0.5, -0.5, 0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5,
-
- 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, -0.5,
- -0.5, 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5,
- -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, 0.5, -0.5, -0.5,
- 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, -0.5, -0.5, 0.5],
- dtype=numpy.float32)
-
-
-TEX_COORDS = numpy.array([0.0, 0.0, 1.0, 1.0, 1.0, 0.0,
- 1.0, 1.0, 0.0, 0.0, 0.0, 1.0,
- 1.0, 1.0, 1.0, 0.0, 0.0, 1.0,
- 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,
-
- 1.0, 1.0, 1.0, 0.0, 0.0, 1.0,
- 0.0, 0.0, 0.0, 1.0, 1.0, 0.0,
- 0.0, 0.0, 1.0, 1.0, 1.0, 0.0,
- 1.0, 1.0, 0.0, 0.0, 0.0, 1.0,
-
- 0.0, 1.0, 1.0, 0.0, 1.0, 1.0,
- 1.0, 0.0, 0.0, 1.0, 0.0, 0.0,
- 1.0, 0.0, 1.0, 1.0, 0.0, 0.0,
- 0.0, 1.0, 0.0, 0.0, 1.0, 1.0], dtype=numpy.float32)
-
-
-class CubeRenderer():
- def __init__(self, offscreenSurface):
- self.m_angle = 0
- self.m_offscreenSurface = offscreenSurface
- self.m_context = None
- self.m_program = None
- self.m_vbo = None
- self.m_vao = None
- self.m_matrixLoc = 0
- self.m_proj = QMatrix4x4()
-
- def __del__(self):
- # Use a temporary offscreen surface to do the cleanup. There may not
- # be a native window surface available anymore at self stage.
- self.m_context.makeCurrent(self.m_offscreenSurface)
- del self.m_program
- del self.m_vbo
- del self.m_vao
- self.m_context.doneCurrent()
-
- def init(self, w, share):
- self.m_context = QOpenGLContext()
- self.m_context.setShareContext(share)
- self.m_context.setFormat(w.requestedFormat())
- self.m_context.create()
- if not self.m_context.makeCurrent(w):
- return
-
- f = self.m_context.functions()
- f.glClearColor(0.0, 0.1, 0.25, 1.0)
- f.glViewport(0, 0, w.width() * w.devicePixelRatio(),
- w.height() * w.devicePixelRatio())
-
- self.m_program = QOpenGLShaderProgram()
- self.m_program.addCacheableShaderFromSourceCode(QOpenGLShader.Vertex,
- VERTEXSHADER_SOURCE)
- self.m_program.addCacheableShaderFromSourceCode(QOpenGLShader.Fragment,
- FRAGMENTSHADER_SOURCE)
- self.m_program.bindAttributeLocation("vertex", 0)
- self.m_program.bindAttributeLocation("coord", 1)
- self.m_program.link()
- self.m_matrixLoc = self.m_program.uniformLocation("matrix")
-
- self.m_vao = QOpenGLVertexArrayObject()
- self.m_vao.create()
- vaoBinder = QOpenGLVertexArrayObject.Binder(self.m_vao)
-
- self.m_vbo = QOpenGLBuffer()
- self.m_vbo.create()
- self.m_vbo.bind()
-
- vertexCount = 36
- self.m_vbo.allocate(FLOAT_SIZE * vertexCount * 5)
- vertex_data = VERTEXES.tobytes()
- tex_coord_data = TEX_COORDS.tobytes()
- self.m_vbo.write(0, VoidPtr(vertex_data),
- FLOAT_SIZE * vertexCount * 3)
- self.m_vbo.write(FLOAT_SIZE * vertexCount * 3,
- VoidPtr(tex_coord_data),
- FLOAT_SIZE * vertexCount * 2)
- self.m_vbo.release()
-
- if self.m_vao.isCreated():
- self.setupVertexAttribs()
-
- def resize(self, w, h):
- self.m_proj.setToIdentity()
- self.m_proj.perspective(45, w / float(h), 0.01, 100.0)
-
- def setupVertexAttribs(self):
- self.m_vbo.bind()
- self.m_program.enableAttributeArray(0)
- self.m_program.enableAttributeArray(1)
- f = self.m_context.functions()
-
- null = VoidPtr(0)
- pointer = VoidPtr(36 * 3 * FLOAT_SIZE)
- f.glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, null)
- f.glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 0, pointer)
- self.m_vbo.release()
-
- def render(self, w, share, texture):
- if not self.m_context:
- self.init(w, share)
-
- if not self.m_context.makeCurrent(w):
- return
-
- f = self.m_context.functions()
- f.glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
-
- if texture:
- f.glBindTexture(GL_TEXTURE_2D, texture)
- f.glFrontFace(GL_CW) # because our cube's vertex data is such
- f.glEnable(GL_CULL_FACE)
- f.glEnable(GL_DEPTH_TEST)
-
- self.m_program.bind()
- vaoBinder = QOpenGLVertexArrayObject.Binder(self.m_vao)
- # If VAOs are not supported, set the vertex attributes every time.
- if not self.m_vao.isCreated():
- self.setupVertexAttribs()
-
- m = QMatrix4x4()
- m.translate(0, 0, -2)
- m.rotate(90, 0, 0, 1)
- m.rotate(self.m_angle, 0.5, 1, 0)
- self.m_angle += 0.5
-
- self.m_program.setUniformValue(self.m_matrixLoc, self.m_proj * m)
-
- # Draw the cube.
- f.glDrawArrays(GL_TRIANGLES, 0, 36)
-
- self.m_context.swapBuffers(w)
diff --git a/examples/declarative/rendercontrol/rendercontrol_opengl/demo.qml b/examples/declarative/rendercontrol/rendercontrol_opengl/demo.qml
deleted file mode 100644
index 185c52c5f..000000000
--- a/examples/declarative/rendercontrol/rendercontrol_opengl/demo.qml
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.0
-import QtQuick.Particles 2.0
-
-Rectangle {
- id: root
-
- gradient: Gradient {
- GradientStop { position: 0; color: mouse.pressed ? "lightsteelblue" : "steelblue" }
- GradientStop { position: 1; color: "black" }
- }
-
- Text {
- anchors.centerIn: parent
- text: "Qt Quick in a texture"
- font.pointSize: 40
- color: "white"
-
- SequentialAnimation on rotation {
- PauseAnimation { duration: 2500 }
- NumberAnimation { from: 0; to: 360; duration: 5000; easing.type: Easing.InOutCubic }
- loops: Animation.Infinite
- }
- }
-
- ParticleSystem {
- id: particles
- anchors.fill: parent
-
- ImageParticle {
- id: smoke
- system: particles
- anchors.fill: parent
- groups: ["A", "B"]
- source: "qrc:///particleresources/glowdot.png"
- colorVariation: 0
- color: "#00111111"
- }
- ImageParticle {
- id: flame
- anchors.fill: parent
- system: particles
- groups: ["C", "D"]
- source: "qrc:///particleresources/glowdot.png"
- colorVariation: 0.1
- color: "#00ff400f"
- }
-
- Emitter {
- id: fire
- system: particles
- group: "C"
-
- y: parent.height
- width: parent.width
-
- emitRate: 350
- lifeSpan: 3500
-
- acceleration: PointDirection { y: -17; xVariation: 3 }
- velocity: PointDirection {xVariation: 3}
-
- size: 24
- sizeVariation: 8
- endSize: 4
- }
-
- TrailEmitter {
- id: fireSmoke
- group: "B"
- system: particles
- follow: "C"
- width: root.width
- height: root.height - 68
-
- emitRatePerParticle: 1
- lifeSpan: 2000
-
- velocity: PointDirection {y:-17*6; yVariation: -17; xVariation: 3}
- acceleration: PointDirection {xVariation: 3}
-
- size: 36
- sizeVariation: 8
- endSize: 16
- }
-
- TrailEmitter {
- id: fireballFlame
- anchors.fill: parent
- system: particles
- group: "D"
- follow: "E"
-
- emitRatePerParticle: 120
- lifeSpan: 180
- emitWidth: TrailEmitter.ParticleSize
- emitHeight: TrailEmitter.ParticleSize
- emitShape: EllipseShape{}
-
- size: 16
- sizeVariation: 4
- endSize: 4
- }
-
- TrailEmitter {
- id: fireballSmoke
- anchors.fill: parent
- system: particles
- group: "A"
- follow: "E"
-
- emitRatePerParticle: 128
- lifeSpan: 2400
- emitWidth: TrailEmitter.ParticleSize
- emitHeight: TrailEmitter.ParticleSize
- emitShape: EllipseShape{}
-
- velocity: PointDirection {yVariation: 16; xVariation: 16}
- acceleration: PointDirection {y: -16}
-
- size: 24
- sizeVariation: 8
- endSize: 8
- }
-
- Emitter {
- id: balls
- system: particles
- group: "E"
-
- y: parent.height
- width: parent.width
-
- emitRate: 2
- lifeSpan: 7000
-
- velocity: PointDirection {y:-17*4*2; xVariation: 6*6}
- acceleration: PointDirection {y: 17*2; xVariation: 6*6}
-
- size: 8
- sizeVariation: 4
- }
-
- Turbulence { //A bit of turbulence makes the smoke look better
- anchors.fill: parent
- groups: ["A","B"]
- strength: 32
- system: particles
- }
- }
-
- onWidthChanged: particles.reset()
- onHeightChanged: particles.reset()
-
- MouseArea {
- id: mouse
- anchors.fill: parent
- }
-}
diff --git a/examples/declarative/rendercontrol/rendercontrol_opengl/doc/rendercontrol_opengl.rst b/examples/declarative/rendercontrol/rendercontrol_opengl/doc/rendercontrol_opengl.rst
deleted file mode 100644
index f47567f52..000000000
--- a/examples/declarative/rendercontrol/rendercontrol_opengl/doc/rendercontrol_opengl.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-QQuickRenderControl OpenGL Example
-==================================
-
-The QQuickRenderControl OpenGL Example shows how to render a Qt Quick scene into a
-texture that is then used by a non-Quick based OpenGL renderer.
diff --git a/examples/declarative/rendercontrol/rendercontrol_opengl/main.py b/examples/declarative/rendercontrol/rendercontrol_opengl/main.py
deleted file mode 100644
index ee885ae6d..000000000
--- a/examples/declarative/rendercontrol/rendercontrol_opengl/main.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import sys
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickWindow, QSGRendererInterface
-
-from window_singlethreaded import WindowSingleThreaded
-
-
-if __name__ == "__main__":
- app = QGuiApplication(sys.argv)
- # only functional when Qt Quick is also using OpenGL
- QQuickWindow.setGraphicsApi(QSGRendererInterface.OpenGLRhi)
- window = WindowSingleThreaded()
- window.resize(1024, 768)
- window.show()
- ex = app.exec()
- del window
- sys.exit(ex)
diff --git a/examples/declarative/rendercontrol/rendercontrol_opengl/rendercontrol_opengl.pyproject b/examples/declarative/rendercontrol/rendercontrol_opengl/rendercontrol_opengl.pyproject
deleted file mode 100644
index b2e80ab23..000000000
--- a/examples/declarative/rendercontrol/rendercontrol_opengl/rendercontrol_opengl.pyproject
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "files": ["cuberenderer.py",
- "main.py",
- "window_singlethreaded.py",
- "demo.qml"]
-}
diff --git a/examples/declarative/rendercontrol/rendercontrol_opengl/window_singlethreaded.py b/examples/declarative/rendercontrol/rendercontrol_opengl/window_singlethreaded.py
deleted file mode 100644
index 164d6a08c..000000000
--- a/examples/declarative/rendercontrol/rendercontrol_opengl/window_singlethreaded.py
+++ /dev/null
@@ -1,275 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import numpy
-from pathlib import Path
-import sys
-import weakref
-from OpenGL.GL import (GL_TEXTURE_MAG_FILTER, GL_TEXTURE_MIN_FILTER,
- GL_NEAREST, GL_RGBA, GL_TEXTURE_2D, GL_UNSIGNED_BYTE)
-
-from PySide6.QtGui import (QMatrix4x4, QMouseEvent, QOffscreenSurface,
- QOpenGLContext, QOpenGLFunctions, QScreen, QSurface,
- QSurfaceFormat, QWindow)
-from PySide6.QtOpenGL import (QOpenGLFramebufferObject, QOpenGLTexture,
- QOpenGLShaderProgram, QOpenGLVertexArrayObject,
- QOpenGLBuffer)
-from PySide6.QtQml import QQmlComponent, QQmlEngine
-from PySide6.QtQuick import (QQuickGraphicsDevice,
- QQuickItem, QQuickRenderControl,
- QQuickRenderTarget, QQuickWindow)
-from PySide6.QtCore import QCoreApplication, QTimer, QUrl, Slot
-from shiboken6 import VoidPtr
-
-from cuberenderer import CubeRenderer
-
-
-class RenderControl(QQuickRenderControl):
- def __init__(self, window=None):
- super().__init__()
- self._window = window
-
- def renderWindow(self, offset):
- return self._window() # Dereference the weak reference
-
-
-class WindowSingleThreaded(QWindow):
-
- def __init__(self):
- super().__init__()
- self.m_rootItem = None
- self.m_device = None
- self.m_texture_ids = numpy.array([0], dtype=numpy.uint32)
-
- self.m_quickInitialized = False
- self.m_quickReady = False
- self.m_dpr = 0
- self.m_status_conn_id = None
- self.setSurfaceType(QSurface.OpenGLSurface)
-
- format = QSurfaceFormat()
- # Qt Quick may need a depth and stencil buffer. Always make sure these
- # are available.
- format.setDepthBufferSize(16)
- format.setStencilBufferSize(8)
- self.setFormat(format)
-
- self.m_context = QOpenGLContext()
- self.m_context.setFormat(format)
- self.m_context.create()
-
- self.m_offscreenSurface = QOffscreenSurface()
- # Pass m_context.format(), not format. Format does not specify and
- # color buffer sizes, while the context, that has just been created,
- # reports a format that has these values filled in. Pass self to the
- # offscreen surface to make sure it will be compatible with the
- # context's configuration.
- self.m_offscreenSurface.setFormat(self.m_context.format())
- self.m_offscreenSurface.create()
-
- self.m_cubeRenderer = CubeRenderer(self.m_offscreenSurface)
-
- self.m_renderControl = RenderControl(weakref.ref(self))
-
- # Create a QQuickWindow that is associated with out render control.
- # Note that this window never gets created or shown, meaning that
- # will never get an underlying native (platform) window.
- self.m_quickWindow = QQuickWindow(self.m_renderControl)
-
- # Create a QML engine.
- self.m_qmlEngine = QQmlEngine()
- if not self.m_qmlEngine.incubationController():
- c = self.m_quickWindow.incubationController()
- self.m_qmlEngine.setIncubationController(c)
-
- # When Quick says there is a need to render, we will not render
- # immediately. Instead, a timer with a small interval is used
- # to get better performance.
- self.m_updateTimer = QTimer()
- self.m_updateTimer.setSingleShot(True)
- self.m_updateTimer.setInterval(5)
- self.m_updateTimer.timeout.connect(self.render)
-
- # Now hook up the signals. For simplicy we don't differentiate between
- # renderRequested (only render is needed, no sync) and sceneChanged
- # (polish and sync is needed too).
- self.m_quickWindow.sceneGraphInitialized.connect(self.createTexture)
- self.m_quickWindow.sceneGraphInvalidated.connect(self.destroyTexture)
- self.m_renderControl.renderRequested.connect(self.requestUpdate)
- self.m_renderControl.sceneChanged.connect(self.requestUpdate)
-
- # Just recreating the texture on resize is not sufficient, when moving
- # between screens with different devicePixelRatio the QWindow size may
- # remain the same but the texture dimension is to change regardless.
- self.screenChanged.connect(self.handleScreenChange)
-
- def __del__(self):
- # Make sure the context is current while doing cleanup. Note that
- # we use the offscreen surface here because passing 'self' at self
- # point is not safe: the underlying platform window may already be
- # destroyed. To avoid all the trouble, use another surface that is
- # valid for sure.
- self.m_context.makeCurrent(self.m_offscreenSurface)
-
- del self.m_qmlComponent
- del self.m_qmlEngine
- del self.m_quickWindow
- del self.m_renderControl
-
- if self.texture_id():
- self.m_context.functions().glDeleteTextures(1, self.m_texture_ids)
-
- self.m_context.doneCurrent()
-
- def texture_id(self):
- return self.m_texture_ids[0]
-
- def set_texture_id(self, texture_id):
- self.m_texture_ids[0] = texture_id
-
- @Slot()
- def createTexture(self):
- # The scene graph has been initialized. It is now time to create a
- # texture and associate it with the QQuickWindow.
- self.m_dpr = self.devicePixelRatio()
- self.m_textureSize = self.size() * self.m_dpr
- f = self.m_context.functions()
- f.glGenTextures(1, self.m_texture_ids)
- f.glBindTexture(GL_TEXTURE_2D, self.texture_id())
-
- f.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
- f.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
- null = VoidPtr(0)
- f.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, self.m_textureSize.width(),
- self.m_textureSize.height(), 0,
- GL_RGBA, GL_UNSIGNED_BYTE, null)
- target = QQuickRenderTarget.fromOpenGLTexture(self.texture_id(),
- self.m_textureSize)
- self.m_quickWindow.setRenderTarget(target)
-
- @Slot()
- def destroyTexture(self):
- self.m_context.functions().glDeleteTextures(1, self.m_texture_ids)
- self.set_texture_id(0)
-
- @Slot()
- def render(self):
- if not self.m_context.makeCurrent(self.m_offscreenSurface):
- return
-
- # Polish, synchronize and render the next frame (into our texture).
- # In this example everything happens on the same thread and therefore
- # all three steps are performed in succession from here. In a threaded
- # setup the render() call would happen on a separate thread.
- self.m_renderControl.beginFrame()
- self.m_renderControl.polishItems()
- self.m_renderControl.sync()
- self.m_renderControl.render()
- self.m_renderControl.endFrame()
-
- QOpenGLFramebufferObject.bindDefault()
- self.m_context.functions().glFlush()
-
- self.m_quickReady = True
-
- # Get something onto the screen.
- texture_id = self.texture_id() if self.m_quickReady else 0
- self.m_cubeRenderer.render(self, self.m_context, texture_id)
-
- def requestUpdate(self):
- if not self.m_updateTimer.isActive():
- self.m_updateTimer.start()
-
- def run(self):
- if self.m_status_conn_id:
- self.m_qmlComponent.statusChanged.disconnect(self.m_status_conn_id)
- self.m_status_conn_id = None
-
- if self.m_qmlComponent.isError():
- for error in self.m_qmlComponent.errors():
- print(error.url().toString(), error.line(), error.toString())
- return
-
- self.m_rootItem = self.m_qmlComponent.create()
- if self.m_qmlComponent.isError():
- for error in self.m_qmlComponent.errors():
- print(error.url().toString(), error.line(), error.toString())
- return
-
- if not self.m_rootItem:
- print("run: Not a QQuickItem")
- del self.m_rootItem
-
- # The root item is ready. Associate it with the window.
- self.m_rootItem.setParentItem(self.m_quickWindow.contentItem())
-
- # Update item and rendering related geometries.
- self.updateSizes()
-
- # Initialize the render control and our OpenGL resources.
- self.m_context.makeCurrent(self.m_offscreenSurface)
- self.m_device = QQuickGraphicsDevice.fromOpenGLContext(self.m_context)
- self.m_quickWindow.setGraphicsDevice(self.m_device)
- self.m_renderControl.initialize()
- self.m_quickInitialized = True
-
- def updateSizes(self):
- # Behave like SizeRootObjectToView.
- w = self.width()
- h = self.height()
- self.m_rootItem.setWidth(w)
- self.m_rootItem.setHeight(h)
- self.m_quickWindow.setGeometry(0, 0, w, h)
- self.m_cubeRenderer.resize(w, h)
-
- def startQuick(self, filename):
- url = QUrl.fromLocalFile(filename)
- self.m_qmlComponent = QQmlComponent(self.m_qmlEngine, url)
- if self.m_qmlComponent.isLoading():
- self.m_status_conn_id = self.m_qmlComponent.statusChanged.connect(self.run)
- else:
- self.run()
-
- def exposeEvent(self, event):
- if self.isExposed() and not self.m_quickInitialized:
- texture_id = self.texture_id() if self.m_quickReady else 0
- self.m_cubeRenderer.render(self, self.m_context, texture_id)
- qml_file = Path(__file__).parent / "demo.qml"
- self.startQuick(qml_file)
-
- def resizeTexture(self):
- if self.m_rootItem and self.m_context.makeCurrent(self.m_offscreenSurface):
- self.m_context.functions().glDeleteTextures(1, self.m_texture_ids)
- self.set_texture_id(0)
- self.createTexture()
- self.m_context.doneCurrent()
- self.updateSizes()
- self.render()
-
- def resizeEvent(self, event):
- # If self is a resize after the scene is up and running, recreate the
- # texture and the Quick item and scene.
- if (self.texture_id()
- and self.m_textureSize != self.size() * self.devicePixelRatio()):
- self.resizeTexture()
-
- @Slot()
- def handleScreenChange(self):
- if self.m_dpr != self.devicePixelRatio():
- self.resizeTexture()
-
- def mousePressEvent(self, e):
- # Use the constructor taking position and globalPosition. That puts
- # position into the event's position and scenePosition, and
- # globalPosition into the event's globalPosition. This way the
- # scenePosition in `e` is ignored and is replaced by position.
- # This is necessary because QQuickWindow thinks of itself as
- # a top-level window always.
- mappedEvent = QMouseEvent(e.type(), e.position(), e.globalPosition(),
- e.button(), e.buttons(), e.modifiers())
- QCoreApplication.sendEvent(self.m_quickWindow, mappedEvent)
-
- def mouseReleaseEvent(self, e):
- mappedEvent = QMouseEvent(e.type(), e.position(), e.globalPosition(),
- e.button(), e.buttons(), e.modifiers())
- QCoreApplication.sendEvent(self.m_quickWindow, mappedEvent)
diff --git a/examples/declarative/shared/Button.qml b/examples/declarative/shared/Button.qml
deleted file mode 100644
index bee0ae28e..000000000
--- a/examples/declarative/shared/Button.qml
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.12
-import QtQuick.Window 2.1
-
-Item {
- id: container
-
- property alias text: buttonLabel.text
- property alias label: buttonLabel
- signal clicked
- property alias containsMouse: hoverHandler.hovered
- property alias pressed: tapHandler.pressed
- implicitHeight: Math.max(Screen.pixelDensity * 7, buttonLabel.implicitHeight * 1.2)
- implicitWidth: Math.max(Screen.pixelDensity * 11, buttonLabel.implicitWidth * 1.3)
- height: implicitHeight
- width: implicitWidth
-
- SystemPalette { id: palette }
-
- Rectangle {
- id: frame
- anchors.fill: parent
- color: palette.button
- gradient: Gradient {
- GradientStop { position: 0.0; color: tapHandler.pressed ? Qt.darker(palette.button, 1.3) : palette.button }
- GradientStop { position: 1.0; color: Qt.darker(palette.button, 1.3) }
- }
- antialiasing: true
- radius: height / 6
- border.color: Qt.darker(palette.button, 1.5)
- border.width: 1
- }
-
- TapHandler {
- id: tapHandler
- onTapped: container.clicked();
- }
- HoverHandler {
- id: hoverHandler
- }
-
- Text {
- id: buttonLabel
- text: container.text
- color: palette.buttonText
- anchors.centerIn: parent
- }
-}
diff --git a/examples/declarative/shared/CheckBox.qml b/examples/declarative/shared/CheckBox.qml
deleted file mode 100644
index ed93d708d..000000000
--- a/examples/declarative/shared/CheckBox.qml
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.12
-
-Item {
- id: root
- implicitHeight: frame.height
- implicitWidth: row.implicitWidth
- width: implicitWidth
- height: implicitHeight
- property alias text: label.text
- property bool checked
- property alias pressed: tapHandler.pressed
- property alias row: row
- signal clicked
-
- SystemPalette { id: palette }
-
- Row {
- id: row
- anchors.verticalCenter: parent.verticalCenter
- spacing: 6
- Rectangle {
- id: frame
- gradient: Gradient {
- GradientStop { position: 0.0; color: tapHandler.pressed ? Qt.darker(palette.button, 1.3) : palette.button }
- GradientStop { position: 1.0; color: Qt.darker(palette.button, 1.3) }
- }
- height: label.implicitHeight * 1.5
- width: height
- anchors.margins: 1
- radius: 3
- antialiasing: true
- border.color: Qt.darker(palette.button, 1.5)
- Image {
- id: theX
- source: "images/checkmark.png"
- anchors.fill: frame
- anchors.margins: frame.width / 5
- fillMode: Image.PreserveAspectFit
- smooth: true
- visible: root.checked
- }
- }
- Text {
- id: label
- color: palette.text
- anchors.verticalCenter: frame.verticalCenter
- }
- }
- TapHandler {
- id: tapHandler
- onTapped: {
- parent.checked = !parent.checked
- parent.clicked()
- }
- }
-}
diff --git a/examples/declarative/shared/FlickrRssModel.qml b/examples/declarative/shared/FlickrRssModel.qml
deleted file mode 100644
index 66f53b8ef..000000000
--- a/examples/declarative/shared/FlickrRssModel.qml
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.12
-
-ListModel {
- id: flickrImages
- property string tags : ""
- readonly property string queryUrl : "http://api.flickr.com/services/feeds/photos_public.gne?"
-
- function encodeParams(x) {
- return encodeURIComponent(x.replace(" ",","));
- }
- function fetchImages(format) {
- var requestURL = queryUrl + (tags ? "tags="+encodeParams(tags)+"&" : "") + "format=" + format + "&nojsoncallback=1";
- var xhr = new XMLHttpRequest;
- xhr.onreadystatechange = function() {
- if (xhr.readyState === XMLHttpRequest.DONE) {
-
- if (xhr.status !== 200) {
- console.log("Failed to get images from flickr. status code: " + xhr.status);
- return;
- }
-
- var jsonText = xhr.responseText;
- var objArray = JSON.parse(jsonText.replace(/\'/g,"'"))
- if (objArray.errors !== undefined)
- console.log("Error fetching tweets: " + objArray.errors[0].message)
- else {
- for (var key in objArray.items) {
- var rssItem = objArray.items[key];
- var jsonObject = "{ \"title\": \"" + rssItem.title +"\",\"media\": \"" + rssItem.media.m + "\", \"thumbnail\": \"" + rssItem.media.m.replace(/\_m\.jpg/,"_s.jpg") +"\"}"
- flickrImages.append(JSON.parse(jsonObject));
- }
- }
- }
- }
- xhr.open("GET", requestURL, true);
- xhr.send();
- }
- Component.onCompleted: {
- fetchImages("json");
- }
-}
-
diff --git a/examples/declarative/shared/Images.qml b/examples/declarative/shared/Images.qml
deleted file mode 100644
index ade3619d8..000000000
--- a/examples/declarative/shared/Images.qml
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-pragma Singleton
-import QtQml
-
-QtObject {
- readonly property url back: Qt.resolvedUrl("images/back.png")
- readonly property url checkmark: Qt.resolvedUrl("images/checkmark.png")
- readonly property url next: Qt.resolvedUrl("images/next.png")
- readonly property url qtLogo: Qt.resolvedUrl("images/qt-logo.png")
- readonly property url sliderHandle: Qt.resolvedUrl("images/slider_handle.png")
- readonly property url tab: Qt.resolvedUrl("images/tab.png")
-}
diff --git a/examples/declarative/shared/Label.qml b/examples/declarative/shared/Label.qml
deleted file mode 100644
index 77ec53f5c..000000000
--- a/examples/declarative/shared/Label.qml
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.0
-
-Text {
- SystemPalette { id: palette }
- color: palette.text
-}
diff --git a/examples/declarative/shared/LauncherList.qml b/examples/declarative/shared/LauncherList.qml
deleted file mode 100644
index 323ed529f..000000000
--- a/examples/declarative/shared/LauncherList.qml
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright (C) 2017 Crimson AS <info@crimson.no>
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQml 2.12
-import QtQml.Models 2.12
-import QtQuick 2.12
-
-Rectangle {
- id: root
- property int activePageCount: 0
-
- //model is a list of {"name":"somename", "url":"file:///some/url/mainfile.qml"}
- //function used to add to model A) to enforce scheme B) to allow Qt.resolveUrl in url assignments
-
- color: "#eee"
- function addExample(name, desc, url) {
- myModel.append({"name":name, "description":desc, "url":url})
- }
- function showExample(url) {
- pageComponent.createObject(pageContainer, { exampleUrl: url }).show()
- }
-
- // The container rectangle here is used to give a nice "feel" when
- // transitioning into an example.
- Rectangle {
- anchors.fill: parent
- color: "black"
-
- ListView {
- id: launcherList
- clip: true
- delegate: SimpleLauncherDelegate{
- required property url url
- onClicked: root.showExample(url)
- }
- model: ListModel {id:myModel}
- anchors.fill: parent
- enabled: opacity == 1.0
- }
- }
-
- Item {
- id: pageContainer
- anchors.fill: parent
- }
-
- Component {
- id: pageComponent
- Rectangle {
- id: page
- clip: true
- property url exampleUrl
- width: parent.width
- height: parent.height - bar.height
- color: "white"
- TapHandler {
- //Eats mouse events
- }
- Loader{
- focus: true
- source: parent.exampleUrl
- anchors.fill: parent
- }
-
- function show() {
- showAnim.start()
- }
-
- function exit() {
- exitAnim.start()
- }
-
- ParallelAnimation {
- id: showAnim
- ScriptAction {
- script: root.activePageCount++
- }
- NumberAnimation {
- target: launcherList
- property: "opacity"
- from: 1.0
- to: 0.0
- duration: 500
- }
- NumberAnimation {
- target: launcherList
- property: "scale"
- from: 1.0
- to: 0.0
- duration: 500
- }
- NumberAnimation {
- target: page
- property: "x"
- from: -page.width
- to: 0
- duration: 300
- }
- }
- SequentialAnimation {
- id: exitAnim
-
- ScriptAction {
- script: root.activePageCount--
- }
-
- ParallelAnimation {
- NumberAnimation {
- target: launcherList
- property: "opacity"
- from: 0.0
- to: 1.0
- duration: 300
- }
- NumberAnimation {
- target: launcherList
- property: "scale"
- from: 0.0
- to: 1.0
- duration: 300
- }
- NumberAnimation {
- target: page
- property: "x"
- from: 0
- to: -page.width
- duration: 300
- }
- }
-
- ScriptAction {
- script: page.destroy()
- }
- }
- }
- }
- Rectangle {
- id: bar
- visible: height > 0
- anchors.bottom: parent.bottom
- width: parent.width
- height: root.activePageCount > 0 ? 40 : 0
-
- Behavior on height {
- NumberAnimation {
- duration: 300
- }
- }
-
- Rectangle {
- height: 1
- color: "#ccc"
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.right: parent.right
- }
-
- Rectangle {
- height: 1
- color: "#fff"
- anchors.top: parent.top
- anchors.topMargin: 1
- anchors.left: parent.left
- anchors.right: parent.right
- }
-
- gradient: Gradient {
- GradientStop { position: 0 ; color: "#eee" }
- GradientStop { position: 1 ; color: "#ccc" }
- }
-
- Image {
- id: back
- source: "images/back.png"
- anchors.verticalCenter: parent.verticalCenter
- anchors.verticalCenterOffset: 2
- anchors.left: parent.left
- anchors.leftMargin: 16
-
- TapHandler {
- id: tapHandler
- enabled: root.activePageCount > 0
- onTapped: {
- pageContainer.children[pageContainer.children.length - 1].exit()
- }
- }
- Rectangle {
- anchors.centerIn: back
- width: 38
- height: 31
- anchors.verticalCenterOffset: -1
- opacity: tapHandler.pressed ? 1 : 0
- Behavior on opacity { NumberAnimation{ duration: 100 }}
- gradient: Gradient {
- GradientStop { position: 0 ; color: "#22000000" }
- GradientStop { position: 0.2 ; color: "#11000000" }
- }
- border.color: "darkgray"
- antialiasing: true
- radius: 4
- }
- }
- }
-}
diff --git a/examples/declarative/shared/README b/examples/declarative/shared/README
deleted file mode 100644
index 2bf26d7c8..000000000
--- a/examples/declarative/shared/README
+++ /dev/null
@@ -1,11 +0,0 @@
-These files are shared between multiple examples as a set of common and
-reusuable components. While they do demonstrate the building of reusable
-components in QML, they are not official examples themselves.
-Consequently they do not have entries in the Qt documentation, and are
-documented only through the code comments within the files. Developers
-new to QML are strongly encouraged to go through the official examples
-before delving into this directory.
-
-For most application use, see the Qt Quick Components project to find
-ready-made Components you can use in your own projects. Qt Quick
-examples do not use them only to avoid external dependencies.
diff --git a/examples/declarative/shared/SimpleLauncherDelegate.qml b/examples/declarative/shared/SimpleLauncherDelegate.qml
deleted file mode 100644
index 68860edbc..000000000
--- a/examples/declarative/shared/SimpleLauncherDelegate.qml
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-import QtQuick 2.12
-
-Rectangle {
- id: container
- required property string name
- required property string description
-
- property Item exampleItem
- width: ListView.view.width
- height: button.implicitHeight + 22
-
- signal clicked()
-
- gradient: Gradient {
- GradientStop {
- position: 0
- Behavior on color {ColorAnimation { duration: 100 }}
- color: tapHandler.pressed ? "#e0e0e0" : "#fff"
- }
- GradientStop {
- position: 1
- Behavior on color {ColorAnimation { duration: 100 }}
- color: tapHandler.pressed ? "#e0e0e0" : button.containsMouse ? "#f5f5f5" : "#eee"
- }
- }
-
- Image {
- id: image
- opacity: 0.7
- Behavior on opacity {NumberAnimation {duration: 100}}
- source: "images/next.png"
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.right
- anchors.rightMargin: 16
- }
-
- Item {
- id: button
- anchors.top: parent.top
- anchors.left: parent.left
- anchors.bottom: parent.bottom
- anchors.right:image.left
- implicitHeight: col.height
- height: implicitHeight
- width: buttonLabel.width + 20
- property alias containsMouse: hoverHandler.hovered
-
- TapHandler {
- id: tapHandler
- onTapped: container.clicked()
- }
- HoverHandler {
- id: hoverHandler
- }
-
- Column {
- spacing: 2
- id: col
- anchors.verticalCenter: parent.verticalCenter
- width: parent.width
- Text {
- id: buttonLabel
- anchors.left: parent.left
- anchors.leftMargin: 10
- anchors.right: parent.right
- anchors.rightMargin: 10
- text: container.name
- color: "black"
- font.pixelSize: 22
- wrapMode: Text.WrapAtWordBoundaryOrAnywhere
- styleColor: "white"
- style: Text.Raised
-
- }
- Text {
- id: buttonLabel2
- anchors.left: parent.left
- anchors.leftMargin: 10
- text: container.description
- wrapMode: Text.WrapAtWordBoundaryOrAnywhere
- color: "#666"
- font.pixelSize: 12
- }
- }
- }
-
- Rectangle {
- height: 1
- color: "#ccc"
- anchors.bottom: parent.bottom
- anchors.left: parent.left
- anchors.right: parent.right
- }
-}
diff --git a/examples/declarative/shared/Slider.qml b/examples/declarative/shared/Slider.qml
deleted file mode 100644
index 7b331ab1c..000000000
--- a/examples/declarative/shared/Slider.qml
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.12
-
-Item {
- id: slider
- height: 26
- // default drag range is 180: divisible by 2, 3, 4, 5, 6, 9, 10, ...
- width: sliderName.width + 223 + handle.width / 2
-
- property real min: 0
- property real max: 1
- property real value: min + (max - min) * dragHandler.value
- property real init: min+(max-min)/2
- property string name: "Slider"
- property color color: "#0066cc"
- property real minLabelWidth: 44
-
- DragHandler {
- id: dragHandler
- target: handle
- xAxis.minimum: Math.round(-handle.width / 2 + 3)
- xAxis.maximum: Math.round(groove.width - handle.width / 2 - 3)
- property real value: (handle.x - xAxis.minimum) / (xAxis.maximum - xAxis.minimum)
- }
-
- Component.onCompleted: setValue(init)
- function setValue(v) {
- if (min < max) {
- handle.x = Math.round( v / (max - min) *
- (dragHandler.xAxis.maximum - dragHandler.xAxis.minimum)
- + dragHandler.xAxis.minimum);
-// console.log(name, v, "-> handle.x", handle.x, "from fraction", (v / (max - min)),
-// "of drag range", (dragHandler.xAxis.maximum - dragHandler.xAxis.minimum), "px", min, ":", max)
- }
- }
- Rectangle {
- id:sliderName
- anchors.left: parent.left
- anchors.leftMargin: 16
- height: childrenRect.height
- width: Math.max(slider.minLabelWidth, childrenRect.width)
- anchors.verticalCenter: parent.verticalCenter
- Text {
- text: slider.name + ":"
- font.pointSize: 12
- color: "#333"
- }
- }
-
- Rectangle {
- id: groove
- width: parent.width - 8 - sliderName.width
- color: "#eee"
- height: 7
- radius: 3
- antialiasing: true
- border.color: Qt.darker(color, 1.2)
- anchors.left: sliderName.right
- anchors.right: parent.right
- anchors.leftMargin: 10
- anchors.rightMargin: 24
- anchors.verticalCenter: parent.verticalCenter
-
- Rectangle {
- height: parent.height
- anchors.left: parent.left
- anchors.right: handle.horizontalCenter
- color: slider.color
- radius: 3
- border.width: 1
- border.color: Qt.darker(color, 1.3)
- opacity: 0.8
- }
- Image {
- id: handle
- source: "images/slider_handle.png"
- anchors.verticalCenter: parent.verticalCenter
- }
- }
-}
diff --git a/examples/declarative/shared/TabSet.qml b/examples/declarative/shared/TabSet.qml
deleted file mode 100644
index 633521af8..000000000
--- a/examples/declarative/shared/TabSet.qml
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.12
-import QtQuick.Window 2.1
-
-Item {
- id: tabWidget
-
- // Setting the default property to stack.children means any child items
- // of the TabWidget are actually added to the 'stack' item's children.
- // See the "Property Binding"
- // documentation for details on default properties.
- default property alias content: stack.children
-
- property int current: 0
-
- onCurrentChanged: setZOrders()
- Component.onCompleted: setZOrders()
-
- function setZOrders() {
- for (var i = 0; i < stack.children.length; ++i) {
- stack.children[i].z = (i == current ? 1 : 0)
- stack.children[i].enabled = (i == current)
- }
- }
-
- Row {
- id: header
-
- Repeater {
- model: stack.children.length
- delegate: Rectangle {
- required property int index
- width: tabWidget.width / stack.children.length
- height: Math.max(Screen.pixelDensity * 7, label.implicitHeight * 1.2)
-
- Rectangle {
- width: parent.width; height: 1
- anchors { bottom: parent.bottom; bottomMargin: 1 }
- color: "#acb2c2"
- }
- BorderImage {
- anchors { fill: parent; leftMargin: 2; topMargin: 5; rightMargin: 1 }
- border { left: 7; right: 7 }
- source: "images/tab.png"
- visible: tabWidget.current == parent.index
- }
- Text {
- id: label
- horizontalAlignment: Qt.AlignHCenter; verticalAlignment: Qt.AlignVCenter
- anchors.fill: parent
- text: stack.children[parent.index].title
- elide: Text.ElideRight
- font.bold: tabWidget.current == parent.index
- }
- TapHandler {
- onTapped: tabWidget.current = parent.index
- }
- }
- }
- }
-
- Item {
- id: stack
- width: tabWidget.width
- anchors.top: header.bottom; anchors.bottom: tabWidget.bottom
- }
-}
diff --git a/examples/declarative/shared/TextField.qml b/examples/declarative/shared/TextField.qml
deleted file mode 100644
index 01addb2e9..000000000
--- a/examples/declarative/shared/TextField.qml
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (C) 2017 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick 2.1
-
-Item {
- id: root
-
- property alias textInput: textInput
- property alias text: textInput.text
- signal accepted
- signal downPressed
- implicitWidth: textInput.implicitWidth + rect.radius * 2
- implicitHeight: textInput.implicitHeight
-
- function copyAll() {
- textInput.selectAll()
- textInput.copy()
- }
-
- SystemPalette { id: palette }
- height: textInput.implicitHeight + 8
- clip: true
-
- Rectangle {
- id: rect
- anchors.fill: parent
- radius: height / 4
- color: palette.button
- border.color: Qt.darker(palette.button, 1.5)
- }
-
- TextInput {
- id: textInput
- color: palette.text
- anchors.fill: parent
- anchors.leftMargin: rect.radius
- anchors.rightMargin: rect.radius
- verticalAlignment: Text.AlignVCenter
- onAccepted: root.accepted()
- Keys.onDownPressed: root.downPressed()
- }
-}
diff --git a/examples/declarative/shared/images/back.png b/examples/declarative/shared/images/back.png
deleted file mode 100644
index 53402096b..000000000
--- a/examples/declarative/shared/images/back.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/shared/images/checkmark.png b/examples/declarative/shared/images/checkmark.png
deleted file mode 100644
index 821aafccd..000000000
--- a/examples/declarative/shared/images/checkmark.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/shared/images/next.png b/examples/declarative/shared/images/next.png
deleted file mode 100644
index cdef8db6e..000000000
--- a/examples/declarative/shared/images/next.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/shared/images/qt-logo.png b/examples/declarative/shared/images/qt-logo.png
deleted file mode 100644
index 30c621c9c..000000000
--- a/examples/declarative/shared/images/qt-logo.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/shared/images/slider_handle.png b/examples/declarative/shared/images/slider_handle.png
deleted file mode 100644
index 63c518be7..000000000
--- a/examples/declarative/shared/images/slider_handle.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/shared/images/tab.png b/examples/declarative/shared/images/tab.png
deleted file mode 100644
index 2ea989b68..000000000
--- a/examples/declarative/shared/images/tab.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/shared/qmldir b/examples/declarative/shared/qmldir
deleted file mode 100644
index 5ccdf6021..000000000
--- a/examples/declarative/shared/qmldir
+++ /dev/null
@@ -1,11 +0,0 @@
-module shared
-Button 2.0 Button.qml
-CheckBox 2.1 CheckBox.qml
-FlickrRssModel 2.0 FlickrRssModel.qml
-Label 2.0 Label.qml
-LauncherList 2.0 LauncherList.qml
-SimpleLauncherDelegate 2.0 SimpleLauncherDelegate.qml
-Slider 2.0 Slider.qml
-TabSet 2.1 TabSet.qml
-TextField 2.1 TextField.qml
-singleton Images 2.2 Images.qml
diff --git a/examples/declarative/shared/quick_shared.qrc b/examples/declarative/shared/quick_shared.qrc
deleted file mode 100644
index 21f393a64..000000000
--- a/examples/declarative/shared/quick_shared.qrc
+++ /dev/null
@@ -1,15 +0,0 @@
-<RCC>
- <qresource prefix="/quick/shared">
- <file>LauncherList.qml</file>
- <file>SimpleLauncherDelegate.qml</file>
- <file>Button.qml</file>
- <file>CheckBox.qml</file>
- <file>Label.qml</file>
- <file>TextField.qml</file>
- <file>images/back.png</file>
- <file>images/next.png</file>
- <file>images/checkmark.png</file>
- <file>Slider.qml</file>
- <file>images/slider_handle.png</file>
- </qresource>
-</RCC>
diff --git a/examples/declarative/shared/shared.qrc b/examples/declarative/shared/shared.qrc
deleted file mode 100644
index c19063a58..000000000
--- a/examples/declarative/shared/shared.qrc
+++ /dev/null
@@ -1,21 +0,0 @@
-<RCC>
- <qresource prefix="/shared">
- <file>Button.qml</file>
- <file>CheckBox.qml</file>
- <file>FlickrRssModel.qml</file>
- <file>Images.qml</file>
- <file>Label.qml</file>
- <file>LauncherList.qml</file>
- <file>SimpleLauncherDelegate.qml</file>
- <file>Slider.qml</file>
- <file>TabSet.qml</file>
- <file>TextField.qml</file>
- <file>images/back.png</file>
- <file>images/checkmark.png</file>
- <file>images/next.png</file>
- <file>images/qt-logo.png</file>
- <file>images/slider_handle.png</file>
- <file>images/tab.png</file>
- <file>qmldir</file>
- </qresource>
-</RCC>
diff --git a/examples/declarative/shared/shared_rc.py b/examples/declarative/shared/shared_rc.py
deleted file mode 100644
index 97e5ecb87..000000000
--- a/examples/declarative/shared/shared_rc.py
+++ /dev/null
@@ -1,1884 +0,0 @@
-# Resource object code (Python 3)
-# Created by: object code
-# Created by: The Resource Compiler for Qt version 6.5.0
-# WARNING! All changes made in this file will be lost!
-
-from PySide6 import QtCore
-
-qt_resource_data = b"\
-\x00\x00\x06\x9b\
-/\
-/ Copyright (C) \
-2017 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick 2.\
-12\x0a\x0aItem {\x0a i\
-d: root\x0a impl\
-icitHeight: fram\
-e.height\x0a imp\
-licitWidth: row.\
-implicitWidth\x0a \
- width: implici\
-tWidth\x0a heigh\
-t: implicitHeigh\
-t\x0a property a\
-lias text: label\
-.text\x0a proper\
-ty bool checked\x0a\
- property ali\
-as pressed: tapH\
-andler.pressed\x0a \
- property alia\
-s row: row\x0a s\
-ignal clicked\x0a\x0a \
- SystemPalette\
- { id: palette }\
-\x0a\x0a Row {\x0a \
- id: row\x0a \
- anchors.vert\
-icalCenter: pare\
-nt.verticalCente\
-r\x0a spacin\
-g: 6\x0a Rec\
-tangle {\x0a \
- id: frame\x0a \
- gradi\
-ent: Gradient {\x0a\
- \
-GradientStop { p\
-osition: 0.0; co\
-lor: tapHandler.\
-pressed ? Qt.dar\
-ker(palette.butt\
-on, 1.3) : palet\
-te.button }\x0a \
- Grad\
-ientStop { posit\
-ion: 1.0; color:\
- Qt.darker(palet\
-te.button, 1.3) \
-}\x0a }\x0a\
- heig\
-ht: label.implic\
-itHeight * 1.5\x0a \
- width\
-: height\x0a \
- anchors.mar\
-gins: 1\x0a \
- radius: 3\x0a \
- antial\
-iasing: true\x0a \
- border.\
-color: Qt.darker\
-(palette.button,\
- 1.5)\x0a \
- Image {\x0a \
- id: th\
-eX\x0a \
- source: \x22imag\
-es/checkmark.png\
-\x22\x0a \
- anchors.fill: \
-frame\x0a \
- anchors.ma\
-rgins: frame.wid\
-th / 5\x0a \
- fillMode:\
- Image.PreserveA\
-spectFit\x0a \
- smooth:\
- true\x0a \
- visible: r\
-oot.checked\x0a \
- }\x0a \
- }\x0a Text\
- {\x0a i\
-d: label\x0a \
- color: pale\
-tte.text\x0a \
- anchors.ver\
-ticalCenter: fra\
-me.verticalCente\
-r\x0a }\x0a \
-}\x0a TapHandler\
- {\x0a id: t\
-apHandler\x0a \
- onTapped: {\x0a \
- parent\
-.checked = !pare\
-nt.checked\x0a \
- parent.cl\
-icked()\x0a \
-}\x0a }\x0a}\x0a\
-\x00\x00\x04\x1c\
-/\
-/ Copyright (C) \
-2017 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick 2.\
-1\x0a\x0aItem {\x0a id\
-: root\x0a\x0a prop\
-erty alias textI\
-nput: textInput\x0a\
- property ali\
-as text: textInp\
-ut.text\x0a sign\
-al accepted\x0a \
-signal downPress\
-ed\x0a implicitW\
-idth: textInput.\
-implicitWidth + \
-rect.radius * 2\x0a\
- implicitHeig\
-ht: textInput.im\
-plicitHeight\x0a\x0a \
- function copyA\
-ll() {\x0a t\
-extInput.selectA\
-ll()\x0a tex\
-tInput.copy()\x0a \
- }\x0a\x0a SystemP\
-alette { id: pal\
-ette }\x0a heigh\
-t: textInput.imp\
-licitHeight + 8\x0a\
- clip: true\x0a\x0a\
- Rectangle {\x0a\
- id: rect\
-\x0a anchors\
-.fill: parent\x0a \
- radius: he\
-ight / 4\x0a \
- color: palette.\
-button\x0a b\
-order.color: Qt.\
-darker(palette.b\
-utton, 1.5)\x0a \
-}\x0a\x0a TextInput\
- {\x0a id: t\
-extInput\x0a \
- color: palette.\
-text\x0a anc\
-hors.fill: paren\
-t\x0a anchor\
-s.leftMargin: re\
-ct.radius\x0a \
- anchors.rightM\
-argin: rect.radi\
-us\x0a verti\
-calAlignment: Te\
-xt.AlignVCenter\x0a\
- onAccept\
-ed: root.accepte\
-d()\x0a Keys\
-.onDownPressed: \
-root.downPressed\
-()\x0a }\x0a}\x0a\
-\x00\x00\x00\xc7\
-/\
-/ Copyright (C) \
-2017 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick 2.\
-0\x0a\x0aText {\x0a Sy\
-stemPalette { id\
-: palette }\x0a \
-color: palette.t\
-ext\x0a}\x0a\
-\x00\x00\x0ax\
-/\
-/ Copyright (C) \
-2017 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0aim\
-port QtQuick 2.1\
-2\x0a\x0aRectangle {\x0a \
- id: container\
-\x0a required pr\
-operty string na\
-me\x0a required \
-property string \
-description\x0a\x0a \
- property Item e\
-xampleItem\x0a w\
-idth: ListView.v\
-iew.width\x0a he\
-ight: button.imp\
-licitHeight + 22\
-\x0a\x0a signal cli\
-cked()\x0a\x0a grad\
-ient: Gradient {\
-\x0a Gradien\
-tStop {\x0a \
- position: 0\x0a\
- Beha\
-vior on color {C\
-olorAnimation { \
-duration: 100 }}\
-\x0a col\
-or: tapHandler.p\
-ressed ? \x22#e0e0e\
-0\x22 : \x22#fff\x22\x0a \
- }\x0a Gr\
-adientStop {\x0a \
- positio\
-n: 1\x0a \
- Behavior on col\
-or {ColorAnimati\
-on { duration: 1\
-00 }}\x0a \
- color: tapHand\
-ler.pressed ? \x22#\
-e0e0e0\x22 : button\
-.containsMouse ?\
- \x22#f5f5f5\x22 : \x22#e\
-ee\x22\x0a }\x0a \
- }\x0a\x0a Image {\
-\x0a id: ima\
-ge\x0a opaci\
-ty: 0.7\x0a \
-Behavior on opac\
-ity {NumberAnima\
-tion {duration: \
-100}}\x0a so\
-urce: \x22images/ne\
-xt.png\x22\x0a \
-anchors.vertical\
-Center: parent.v\
-erticalCenter\x0a \
- anchors.ri\
-ght: parent.righ\
-t\x0a anchor\
-s.rightMargin: 1\
-6\x0a }\x0a\x0a Ite\
-m {\x0a id: \
-button\x0a a\
-nchors.top: pare\
-nt.top\x0a a\
-nchors.left: par\
-ent.left\x0a \
- anchors.bottom:\
- parent.bottom\x0a \
- anchors.r\
-ight:image.left\x0a\
- implicit\
-Height: col.heig\
-ht\x0a heigh\
-t: implicitHeigh\
-t\x0a width:\
- buttonLabel.wid\
-th + 20\x0a \
-property alias c\
-ontainsMouse: ho\
-verHandler.hover\
-ed\x0a\x0a TapH\
-andler {\x0a \
- id: tapHand\
-ler\x0a \
-onTapped: contai\
-ner.clicked()\x0a \
- }\x0a \
-HoverHandler {\x0a \
- id: h\
-overHandler\x0a \
- }\x0a\x0a C\
-olumn {\x0a \
- spacing: 2\x0a \
- id: c\
-ol\x0a a\
-nchors.verticalC\
-enter: parent.ve\
-rticalCenter\x0a \
- width: \
-parent.width\x0a \
- Text {\x0a\
- \
-id: buttonLabel\x0a\
- \
-anchors.left: pa\
-rent.left\x0a \
- anchor\
-s.leftMargin: 10\
-\x0a \
- anchors.right: \
-parent.right\x0a \
- anc\
-hors.rightMargin\
-: 10\x0a \
- text: conta\
-iner.name\x0a \
- color:\
- \x22black\x22\x0a \
- font.pi\
-xelSize: 22\x0a \
- wrap\
-Mode: Text.WrapA\
-tWordBoundaryOrA\
-nywhere\x0a \
- styleCol\
-or: \x22white\x22\x0a \
- styl\
-e: Text.Raised\x0a\x0a\
- }\x0a \
- Text {\
-\x0a \
- id: buttonLabel\
-2\x0a \
- anchors.left: \
-parent.left\x0a \
- anch\
-ors.leftMargin: \
-10\x0a \
- text: contain\
-er.description\x0a \
- w\
-rapMode: Text.Wr\
-apAtWordBoundary\
-OrAnywhere\x0a \
- color\
-: \x22#666\x22\x0a \
- font.pi\
-xelSize: 12\x0a \
- }\x0a \
- }\x0a }\x0a\x0a R\
-ectangle {\x0a \
- height: 1\x0a \
- color: \x22#cc\
-c\x22\x0a ancho\
-rs.bottom: paren\
-t.bottom\x0a \
- anchors.left: p\
-arent.left\x0a \
- anchors.right\
-: parent.right\x0a \
- }\x0a}\x0a\
-\x00\x00\x05\xac\
-\x00\
-\x00\x16\xecx\x9c\xd5\x18ko\xdb6\xf0\xbb\x7f\x05\xa1\
-~q\xd0X\xb2\x9d\xee\x01om\x97\xbaE\x17 ]\
-\x93\xba\x1b\x06\x0c\xfb@K'\x9b\xabD\xaa\x14\x9d4\
-\x08\xfc\xdfwG\x89\xaai\xc9\x8f\xb6\xeb\x80\x1e\x90X\
-<\xde\x1d\xef\xad\xa3\xa2\x88MUq\xa7\xc5biX\
-\x7fz\xc2\xc6\xc3\xd1\x0fl\xaaE^*\xc9\xceg\xec\
-g!S\xf5K\x5c!B\xa9\x9e\xf4\xa2N\x96\xb7K\
-`\xd7\x06w\xf2\x82\xcb;vi\x92\x90(gW\xcf\
-\xff\x1c\x5c\x8a\x18d\x09\x83\x8b\x04\xa4\x11\xa9\x00=a\
-5\xee\x0d\xa4\x83k3@\xb6\x1ct,x\xc6^\xbf\
-a\xcff\xcf\x07g\x83i\xc6W%\xf4z\x22/\x94\
-6(\xfc:\xcf\xd88\x1c\x8d=L\xf8J%\x90\x95\
-\xdb\x1b+\x11\xbf\xabp\xbd7\x10\x1b.\x17\x19\xb0\xfb\
-\x1eC\x10\xc9\x84i\xa5\x8c]\x14Z\x15\xa0\xcd\x1d\x13\
-\xd20\x1e\x1bq\x03W|\x01S\xb5\x92f\xc2\x86=\
-K\x14E9\x1d\xc2D\xc98\xcbDi\x98J\xd9}\
- y\x0e\xc1$(U\x0e\xf6\xf1\x94\x05+\x9d!&\
-\x15\x19L\xa2(\xa2\x9d\x08QQ\xce\xd1\x8b\x88\x0c\xdf\
-\xe7Y\xb0\xaee\xa6+\x89\xe7\xa1\x97\xd1\xca\x84\x19\xc5\
-xb\x7f\xaa\xb3\xceO\xe8\x19\xd0\xf9:\x06V\xc6K\
-\xc8\x81=\xb3H\x9ee\xea\x16\x8d\x0c5\x94*\xbb\x81\
-\xdf5\xaa\x86b\xf0\x87\x97\xa5XH\xd4\xc7\x94\x95\xea\
-\xb1\xca\x14z;x\x00\x00\x81\xc54\xc7\xe2q/>\
-\xf0\xbc\xc8\xa0O\xea\x9f\xb2\x04\xca\xf8\x94\xc4\x9c\xd4\x9e\
-\x22\xc8\xef\xac\x83C^\x14 \x93\xbe\xb3\xba\xe2\x08\x88\
-E\x8b\x82\xe4\x05\x93\x8a\xbf\xf2\x01\xfe[\x9fX!k\
-\xff\xd4r\xa9n\xdd\xb1[G\x15\xd6\xf1\x18B\x89\xfa\
-\x87\xb1\x06n\xe0\xf5\xfc\x1f\x0c_\xbf\xda\x92\x06\xfd\x08\
-\xfa\x94\xdd3\xa8D\xa0\xe9\x13k\xf8\xfa$$\xc9}\
-wf\xedc\x9b\x96\xb1cd\xbaI\x85%h\xa0x\
-:\xdf/0\xf0\x18\x5c\x89Y\xc9\x82\x14 \x0b\xd8\xed\
-\x12\xa4\x13c4\x97\xa5 \x03\x84\x5cP\xae`\x14\xa4\
-S\x22\xb4T\xdbiF\xc0e\xbcT\xba\x0c1\xf6\xa8\
-g\xc15\x1a\xd6l\xba\xd0\xcc3\x1e\xbf\x0bz\x0d\xfe\
-\x12\x13\xec\x0f\x01\xb7\x1br\x5c\xdabE\xa0D\xd0D\
-\xe2m\xc6\x99(&\xa8\xe5\x0a<4\x06\x0e\x16\xe8\xc5\
-\x09\x9b\x09\xd2\xf4\xb2\xe6\x7f^\xe3\xfd\x13\x084\xbc_\
-\x09\x8d>i\x0a\x83\xbc\x8b\x7f-J%\xa7\x19\x16\x19\
-\xd4\xd5\x14n\x07\xd6cX{+\x9b\xe1\x13k\xa8M\
-.v\x8f\xc6\xd5\x89\xe6S\xeeu \x01V\xde<#\
-\x1dT\xc1c\x81\xea>~\xccF\xe1\xb0\xa1Yo\xe6\
-\xc3\x85\x81|\xc3\xab\xe4Q/\xb1\x0e\xc7\xad\x16\xd4d\
-i\xa7\xb4z\xaf\xd9\xe9\xca\x8cM\x8ec\x22\xe9\x85\xe3\
-c\xf2{4\xb7\x221K\xa7nhW\xde\xfe\x12\xa8\
-e7\x04\xd5\x92\x0d\xd8\x9c\xebz\xe1kR\xe7\xe7\xed\
-R\x98\xbaw8x\xcb\x8b_\xb9L2,\xa9v\x0a\
-E\xd1\x0bnJ\x0c2\xd6\x16\x83\x1b\xdb\x8b6\xf7\xfd\
-\x08_*\x9e\x80nKIU\xbc*;\x1cAP\xaa\
-\x156\xc5\xc6\x90\x1d\xee 8\x98?\xeb\x9e\xb7\xf4\xda\
-T\xff\xa4\xc3:\xda8\x97\x22\x0fK\xc3\xb5\xe9o\xa7\
-y\xb74\xf8 L\xa74\xda8V\xda\x15\xd7\xd8\xf9\
-!#zn\xc5\xb6\xe5QJ9\x0d[\x9b3\xdb\xaa\
-\xcf\xe3\x1d\xbc\xd6:KRW\xf4\xd6\xeb\xf0\xe1\xc3\x16\
-\xcb\xba\x85\xf9m\x95\xcfA\xefS\x91\x00\x8d]\x80\xd9\
-\xd3\xcf\x1c\xb8\xb4\xc74\xac\x0b<\xe8\xa4K\xb5\xca'\
-^\xe1{\xc7)|\x95\xef\xd8KV\xdaj:a\xdf\
-\x0d\xdb\x14\xff\xa7\x81e\xcc3\xf8\xb6\xccku\xaf\x0e\
-\xb3>\xec3i@\x12:Z\x95g\xda\x01\xc3\xce\x0e\
-\x1a\xe6\xaff\xf8\x8a\xa39\x94\x1f\xac$W\x9d\xbd\xff\
-\xba\x94\x06\x83\x0e\x8d[\xa8c\x0a\x9e\xe0\xb8\x98\x11\x1c\
-\x9d\x96\x04\xc7\xd6\x1eA\x15\xcd]Ih\x8fV\xbb\x13\
-\x98`\x7f<\x09\xda\xc9J\xf0\xf5\x8d\xdfS\x97\x04\xdf\
-\x92\xe9;\xeb\x95\xe0p\xcd\x12\xd4\xe6\xee5\xf6PU\
-\x13|\x8e\xd1\x1d5\xf2\x09\x85h\x95\xc2;\x8a\xd1\xea\
-n\xebM\xdb>\xee\xe3\xcaM\x90\xf4\xbfk\x92\xa3F\
-\x81\x13T\xb3\xbe\x11\xa5\xc0\x91tR\x8f[\xec\xc9\x86\
-\xb3\xdc82W\xc6\x90\x1b\xeb\x01\xa6Z6T\xfb\xe6\
-87\xc3uu\x15:\x8a=e\x8f\x86\xac\xb9\xb9\x12\
-<\x83%\xbf\x11J\xe3\xc4\xeet\xf2\x1du8\x8fv\
-\x07k\xd3O\x07\x07^\xa7\xfc\xa8s\xce|\x10\xc7\xb1\
-\x9fw\xce]F\x15\x8d;\xf0\xb9\x93&\x83\xf4\xe3h\
-K\x8bN*\xedM\xc0\xda\x9by\xbf\xdc\x804M?\
-\xdf\x00\xc4\xbf\xc22\x15r[\xfcW\xb1p\xa1y\x22\
-\x80\xbeq\xbc\xac\x9f\xb6Lu\xe8\x19\xea\x85\xf7\xedB\
-U\xd7_\xcc,\xf6\x93\xffUa\xabrv2\x8e6\
-\x19)\xd6\xdd\xc9s\x91c>w\xdc\x94\xe6xK\xf6\
-\x90\xee\x16\x10\x08\xe2(#\x22\x08\x0b\xb9\xe8\x0e\xc1\x0d\
-\xb66\x81\x9d|\x8a\xaa\xd1\xf7\xa7\xdaA>\xfa\x08\xce\
-\xd7iZR+\x1d\x7fA\x8ch\xa3\x89\xf5\xf7~S\
-\xdb{\xb5\x22?\x98\x86\xa0}\x9bp\x97\xe1]\xdd\xa1\
-\xc5\xa1\xe4[\xfa\xb0\x83,\xdd\xbd\xd3\xbb\x1e\x87\xf1R\
-d\x09\x9a\xf6W7\x1a\xed\x92\x0b\xb3\xc4\x1b\xe5\xe8\xef\
-\xb0\xba\xf2|\xd2`\xb6\xab\xea6]\x17\xdb \x5c\xc8\
-\x8e| \xa8[\xe7\xd9\x8f\xad\x1dW\xbag\xa3\x9d\xb2\
-\xbb\x03=h3\xd4\xe3\xd0f,\xc2BCI\xdf\x92\
-\x9eb\x9ew\xbd\x1f7\xbb\xb0\xfbVq\xbf\xddz\xef\
-7:\xedh8d\xeb\xf6;\xf0`\xe1:8\xae\x80\
-\xc7\xe3\xa1\x85\xed*>,%\x1co\xca\x19\x8dv\xcb\
-ic\xe6J'\x9485w\xc2\xf5;\xb4\xabc\xbe\
-\xe4vN\x17\xbc\x14r\xb1\xe3c\x00)H_\x0a\x1e\
-\x1dx\x7f\xaf{\xff\x02>\xc5\xc9[\
-\x00\x00\x0aH\
-/\
-/ Copyright (C) \
-2016 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick 2.\
-12\x0a\x0aItem {\x0a i\
-d: slider\x0a he\
-ight: 26\x0a // \
-default drag ran\
-ge is 180: divis\
-ible by 2, 3, 4,\
- 5, 6, 9, 10, ..\
-.\x0a width: sli\
-derName.width + \
-223 + handle.wid\
-th / 2\x0a\x0a prop\
-erty real min: 0\
-\x0a property re\
-al max: 1\x0a pr\
-operty real valu\
-e: min + (max - \
-min) * dragHandl\
-er.value\x0a pro\
-perty real init:\
- min+(max-min)/2\
-\x0a property st\
-ring name: \x22Slid\
-er\x22\x0a property\
- color color: \x22#\
-0066cc\x22\x0a prop\
-erty real minLab\
-elWidth: 44\x0a\x0a \
- DragHandler {\x0a \
- id: dragH\
-andler\x0a t\
-arget: handle\x0a \
- xAxis.mini\
-mum: Math.round(\
--handle.width / \
-2 + 3)\x0a x\
-Axis.maximum: Ma\
-th.round(groove.\
-width - handle.w\
-idth / 2 - 3)\x0a \
- property r\
-eal value: (hand\
-le.x - xAxis.min\
-imum) / (xAxis.m\
-aximum - xAxis.m\
-inimum)\x0a }\x0a\x0a \
- Component.onC\
-ompleted: setVal\
-ue(init)\x0a fun\
-ction setValue(v\
-) {\x0a if (\
-min < max) {\x0a \
- handle.\
-x = Math.round( \
-v / (max - min) \
-*\x0a \
- \
- (dragHandler.x\
-Axis.maximum - d\
-ragHandler.xAxis\
-.minimum)\x0a \
- \
- + drag\
-Handler.xAxis.mi\
-nimum);\x0a// \
- console.lo\
-g(name, v, \x22-> h\
-andle.x\x22, handle\
-.x, \x22from fracti\
-on\x22, (v / (max -\
- min)),\x0a// \
- \x22of dr\
-ag range\x22, (drag\
-Handler.xAxis.ma\
-ximum - dragHand\
-ler.xAxis.minimu\
-m), \x22px\x22, min, \x22\
-:\x22, max)\x0a \
- }\x0a }\x0a Rec\
-tangle {\x0a \
- id:sliderName\x0a \
- anchors.l\
-eft: parent.left\
-\x0a anchors\
-.leftMargin: 16\x0a\
- height: \
-childrenRect.hei\
-ght\x0a widt\
-h: Math.max(slid\
-er.minLabelWidth\
-, childrenRect.w\
-idth)\x0a an\
-chors.verticalCe\
-nter: parent.ver\
-ticalCenter\x0a \
- Text {\x0a \
- text: sli\
-der.name + \x22:\x22\x0a \
- font.\
-pointSize: 12\x0a \
- color:\
- \x22#333\x22\x0a \
-}\x0a }\x0a\x0a Rec\
-tangle {\x0a \
- id: groove\x0a \
- width: paren\
-t.width - 8 - sl\
-iderName.width\x0a \
- color: \x22#\
-eee\x22\x0a hei\
-ght: 7\x0a r\
-adius: 3\x0a \
- antialiasing: t\
-rue\x0a bord\
-er.color: Qt.dar\
-ker(color, 1.2)\x0a\
- anchors.\
-left: sliderName\
-.right\x0a a\
-nchors.right: pa\
-rent.right\x0a \
- anchors.leftM\
-argin: 10\x0a \
- anchors.rightM\
-argin: 24\x0a \
- anchors.vertic\
-alCenter: parent\
-.verticalCenter\x0a\
-\x0a Rectang\
-le {\x0a \
- height: parent.\
-height\x0a \
- anchors.left:\
- parent.left\x0a \
- anchors\
-.right: handle.h\
-orizontalCenter\x0a\
- colo\
-r: slider.color\x0a\
- radi\
-us: 3\x0a \
- border.width: \
-1\x0a bo\
-rder.color: Qt.d\
-arker(color, 1.3\
-)\x0a op\
-acity: 0.8\x0a \
- }\x0a Ima\
-ge {\x0a \
- id: handle\x0a \
- source: \
-\x22images/slider_h\
-andle.png\x22\x0a \
- anchors.v\
-erticalCenter: p\
-arent.verticalCe\
-nter\x0a }\x0a \
- }\x0a}\x0a\
-\x00\x00\x06\xc5\
-/\
-/ Copyright (C) \
-2017 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick 2.\
-12\x0a\x0aListModel {\x0a\
- id: flickrIm\
-ages\x0a propert\
-y string tags : \
-\x22\x22\x0a readonly \
-property string \
-queryUrl : \x22http\
-://api.flickr.co\
-m/services/feeds\
-/photos_public.g\
-ne?\x22\x0a\x0a functi\
-on encodeParams(\
-x) {\x0a ret\
-urn encodeURICom\
-ponent(x.replace\
-(\x22 \x22,\x22,\x22));\x0a \
-}\x0a function f\
-etchImages(forma\
-t) {\x0a var\
- requestURL = qu\
-eryUrl + (tags ?\
- \x22tags=\x22+encodeP\
-arams(tags)+\x22&\x22 \
-: \x22\x22) + \x22format=\
-\x22 + format + \x22&n\
-ojsoncallback=1\x22\
-;\x0a var xh\
-r = new XMLHttpR\
-equest;\x0a \
-xhr.onreadystate\
-change = functio\
-n() {\x0a \
- if (xhr.readyS\
-tate === XMLHttp\
-Request.DONE) {\x0a\
-\x0a \
- if (xhr.status \
-!== 200) {\x0a \
- c\
-onsole.log(\x22Fail\
-ed to get images\
- from flickr. st\
-atus code: \x22 + x\
-hr.status);\x0a \
- \
-return;\x0a \
- }\x0a\x0a \
- var j\
-sonText = xhr.re\
-sponseText;\x0a \
- var \
-objArray = JSON.\
-parse(jsonText.r\
-eplace(/\x5c'/g,\x22'\x22\
-))\x0a \
- if (objArray.\
-errors !== undef\
-ined)\x0a \
- consol\
-e.log(\x22Error fet\
-ching tweets: \x22 \
-+ objArray.error\
-s[0].message)\x0a \
- el\
-se {\x0a \
- for (va\
-r key in objArra\
-y.items) {\x0a \
- \
- var rssItem =\
- objArray.items[\
-key];\x0a \
- va\
-r jsonObject = \x22\
-{ \x5c\x22title\x5c\x22: \x5c\x22\x22\
- + rssItem.title\
- +\x22\x5c\x22,\x5c\x22media\x5c\x22:\
- \x5c\x22\x22 + rssItem.m\
-edia.m + \x22\x5c\x22, \x5c\x22\
-thumbnail\x5c\x22: \x5c\x22\x22\
- + rssItem.media\
-.m.replace(/\x5c_m\x5c\
-.jpg/,\x22_s.jpg\x22) \
-+\x22\x5c\x22}\x22\x0a \
- f\
-lickrImages.appe\
-nd(JSON.parse(js\
-onObject));\x0a \
- \
-}\x0a \
- }\x0a \
-}\x0a }\x0a \
- xhr.open(\x22GE\
-T\x22, requestURL, \
-true);\x0a x\
-hr.send();\x0a }\
-\x0a Component.o\
-nCompleted: {\x0a \
- fetchImage\
-s(\x22json\x22);\x0a }\
-\x0a}\x0a\x0a\
-\x00\x00\x018\
-m\
-odule shared\x0aBut\
-ton 2.0 Button.q\
-ml\x0aCheckBox 2.1 \
-CheckBox.qml\x0aFli\
-ckrRssModel 2.0 \
-FlickrRssModel.q\
-ml\x0aLabel 2.0 Lab\
-el.qml\x0aLauncherL\
-ist 2.0 Launcher\
-List.qml\x0aSimpleL\
-auncherDelegate \
-2.0 SimpleLaunch\
-erDelegate.qml\x0aS\
-lider 2.0 Slider\
-.qml\x0aTabSet 2.1 \
-TabSet.qml\x0aTextF\
-ield 2.1 TextFie\
-ld.qml\x0asingleton\
- Images 2.2 Imag\
-es.qml\x0a\
-\x00\x00\x08\xdc\
-/\
-/ Copyright (C) \
-2017 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick 2.\
-12\x0aimport QtQuic\
-k.Window 2.1\x0a\x0aIt\
-em {\x0a id: tab\
-Widget\x0a\x0a // S\
-etting the defau\
-lt property to s\
-tack.children me\
-ans any child it\
-ems\x0a // of th\
-e TabWidget are \
-actually added t\
-o the 'stack' it\
-em's children.\x0a \
- // See the \x22P\
-roperty Binding\x22\
-\x0a // document\
-ation for detail\
-s on default pro\
-perties.\x0a def\
-ault property al\
-ias content: sta\
-ck.children\x0a\x0a \
- property int cu\
-rrent: 0\x0a\x0a on\
-CurrentChanged: \
-setZOrders()\x0a \
- Component.onCom\
-pleted: setZOrde\
-rs()\x0a\x0a functi\
-on setZOrders() \
-{\x0a for (v\
-ar i = 0; i < st\
-ack.children.len\
-gth; ++i) {\x0a \
- stack.ch\
-ildren[i].z = (i\
- == current ? 1 \
-: 0)\x0a \
- stack.children[\
-i].enabled = (i \
-== current)\x0a \
- }\x0a }\x0a\x0a \
- Row {\x0a i\
-d: header\x0a\x0a \
- Repeater {\x0a \
- model:\
- stack.children.\
-length\x0a \
- delegate: Rec\
-tangle {\x0a \
- require\
-d property int i\
-ndex\x0a \
- width: tabW\
-idget.width / st\
-ack.children.len\
-gth\x0a \
- height: Math\
-.max(Screen.pixe\
-lDensity * 7, la\
-bel.implicitHeig\
-ht * 1.2)\x0a\x0a \
- Recta\
-ngle {\x0a \
- width\
-: parent.width; \
-height: 1\x0a \
- an\
-chors { bottom: \
-parent.bottom; b\
-ottomMargin: 1 }\
-\x0a \
- color: \x22#ac\
-b2c2\x22\x0a \
- }\x0a \
- BorderIm\
-age {\x0a \
- anchor\
-s { fill: parent\
-; leftMargin: 2;\
- topMargin: 5; r\
-ightMargin: 1 }\x0a\
- \
- border { lef\
-t: 7; right: 7 }\
-\x0a \
- source: \x22im\
-ages/tab.png\x22\x0a \
- \
- visible: tabWi\
-dget.current == \
-parent.index\x0a \
- }\x0a \
- T\
-ext {\x0a \
- id: la\
-bel\x0a \
- horizont\
-alAlignment: Qt.\
-AlignHCenter; ve\
-rticalAlignment:\
- Qt.AlignVCenter\
-\x0a \
- anchors.fil\
-l: parent\x0a \
- te\
-xt: stack.childr\
-en[parent.index]\
-.title\x0a \
- elide\
-: Text.ElideRigh\
-t\x0a \
- font.bold:\
- tabWidget.curre\
-nt == parent.ind\
-ex\x0a \
- }\x0a \
- TapHandler \
-{\x0a \
- onTapped: \
-tabWidget.curren\
-t = parent.index\
-\x0a \
- }\x0a }\
-\x0a }\x0a }\
-\x0a\x0a Item {\x0a \
- id: stack\x0a \
- width: ta\
-bWidget.width\x0a \
- anchors.to\
-p: header.bottom\
-; anchors.bottom\
-: tabWidget.bott\
-om\x0a }\x0a}\x0a\
-\x00\x00\x02h\
-/\
-/ Copyright (C) \
-2021 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ap\
-ragma Singleton\x0a\
-import QtQml\x0a\x0aQt\
-Object {\x0a rea\
-donly property u\
-rl back: \
- Qt.resolvedUrl(\
-\x22images/back.png\
-\x22)\x0a readonly \
-property url che\
-ckmark: Qt.re\
-solvedUrl(\x22image\
-s/checkmark.png\x22\
-)\x0a readonly p\
-roperty url next\
-: Qt.res\
-olvedUrl(\x22images\
-/next.png\x22)\x0a \
-readonly propert\
-y url qtLogo: \
- Qt.resolvedU\
-rl(\x22images/qt-lo\
-go.png\x22)\x0a rea\
-donly property u\
-rl sliderHandle:\
- Qt.resolvedUrl(\
-\x22images/slider_h\
-andle.png\x22)\x0a \
-readonly propert\
-y url tab: \
- Qt.resolvedU\
-rl(\x22images/tab.p\
-ng\x22)\x0a}\x0a\
-\x00\x00\x05t\
-/\
-/ Copyright (C) \
-2017 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick 2.\
-12\x0aimport QtQuic\
-k.Window 2.1\x0a\x0aIt\
-em {\x0a id: con\
-tainer\x0a\x0a prop\
-erty alias text:\
- buttonLabel.tex\
-t\x0a property a\
-lias label: butt\
-onLabel\x0a sign\
-al clicked\x0a p\
-roperty alias co\
-ntainsMouse: hov\
-erHandler.hovere\
-d\x0a property a\
-lias pressed: ta\
-pHandler.pressed\
-\x0a implicitHei\
-ght: Math.max(Sc\
-reen.pixelDensit\
-y * 7, buttonLab\
-el.implicitHeigh\
-t * 1.2)\x0a imp\
-licitWidth: Math\
-.max(Screen.pixe\
-lDensity * 11, b\
-uttonLabel.impli\
-citWidth * 1.3)\x0a\
- height: impl\
-icitHeight\x0a w\
-idth: implicitWi\
-dth\x0a\x0a SystemP\
-alette { id: pal\
-ette }\x0a\x0a Rect\
-angle {\x0a \
-id: frame\x0a \
- anchors.fill: \
-parent\x0a c\
-olor: palette.bu\
-tton\x0a gra\
-dient: Gradient \
-{\x0a Gr\
-adientStop { pos\
-ition: 0.0; colo\
-r: tapHandler.pr\
-essed ? Qt.darke\
-r(palette.button\
-, 1.3) : palette\
-.button }\x0a \
- GradientSt\
-op { position: 1\
-.0; color: Qt.da\
-rker(palette.but\
-ton, 1.3) }\x0a \
- }\x0a an\
-tialiasing: true\
-\x0a radius:\
- height / 6\x0a \
- border.color\
-: Qt.darker(pale\
-tte.button, 1.5)\
-\x0a border.\
-width: 1\x0a }\x0a\x0a\
- TapHandler {\
-\x0a id: tap\
-Handler\x0a \
-onTapped: contai\
-ner.clicked();\x0a \
- }\x0a HoverHa\
-ndler {\x0a \
-id: hoverHandler\
-\x0a }\x0a\x0a Text\
- {\x0a id: b\
-uttonLabel\x0a \
- text: contain\
-er.text\x0a \
-color: palette.b\
-uttonText\x0a \
- anchors.center\
-In: parent\x0a }\
-\x0a}\x0a\
-\x00\x00\x03)\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\
-\x00\x00\x02\xf0IDATx\xda\xe5\x9b_h\xcda\
-\x18\xc7?\x9bm1\xab\x91\xc2\xd0Y+5\xbb`h\
-\xc9\x85\x0b7HJ\x93H))\xe5\xc2\xcd\xb0\x91R\
-\xdc(7\xbbP\xae\x88\x5cXI[v%\xc9\x9fb\
-.\xfc\xbd\xc0(\xffN\xc8\xc6\xd9p16\x8c9.\
-~?u\xac\xe3\x9c\xf3}\xb7\xc3\xfb{\xce\xb7\xde\xab\
-\xd3\xef=\xef\xe7y\xdf\xe7\xf7{\xde\xe7}^\xb0\xa7\
-\x12\xa0\x1aX\x03\xb4\x02W\x8080\x00\x0c\x03\x83@\
-w\xf8\xbb9m\x04n\x03\x9f\x80d\x96v\xc3\x12x\
-\x05p1\x07\xe8\xd4\xb6\xc2\x0a|5\xf0Z\x84?\x0f\
-L\xb0\x00_\x16\xfa\xb6\x02\xff\xde\xca\xccO\x04\xee\x89\
-\xf0\x1f\x81\x1a+\x068)\xc2'\x81uV\xe0\x0f8\
-\xc0\xef\xb6\x02\xbf\x0a\xf8.\xc2\xb7\x01\xc5\x16\xe0k\x80\
-!\x11\xfe!Pj\x01~*\xd0#\xc2\xf7\x02\x95V\
-\x96~\x9b\x08?b)\xd89\xec\xf0\xd2\xdbb\xe9\xa5\
-\xa7\xc2\x1f\xb3\x14\xec$D\xf8\xa7\xe1s&\xd4-\xc2\
-\x0f\x02\xe5\x85\xea\xf7?\x81\x95V\xe0\xeb\x1d\xfc\xbe\xd5\
-\x0a\xfcl\xe0\xb3\x08\x7f\xd6\x0a|)pI\x84\xef\x01\
-\xa6Y1@\x93\x83\xdf7X\x81_V\xc8\xdb\xdb\x0a\
-\xe0\xb9\x83\xdf\x17Y1\xc0\x09\x11>\x8e!m\x10\xe1\
-\x07\x809V\xe0g\x02}\xa2\x01\xb6Y\x9a\xfd\x0e\x87\
-\xcc\x8e\x19\xed\x13\xe1\xef[\xda\xe4\xd4\x91\xdb\xf1Uj\
-rc\x91\xa5\xd9\xbf.\xce\xfe&K\xf0\x07E\xf8\xd3\
-\x96\xbe\xf7\x0b\xd0R\xda\x09`J!/\xfd\x98%\xf8\
-\xfd\x22\xfc^K\xf0\x0d\xc07\xb4\xc3\x0cS\xba\x8av\
-\x82;\xd9\x12\xfc\x1e\xf1{\xdf\xe8\xcb\xc0g\x01k\x09\
-\x8e\xa1\xaf\x01G\x80*\xb1\x8fZ\xd1\xef;|\x00/\
-&8X\xe8O3\xc0w\xe2\xf2\xbc \xc0?\xc2\x83\
-\x13\xdc%\xc0\x87,\x03=\x9ac_\x8d\x02\xfcW\x1f\
-B\xdd\x96\xd0\x07\xb3\x0d\xf6Y\x98\xc1\xc9\xa4\x18AM\
-^\xae\x068\xf4\xbf\xe1\xeb\xc5\x08m^\x16\x17:'\
-\xf4u\xc7\x07\xbfW\x8f\x9e\x8fg\xe8k\xb9\x98\xdd\xf1\
-\xa2h\xe9.zF6\x9d\x8a\xc4\xa5\xdf\xe2\xcb'\xaf\
-\xdd\xc1\x00;\xd2\xf4\xa3$7;}\x0aV\x9a\x1c\x0c\
-p\x8b?ko\xe6\x0a\xef\x91^`\xbaO\x06X\xec\
-`\x80a`~J\x1f\x0f\x84g\xb7\xfa\x16\xaeV\x85\
-A\x8ej\x84\xc7\x0e.\xe4eb\xb3$\x5c\xd2\xc9<\
-\xb77\xc0$\x9f\xc0\x7f\x87\x9e?\x80\xcb\xff\xe0\xff\x9a\
-\x81/\xbe\xee\xdaj\xf3<\xfb\xedQ\xd8\xba\xbe\xca\x13\
-\xfc\x8b\x1c\xc2g/\xb4+O\x06\x88LZ;\x86^\
-\x88\x9c\xad\x9d\x89R\xf6\xa6\x1c\xfd\x12B\xa6\xf6\xd6w\
-\xe0\xd1\x09\x88!\xa0k\x1c\xfb\xdf\x19\xc5\x1c\xde\xc2q\
-\x9a\xfd.\x22\xac'c\x84\xef'\xe2\x15\x9b\xab\xc7\x00\
-?\x02l&\xe2*\x03^:\x1a\xe0f\x94@\xffv\
-yp\x04\x98AP\xba\xa6\xaa.\xdc)F^\x95\xe8\
-%\xab\xdb1\xa6\xa5\x02\xfc)\x8c\xdc\xcc\x1a\xad\xf5a\
-\xce0\x1efr\xfa\x08\xae\x9f&\x08.'t:\xba\
-\x8a\x17\xfa\x05\xc1\xf2\xa6\x01\x10\xe5*G\x00\x00\x00\x00\
-IEND\xaeB`\x82\
-\x00\x00\x015\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x10\x00\x00\x00\x1f\x08\x00\x00\x00\x00\xcb\xce\x12h\
-\x00\x00\x00\xfcIDAT(\x15\x05\xc1AjTa\
-\x10\x06\xc0\xea\x9e\x7fF\x12\x17\x22(\xe8\x01t#\xf1\
-\x12\x9e\xdc\xadk\x97\x0a\x0aB\x5cj\x22$\x99y\xaf\
-?\xabj\xeb\xbbo\x7f\x1f\x8e[e\xbd}\xf5&U\
-\xf3\xfd\xc7\xcd\xcbc\x0a\xbf\x7f\x9d>V\xfd\xf9\xf2i\
-{\x08\xb8:|}\xfe\xae\x7f~\xd8\xee\x0a\xd8\xee\xdf\
-\xdfN\xff{vn@\xf4<\xae\xfb\xeb\xc7\x9e\x80\xbd\
-\xfa\xf2\xd4\xe7\x95\x00Fm\xb3ZK\x81\xe9\x9a\xee\xde\
-;\x80JJ\xc7\x000\x95\x85t\x80\x99\xb2jT\x88\
-\xa8\xb2[\x95)AIfY\x22\x22\xe8\x12\x0bB)\
-\xfb!,\x12\x80$\x96\x1a*%\xe20\x16Q#J\
-\xd2m\x91\xda+\x85\xba\xecc\xc5t\x22\xe8\xde\x97%\
-\x00b\xc6\x22\x09P\x11-\x00Bi\x00D\xd3I\x12\
-\x01I,\x92\x10\xa8\xa2\x8bD\x00t\x0e\xba\x04\xb2\x1d\
-j\xfa\xf0\x94\xcbX\xe0x\xc9iM\x9f\xe6\x9cKc\
-j{\xfd\xb9\xce\xe7\xdb\xab\x9a\x14\xb6\xd3\x8b\xe3\xf1?\
-V\x8e\x9e\xad\xee\x91\x1e\xc8\x00\x00\x00\x00IEND\
-\xaeB`\x82\
-\x00\x00\x066\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x0d\x00\x00\x00\x17\x08\x06\x00\x00\x00\xd0\xa6\xc5\x81\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x03$iTXtXML\
-:com.adobe.xmp\x00\x00\
-\x00\x00\x00<?xpacket beg\
-in=\x22\xef\xbb\xbf\x22 id=\x22W5M\
-0MpCehiHzreSzNTc\
-zkc9d\x22?> <x:xmpm\
-eta xmlns:x=\x22ado\
-be:ns:meta/\x22 x:x\
-mptk=\x22Adobe XMP \
-Core 5.3-c011 66\
-.145661, 2012/02\
-/06-14:56:27 \
- \x22> <rdf:RDF \
-xmlns:rdf=\x22http:\
-//www.w3.org/199\
-9/02/22-rdf-synt\
-ax-ns#\x22> <rdf:De\
-scription rdf:ab\
-out=\x22\x22 xmlns:xmp\
-=\x22http://ns.adob\
-e.com/xap/1.0/\x22 \
-xmlns:xmpMM=\x22htt\
-p://ns.adobe.com\
-/xap/1.0/mm/\x22 xm\
-lns:stRef=\x22http:\
-//ns.adobe.com/x\
-ap/1.0/sType/Res\
-ourceRef#\x22 xmp:C\
-reatorTool=\x22Adob\
-e Photoshop CS6 \
-(Macintosh)\x22 xmp\
-MM:InstanceID=\x22x\
-mp.iid:DCE827695\
-74811E2B0EE92BEE\
-27047DB\x22 xmpMM:D\
-ocumentID=\x22xmp.d\
-id:DCE8276A57481\
-1E2B0EE92BEE2704\
-7DB\x22> <xmpMM:Der\
-ivedFrom stRef:i\
-nstanceID=\x22xmp.i\
-id:DCE8276757481\
-1E2B0EE92BEE2704\
-7DB\x22 stRef:docum\
-entID=\x22xmp.did:D\
-CE82768574811E2B\
-0EE92BEE27047DB\x22\
-/> </rdf:Descrip\
-tion> </rdf:RDF>\
- </x:xmpmeta> <?\
-xpacket end=\x22r\x22?\
->\x97\xa0=\xd8\x00\x00\x02\xa8IDATx\xda\x8c\
-\x94_HSQ\x1c\xc7\xcf\xbd\xbb\xd7;\xb7\xdd\xddQ\
-\x90\xbe\x0cb\x9b\x93\xd4\xf5\x10\xc1\x0a\xf4\xc5)\xd8\x1f\
-)Fd\xd4C\xeaK\xe4CB\xf6\x98\xb4\xb5\xad=\
-\xc8\xe8\xc9\xf5\x1e\xf4\x92\xd2\x96E\xeb!Y\x96\xc5\x94\
-\xc2\x94\x05\xb2\xf9\x10H\xed\xa1\x8767\xc1\xfd\xf3\xf6\
-=\xd7ML\x97z\xe0\xcb\xdd\xef\xdc}8\xbf\xf3\xfd\
-\x9es\x19Y\x96\xc9A\xc3j\xb5\x0ep\x1c\xf7\x98\xc8\
-r\xa1P,\xde`\x0e\x82\xdaZ[\xefiu\xba1\
-\xb5 \x90r\xb9Lr\xeb\xeb1n?\xc0f\xb3\xb9\
-\x0c\x06\xc3\x03Q\xaf'u<O\x0a\x85\x02\x11Eq\
-\xb5&d6\x99\x18\xadV;\x06`D\x02\xa0\xd1h\
-\x94\xf9c\x0d\x0d?\xfc~\xff\xcc\x1e\xc8l6\xabt\
-:\xdd\xb8$I\xb7 R__O\x18\x86!\x8d\x8d\
-\x8d\x09\xaf\xcf7\xb1g%\xcb\x16\xf0\xd4 I\xd7\xf5\
-U\x00\xf3F\xa3\xf1\xbb\xc7\xeb\x0d\xa1^A\xf9v\x1b\
-\xb2X,u:Q\x9c\x04\xd0\xabGK\xea\x0a`2\
-\x99\xbe=\xf4x\xa6x\x9e_F9\x09\x15\xb9\x0a\xa0\
-\xc1\xb2/\x01t)\x80ZM\xa8\xa7\xd6\xe6\xe6y\xb7\
-\xdb\x1daY6\x8e2\x04\x95\xe9\xff\x19\xb4$\x01x\
--\x19\x0c\xedzQ\xdc\x06N\xdal\xb3\xf7GG\xa7\
-\xf1s\x01z\x05mV\xbb\xe2\x90\xc1sl\xb8]\xaa\
-\xae\x80\xdc\xce\xd8\xed\xd3wGFf\xf1~\x1e\x8a@\
-\xff\x84\xc9\xc1\xdaN\xecE\xb1\x95\xba\x84\xf6V\xef\x0c\
-\x0f\x7f\xc2;\x0a\xbd\xab\x15\x09\xdb\xda\xd2\xf2\x91\xe78\
-\x82\xbe\x95\x89T*e\xbc\xd6\xd7w\x16'\xe1\xfd\xff\
-Bg\xc7\x83\xc1\x0f8[\x0b\xa5RI\x99P\xa9T\
-$\x9dNw\xd7\x09\xc2\x0b\xeahM\x08V~y\xe4\
-\xf7O\xc1\xa99\x0a\xa2&h\x99`\x8f\xbd0(\xd2\
-\x04gwC\xf4\xc0\xd2\xbe.B\xa7|^o\xe7\xe2\
-\xd2R\x07\xcd'\x9f\xcf\x93\xcc\xda\x1a\xc9\xa4\xd3\x9f\xb3\
-\xb9\xdc\xf9d2\x99\xd9\x09)O\xa8\x07\xb2\x07\x02\x81\
-\xf6\xb9X\xccA\xf7\xb8\xb1\xb1A\xd6\x00\xa63\x99\xaf\
-\xb9\x5c\xee\x5c\x22\x91\xf8\xbd\x13\xaa\x0e\x07\xd4\xf1$\x18\
-<\x1d\x8dF/( V\xccf\xb3t\x9fq<{\
-\x00\xfe\xdc}`i\x98\xf9\xdbCC4\xb3\xe2\x9bH\
-\xe4\x12\xee\x11\xc3l\xb5\xd2\x06\xcd\xc04G\xad\xabA\
-\xf3\xc9\x0f\x0c\x0eR\xb0\x10\x0e\x87\xaf\x08\x82\xc0\xd2\x0c\
-\xd1\x93yS\x96C*\x97\xcbU\xcb\xd5_\xd0\x1f\x5c\
-\xc2\xa3\x88 \x15\x8f\xc7O\xe0\xc9\x22}\xb2Y.\x1f\
-a\xf7\xb9\xb8\x8b\xd0\x84\xd3\xe9\x5c\xbe\xd9\xdf\xff\x0c\xdf\
-\x88\x0c\x96+uuw\x87\x99C|X\x9a\xa0\xab\x10\
-_\xa9K\x87\x81\xe88\x0e]\x86\xb4\xf4<\xfe\x15`\
-\x00\x07\x7f\xeb\x18\x9af\x83_\x00\x00\x00\x00IEN\
-D\xaeB`\x82\
-\x00\x00\x05[\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x12\x00\x00\x00\x1f\x08\x06\x00\x00\x00\xeaP\x9d\x89\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x03$iTXtXML\
-:com.adobe.xmp\x00\x00\
-\x00\x00\x00<?xpacket beg\
-in=\x22\xef\xbb\xbf\x22 id=\x22W5M\
-0MpCehiHzreSzNTc\
-zkc9d\x22?> <x:xmpm\
-eta xmlns:x=\x22ado\
-be:ns:meta/\x22 x:x\
-mptk=\x22Adobe XMP \
-Core 5.3-c011 66\
-.145661, 2012/02\
-/06-14:56:27 \
- \x22> <rdf:RDF \
-xmlns:rdf=\x22http:\
-//www.w3.org/199\
-9/02/22-rdf-synt\
-ax-ns#\x22> <rdf:De\
-scription rdf:ab\
-out=\x22\x22 xmlns:xmp\
-=\x22http://ns.adob\
-e.com/xap/1.0/\x22 \
-xmlns:xmpMM=\x22htt\
-p://ns.adobe.com\
-/xap/1.0/mm/\x22 xm\
-lns:stRef=\x22http:\
-//ns.adobe.com/x\
-ap/1.0/sType/Res\
-ourceRef#\x22 xmp:C\
-reatorTool=\x22Adob\
-e Photoshop CS6 \
-(Macintosh)\x22 xmp\
-MM:InstanceID=\x22x\
-mp.iid:DCE827655\
-74811E2B0EE92BEE\
-27047DB\x22 xmpMM:D\
-ocumentID=\x22xmp.d\
-id:DCE8276657481\
-1E2B0EE92BEE2704\
-7DB\x22> <xmpMM:Der\
-ivedFrom stRef:i\
-nstanceID=\x22xmp.i\
-id:DCE8276357481\
-1E2B0EE92BEE2704\
-7DB\x22 stRef:docum\
-entID=\x22xmp.did:D\
-CE82764574811E2B\
-0EE92BEE27047DB\x22\
-/> </rdf:Descrip\
-tion> </rdf:RDF>\
- </x:xmpmeta> <?\
-xpacket end=\x22r\x22?\
->\xd9\x0c\xdf\xc0\x00\x00\x01\xcdIDATx\xda\xac\
-\x95;K\x03A\x14\x857\x994\xdaF1>@\xc5\
-\x88A\x8c,*\x16b#XZ\x08\x06\x04\x0b\xa3\xad\
-\x85\x9d`\x13\x0b\x1bm,5\x8d\x88\x89\xd8(B4\
->@B\x88\x16\x16\x22b:\xff\x86 X\x04]\xcf\
-\x95+\x84e\xe6\xee\xaef\xe0\xec\xcc\xee\x1c\xbey\xec\
-\xbd3\x91\xa5t\xba\xd9\xb2\xac\x03h\x0ez\x832\x87\
-\xb9\x5c\xd6\x0aX\xc2\xd0\x064\x0fE\xa0(\xb4\x07\xf8\
-\xfa_@\xe3\x9a\xef[\x80e\x82\x82\x1e\x0d}\x9b\x80\
-m\xfb\x05)\xdb\xb6\x1fPO@\xbd\x9a\xfeI\xf47\
-\xbdT\xab%/P\x88\x1e\xbc\xe1\x97\xd0\x94\xc1\xb7\x03\
-\xad\xe1'8\xc6\x19\xd1\x03#\xd60\xf2\xa903\xfa\
-\xde\x06\xcf5\xbcf\x90\x0b6\x0c\x0dh\xbcc\x12L\
-\xd5\xbf0\xec\x0cM[\x80\xb5\xc3s\x03\xafc\x041\
-\xec\xd3\x036\x0a\xc5\xe19\xaf\x87)\xddz\xeb`q\
-(\xa9\xb1$\xdd0e\xfa\x0b\x0c+x\xc0\xfa\xe1)\
-\x927\xe4\x15\x1f\x08\x0d\x1a,\x0f-\x18,E(\xa5\
-\xbc@4uZ\x02\x9a1\xde\x1fw\xa1}\x8c)?\
-\xe1\xcf\xb0+4;\xa1\x11\xdd2\xc3\x01\xf22\xca1\
-\xa6+\xef!?\x04\xecS+\xaa24d\xb0\xac\xa8\
-\x06@V\x91\x83\xbb\xca\x03\xd2\x81\xaa$\xcd\x84 b\
-\x1c\x01\xd2\x85\xea\x0eJ\x08\x90\xac\x18\xd9\x0c\xa9@}\
-\x9a\xee/h\x19\x90}1\xd7\x00\xe9\xe1=1A\x16\
-\x019\x12\xb3\x1f\x10J\x87{\xa8[\x80\x1c\x8b\xe7\x11\
-C*\x1ct\xeeR\xa3\x9b\x06\x90\x13\xf1\x84\x04$\xc1\
-\xcb1AR\x80\x14\xc4\xc3\x1f\x90A^NL\x80\x5c\
-x\xc5\x1b]\x8a\xb4q-\x9a\xbe\x0fh\x16\x90[?\
-\xd1\x1f1$!Af\x00)\x07\xb9 \x9f\xff\x0b\xf9\
-\x05\xd1\x81\xf5\xc4\xef\xaf\xd0tP\xc8\xcf\x05\xe98\x8e\
-\xd5\x88\xf2-\xc0\x00\xaa\xfa\xae\x1fG|9m\x00\x00\
-\x00\x00IEND\xaeB`\x82\
-\x00\x00\x03w\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x00\x1b\x00\x00\x00\x1c\x08\x06\x00\x00\x00\x90\xd1\xc4\xed\
-\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\
-\x01\x00\x9a\x9c\x18\x00\x00\x03)IDATH\x0d\xbd\
-V=LZQ\x14\x06\xa4\xd1PE\x03\x14\x08\x83\xc8\
-fL\xd3\x10\x93\x06\x97\xa6\xdd\xbb3th\x8c\xa1\x1b\
-\x9d\x18\xbauaj\x22k'6\x17\x87v\xec\xd6\xa5\
-\x1b.\x84\x04\x02&\x18\x15\x02\x89\xd2\x8a\xfc$\xb6D\
-y\xaf\xdfw\xfb\xde\xf5\xf9\xfa\xe4\xa76\x9e\xe4\xe4\xde\
-\xc7\xbd\xdf\xf9\xee\xf9\xdey\xe7bWU\xd5v_\xe6\
-\xb8/\x22\xf28'%\xb3\xc3\xb4\xbd\xfah\x84\x0ay\
-\xa0\xd2H\x99\xecc\xd6m\x1a\x09\x09\x8cn$\xe2\x9c\
-$\xd2o#\x1dI\x06\x22\xcaL\x12\xf3\xa8\x13K\x02\
-\xecQ4B1\x82\x90\xe3\x0d\xb3\x94\xd1\x90\x0dI\xe8\
-3\xf0\xd9\x85\x85\x85@\x22\x91x\xbe\xbc\xbc\xbc\xb6\xb8\
-\xb8\xf8\xa8\xdb\xed~\xaf\xd7\xeb\xe5l6\xfb\xad\xdf\xef\
-\x9fb\xcf\x00>\x84+\x9a\xeaL\xf2ZZ\xce\xcd\x8e\
-\xcd$\xe0Af\xe1\x0f\xa3\xd1\xe8\xd3\x9d\x9d\x9dO\xd5\
-j\xf5\xe7\xd9\xd9\x99z~~\xae\xb6\xdbm1\xf2\x99\
-\xbfs=\x16\x8b=\xe1~\x0dG\xbc\xc3\x18{\x1c\xd1\
-<2y]\xa9T\xba$h6\x9b\xea\xe1\xe1!\x83\
-K\xe73\x7f\xe7z\xa9T\xea\xc6\xe3\xf17 \x99\xb7\
-\x22\xbc\xf1\xce4\xf9t\xd9\x1e\x00\xf8j{{\xfb#\
-\xe4s\x22\x03q0\x04\xb14\xca\xe6\xf7\xfbm \xbd\
-L\xa7\xd3\x09H\xfb\x19\x1b/\xe1BVd\xa8\x9a\xc9\
-t\x22'\xa4{\xbc\xbb\xbb\xfb5\x14\x0a\xb9OO\xf9\
-:&3\x9f\xcfg;99\xe9mnn>\xdb\xdb\
-\xdb\xab\x02u\x05\x1f\x82Kapa\x86\xa2`\xa5\xcd\
-\xa6R\xa9w\x81@\xc0\xddj\xb5\xb4\x1d\x93\x0dT \
-\x18\x0c\xba\x93\xc9\xe4{\xc6\x81\x8b\xcae|I\xa6\x85\
-\x12e\xce\xaa\xdb\xd8\xd8xyqq1R:+z\
-\x16\x04q\xc43\x0e\xf6\x90\x83q\xc5\x84#M\x9c\x80\
-\xe3\xd6\xd6\xd6\x0b\x8f\xc737\x18\xb0\x92\xa77\xe2\x88\
-g\x1c\xa0e\x5csf\x8cl\x8fD\x22\xab\x0e\x87\xc3\
-6\x1c\xf2\xddNo\xc4\x11\x1f\x0e\x87\xd7\x80&\x990\
-K2\xb7\xdb\xed\xa7\x1cw1\xe2\x97\x96\x96|\x881\
-\x92L\xed\xf5z-\x96\xf2]\x8c\xf8N\xa7\xf3\x031\
-\xe4\xa9\xad2S\x8f\x8e\x8e\xf6\x15E\xb1\xcd\xcc\xb0K\
-Mo\xc4\x11_\xab\xd5\xca@K2\xf9\x9d\xb14\xb1\
-\xc0\xe8NTQ8\x9f\xcf\x17\x5c.\xd7\x1c+kZ\
-\x03\x8e\x15\xf9k}}=\x8a\x9eY\x03^|k\xe6\
-\xccx\x0a\x85M5\x97\xcb}!hZ9\xb9\x9f8\
-\xe2\xb5\xe6\xac\xdf\x06\xd7\xa5\x8f\x17J\x22\xdd\x07\x99L\
-\xe6\x03;\x81\xd7\xeb\x9d*1\xb6\xacF\xa3\xd1'\x1e\
-@~;\x22&\xe3[f\x86\x0d\xc3B\xa1P\x06\xe0\
--Nw\x85N26Cf\xc4V\x85\xa2\xb8Bo\
-L\x11\xcf8p\x99\xd9\xd8\xae\xcf.^,\x16{\x93\
-t\xfd\x83\x83\x83\x0eo\x09\x10Xv\xfd\xbf\xc8\xfe\xa8\
-\xf9o\xf7\x19\xef=\x10\xddz\x9f\xc9j\xc4&i\x90\
-\x84\x95I\xa7\xcc\xf4\x1b7\xf5\xca\xca\xca*\xfb\x1e\x0b\
-\xe0\xf8\xf8x\xdf\xea\xa6\x06F\xc8\xc7w\x85\xb90K\
-2\xb9\xf8\x9f\xff\x83\x8c$#\xa9!K=[\x8ef\
-\xd3\xabXV\x9ey\x03\x9f\xc7\x92\xe9 \x8dT`\xf4\
-\xdf\x0c\xa3\x90\xca(\x99aMN'&\x93\x88;L\
-~\x03}U80w\xf4\xee\xee\x00\x00\x00\x00IE\
-ND\xaeB`\x82\
-\x00\x00\x18@\
-\x89\
-PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\
-\x00\x01\x00\x00\x00\x01\x00\x08\x06\x00\x00\x00\x5cr\xa8f\
-\x00\x00\x00\x19tEXtSoftware\
-\x00Adobe ImageRead\
-yq\xc9e<\x00\x00\x03*iTXtXML\
-:com.adobe.xmp\x00\x00\
-\x00\x00\x00<?xpacket beg\
-in=\x22\xef\xbb\xbf\x22 id=\x22W5M\
-0MpCehiHzreSzNTc\
-zkc9d\x22?> <x:xmpm\
-eta xmlns:x=\x22ado\
-be:ns:meta/\x22 x:x\
-mptk=\x22Adobe XMP \
-Core 5.6-c132 79\
-.159284, 2016/04\
-/19-13:13:40 \
- \x22> <rdf:RDF \
-xmlns:rdf=\x22http:\
-//www.w3.org/199\
-9/02/22-rdf-synt\
-ax-ns#\x22> <rdf:De\
-scription rdf:ab\
-out=\x22\x22 xmlns:xmp\
-=\x22http://ns.adob\
-e.com/xap/1.0/\x22 \
-xmlns:xmpMM=\x22htt\
-p://ns.adobe.com\
-/xap/1.0/mm/\x22 xm\
-lns:stRef=\x22http:\
-//ns.adobe.com/x\
-ap/1.0/sType/Res\
-ourceRef#\x22 xmp:C\
-reatorTool=\x22Adob\
-e Photoshop CC 2\
-015.5 (Macintosh\
-)\x22 xmpMM:Instanc\
-eID=\x22xmp.iid:EF4\
-E1F5F50C611E689D\
-8B84085AD92F4\x22 x\
-mpMM:DocumentID=\
-\x22xmp.did:EF4E1F6\
-050C611E689D8B84\
-085AD92F4\x22> <xmp\
-MM:DerivedFrom s\
-tRef:instanceID=\
-\x22xmp.iid:EF4E1F5\
-D50C611E689D8B84\
-085AD92F4\x22 stRef\
-:documentID=\x22xmp\
-.did:EF4E1F5E50C\
-611E689D8B84085A\
-D92F4\x22/> </rdf:D\
-escription> </rd\
-f:RDF> </x:xmpme\
-ta> <?xpacket en\
-d=\x22r\x22?>j\x12\xd3\xd3\x00\x00\x14\xacI\
-DATx\xda\xec\x9d\x09\x98V\xd5y\x80\xbf\x7f\xf6\
-}\x83\x19\x96a\x97m\x10A\xa1\xb8\x00\x06p\xc1h\
-]\xaaF\xf3XS5\x1a\xd7\xb4Q\xa3\xb1\xb1\xc6G\
-\xd3j%mS\x97<\xd5\x94j\x88q\x97 (\x06\
-\x97\x22ZqEPQ\x04\x14\x10d\x86\xd9g\x98}\
-\x9f\xf9{\xbf\x9bj\x091d\x06\xbe\x7f\xe6.\xef;\
-\xcf\xff\x8c\xe3\xa3\xe7\xbf\xf7\xdc\xfb\xbd\xf7\x9cs\xcf\xf9\
-N$\x1a\x8d\x0a\x00\x84\x938\xaa\x00\x00\x01\x00\x00\x02\
-\x00\x00\x04\x00\x00\x08\x00\x00\x10\x00\x00 \x00\x00@\x00\
-\x00\x80\x00\x00\x00\x01\x00\x00\x02\x00\x00\x04\x00\x00\x08\x00\
-\x00\x10\x00\x00 \x00\x00@\x00\x00\x80\x00\x00\x00\x01\x00\
-\x00\x02\x00\x00\x04\x00\x00\x08\x00\x00\x10\x00\x00 \x00\x00\
-@\x00\x00\x80\x00\x00\x00\x01\x00\x00\x02\x00\x00\x04\x00\x00\
-\x08\x00\x00\x10\x00\x00 \x00\x00@\x00\x00\x80\x00\x00\xe0\
-O\x13\xf1\xca\x81,\xd8p\xce\x11\xce\xaf5\xceg0\
-\x97\x05 D\x02 \xf8\x01B*\x00\x82\x1f \xa4\x02\
- \xf8\x01B*\x00\x82\x1f \xa4\x02 \xf8\x01B*\
-\x00\x82\x1f \xa4\x02 \xf8\x01B*\x00\x82\x1f \xa4\
-\x02 \xf8\x01B*\x00\x82\x1f \xa4\x02 \xf8\x01B\
-*\x00\x82\x1f \xa4\x02 \xf8\x01B*\x00\x82\x1f \
-\xa4\x02 \xf8\x01B*\x00\x82\x1f \xa4\x02 \xf8\x01\
-B*\x00\x82\x1f \xa4\x02 \xf8\x01B*\x00'\xf8\
-\x8fq~\xbd\xec|\xb2\xa8F\x80\x10\x09\x80\xe0\x07\x08\
-\xa9\x00\x08~\x80\x90\x0a\x80\xe0\x07\x08\xa9\x00\x08~\x80\
-\x90\x0a\x80\xe0\x07\x08\xa9\x00\x08~\x80\x90\x0a\x80\xe0\x07\
-\x08\xa9\x00\x08~\x80\x90\x0a\x80\xe0\x07\x08\xa9\x00\x08~\
-\x80\x90\x0a\x80\xe0\x07\x08\xa9\x00\x08\xfe\xfe!#>\xfd\
-\xf7\x15\x1f\x89Hj\x5c\x8a\xb4t\xb7\xba\x7fwE\xbb\
-\xa4\xad\xa7\x9d\x0a\x82\xfe\x17\x00\xc1\x7f\xe8\xc4E\xe2d\
-d\xf2p\x19\x99R(\x85\xc9C\x9d\xcf0)H\x1a\
-$9\x09\xd9\x92\x97\x98+iq\xa9\x92\x16\x9fz\xc0\
-2\xa2\xceOsw\x8b4t5J]W\xbdTw\
-\xee\x95\xaa\x8ej\xd9\xd3^.\xa5\xce\xe7\xf3\xd6/\x9c\
-\x7fWKe\x83\x9d\x00\x08\xfe\x83#3>C\xa6g\
-N\x91\xa9\xe9ErDF\x91\x8cK\x1d-\xc9qI\
-1\xff\xde\xba\xae\x06\xf9\xace\x87lj\xda\x22\x1b\x9b\
-6\xcb\x96\xe6\xcf\x9c\xd6C7\x17\x04\x0eZ\x00\xf5\x04\
-\x7f\xef\x18\xe4<\xc9\xe7\xe7\xce\x919\xd9G\xcb4'\
-\xe8\xf5\xa9?\xd0h\x8b\xe1\xdd\x86\xf7\xe5\xcd\xbau\xf2\
-f\xfd:\xe9\xe8\xe9\xe4BA\x9f\x04\x10\xa5\x1a\x0e\xd4\
-G\x8a\xc8q\xd9\x7f!g\xe6/\x94YYG\xb9\x7f\
-{\x15\x1dOxe\xefZYQ\xf5\x82\xecl\xdd\xcd\
-\xc5\x03\x04p\xb0\xc4G\xe2ea\xde<\xb9`\xe89\
-2\xc2\xe9\xcf\xfb\x8d\x0d\x8d\x1f\xc9\x92\xd2'es\xf3\
-\xa7\x5cL@\x00}av\xf6,\xb9j\xc4\xc5\xbe\x0c\
-\xfc\xfdy\xa7~\x83\xdc_\xb2DJ\xda\xcb\xb8\xb0\x80\
-\x00\x0e\xc4\xe0\xc4<\xb9~\xd4\x95n\x93?HtF\
-;\xe5\xf1\xf2\xe5\xf2X\xf9o=;`\xa8oH\x1e\
-*\xba\xfb\x90\xcb\xf9m\xe5\xf3\xb2\xcc\xf9@\xefH\xa0\
-\x0a~\xcf\xdc\x9cc\xe4G\xa3\xae\x91\xcc\x84\x8c\xc0\x9d\
-[b$Q.\x1ev\xbe\x1c\x9b=C\xee\xd8y\xb7\
-\xfbZ\xd1k\xc49?C\x92\xf2\x0f\xb9\x9c/\xe7Y\
-@o\xeb=\xecM \xe7\xe7{\xc3/\x94\x7f\x1cw\
-S \x83\x7f_&\xa5\x8d\x97\x07&\xff\x8b\xcc\xcc\x9c\
-\xc6\x9d\x0f\x08 !\x92 \xb7\x8f\xbbQ\xfez\xe89\
-\xa19g}B\xfel\xfc\xad\xb20o>w?\x84\
-W\x00\x1a\xfc?\x1d\xf7#9>\xe7\xd8\xf0]\xf4H\
-\x9c\xfcx\xcc\xdf\xc9\x99\xf9\xa7\x10\x01\x08 \x9c\xcd\xfe\
-[\xc6\x5c\x1b\xb8\xc1\xbe\xber\xed\xc8\xcbe^\xeel\
-\xa2\x00\x01\x84\x8b+\x0a\xff\x86\x1b\xff+\x11^'S\
-\xd2'\x12\x09\x08 \x1ch\x93\xff\xdbC\xce\xe2\xca\x7f\
-\xd5\x15\x8a\x97\xdb\xc6\xdd(\xd9\x09\xcc\x06G\x00\x01G\
-\xdf\xf3\xdf4\xfa\xfb\x5c\xf5\xfd\xc8O\x1c$7\x8e\xbe\
-\x9a\x8a\x08\xe3\x03 L'{\xc3\xa8\xab%=>m\
-@\xbe[\x17\xe9\x94uT\xb8K}\xdb{:\xa4=\
-\xda\xee\xfe\xd6\x15\x84\xe9qi\x92\xe4\xfc\xceK\xccq\
-\xdf\x85\x0f\xc4z\x03]\xe0tR\xde7du\xed\xeb\
-D\x05\x02\x08\x1e'\xe4\xce\x95c\xb2g\xf4\xcbwi\
-`\xbf\xdf\xf8\x91|\xdc\xb4E\xb6\xb6l\x93\x92\xb62\
-\xa9\xe9\xdc\xeb\xae\xf7\xff\xf3M\xf2\x04\x19\x96\x5c \xa3\
-SF8}\xf3I2#\xf3\x08\x99\x98vX\xbf\x1c\
-\xf75#.\x91\xb7\xeb\xd7\xbb+\x0c\x01\x01\x04\x86\xe4\
-\xb8d\xb9r\xc4E1\xff\x9e\xf7\x1a>\x94U5\xaf\
-\xc8;N\x10\xa9\x04\x0e\x06\xcd\x0cT\xdcV\xea~\xde\
-\xa8[\xf7U\xd7\xe5\xc4\xbc\xe3\xe5\xcc\xc1\xa78r\x18\
-\x12\xb3\xe3\xd7\xe4%\x17\x0d;_\x1e(\xf95\x91\x81\
-\x00\x82\xc39\x05\xa7\xb9\xfd\xdcX\xa1\xeb\xf0\x1f\xda\xf3\
-\xb8\xecj+\x8eI\xf9\x9a\x05\xe8\xa9\x8ag\xe5\xe9\x8a\
-\xe7dA\xee\x1c\xb9t\xf8\x052<yhL\xbe\xeb\
-\xec\xfc\xd3\xdc\xb9\xf4\x95\x1d\xd5DG\x08\x08\xfc \xa0\
-\xce|\xbb`\xc8\xd91\x0b\xcc\xbf\xdf\xfeOr\xeb\x8e\
-\x9f\xc5,\xf8\xf7E\xbb\x10k\xf6\xbe!\xdf\xdd|\x9d\
-<R\xb6\xb4W]\x8a>?\x11\x22\xf1r\xe1\xd0s\
-\x89\x0c\x04\x10\x0ct\xb6[,\x16\x88\xe8z\xfb\xcb\xb6\
-\x5c\xef6\xfb\xfb\x1b]\xdd\xb7\xa4\xecI\xb9a\xdbm\
-\xd2\xd8\xd5d^\xfe\xa9\x83N\x94AN\xb7\x03\x10\x80\
-\xbf\xfb7\x91\x04\xb7Ik\xcd+\xb5k\xe5\xe6\xedw\
-\xc4$\xf8\xfa\xc2\x87\x8d\x9f\xc8\xf7?\xbd\xd9<Q\xa8\
-\xb6\x02\xce\xce?\x95\xe8@\x00\xfefA\xeel7\x8f\
-\x9f%:J~\xd7\x17\xf7yf]}I{\xa9\xdc\
-\xb8\xedv\xf3\x91\xfb\xd3\x07\x9f\xec.#\x06\x04\xe0[\
-N\x1b|\x92iy:2\xaf\xeb\xe9{\xa2=\x9e:\
-\xcf\xddm{\xe4\xce]\xf7\x98\x96\x99\x95\x90)ss\
-\x8e&B\x10\x80?\xd1t^\xd33\x0e7+O\x83\
-\xfe\x8e]wKkO\x9b'\xcfWS\x7f=[\xf5\
-\xa2\xf9X\x00 \x00\x7f6\xff\xf3\xe6\x9a\x96\xb7\xbcj\
-\x95lk\xf9\xdc\xd3\xe7\xfc`\xe9c\xb2\xb7\xb3\xce\xac\
-\xbc\x99Y\xd3\xdc\xb9\x01\x80\x00|\xc7\xfc\x1c\xbb\xd5~\
-\xbae\xd7\xa3\xe5\xcb<\x7f\xce:\x0e\xb0\xb4r\xa5Y\
-y:%9\x8c\xf9\x12\x10@\x00\x9a\xffcSG\x99\
->\xfd\xeb\xbb\x1a|q\xee\xda\x0d\xd0\xf5\x06V\xcc\xc9\
-\x99E\x94 \x00\x7fqL\xf6L\xb3\xb2\xba\xa3\xdd\xf2\
-L\xe5*\xdf\x9c\xbb\x8eQ\xac0\x1c\x0b8*s\xaa\
-;\x95\x1a\x82I \xa7\x02\x1fk(\x00\xddv\xab\xc6\
-g\x1br\xbeT\xfb\xaa\x5c4\xec<\x93\xb2\xf4U\xa0\
-.H\xd2\xd7\x9f}A\x93\x8c\x14\xf5!\xd1\x88\xd5\xbe\
-\x8a\xfa\xbd\xe7\x16\x9cn^\xa7-N\xf7\xea\x85\x9a5\
-\x08\xc0\xf3'\x14I\x90\xa9\xe9\x93\xcd\xca{\xd1\x87\x17\
-\xbd\xac\xbd\xc2]\x89\xa8\x9b\x96Z\xa0oS\xfa*\x00\
-\xddFMS\x91\xf77\xb3\xb2\x8et?\xd6TtT\
-\x05R\x00\x81\xeb\x02\x14\xa5O0{\x9a4u7\xbb\
-\xaf\xd7\xfc\x88\xee\x11h\xc5\x91\x99\x87\x0b0\x06\xe0\x0b\
-\xa6eL1+k}\xc3F\xdfn\xbdm)\xae\xf1\
-\xa9c%\x85q\x00\x04\xe0\x97\x16\x80\x15\xeb\x1a>\xf0\
-m=\xe8r^\x9d!hr\x93D\xe2dB\xda8\
-\xa2\x05\x01x\x9f\xc9iv\x02\x18\x88\x95~\x96X\x1e\
-\x7f\x11\x99\x83\x11\x80\xd7\xd1\x85?\x9aW\xcf\x02\xdd?\
-\xcfo\xa3\xff\xfb\xb3\xa9y\xabYY\x87\xa5\x8e!Z\
-\x10\x80\xb7\xb1\x9c\xfc\xf3i\xcbv\xdf\xd7\xc7\xd6\xe6m\
-fe\x8d3\xac[@\x00\xb1\x11@\xca(\xc3\xe0\xf1\
-\xbf\x00\xf4\xd5\x95\xd5\x0c\xc6\xd1)#%>\x12O\xc4\
- \x00\xef2*e\x04-\x80\xfd\xf8\xcch\x01\x93&\
-\x09\xb1\xd8\xbe\x1b\x10@\xcc(L\x1efV\xd6\x17m\
-%\x81\xa8\x93\xdd\x86\xe71\xc2\xb0~\x01\x01\x9832\
-\xc5\xe6\x06\xd5T_\x96\x0bj\x06V\x00\xa5\x9e\x14,\
- \x00St\x0a\xb0U\x22\xcb\xe2\xf6\xd2\xc0\x5c\xe0=\
-\x86\xe72$i0\x11\x83\x00\xbcI\xbea\x16\xdb\x92\
-@\x09\xa0\xdc\xae\x8e\x11\x00\x02\xf0*\x05\x86\x03T\x95\
-\x1d5\x81\xb9\xc0U\x9d5f\xfb\x07\x14 \x80\xc0\x11\
-\x98\xd5\x80\xb9\x89v\xa9\xab\xfc>\x01h_4\x97a\
-]g\xbdS?\x87>A\xaa/[\x88\x17\xb7\xedq\
-wL\xea\xfd\x8d\x98`\xb2w\xa3&n\xdd\xddn?\
-\x80\xabu\x88\x00<Lf|\xa6YY\xb5\x86y\xf5\
-\xbc@mW\x9d\x89\x00\xb2\xe23z\xfd\xdf\xea\x0eF\
-\xfa\xe9-\xbay\xcbs\xd3\x7fs\xc8\xc7\xa8\xdf\xf9p\
-\xd9S<\xda\xc3\xd6\x05\xc8J\xc80++H-\x00\
-K\xa1e\x1a\xd61 \x00\xe3\x16\x80\xdd\xcdY\xe7\x93\
-\xfc\x7f\xbd?\x1f\x9b\xe6\xab&\x09E\x02\x08 \xf0-\
-\x80\xc6\xee\xa6@]\xe4\x06\xc3-\xcc\xb2\xe2\x11\x00\x02\
-\xf0 }\x19\xa0\xfas\xb4v\xb7\x06\xea\x22\xb7\xf6\xd8\
-\x9dOfB&Q\x83\x00\xbcGZ|\xaaI9\x1d\
-=\x9d\xbe\xcd\x02\xf4\xa7h1\x14Zf\x0cvZ\x06\
-\x04p\xc8Xm\x01\xde\xd2\xd3\x1a\xb8\x8blyNV\
-\xf9\x16\x01\x01x\x92\xf6\x9e\xf6\xc0\x9dSGO\x07\x17\
-\x16\x82-\x808\xa3S\xe9\x8cv\x05\xee\x22\xb7\x1aJ\
-\x8dMB\x10@\xa0\xc7\x00\x82\xd8\x02\xe86\x94Zb\
-$\x81\xa8A\x00\x00\x80\x00<D\x02O\xa6~!5\
-.\x95J@\x00\xde\xc3j\xe3\x0a}\x0d\x184\x9a\x0d\
-_\x03\xea\x1e\x01\x80\x00<G\x8f\xf3cAR\x5cb\
-\xe0.2\xfdv\x08\xbc\x00Z\xba[\xb9\x9a\xfd\x22\xb5\
-(\x15\x8a\x00 \xac4w\xb7P\x09\x08\xc0{XM\
-\xdf%\xf7= \x00\x1f\xd2\xd6\xd3fRNj\x5cJ\
-\xf0\xba\x00\x11\xa6\xef\x02]\x80\xd0\xb6\x00,\xc7\x00\x9a\
-\xe8\x02 \x00/\xd2i\xf4\xfa.-\x80\xef\xb9\xd3\xe2\
-\xd3\xcc\xcab]\x01\x02\xf0$V\x83SVS\x8a=\
-%\x00\xc3nMG\x14\x01 \x00\x0f\xd2`\x98\xc5'\
-h\x12H5<\x9f\xa6.\xba\x00\x08\xc0\x834\x1a\xa6\
-\xbd\x0aZ7\xc0r`3\x88\xf9\x12\x10\x00-\x80?\
-\xc02\xbd\x98\x17\xc82L\xe3e\x95`\x14\x10\x80)\
-M\x86\x02\x18\x94\x98\x1b\xa8\x8b\x9c\x97`s>\xdd\xd1\
-nf\x5c\x22\x00\x8f\xb6\x00\x0cw\xf3\xcd\x0b\x9a\x00\x0c\
-6\x05\xb1\xaec@\x00\xa6\xec5l\x9aZ\x05L\xd0\
-\x04\xb0\x97\xe6?\x02\xf0*\x95\x1d\xd5fe\x0d6\xdc\
-ix\xa0I\x8c$\x9a%L\xad\x0a\xd0\xa6\xa9\x100\
-\x01\x94\xb7W\x9a\x95U\x98<,0\x17\xb80y\xa8\
-\x9dd;\xab\x89\x18\x04\xe0MZ{\xda\xcc\xb6\xf4\x1a\
-\x992<@\x02\xb0\x93YU\x07\x02@\x00\x1e\xa6\xa2\
-\xc3\xa6\x150$)?0)\xc6\x0aS\x86\x1a\xd6/\
-\x02@\x00!\xe8\x06\xe8&\x98#\x02\xd2\x0d\x18\x91l\
-\xd7\x9a\xd9\xddVB\xc4 \x00\xef\xb2\xa7\xbd\xdc\xac\xac\
-\x89i\x87\x05\xa2N&\xa4\x8d3+\xab\xb8\xbd\x94\x88\
-A\x00\xde\xe5\x8b\xb6b\xb3\xb2\x8a\xd2'\xf8\xbe>\x12\
-\x22\xf1rX\xeah\x93\xb2j:\xf72\x09\x08\x01x\
-\x9b\xcf[w\xd3\x02\xd8\x87\xc3R\xc7\x98\x8de\xec2\
-\x94+ \x80\x18\xb5\x00J\xccR\x83i\xd39\xc5\xe7\
-\xdb`\x15\xa5O4+\xeb\xb3\x96\x1dD\x0b\x02\xf06\
-]\xd1.\xd9\xd1\xba\xd3\xac\xf9|T\xe6\x11\xbe\xae\x8f\
-\x99Y\xd3\x0c\x05\xf09\xd1\x82\x00\xbc\xcf\x96\xe6mf\
-e\xcd\xca:\xd2\xc7\xfd\xff\x04\x99\x91i(\x80\xe6\xed\
-\xbe8o\xf6@\x08\xb9\x0065m5+\xeb\xd8\xec\
-\x99\xee+A?25c\x92Y\x1e\x00\x9df]\xd6\
-Q\xe9\x8b\xf3f\xf7\xe2\x90\x0b\xe0\xc3\xa6Mfe\x0d\
-M*\x90#2\x8a|Y\x0f'\xe6\x1eoV\xd6\x07\
-\x8d\x9b\x88\x14\x04\xe0\x0fj;\xeb\xa4\xb8\xcd\xee}\xf5\
-7\x07\x9d\xe0\xbb:\xd0\xa7\xe0\x82\xdc\xb9f\xe5ml\
-\x8a\xbd\x00\xda\x8c\xb6e\xb7L~\x82\x00|\xca\xba\x86\
-\x0f\xcc\xca\x9a\x9f;\xdbl5]\x7f1/\xe78\xb3\
-\xbc\x86Q\xe7\xe7\xbd\x86\x8d1?f\x1d\xc05\x11@\
-|\x06Q\x1dv\x01\xbcS\xbf\xde\xac,}\x15xn\
-\xc1\xe9\xbe9w\x1d\xb3\xb8`\xe8\xd9f\xe5mm\xde\
-.5\x9d\xb5\xfdr\xec\x16\x13\x8dh\x01 \x00\xa7\xc9\
-\xbaY\x9a\xba\x9b\xcd\xca\xfb\x96#\x00\xbf\xb4\x02\x16\xe4\
-\xce\x91\xd1)#\xcc\xca{\xa3\xfe\xdd~;v\x8bk\
-\x96\x93\x98MT\x87]\x00\xda\x9c\x5c[gw\xe3\xa6\
-\xc7\xa7\xc9\xa5\xc3/\xf0\xfcy\xeb\x0e@\xdf5<N\
-m\xfe\xbfV\xfb\xa6\xaf\x0404)?\x90[\xbc#\
-\x80>\xb2\xa6v\xadiyg\xe5\x7fSfx|b\
-\xd0e\xc3/4M\x00\xf2a\xe3\xa6~}\xfdg\x91\
-\xcfA\xbb@#\x93\x0b\x89\xec\xb0\x0b\xe0\xfd\xc6\x8fM\
-o^\xbd\xb1n\x19s\x9d\xfbj\xd0\x8b\xe8\xc0\xdfy\
-\x05g\x98\x96\xf9B\xcd\x9a~=\x07\xab\x94c\x13\xd2\
-\xc6\x12\xd9a\x17\x806__\xa8~\xc5\xb4\xcc\xdc\xc4\
-\x1c\xf9\xb7\x09\xb7I~\xe2 O\x9d\xab\xb6Ln\x1e\
-s\xadi\x99\xba\xfa\xef\xb5\xbdo\xf5\xaf\x00\x8cR\x8e\
-\xcd\xca:\x8a\xc8\x0e\xbb\x00\x94\xe7\xab_\x96\x0e\xa3M\
-C\xbfd\xb8\xd3\xc4\xbeo\xd2\x9d2\xceh\x99\xed\xa1\
-rR\xde7d\xd1\xf8[\xcd\xfb\xbdK+W\x9a\xbd\
-\x9a\xeb-V\x19\x87\xe6\xe6\x1c\xed9I#\x80\x01@\
-\xfb\x94/\xd5\xda7c5e\xd8\x7fLZ$\x7f\x95\
-\x7f\xea\x80M\x15\xd6\xf7\xfc7\x8c\xbaJ\xfe\xc1y\xf2\
-'\x18oi\xae\xdb\xac\xad\xacz\xa9\xdf\xcf\xc9*\xe3\
-\x90fB\xfe\xc9\xd8\xebM\xb7DC\x00>\xe5\x89\xf2\
-\x15fK\x84\xf7%9.I~0\xf2{r\xff\xe4\
-Erd\xe6\xe1\xfdv>\xf1N\xb0\xeb\xec\xc4\x87\xa7\
-\xfcB\xfer\xf0\xc91\xf9\x8e\x87\xcb\x9fv\x93\xac\xf6\
-7;Zw\x99\x95\xa5S\xb8\x17\x17\xfd\x5c\xe6\xe5\xce\
-v\x85\x00_Od\xc1\x86s\xa2A?I\x0dT}\
-Z\xc7\x92\xcd\xcd\x9f9]\x8e\xff\x96\xb5u\xef\x98m\
-U\xbe/\x05I\x83\xe5\xe4\xbcyr\xc6\xe0\x85\xee?\
-\xc7\x8a\x92\xf6R\xb9t\xf3u1\x91f\xaf\x84=\xf5\
-\x97n\x0b\xcb\x12\x9df\xbc\xb5y\x9bsneR\xef\
-\xb4\x0a\xf5\xdcT\xe0*\x86t\xa7%\x15\x1fIpZ\
-T)\xee\xdf\xfa\xef\xb5\xe5\xa0\xab)\xf5\xf5\xaf\xb6\xae\
-R\x9c\xbf?j\xda,\xb7\xec\xb8+p\xb1\x11\x8a\xb5\
-\x93\xbf)[\xea\xf6\x95c9\x99gJ\xfaD\xf7\xf3\
-\xc3QW\xca\xc6\xc6O\xdc\xc9H\x9b\x9a\xb7\xb83\xe9\
-\x0ef\x9e\xbb\xee\xe63%}\x92LM\x9f,\xd3\x9d\
-\x16\xc6\xa4~\xcaPto\xf1\x83\x03\x16\xfc\x8a\xae\xe6\
-\x1c\x92g+\x00\x9d\xcdyd\xe6T\xf7s\xb0\x04m\
-\xc3\xd8P\x09@w\xb4\xfdU\xe9\x13nK \xe6\x15\
-\xea<9ffMw?\xfb\x8eE\x94\xb7W\xb8\xaf\
-%u\xba\xab\x0a\xa1\xcdibk\xa0\xe9\xcd\xa9\xff\x8f\
-\xca)+!\xc3}\xfa\xe9\xabF\xab\xb9\xfc}\xe1\xd9\
-\xaa\x17eC?\xcc\xfb?\x10\xba\x9a\xf3\xc4\xbc\xe3=\
-w\x0fik\x00\x01\xf8\x18\xbd\xb9u\x9a\xec@,\xef\
-\xcdq\x9e\x1e\xfa\x99\xec\xe1D\xa3\xda<^\xbc\xe7\x91\
-\x01?\x8e\xf7\x1b>\xf2d\xfd\x04U\x00qa\x11\x80\
-\xce\x0bX\xb4\xeb>2\xdb~\x0d:\xe0w\xeb\x8eE\
-\x032\xf0\xb7?\xdaJ\xfa\xb4e;\x02@\x00\xb1\xb9\
-\xb9\xeer$\x00\x7f(\xc6;w\xde\xe3&T\xf5\x0a\
-\xabk_\xf7\x5c=\xe9\xc0\xa0_\xb3C!\x80}x\
-\xb3~\x9d\xfc\xaa\xf4q\x22\xff\xff\xf8\xf7\xdd\xbf\x94\xb7\
-\xea\xdf\xf3\xd41\xad\xae]k\x96 \x84V\x00\x02\xf8\
-#\x1e-_&\xcb*\x9f\x0f}\xf0\xdfS\xbcX~\
-W\xbd\xdas\xc7\xa5\xaf\xea\x96W\xad\xf2\xdcq\xf9-\
-1\x0c\x028\x00\xf7\x97\xfcZ\x9e\xacX\x11\xcas\xd7\
-\xb7\x0f\xff\xbc\xeb^yn\x00f\xfb\xf5\x16\xbd6\xf5\
-F\xbb=\xd3\x02@\x00_\xdb\xf7\xd5Q\xef_\x14?\
-$=\xd1\x9e\xd0\x9cwCW\xa3\xdc\xb4\xfd\xa7\x9e\xec\
-g\xef\x8bNG\xfe\xf9\xee\x07\x10\x00\x02\x88-\xda\xd4\
-\xbc\xd1\x09\x88\xfeJ{5\x90\xe8l\xb6\xcb\xb7\xdc \
-\x1f6~\xe2\x8b\xe3}\xa3n\x9d<\x5c\xf64\x02@\
-\x00\xb1E\x13_\x5c\xb6\xe5\x87\xb2f\xef\x1b\x81=G\
-}\xc5\xa7SY\xab:k|u\xdc\x0f\x97=%\x0f\
-\x96>\x86\x00bD\xfc\xd8+\x8bnG\x01\x22\xed=\
-\x1d\xf2z\xdd;\xeeT\xd4I\xe9\xe3\xdd\x89;AB\
-w\xcc\xd1\x19\x87\xeb\x1b7\xfa\xee\xd8?n\xda\xe2\xae\
-\xb5\x98\x9eq\xf8\x80\x06\xa1&\x99\xf1\xe2\x1c\x05\x04`\
-HYG\x85\xbb\xa8\xa7\xdc\xf9=&u\x94;=7\
-(\xe8\x96\xe7o\xd5\xaf\x97\xda\xae:\xdf\x1d{i{\
-\xb9\xac\xac~\xd9\x15\xb5f\xfc\xd1E;\xfd.\xa2\xe6\
--\xa6;Oy\x81P\xac\x06<\xe8\xcaq~t{\
-0\xcd\x07\xa8\xfb\x04\x06a\x22\x88>\xc1\xae\xd9\xfac\
-w\x10\xd4\xafh\xf2\x93y9\xb3e\xe1\xa0\xf92-\
-\xa3(f\xcb}\xcb;*\xdd%\xca;[w\xcb\x8e\
-\x96]\xb2\xa9y\xab\x9b)\x09\x01\x84\x90A\x89yr\
-B\xee\x1c9>\xe7X9<c\x92\xafep_\xf1\
-\x83\xb2\xa2\xea\x85@\x5c\x17\xdd\x05iz\xc6\x14\x99\xec\
-t\xdb\xc6\xa5\x8eqS\xa2\xeb\x82\xaa\xdel\xed\xae\x19\
-\x8f4\xa0u\x00xO{\x85\xd3\xca(sw\x95\xd2\
-u\x11\xba,:\x0c\xd3\xc6\x11\xc0A\xa0\x9bO\xcc\xcc\
-\x9c\xe6<}\xa6\xb8\x8b\x8b\xc6:]\x05?\x09Ao\
-\xec\x8b7\xff \xd0o>T\x0c\xf9\x8e\xb4u-\x7f\
-\x5c$\xce]\xef\xdf\x1d\xed\x91\xd6\xee6i\xedi\x95\
-f\xa7\x0et\x95h\xe8[\xb9\x08\xc0\xe2fK\x921\
-)#\xdd<\x81\x85\xc9\xc3\xdc\xd4\xdcC\x93\x0b$/\
-1Wr\x13\xb2\xdd\xc1\xb7\xbe\xa0O\xa6R\xe7\x89T\
-\xdc\xbe\xc7\x1d\xfc\x9a\x96>E\x8e\xc9\x9eaz\xcc:\
-\xe0y\xfb\xe7\xff\xca\xc5C\x00\x08 \xd6\xe8\xda~\x9d\
-F\xaa\x0bJ\xb4\xbf\x9a\xea<\x8d\xe2#\xff\xff\x06V\
-\x9fJ\xfatj\xeeiq'\xea\xec\x9fQH3\x00\
--\x99r\xafy\x8e;}-\xf8\xb6\xe16j\x80\x00\
- F\x9c?\xe4,\xb9\xaa\xf0\x22\xd32+;\xaa\xe5\
-\x12\xa7+\xe0\xc5\x857\xd0?0\x11\xc8'\xe8\xe2%\
-\x1d\x8d\xb6D[\x16\x97\x0c\xfb6\x95\x8b\x00\xc0\xebt\
-G\xbb\xdd\xd5{\xd6|\xab\xe0\x0c\xcf\xecq\x00\x08\x00\
-\x0e\x80\xce\x88{\xd1x\xbb.\x1d!\xbfa\xd4\xd5\x81\
-Lv\x01\x08 p\xfc\xe7\x9eG\xa4\xb1\xbb\xc9\xb4L\
-\x9d!xf\xfe)Tn\xf8h@\x00>C\xd7\xc8\
-/\xde\xf3\xa8y\xb9\x97\x0f\xff\x8e\x0cJ\xcc\xa5\x82C\
-\x14\xfc\xceg!\x02\xf0!\xab\xaaW\xbb\xf3\x03,\xd1\
-W\x95\x7f;\xe2R*7D\xc1\xff\xea\xccg\xdeE\
-\x00>D\xe7\xf1\xdf\xb3{\xb1y\x22\x13\xddF\xcbz\
-\xc2\x11x7\xf8\x19\x03\xf01\xdb[w\xca\xf2\x18\xcc\
-\xe7\xbfn\xe4\x15\xee4Z\x08~\xf0#\x00\x9f\xb3\xa4\
-\xec\x09\xf3\xd5i\xba\x90\xe6\xe2a\xe7S\xb9!\x08~\
-\x04\xe0stQ\xcf\xfd%K\xcc\xcb=\x8f\xb9\x01\xa1\
-\x08~\x04\x10\x00^\xdd\xfb\xa6lh\xb4\xddNK\xb7\
- \xd7MN\x99\x1b\x10\xec\xe0G\x00\x01\xe1\xde\xdd\x8b\
-\xdd\x15\x84\x96\xe8\xce\xc4\xa7\x0f^H\xe5\x068\xf8\x11\
-@@\xd0\x04\x16\x8f\x97/7/\xf7\x8a\xc2\xef\xb8\xdb\
-\x94C0\x83\x1f\x01\x04\x88\xc7+\x96IY{\x85\xe9\
-\xf8\x82\xe6F\x0c\xd3\x9e\x09a\x0b~%\x81\xba\x0a\x06\
-\x1d=\x9dro\xf1\x7f\xc9\xa2\xf1?9\xa4rj;\
-\xebdY\xd5\xf3\xb2\xb2\xeaei\xean\xa6b\x03\x1c\
-\xfc\x08 `\xack\xf8@\xfe\xa7\xeem\x99\x97s\xdc\
-Au#\x9e\xaexV^\xaayM:\xa3\x9dTf\
-\x08\x82\x1f\x01\x04\x90\xfb\x8b\x97\xc8\xd1YG\xf5:{\
-\x90f\x09~\xb2|\x85\x9b\x22\xcc\xcf\x99\x82\xa1\xef\xc1\
-\x8f\x00\x02\x88\xee\xfc\xa3\xbb\xe9\x5cUx\xf1\x01\xff\xbb\
-\xf5\x0d\x1b\xe5\x89\x8a\xe5\xf2A\xe3\xc7TZH\x83\x1f\
-\x01\x04\x94e\x95\xbf\x93\x85y\xf3\xffh2\x8f\x0e\xe8\
-\xbdV\xf7\x96\xfb\xc4\xd7\xa9\xc4\x10\xee\xe0G\x00\x01\xe5\
-\xcb\xecA\xf7M\xbc\xd3\xfd[\x07\x08W\xd5\xac\x96\xa5\
-\x15\xcfIYG%\x15\x14\x1c\xaa\x9d\xcf\x89N\xf0\x1f\
-\xf4L0\x04\x10Pt\x0b\xab\xa5\x95+\xa5\xad\xbbM\
-\x9e\xa9Z\xe5\xe6\x11\x80\xc0\x05\xff\x09N\xf0\x1fR\x1f\
-\x8e\xac\xc0\x00!\x0d~\x85\x89@\x00!\x0d~\x04\x00\
-\x10\xe2\xe0G\x00\x00!\x0e~\x04\x00\x10\xe2\xe0G\x00\
-\x00!\x0e~\x04\x00\x10\xe2\xe0G\x00\x00!\x0e~\x04\
-\x00\x10\xe2\xe0G\x00\x00!\x0e~\x04\x00\x10\xe2\xe0G\
-\x00\x00!\x0e~\x04\x00\x10\xe2\xe0G\x00\x00!\x0e~\
-\x04\x00\x10\xe2\xe0G\x00\x00!\x0e~\x04\x00\x10\xe2\xe0\
-G\x00\x00!\x0e~%\x12\x8d\x92\x10\x08 \xac\xd0\x02\
-\x00@\x00\x00\x80\x00\x00\x00\x01\x00\x00\x02\x00\x00\x04\x00\
-\x00\x08\x00\x00\x10\x00\x00 \x00\x00@\x00\x00\x80\x00\x00\
-\x00\x01\x00\x00\x02\x00\x00\x04\x00\x00\x08\x00\x00\x10\x00\x00\
- \x00\x00@\x00\x00\x80\x00\x00\x00\x01\x00\x00\x02\x00\x00\
-\x04\x00\x00\x08\x00\x00\x10\x00\x00 \x00\x00@\x00\x00\x80\
-\x00\x00\x00\x01\x00\x00\x02\x00\x00\x04\x00\x00\x08\x00\x00\x10\
-\x00\x00 \x00\x008\x00\xff+\xc0\x00\x1c{0\x19G\
-\x03\xd4k\x00\x00\x00\x00IEND\xaeB`\x82\
-"
-
-qt_resource_name = b"\
-\x00\x06\
-\x07\x9e\x88\xb4\
-\x00s\
-\x00h\x00a\x00r\x00e\x00d\
-\x00\x0c\
-\x00V'\xdc\
-\x00C\
-\x00h\x00e\x00c\x00k\x00B\x00o\x00x\x00.\x00q\x00m\x00l\
-\x00\x0d\
-\x01\xb8P\x9c\
-\x00T\
-\x00e\x00x\x00t\x00F\x00i\x00e\x00l\x00d\x00.\x00q\x00m\x00l\
-\x00\x09\
-\x08\xbf\xf4\xdc\
-\x00L\
-\x00a\x00b\x00e\x00l\x00.\x00q\x00m\x00l\
-\x00\x1a\
-\x04'S\xdc\
-\x00S\
-\x00i\x00m\x00p\x00l\x00e\x00L\x00a\x00u\x00n\x00c\x00h\x00e\x00r\x00D\x00e\x00l\
-\x00e\x00g\x00a\x00t\x00e\x00.\x00q\x00m\x00l\
-\x00\x10\
-\x09\x8e}\x5c\
-\x00L\
-\x00a\x00u\x00n\x00c\x00h\x00e\x00r\x00L\x00i\x00s\x00t\x00.\x00q\x00m\x00l\
-\x00\x0a\
-\x0a\xce\x15\xdc\
-\x00S\
-\x00l\x00i\x00d\x00e\x00r\x00.\x00q\x00m\x00l\
-\x00\x12\
-\x06\xc0(<\
-\x00F\
-\x00l\x00i\x00c\x00k\x00r\x00R\x00s\x00s\x00M\x00o\x00d\x00e\x00l\x00.\x00q\x00m\
-\x00l\
-\x00\x06\
-\x07\x03}\xc3\
-\x00i\
-\x00m\x00a\x00g\x00e\x00s\
-\x00\x06\
-\x07\x84+\x02\
-\x00q\
-\x00m\x00l\x00d\x00i\x00r\
-\x00\x0a\
-\x09\xcc\x1a\xdc\
-\x00T\
-\x00a\x00b\x00S\x00e\x00t\x00.\x00q\x00m\x00l\
-\x00\x0a\
-\x0d\xd0R\xdc\
-\x00I\
-\x00m\x00a\x00g\x00e\x00s\x00.\x00q\x00m\x00l\
-\x00\x0a\
-\x0bhq\x5c\
-\x00B\
-\x00u\x00t\x00t\x00o\x00n\x00.\x00q\x00m\x00l\
-\x00\x0d\
-\x0b]\x12\x87\
-\x00c\
-\x00h\x00e\x00c\x00k\x00m\x00a\x00r\x00k\x00.\x00p\x00n\x00g\
-\x00\x07\
-\x0auW\xa7\
-\x00t\
-\x00a\x00b\x00.\x00p\x00n\x00g\
-\x00\x08\
-\x07\x9eZG\
-\x00b\
-\x00a\x00c\x00k\x00.\x00p\x00n\x00g\
-\x00\x08\
-\x0c\xf7Y\xc7\
-\x00n\
-\x00e\x00x\x00t\x00.\x00p\x00n\x00g\
-\x00\x11\
-\x02G!g\
-\x00s\
-\x00l\x00i\x00d\x00e\x00r\x00_\x00h\x00a\x00n\x00d\x00l\x00e\x00.\x00p\x00n\x00g\
-\
-\x00\x0b\
-\x05R\xbf'\
-\x00q\
-\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\
-"
-
-qt_resource_struct = b"\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x02\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x000\x00\x00\x00\x00\x00\x01\x00\x00\x06\x9f\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x00h\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x8a\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00&\x02\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x01\x0c\x00\x02\x00\x00\x00\x06\x00\x00\x00\x0e\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00\x00,\xcb\
-\x00\x00\x01\x82_\xc7\xcc\xde\
-\x00\x00\x00P\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xbf\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x00\xa2\x00\x01\x00\x00\x00\x01\x00\x00\x16\x06\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x010\x00\x00\x00\x00\x00\x01\x00\x00.\x07\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xb6\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x01d\x00\x00\x00\x00\x00\x01\x00\x009S\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x01J\x00\x00\x00\x00\x00\x01\x00\x006\xe7\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00N\xca\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00RE\
-\x00\x00\x01\x82_\xc1\xa7\xb9\
-\x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00\x00C1\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00A\xf8\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x01~\x00\x00\x00\x00\x00\x01\x00\x00>\xcb\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x00Ik\
-\x00\x00\x01\x82Y\xad^\x0f\
-"
-
-def qInitResources():
- QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-def qCleanupResources():
- QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-qInitResources()
diff --git a/examples/declarative/signals/pytoqml1/main.py b/examples/declarative/signals/pytoqml1/main.py
deleted file mode 100644
index 5bc27a521..000000000
--- a/examples/declarative/signals/pytoqml1/main.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QTimer, QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- timer = QTimer()
- timer.start(2000)
-
- view = QQuickView()
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- root = view.rootObject()
-
- timer.timeout.connect(root.updateRotater)
-
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/pytoqml1/pytoqml1.pyproject b/examples/declarative/signals/pytoqml1/pytoqml1.pyproject
deleted file mode 100644
index e6f087cce..000000000
--- a/examples/declarative/signals/pytoqml1/pytoqml1.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "view.qml"]
-}
diff --git a/examples/declarative/signals/pytoqml1/view.qml b/examples/declarative/signals/pytoqml1/view.qml
deleted file mode 100644
index af2d966be..000000000
--- a/examples/declarative/signals/pytoqml1/view.qml
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-
-Rectangle {
- id: page
-
- function updateRotater() {
- rotater.angle = rotater.angle + 45
- }
-
- width: 500; height: 200
- color: "lightgray"
-
- Rectangle {
- id: rotater
- property real angle : 0
- x: 240
- width: 100; height: 10
- color: "black"
- y: 95
-
- transform: Rotation {
- origin.x: 10; origin.y: 5
- angle: rotater.angle
- Behavior on angle {
- SpringAnimation {
- spring: 1.4
- damping: .05
- }
- }
- }
- }
-
-}
diff --git a/examples/declarative/signals/pytoqml2/main.py b/examples/declarative/signals/pytoqml2/main.py
deleted file mode 100644
index 3a3650aba..000000000
--- a/examples/declarative/signals/pytoqml2/main.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QTimer, QUrl, Signal, Slot
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-from PySide6.QtQml import QmlElement
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.signals.pytoqml2"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class RotateValue(QObject):
- valueChanged = Signal(int, arguments=['val'])
-
- def __init__(self):
- super().__init__()
- self.r = 0
-
- @Slot()
- def increment(self):
- self.r = self.r + 10
- self.valueChanged.emit(self.r)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
-
- rotatevalue = RotateValue()
- timer = QTimer()
- timer.start(2000)
- view.setInitialProperties({"rotatevalue": rotatevalue})
-
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
-
- timer.timeout.connect(rotatevalue.increment)
-
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make
- # sure all child QML instances are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/pytoqml2/pytoqml2.pyproject b/examples/declarative/signals/pytoqml2/pytoqml2.pyproject
deleted file mode 100644
index e6f087cce..000000000
--- a/examples/declarative/signals/pytoqml2/pytoqml2.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "view.qml"]
-}
diff --git a/examples/declarative/signals/pytoqml2/view.qml b/examples/declarative/signals/pytoqml2/view.qml
deleted file mode 100644
index 2e9128f53..000000000
--- a/examples/declarative/signals/pytoqml2/view.qml
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import QtQml
-
-import examples.signals.pytoqml2 1.0
-
-Rectangle {
- id: page
-
- width: 500; height: 200
- color: "lightgray"
- required property RotateValue rotatevalue
-
- Text {
- id: helloText
- text: "Hello world!"
- anchors.horizontalCenter: page.horizontalCenter
- y: 30
- font.pointSize: 24; font.bold: true
- }
-
- Connections {
- target: rotatevalue
- function onValueChanged(val) {
- helloText.rotation = val
- }
- }
-}
diff --git a/examples/declarative/signals/qmltopy1/main.py b/examples/declarative/signals/qmltopy1/main.py
deleted file mode 100644
index 83966903c..000000000
--- a/examples/declarative/signals/qmltopy1/main.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QUrl, Slot
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-from PySide6.QtQml import QmlElement
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.signals.qmltopy1"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class Console(QObject):
- """Output stuff on the console."""
-
- @Slot(str)
- @Slot('double')
- def output(self, s):
- print(s)
-
- @Slot(str)
- def outputStr(self, s):
- print(s)
-
- @Slot('double')
- def outputFloat(self, x):
- print(x)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
-
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy1/qmltopy1.pyproject b/examples/declarative/signals/qmltopy1/qmltopy1.pyproject
deleted file mode 100644
index e6f087cce..000000000
--- a/examples/declarative/signals/qmltopy1/qmltopy1.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "view.qml"]
-}
diff --git a/examples/declarative/signals/qmltopy1/view.qml b/examples/declarative/signals/qmltopy1/view.qml
deleted file mode 100644
index b10e2e77d..000000000
--- a/examples/declarative/signals/qmltopy1/view.qml
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-
-import QtQuick
-
-import examples.signals.qmltopy1 1.0
-
-Rectangle {
- id: page
-
- width: 500; height: 200
- color: "lightgray"
-
- Console {
- id: pyConsole
- }
-
- Text {
- id: helloText
- text: "Hello world!"
- anchors.horizontalCenter: page.horizontalCenter
- y: 30
- font.pointSize: 24; font.bold: true
- }
-
- Rectangle {
- id: button
- width: 150; height: 40
- color: "darkgray"
- anchors.horizontalCenter: page.horizontalCenter
- y: 120
- MouseArea {
- id: buttonMouseArea
- objectName: "buttonMouseArea"
- anchors.fill: parent
- onClicked: {
- // once the "console" context has been declared,
- // slots can be called like functions
- pyConsole.outputFloat(123)
- pyConsole.outputStr("foobar")
- pyConsole.output(helloText.x)
- pyConsole.output(helloText.text)
- }
- }
- Text {
- id: buttonText
- text: "Press me!"
- anchors.horizontalCenter: button.horizontalCenter
- anchors.verticalCenter: button.verticalCenter
- font.pointSize: 16
- }
- }
-}
diff --git a/examples/declarative/signals/qmltopy2/main.py b/examples/declarative/signals/qmltopy2/main.py
deleted file mode 100644
index bc2e8d3ed..000000000
--- a/examples/declarative/signals/qmltopy2/main.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QUrl, Slot
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-from PySide6.QtQml import QmlElement
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "examples.signals.qmltopy2"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class RotateValue(QObject):
- def __init__(self):
- super().__init__()
- self.r = 0
-
- # If a slot returns a value, the return value type must be explicitly
- # defined in the decorator.
- @Slot(result=int)
- def val(self):
- self.r = self.r + 10
- return self.r
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
-
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy2/qmltopy2.pyproject b/examples/declarative/signals/qmltopy2/qmltopy2.pyproject
deleted file mode 100644
index e6f087cce..000000000
--- a/examples/declarative/signals/qmltopy2/qmltopy2.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "view.qml"]
-}
diff --git a/examples/declarative/signals/qmltopy2/view.qml b/examples/declarative/signals/qmltopy2/view.qml
deleted file mode 100644
index 4bbda574c..000000000
--- a/examples/declarative/signals/qmltopy2/view.qml
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-
-import examples.signals.qmltopy2 1.0
-
-Rectangle {
- id: page
-
- width: 500; height: 200
- color: "lightgray"
-
- RotateValue {
- id: rotatevalue
- }
-
- Text {
- id: helloText
- text: "Hello world!"
- anchors.horizontalCenter: page.horizontalCenter
- y: 30
- font.pointSize: 24; font.bold: true
- }
-
-
- Rectangle {
- id: button
- width: 150; height: 40
- color: "darkgray"
- anchors.horizontalCenter: page.horizontalCenter
- y: 120
- MouseArea {
- id: buttonMouseArea
- objectName: "buttonMouseArea"
- anchors.fill: parent
- onClicked: {
- helloText.rotation = rotatevalue.val()
- }
- }
- Text {
- id: buttonText
- text: "Press me!"
- anchors.horizontalCenter: button.horizontalCenter
- anchors.verticalCenter: button.verticalCenter
- font.pointSize: 16
- }
- }
-}
diff --git a/examples/declarative/signals/qmltopy3/main.py b/examples/declarative/signals/qmltopy3/main.py
deleted file mode 100644
index 6a5554842..000000000
--- a/examples/declarative/signals/qmltopy3/main.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-
-def sayThis(s):
- print(s)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
-
- root = view.rootObject()
- root.textRotationChanged.connect(sayThis)
- root.buttonClicked.connect(lambda: sayThis("clicked button (QML top-level signal)"))
-
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy3/qmltopy3.pyproject b/examples/declarative/signals/qmltopy3/qmltopy3.pyproject
deleted file mode 100644
index e6f087cce..000000000
--- a/examples/declarative/signals/qmltopy3/qmltopy3.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "view.qml"]
-}
diff --git a/examples/declarative/signals/qmltopy3/view.qml b/examples/declarative/signals/qmltopy3/view.qml
deleted file mode 100644
index 3e8a0f564..000000000
--- a/examples/declarative/signals/qmltopy3/view.qml
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-
-Rectangle {
- id: page
-
- signal buttonClicked
- signal textRotationChanged(double rot)
-
- width: 500; height: 200
- color: "lightgray"
-
- Text {
- id: helloText
- text: "Hello world!"
- y: 30
- x: page.width/2-width/2
- font.pointSize: 24; font.bold: true
- onRotationChanged: textRotationChanged(rotation)
-
- states: State {
- name: "down"; when: buttonMouseArea.pressed === true
- PropertyChanges {
- target: helloText;
- rotation: 180;
- y: 100;
- }
- }
-
- transitions: Transition {
- from: ""; to: "down"; reversible: true
- ParallelAnimation {
- NumberAnimation {
- properties: "y,rotation"
- duration: 500
- easing.type: Easing.InOutQuad
- }
- }
- }
- }
-
- Rectangle {
- id: button
- width: 150; height: 40
- color: "darkgray"
- anchors.horizontalCenter: page.horizontalCenter
- y: 120
- MouseArea {
- id: buttonMouseArea
- objectName: "buttonMouseArea"
- anchors.fill: parent
- onClicked: {
- buttonClicked()
- }
- }
- Text {
- id: buttonText
- text: "Press me!"
- anchors.horizontalCenter: button.horizontalCenter
- anchors.verticalCenter: button.verticalCenter
- font.pointSize: 16
- }
- }
-}
diff --git a/examples/declarative/signals/qmltopy4/main.py b/examples/declarative/signals/qmltopy4/main.py
deleted file mode 100644
index 8a56073d1..000000000
--- a/examples/declarative/signals/qmltopy4/main.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QObject, QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-
-def sayThis(s):
- print(s)
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
-
- root = view.rootObject()
- button = root.findChild(QObject, "buttonMouseArea")
- button.clicked.connect(lambda: sayThis("clicked button (signal directly connected)"))
-
- view.show()
- res = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(res)
diff --git a/examples/declarative/signals/qmltopy4/qmltopy4.pyproject b/examples/declarative/signals/qmltopy4/qmltopy4.pyproject
deleted file mode 100644
index e6f087cce..000000000
--- a/examples/declarative/signals/qmltopy4/qmltopy4.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "view.qml"]
-}
diff --git a/examples/declarative/signals/qmltopy4/view.qml b/examples/declarative/signals/qmltopy4/view.qml
deleted file mode 100644
index 771b14c47..000000000
--- a/examples/declarative/signals/qmltopy4/view.qml
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright (C) 2016 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-
-Rectangle {
- id: page
-
- width: 500; height: 200
- color: "lightgray"
-
- Rectangle {
- id: button
- width: 150; height: 40
- color: "darkgray"
- anchors.horizontalCenter: page.horizontalCenter
- anchors.verticalCenter: page.verticalCenter
- MouseArea {
- id: buttonMouseArea
- objectName: "buttonMouseArea"
- anchors.fill: parent
- }
- Text {
- id: buttonText
- text: "Press me!"
- anchors.horizontalCenter: button.horizontalCenter
- anchors.verticalCenter: button.verticalCenter
- font.pointSize: 16
- }
- }
-}
diff --git a/examples/declarative/stringlistmodel/doc/stringlistmodel.png b/examples/declarative/stringlistmodel/doc/stringlistmodel.png
deleted file mode 100644
index eeb9b518a..000000000
--- a/examples/declarative/stringlistmodel/doc/stringlistmodel.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/stringlistmodel/doc/stringlistmodel.rst b/examples/declarative/stringlistmodel/doc/stringlistmodel.rst
deleted file mode 100644
index 4c00ed130..000000000
--- a/examples/declarative/stringlistmodel/doc/stringlistmodel.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-String List Model Example
-=========================
-
-A model may be a simple 'list',
-which provides the contents of the list via the modelData role.
-
-.. image:: stringlistmodel.png
- :width: 400
- :alt: String List Model Screenshot
diff --git a/examples/declarative/stringlistmodel/stringlistmodel.py b/examples/declarative/stringlistmodel/stringlistmodel.py
deleted file mode 100644
index a7a1807bb..000000000
--- a/examples/declarative/stringlistmodel/stringlistmodel.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-from pathlib import Path
-import sys
-from PySide6.QtCore import QUrl
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-
-# This example illustrates exposing a QStringList as a model in QML
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
-
- dataList = ["Item 1", "Item 2", "Item 3", "Item 4"]
-
- view = QQuickView()
- view.setInitialProperties({"model": dataList })
-
- qml_file = Path(__file__).parent / "view.qml"
- view.setSource(QUrl.fromLocalFile(qml_file))
- view.show()
-
- r = app.exec()
- del view
- sys.exit(r)
diff --git a/examples/declarative/stringlistmodel/stringlistmodel.pyproject b/examples/declarative/stringlistmodel/stringlistmodel.pyproject
deleted file mode 100644
index 5ec3e85d1..000000000
--- a/examples/declarative/stringlistmodel/stringlistmodel.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["stringlistmodel.py", "view.qml"]
-}
diff --git a/examples/declarative/stringlistmodel/view.qml b/examples/declarative/stringlistmodel/view.qml
deleted file mode 100644
index 5db5576f4..000000000
--- a/examples/declarative/stringlistmodel/view.qml
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-
-ListView {
- width: 100
- height: 100
- required model
-
- delegate: Rectangle {
- required property string modelData
- height: 25
- width: 100
- Text { text: parent.modelData }
- }
-}
diff --git a/examples/declarative/textproperties/doc/textproperties.png b/examples/declarative/textproperties/doc/textproperties.png
deleted file mode 100644
index b14bb73d7..000000000
--- a/examples/declarative/textproperties/doc/textproperties.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/textproperties/doc/textproperties.rst b/examples/declarative/textproperties/doc/textproperties.rst
deleted file mode 100644
index 81829dfdc..000000000
--- a/examples/declarative/textproperties/doc/textproperties.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Text Properties Example
-=======================
-
-A Python application that demonstrates how to load a qml file
-using Material design, to change the look of text.
-
-.. image:: textproperties.png
- :width: 400
- :alt: Text Properties Screenshot
diff --git a/examples/declarative/textproperties/main.py b/examples/declarative/textproperties/main.py
deleted file mode 100644
index 4e6afc9ff..000000000
--- a/examples/declarative/textproperties/main.py
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import sys
-from pathlib import Path
-
-from PySide6.QtCore import QObject, Slot
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQml import QQmlApplicationEngine, QmlElement
-from PySide6.QtQuickControls2 import QQuickStyle
-
-
-# To be used on the @QmlElement decorator
-# (QML_IMPORT_MINOR_VERSION is optional)
-QML_IMPORT_NAME = "io.qt.textproperties"
-QML_IMPORT_MAJOR_VERSION = 1
-
-
-@QmlElement
-class Bridge(QObject):
-
- @Slot(str, result=str)
- def getColor(self, s):
- if s.lower() == "red":
- return "#ef9a9a"
- elif s.lower() == "green":
- return "#a5d6a7"
- elif s.lower() == "blue":
- return "#90caf9"
- else:
- return "white"
-
- @Slot(float, result=int)
- def getSize(self, s):
- size = int(s * 34)
- if size <= 0:
- return 1
- else:
- return size
-
- @Slot(str, result=bool)
- def getItalic(self, s):
- if s.lower() == "italic":
- return True
- else:
- return False
-
- @Slot(str, result=bool)
- def getBold(self, s):
- if s.lower() == "bold":
- return True
- else:
- return False
-
- @Slot(str, result=bool)
- def getUnderline(self, s):
- if s.lower() == "underline":
- return True
- else:
- return False
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- QQuickStyle.setStyle("Material")
- engine = QQmlApplicationEngine()
-
- # Get the path of the current directory, and then add the name
- # of the QML file, to load it.
- qml_file = Path(__file__).parent / 'view.qml'
- engine.load(qml_file)
-
- if not engine.rootObjects():
- sys.exit(-1)
-
- sys.exit(app.exec())
diff --git a/examples/declarative/textproperties/textproperties.pyproject b/examples/declarative/textproperties/textproperties.pyproject
deleted file mode 100644
index e6f087cce..000000000
--- a/examples/declarative/textproperties/textproperties.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "view.qml"]
-}
diff --git a/examples/declarative/textproperties/view.qml b/examples/declarative/textproperties/view.qml
deleted file mode 100644
index c722eb4eb..000000000
--- a/examples/declarative/textproperties/view.qml
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-
-import QtQuick
-import QtQuick.Layouts
-import QtQuick.Controls
-import QtQuick.Window
-import QtQuick.Controls.Material
-
-import io.qt.textproperties
-
-ApplicationWindow {
- id: page
- width: 800
- height: 400
- visible: true
- Material.theme: Material.Dark
- Material.accent: Material.Red
-
- Bridge {
- id: bridge
- }
-
- GridLayout {
- id: grid
- columns: 2
- rows: 3
-
- ColumnLayout {
- spacing: 2
- Layout.columnSpan: 1
- Layout.preferredWidth: 400
-
- Text {
- id: leftlabel
- Layout.alignment: Qt.AlignHCenter
- color: "white"
- font.pointSize: 16
- text: "Qt for Python"
- Layout.preferredHeight: 100
- Material.accent: Material.Green
- }
-
- RadioButton {
- id: italic
- Layout.alignment: Qt.AlignLeft
- text: "Italic"
- onToggled: {
- leftlabel.font.italic = bridge.getItalic(italic.text)
- leftlabel.font.bold = bridge.getBold(italic.text)
- leftlabel.font.underline = bridge.getUnderline(italic.text)
-
- }
- }
- RadioButton {
- id: bold
- Layout.alignment: Qt.AlignLeft
- text: "Bold"
- onToggled: {
- leftlabel.font.italic = bridge.getItalic(bold.text)
- leftlabel.font.bold = bridge.getBold(bold.text)
- leftlabel.font.underline = bridge.getUnderline(bold.text)
- }
- }
- RadioButton {
- id: underline
- Layout.alignment: Qt.AlignLeft
- text: "Underline"
- onToggled: {
- leftlabel.font.italic = bridge.getItalic(underline.text)
- leftlabel.font.bold = bridge.getBold(underline.text)
- leftlabel.font.underline = bridge.getUnderline(underline.text)
- }
- }
- RadioButton {
- id: noneradio
- Layout.alignment: Qt.AlignLeft
- text: "None"
- checked: true
- onToggled: {
- leftlabel.font.italic = bridge.getItalic(noneradio.text)
- leftlabel.font.bold = bridge.getBold(noneradio.text)
- leftlabel.font.underline = bridge.getUnderline(noneradio.text)
- }
- }
- }
-
- ColumnLayout {
- id: rightcolumn
- spacing: 2
- Layout.columnSpan: 1
- Layout.preferredWidth: 400
- Layout.preferredHeight: 400
- Layout.fillWidth: true
-
- RowLayout {
- Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
-
-
- Button {
- id: red
- text: "Red"
- highlighted: true
- Material.accent: Material.Red
- onClicked: {
- leftlabel.color = bridge.getColor(red.text)
- }
- }
- Button {
- id: green
- text: "Green"
- highlighted: true
- Material.accent: Material.Green
- onClicked: {
- leftlabel.color = bridge.getColor(green.text)
- }
- }
- Button {
- id: blue
- text: "Blue"
- highlighted: true
- Material.accent: Material.Blue
- onClicked: {
- leftlabel.color = bridge.getColor(blue.text)
- }
- }
- Button {
- id: nonebutton
- text: "None"
- highlighted: true
- Material.accent: Material.BlueGrey
- onClicked: {
- leftlabel.color = bridge.getColor(nonebutton.text)
- }
- }
- }
- RowLayout {
- Layout.fillWidth: true
- Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter
- Text {
- id: rightlabel
- color: "white"
- Layout.alignment: Qt.AlignLeft
- text: "Font size"
- Material.accent: Material.White
- }
- Slider {
- width: rightcolumn.width*0.6
- Layout.alignment: Qt.AlignRight
- id: slider
- value: 0.5
- onValueChanged: {
- leftlabel.font.pointSize = bridge.getSize(value)
- }
- }
- }
- }
- }
-}
diff --git a/examples/declarative/usingmodel/doc/usingmodel.png b/examples/declarative/usingmodel/doc/usingmodel.png
deleted file mode 100644
index b4240951b..000000000
--- a/examples/declarative/usingmodel/doc/usingmodel.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/usingmodel/doc/usingmodel.rst b/examples/declarative/usingmodel/doc/usingmodel.rst
deleted file mode 100644
index 11b476d09..000000000
--- a/examples/declarative/usingmodel/doc/usingmodel.rst
+++ /dev/null
@@ -1,9 +0,0 @@
-Using Model Example
-===================
-
-A Python application that demonstrates how to use a :ref:`QAbstractListModel`
-with QML.
-
-.. image:: usingmodel.png
- :width: 400
- :alt: Using Model Screenshot
diff --git a/examples/declarative/usingmodel/usingmodel.py b/examples/declarative/usingmodel/usingmodel.py
deleted file mode 100644
index 6f8ea5a21..000000000
--- a/examples/declarative/usingmodel/usingmodel.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import os
-from pathlib import Path
-import sys
-from PySide6.QtCore import QAbstractListModel, Qt, QUrl, QByteArray
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQuick import QQuickView
-from PySide6.QtQml import qmlRegisterSingletonType
-
-
-class PersonModel (QAbstractListModel):
- MyRole = Qt.UserRole + 1
-
- def __init__(self, parent=None):
- QAbstractListModel.__init__(self, parent)
- self._data = []
-
- def roleNames(self):
- roles = {
- PersonModel.MyRole: QByteArray(b'modelData'),
- Qt.DisplayRole: QByteArray(b'display')
- }
- return roles
-
- def rowCount(self, index):
- return len(self._data)
-
- def data(self, index, role):
- d = self._data[index.row()]
-
- if role == Qt.DisplayRole:
- return d['name']
- elif role == Qt.DecorationRole:
- return Qt.black
- elif role == PersonModel.MyRole:
- return d['myrole']
- return None
-
- def populate(self, data=None):
- for item in data:
- self._data.append(item)
-
-
-def model_callback(engine):
- my_model = PersonModel()
- data = [{'name': 'Qt', 'myrole': 'role1'},
- {'name': 'PySide', 'myrole': 'role2'}]
- my_model.populate(data)
- return my_model
-
-
-if __name__ == '__main__':
- app = QGuiApplication(sys.argv)
- view = QQuickView()
- view.setResizeMode(QQuickView.SizeRootObjectToView)
-
- qmlRegisterSingletonType(PersonModel, "PersonModel", 1, 0, "MyModel", model_callback)
- qml_file = os.fspath(Path(__file__).resolve().parent / 'view.qml')
- view.setSource(QUrl.fromLocalFile(qml_file))
- if view.status() == QQuickView.Error:
- sys.exit(-1)
- view.show()
-
- r = app.exec()
- # Deleting the view before it goes out of scope is required to make sure all child QML instances
- # are destroyed in the correct order.
- del view
- sys.exit(r)
diff --git a/examples/declarative/usingmodel/usingmodel.pyproject b/examples/declarative/usingmodel/usingmodel.pyproject
deleted file mode 100644
index 600cdb409..000000000
--- a/examples/declarative/usingmodel/usingmodel.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["view.qml", "usingmodel.py"]
-}
diff --git a/examples/declarative/usingmodel/view.qml b/examples/declarative/usingmodel/view.qml
deleted file mode 100644
index c5aa7e0fc..000000000
--- a/examples/declarative/usingmodel/view.qml
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import PersonModel
-
-ListView {
- width: 100
- height: 100
- anchors.fill: parent
- model: MyModel
- delegate: Component {
- Rectangle {
- height: 25
- width: 100
- Text {
- function displayText() {
- var result = ""
- if (typeof display !== "undefined")
- result = display + ": "
- result += modelData
- return result
- }
-
- text: displayText()
- }
- }
- }
-}
diff --git a/examples/declarative/window/AllScreens.qml b/examples/declarative/window/AllScreens.qml
deleted file mode 100644
index 25438f21a..000000000
--- a/examples/declarative/window/AllScreens.qml
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import QtQuick.Controls
-
-Column {
- id: root
- spacing: 8
-
- Label {
- text: "Total number of screens: " + screenInfo.count
- font.bold: true
- }
-
- Flow {
- spacing: 12
- width: parent.width
-
- Repeater {
- id: screenInfo
- model: (Qt.application as Application).screens
- Label {
- required property string name
- required property int virtualX
- required property int virtualY
- required property var modelData // avoid shadowing Label.width and height
-
- lineHeight: 1.5
- text: name + "\n" + virtualX + ", " + virtualY + " " + modelData.width + "x" + modelData.height
- }
- }
- }
-
- Component.onCompleted: {
- var screens = (Qt.application as Application).screens;
- for (var i = 0; i < screens.length; ++i)
- console.log("screen " + screens[i].name + " has geometry " +
- screens[i].virtualX + ", " + screens[i].virtualY + " " +
- screens[i].width + "x" + screens[i].height)
- }
-}
diff --git a/examples/declarative/window/CurrentScreen.qml b/examples/declarative/window/CurrentScreen.qml
deleted file mode 100644
index 1f4da7f0b..000000000
--- a/examples/declarative/window/CurrentScreen.qml
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import QtQuick.Controls
-
-Item {
- id: root
- width: 400
- height: propertyGrid.implicitHeight + 16
-
- function orientationToString(o) {
- switch (o) {
- case Qt.PrimaryOrientation:
- return "primary";
- case Qt.PortraitOrientation:
- return "portrait";
- case Qt.LandscapeOrientation:
- return "landscape";
- case Qt.InvertedPortraitOrientation:
- return "inverted portrait";
- case Qt.InvertedLandscapeOrientation:
- return "inverted landscape";
- }
- return "unknown";
- }
-
- Grid {
- id: propertyGrid
- columns: 2
- spacing: 8
- x: spacing
- y: spacing
-
- //! [screen]
- Label {
- text: "Screen \"" + Screen.name + "\":"
- font.bold: true
- }
- Item { width: 1; height: 1 } // spacer
-
- Label { text: "manufacturer" }
- Label { text: Screen.manufacturer ? Screen.manufacturer : "unknown" }
-
- Label { text: "model" }
- Label { text: Screen.model ? Screen.model : "unknown" }
-
- Label { text: "serial number" }
- Label { text: Screen.serialNumber ? Screen.serialNumber : "unknown" }
-
- Label { text: "dimensions" }
- Label { text: Screen.width + "x" + Screen.height }
-
- Label { text: "pixel density" }
- Label { text: Screen.pixelDensity.toFixed(2) + " dots/mm (" + (Screen.pixelDensity * 25.4).toFixed(2) + " dots/inch)" }
-
- Label { text: "logical pixel density" }
- Label { text: Screen.logicalPixelDensity.toFixed(2) + " dots/mm (" + (Screen.logicalPixelDensity * 25.4).toFixed(2) + " dots/inch)" }
-
- Label { text: "device pixel ratio" }
- Label { text: Screen.devicePixelRatio.toFixed(2) }
-
- Label { text: "available virtual desktop" }
- Label { text: Screen.desktopAvailableWidth + "x" + Screen.desktopAvailableHeight }
-
- Label { text: "position in virtual desktop" }
- Label { text: Screen.virtualX + ", " + Screen.virtualY }
-
- Label { text: "orientation" }
- Label { text: root.orientationToString(Screen.orientation) + " (" + Screen.orientation + ")" }
-
- Label { text: "primary orientation" }
- Label { text: root.orientationToString(Screen.primaryOrientation) + " (" + Screen.primaryOrientation + ")" }
- //! [screen]
-
- Label { text: "10mm rectangle" }
- Rectangle {
- color: "red"
- width: Screen.pixelDensity * 10
- height: width
- }
- }
-}
diff --git a/examples/declarative/window/Splash.qml b/examples/declarative/window/Splash.qml
deleted file mode 100644
index 0a7da219d..000000000
--- a/examples/declarative/window/Splash.qml
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import shared
-
-//! [splash-properties]
-Window {
- id: splash
- color: "transparent"
- title: "Splash Window"
- modality: Qt.ApplicationModal
- flags: Qt.SplashScreen
- property int timeoutInterval: 2000
- signal timeout
-//! [splash-properties]
-//! [screen-properties]
- x: (Screen.width - splashImage.width) / 2
- y: (Screen.height - splashImage.height) / 2
-//! [screen-properties]
- width: splashImage.width
- height: splashImage.height
-
- Image {
- id: splashImage
- source: Images.qtLogo
- MouseArea {
- anchors.fill: parent
- onClicked: Qt.quit()
- }
- }
- //! [timer]
- Timer {
- interval: splash.timeoutInterval; running: true; repeat: false
- onTriggered: {
- splash.visible = false
- splash.timeout()
- }
- }
- //! [timer]
- Component.onCompleted: visible = true
-}
diff --git a/examples/declarative/window/doc/window.png b/examples/declarative/window/doc/window.png
deleted file mode 100644
index 72487b4d9..000000000
--- a/examples/declarative/window/doc/window.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/window/doc/window.rst b/examples/declarative/window/doc/window.rst
deleted file mode 100644
index 8736bb629..000000000
--- a/examples/declarative/window/doc/window.rst
+++ /dev/null
@@ -1,35 +0,0 @@
-Qt Quick Examples - Window and Screen
-=====================================
-
-This example demonstrates the Window and Screen types in QML.
-
-.. image:: window.png
- :width: 392
- :alt: Window and Screen screenshot
-
-In addition, this example demonstrates the usage of the Qt Resource System in
-Qt for Python for more advanced scenarios. There are several QML files, one of
-which imports a module from this sibling directory. Both this "shared" module
-and the QML files of the example need to be compiled into Python modules with
-the resource compiler rcc.
-
-For the "shared" module approach to work with QML and rcc, you need:
-
-* A module definition *qmldir* file
-* A Qt Resource Collection file (.qrc) specifying all the QML files and other
-resources, plus the *qmldir* file
-
-The .qrc file is the input to rcc. This will generate a Python module (called
-*shared_rc* here) that can then be imported from the Python code. At runtime,
-only this Python module is needed, not the .qrc file or any of the .qml files
-or even the image resources, as they have all been compiled into the Python
-module.
-
-For the example, rcc needs:
-
-* A Qt Resource Collection file (.qrc) specifying all the QML files and other
-resources. There is no qmldir file here because this is not a module.
-
-This will generate a Python module (called *window_rc* here) that can then be
-imported from the Python code. Again, only the Python module is needed at
-runtime.
diff --git a/examples/declarative/window/main.py b/examples/declarative/window/main.py
deleted file mode 100644
index 8f8260b56..000000000
--- a/examples/declarative/window/main.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2022 The Qt Company Ltd.
-# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import os
-from pathlib import Path
-import sys
-
-from PySide6.QtCore import QUrl, qWarning
-from PySide6.QtGui import QGuiApplication
-from PySide6.QtQml import QQmlComponent, QQmlEngine
-from PySide6.QtQuick import QQuickWindow
-
-import window_rc
-
-# Append the parent directory of this file so that Python can find and
-# import from the "shared" sibling directory.
-sys.path.append(os.fspath(Path(__file__).parent.parent))
-from shared import shared_rc
-
-
-if __name__ == "__main__":
- app = QGuiApplication(sys.argv)
- engine = QQmlEngine()
-
- # Add the qrc root as QML import path so that the "shared" module
- # can be found.
- engine.addImportPath(":/")
-
- component = QQmlComponent(engine)
- QQuickWindow.setDefaultAlphaBuffer(True)
- component.loadUrl(QUrl("qrc:///window/window.qml"))
- if component.isReady():
- component.create()
- else:
- qWarning(component.errorString())
- app.exit(1)
- app.exec()
diff --git a/examples/declarative/window/resources/icon.icns b/examples/declarative/window/resources/icon.icns
deleted file mode 100644
index 88b4b2444..000000000
--- a/examples/declarative/window/resources/icon.icns
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/window/resources/icon.ico b/examples/declarative/window/resources/icon.ico
deleted file mode 100644
index 52af30a6c..000000000
--- a/examples/declarative/window/resources/icon.ico
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/window/resources/icon.svg b/examples/declarative/window/resources/icon.svg
deleted file mode 100644
index 0b6153206..000000000
--- a/examples/declarative/window/resources/icon.svg
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="128"
- height="128"
- id="svg2"
- sodipodi:version="0.32"
- inkscape:version="0.48.2 r9819"
- version="1.0"
- sodipodi:docname="icon.svg"
- inkscape:export-filename="/Users/rutledge/dev/qt5-stable/qtdeclarative/examples/quick/window/window/icon80.png"
- inkscape:export-xdpi="61.509998"
- inkscape:export-ydpi="61.509998"
- inkscape:output_extension="org.inkscape.output.svg.inkscape">
- <defs
- id="defs4">
- <linearGradient
- id="linearGradient4009">
- <stop
- style="stop-color:#ffffff;stop-opacity:1;"
- offset="0"
- id="stop4011" />
- <stop
- id="stop4019"
- offset="0.875"
- style="stop-color:#ffffff;stop-opacity:0.49803922;" />
- <stop
- style="stop-color:#ffffff;stop-opacity:0;"
- offset="1"
- id="stop4013" />
- </linearGradient>
- <inkscape:perspective
- sodipodi:type="inkscape:persp3d"
- inkscape:vp_x="0 : 186.64798 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_z="559.62469 : 186.64798 : 1"
- inkscape:persp3d-origin="279.81235 : 124.43199 : 1"
- id="perspective4876" />
- <inkscape:perspective
- id="perspective2836"
- inkscape:persp3d-origin="22 : 14.666667 : 1"
- inkscape:vp_z="44 : 22 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 22 : 1"
- sodipodi:type="inkscape:persp3d" />
- <filter
- inkscape:collect="always"
- id="filter4063"
- x="-0.195491"
- width="1.390982"
- y="-0.16235915"
- height="1.3247183">
- <feGaussianBlur
- inkscape:collect="always"
- stdDeviation="3.3077485"
- id="feGaussianBlur4065" />
- </filter>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- gridtolerance="10"
- guidetolerance="10"
- objecttolerance="10000"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="2.9775825"
- inkscape:cx="62.656189"
- inkscape:cy="42.423381"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- inkscape:window-width="1280"
- inkscape:window-height="744"
- inkscape:window-x="2003"
- inkscape:window-y="156"
- showgrid="true"
- borderlayer="true"
- showguides="true"
- inkscape:guide-bbox="true"
- inkscape:snap-global="false"
- inkscape:window-maximized="0">
- <inkscape:grid
- type="xygrid"
- id="grid7194"
- visible="true"
- enabled="true"
- spacingx="8px"
- spacingy="8px" />
- </sodipodi:namedview>
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-66.38047,-391.3222)">
- <path
- id="path7304"
- d="M 95.556318,434.65407 L 165.25811,434.65407 L 165.25811,490.10429 L 95.556318,490.10429 L 95.556318,434.65407 z"
- style="fill:#01afaf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141000000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- style="fill:#a7c706;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 96.869177,465.30846 c 27.677903,3.04574 41.155393,12.11589 48.000003,24 l -48.000003,0 0,-24 z"
- id="path7300"
- sodipodi:nodetypes="cccc"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="cccc"
- id="path7302"
- d="M 165.46767,465.22201 C 137.78977,468.26775 124.31228,477.33791 117.46767,489.22201 L 165.46767,489.22201 L 165.46767,465.22201 z"
- style="fill:#966406;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1" />
- <path
- style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1;fill-opacity:1"
- d="M 95.532809,434.35736 L 74.567964,420.38079 L 74.567964,497.25189 L 95.532809,490.26361 L 95.532809,434.35736 z"
- id="path7270"
- sodipodi:nodetypes="ccccc" />
- <path
- style="fill:#00ffff;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
- d="M 74.567964,455.3222 L 95.532809,462.31048"
- id="path7272"
- sodipodi:nodetypes="cc" />
- <g
- style="fill:#80ffff;fill-opacity:1"
- id="g7278"
- transform="matrix(-0.8735352,0,0,0.8735352,244.36615,64.570513)">
- <path
- style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- d="M 24,32 L 0,16 L 0,104 L 24,96 L 24,32 z"
- id="path7280"
- transform="translate(66.38047,391.3222)" />
- <path
- style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
- d="M 0,56 L 24,64"
- id="path7282"
- transform="translate(66.38047,391.3222)"
- sodipodi:nodetypes="cc" />
- </g>
- <path
- style="fill:#ffffff;fill-opacity:1;filter:url(#filter4063)"
- d="m 119.74679,437.94232 c -0.0487,0.003 -0.0932,0.0315 -0.14149,0.0354 -0.1659,0.0132 -0.33372,0.008 -0.49523,0.0354 -0.96156,0.0643 -1.9037,0.14607 -2.86523,0.21224 -2.94807,0.23566 -5.19987,2.66253 -5.19987,6.01345 l 0,39.51194 3.32508,3.07747 0,-0.0354 33.2155,-5.58898 c 2.28673,-0.39587 4.06792,-3.06727 4.06792,-5.97808 l 0,-32.18967 -30.5625,-5.023 c -0.45263,-0.0748 -0.91269,-0.0942 -1.34418,-0.0708 z"
- id="path3987"
- inkscape:connector-curvature="0" />
- <g
- id="g3"
- transform="matrix(0.20572087,0,0,0.20572087,113.4162,440.80626)">
- <path
- sodipodi:nodetypes="cccccccc"
- id="path5"
- style="fill:#006225"
- d="M 43.09,0.3586 C 40.94,0.0036 38.84,-0.0824 36.81,0.0776 31.968136,0.39505671 27.122677,0.73638425 22.28,1.0696 9.62,2.0816 0,12.4996 0,26.8896 l 0,169.7 14.19,13.2 28.87,-209.42 0.03,-0.011 z"
- inkscape:connector-curvature="0" />
- <path
- id="path7"
- style="fill:#80c342"
- d="m 174.4,160 c 0,12.5 -7.75,24.07 -17.57,25.77 L 14.23,209.73 V 25.93 C 14.23,9.21 27.57,-2.27 43.12,0.3 l 131.3,21.52 v 138.2 z"
- inkscape:connector-curvature="0" />
- <path
- id="path11"
- style="fill:#006225"
- d="m 154.9,80.96 -12.96,-0.598 0,0.278 6.945,0.32 6.016,0 z"
- inkscape:connector-curvature="0" />
- <path
- id="path13"
- style="fill:#006225"
- d="m 144.6,135.6 c 0.66,0.328 1.43,0.476 2.351,0.476 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 h -6.015 c -1.821,0.832 -3.532,1.457 -5.176,1.848 z"
- inkscape:connector-curvature="0" />
- <path
- d="m 91.15,132.4 c 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -4.34,0 -7.68,2.535 -10.01,7.625 -2.52,5.543 -3.793,17.04 -3.793,34.44 0,16.82 1.238,28.75 3.734,35.75 2.356,6.672 5.879,9.976 10.5,9.976 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 m 17.98,3.75 c -4.117,9.707 -10.39,16.06 -18.99,19 0.867,4.449 2.176,7.441 3.922,9.019 1.351,1.211 3.433,1.821 6.222,1.821 0.805,0 1.668,-0.055 2.59,-0.157 v 13.12 l -5.961,0.782 c -1.758,0.23 -3.426,0.343 -5.004,0.343 -5.218,0 -9.445,-1.265 -12.62,-3.824 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 1.629,0 3.309,0.102 5.043,0.305 11.95,1.375 20.62,7.016 26.26,16.79 5.535,9.562 8.254,23.27 8.254,41.26 0,16.48 -2,29.45 -6.043,39.02 z M 130.4,45.91 l 11.52,1.238 0,20.21 12.96,0.914 0,12.68 -12.96,-0.598 0,46.33 c 0,4.032 0.445,6.625 1.34,7.789 0.8,1.067 2.046,1.594 3.71,1.594 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 v 11.65 c -5.136,2.258 -10.18,3.598 -15.12,4.02 -0.718,0.055 -1.41,0.086 -2.078,0.086 -4.48,0 -7.906,-1.301 -10.25,-3.934 -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.535 L 118.046,79.25 V 65.66 l 7.586,0.547 4.773,-20.3 z"
- style="fill:#ffffff"
- id="path17"
- inkscape:connector-curvature="0" />
- <path
- id="path19"
- style="fill:#006225"
- d="m 100.3,166 c 0.809,0 1.672,-0.055 2.59,-0.157 H 98.054 C 98.73,165.949 99.507,166 100.3,166 z"
- inkscape:connector-curvature="0" />
- <path
- d="m 84.85,63.98 c 2.336,5.997 3.484,16.92 3.484,32.81 0,17.7 -1.16,29.57 -3.512,35.62 -1.894,4.879 -4.527,7.902 -7.863,9.07 0.965,0.368 1.992,0.551 3.078,0.551 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -1.09,0 -2.117,0.16 -3.082,0.481 h -0.004 c 3.601,1.121 6.379,4.215 8.336,9.261 z m -2.344,114.3 c -0.113,-0.05 -0.227,-0.105 -0.336,-0.16 -0.012,-0.004 -0.023,-0.012 -0.035,-0.015 -0.102,-0.051 -0.207,-0.106 -0.309,-0.157 -0.019,-0.011 -0.039,-0.019 -0.058,-0.031 -0.09,-0.051 -0.184,-0.098 -0.278,-0.148 -0.027,-0.016 -0.054,-0.036 -0.086,-0.051 -0.082,-0.043 -0.164,-0.09 -0.242,-0.137 -0.039,-0.023 -0.078,-0.047 -0.113,-0.07 -0.07,-0.039 -0.145,-0.082 -0.215,-0.125 -0.047,-0.031 -0.094,-0.059 -0.14,-0.09 -0.059,-0.039 -0.118,-0.074 -0.176,-0.113 -0.059,-0.039 -0.114,-0.075 -0.168,-0.114 -0.051,-0.031 -0.102,-0.066 -0.149,-0.097 -0.066,-0.047 -0.132,-0.094 -0.195,-0.137 -0.039,-0.027 -0.078,-0.055 -0.113,-0.082 -0.078,-0.055 -0.153,-0.113 -0.231,-0.172 -0.023,-0.016 -0.05,-0.035 -0.078,-0.055 -0.098,-0.078 -0.199,-0.156 -0.297,-0.234 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 h -6.351 c -10.15,0.008 -18.22,3.977 -24,12.04 -6.855,9.563 -10.34,24.64 -10.34,45.07 0,18.95 2.547,33.44 7.551,43.34 4.934,9.75 12.05,15.56 21.19,17.5 1.989,9.641 5.09,16.16 9.297,19.54 3.176,2.559 7.403,3.824 12.62,3.824 0.098,0 0.199,0 0.297,-0.004 h 5.539 c -3.406,-0.05 -6.383,-0.66 -8.906,-1.828 L 82.498,178.28 z M 128.4,145.6 c -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.57 l -6.226,-0.285 v -13.59 h -6.016 v 3.035 c 0.871,3.273 1.555,6.82 2.063,10.64 l 4.164,0.192 v 51.36 c 0,6.723 1.367,11.62 4.09,14.67 2.343,2.633 5.765,3.934 10.25,3.934 h 6.015 c -4.48,0 -7.906,-1.301 -10.25,-3.934 z m 2.043,-99.66 -6.016,0 -4.668,19.88 5.911,0.422 4.773,-20.3 z"
- style="fill:#006225"
- id="path21"
- inkscape:connector-curvature="0" />
- </g>
- <path
- style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- d="M 96.506224,434.65407 L 166.20801,434.65407 L 166.20801,490.10429 L 96.506224,490.10429 L 96.506224,434.65407 z"
- id="rect7265" />
- </g>
-</svg>
diff --git a/examples/declarative/window/resources/icon64.png b/examples/declarative/window/resources/icon64.png
deleted file mode 100644
index 0fa324401..000000000
--- a/examples/declarative/window/resources/icon64.png
+++ /dev/null
Binary files differ
diff --git a/examples/declarative/window/window.pyproject b/examples/declarative/window/window.pyproject
deleted file mode 100644
index 8ce352cd2..000000000
--- a/examples/declarative/window/window.pyproject
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "files": ["main.py", "window.qml", "Splash.qml", "AllScreens.qml", "CurrentScreen.qml"]
-}
diff --git a/examples/declarative/window/window.qml b/examples/declarative/window/window.qml
deleted file mode 100644
index 47cc5257b..000000000
--- a/examples/declarative/window/window.qml
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright (C) 2021 The Qt Company Ltd.
-// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-
-import QtQuick
-import QtQuick.Controls
-
-QtObject {
- id: root
- property real defaultSpacing: 10
- property SystemPalette palette: SystemPalette { }
-
- property var controlWindow: Window {
- width: col.implicitWidth + root.defaultSpacing * 2
- height: col.implicitHeight + root.defaultSpacing * 2
- color: root.palette.window
- title: "Control Window"
- Column {
- id: col
- anchors.fill: parent
- anchors.margins: root.defaultSpacing
- spacing: root.defaultSpacing
- property real cellWidth: col.width / 3 - spacing
- Label { text: "Control the second window:" }
- Grid {
- id: grid
- columns: 3
- spacing: root.defaultSpacing
- width: parent.width
- Button {
- id: showButton
- width: col.cellWidth
- text: root.testWindow.visible ? "Hide" : "Show"
- onClicked: root.testWindow.visible = !root.testWindow.visible
- }
- //! [windowedCheckbox]
- CheckBox {
- text: "Windowed"
- height: showButton.height
- width: col.cellWidth
- Binding on checked { value: root.testWindow.visibility === Window.Windowed }
- onClicked: root.testWindow.visibility = Window.Windowed
- }
- //! [windowedCheckbox]
- CheckBox {
- height: showButton.height
- width: col.cellWidth
- text: "Full Screen"
- Binding on checked { value: root.testWindow.visibility === Window.FullScreen }
- onClicked: root.testWindow.visibility = Window.FullScreen
- }
- Button {
- id: autoButton
- width: col.cellWidth
- text: "Automatic"
- onClicked: root.testWindow.visibility = Window.AutomaticVisibility
- }
- CheckBox {
- height: autoButton.height
- text: "Minimized"
- Binding on checked { value: root.testWindow.visibility === Window.Minimized }
- onClicked: root.testWindow.visibility = Window.Minimized
- }
- CheckBox {
- height: autoButton.height
- text: "Maximized"
- Binding on checked { value: root.testWindow.visibility === Window.Maximized }
- onClicked: root.testWindow.visibility = Window.Maximized
- }
- }
- function visibilityToString(v) {
- switch (v) {
- case Window.Windowed:
- return "windowed";
- case Window.Minimized:
- return "minimized";
- case Window.Maximized:
- return "maximized";
- case Window.FullScreen:
- return "fullscreen";
- case Window.AutomaticVisibility:
- return "automatic";
- case Window.Hidden:
- return "hidden";
- }
- return "unknown";
- }
- Label {
- id: visibilityLabel
- text: "second window is " + (root.testWindow.visible ? "visible" : "invisible") +
- " and has visibility " + parent.visibilityToString(root.testWindow.visibility)
- }
- Rectangle {
- color: root.palette.text
- width: parent.width
- height: 1
- }
- CurrentScreen { }
- Rectangle {
- color: root.palette.text
- width: parent.width
- height: 1
- }
- AllScreens { width: parent.width }
- }
- }
-
- property var testWindow: Window {
- width: 320
- height: 240
- color: "#215400"
- title: "Test Window with color " + color
- flags: Qt.Window | Qt.WindowFullscreenButtonHint
- Rectangle {
- anchors.fill: parent
- anchors.margins: root.defaultSpacing
- Label {
- anchors.centerIn: parent
- text: "Second Window"
- }
- MouseArea {
- anchors.fill: parent
- onClicked: root.testWindow.color = "#e0c31e"
- }
- Button {
- anchors.right: parent.right
- anchors.top: parent.top
- anchors.margins: root.defaultSpacing
- text: root.testWindow.visibility === Window.FullScreen ? "exit fullscreen" : "go fullscreen"
- width: 150
- onClicked: {
- if (root.testWindow.visibility === Window.FullScreen)
- root.testWindow.visibility = Window.AutomaticVisibility
- else
- root.testWindow.visibility = Window.FullScreen
- }
- }
- Button {
- anchors.left: parent.left
- anchors.top: parent.top
- anchors.margins: root.defaultSpacing
- text: "X"
- width: 30
- onClicked: root.testWindow.close()
- }
- }
- }
-
- property var splashWindow: Splash {
- onTimeout: root.controlWindow.visible = true
- }
-}
diff --git a/examples/declarative/window/window.qrc b/examples/declarative/window/window.qrc
deleted file mode 100644
index 89d1de1b1..000000000
--- a/examples/declarative/window/window.qrc
+++ /dev/null
@@ -1,8 +0,0 @@
-<RCC>
- <qresource prefix="/window">
- <file>window.qml</file>
- <file>Splash.qml</file>
- <file>CurrentScreen.qml</file>
- <file>AllScreens.qml</file>
- </qresource>
-</RCC>
diff --git a/examples/declarative/window/window_rc.py b/examples/declarative/window/window_rc.py
deleted file mode 100644
index 71a65fc44..000000000
--- a/examples/declarative/window/window_rc.py
+++ /dev/null
@@ -1,328 +0,0 @@
-# Resource object code (Python 3)
-# Created by: object code
-# Created by: The Resource Compiler for Qt version 6.5.0
-# WARNING! All changes made in this file will be lost!
-
-from PySide6 import QtCore
-
-qt_resource_data = b"\
-\x00\x00\x04\xe8\
-/\
-/ Copyright (C) \
-2021 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick\x0aim\
-port QtQuick.Con\
-trols\x0a\x0aColumn {\x0a\
- id: root\x0a \
- spacing: 8\x0a\x0a \
- Label {\x0a \
- text: \x22Total nu\
-mber of screens:\
- \x22 + screenInfo.\
-count\x0a fo\
-nt.bold: true\x0a \
- }\x0a\x0a Flow {\x0a\
- spacing:\
- 12\x0a widt\
-h: parent.width\x0a\
-\x0a Repeate\
-r {\x0a \
-id: screenInfo\x0a \
- model\
-: (Qt.applicatio\
-n as Application\
-).screens\x0a \
- Label {\x0a \
- re\
-quired property \
-string name\x0a \
- requ\
-ired property in\
-t virtualX\x0a \
- requi\
-red property int\
- virtualY\x0a \
- requir\
-ed property var \
-modelData // avo\
-id shadowing Lab\
-el.width and hei\
-ght\x0a\x0a \
- lineHeight:\
- 1.5\x0a \
- text: name \
-+ \x22\x5cn\x22 + virtual\
-X + \x22, \x22 + virtu\
-alY + \x22 \x22 + mode\
-lData.width + \x22x\
-\x22 + modelData.he\
-ight\x0a \
- }\x0a }\x0a \
- }\x0a\x0a Componen\
-t.onCompleted: {\
-\x0a var scr\
-eens = (Qt.appli\
-cation as Applic\
-ation).screens;\x0a\
- for (var\
- i = 0; i < scre\
-ens.length; ++i)\
-\x0a con\
-sole.log(\x22screen\
- \x22 + screens[i].\
-name + \x22 has geo\
-metry \x22 +\x0a \
- \
- screens[i].vir\
-tualX + \x22, \x22 + s\
-creens[i].virtua\
-lY + \x22 \x22 +\x0a \
- \
- screens[i].wi\
-dth + \x22x\x22 + scre\
-ens[i].height)\x0a \
- }\x0a}\x0a\
-\x00\x00\x04\x8e\
-\x00\
-\x00\x16\x10x\x9c\xcdXKo\xdb8\x10\xbe\xfbW\xb0\
-\xdaK\xb2\x85\xdf\xed\xc5E\xb0H\x5ctS E\x9b\
-8h\x0a,\xf6\xa0Hc\x8b\x1bZ4H*v6\
-\x9b\xff\xbe#\x91\xd4\xc3\xa2d\xa7q\xb7\xcb\x8b%r\
-\xf8q\xe6\x9b\x878\xee\xf7\xc9\x94\xaf\x1e\x04]D\x8a\
-\x1cM\x8f\xc9h0\x1a\x92\xeb\x08\xc8\xa5\xc2\x95\xe5\xca\
-\x8f\x1f\xc8\x85\x0a{\x9d~\x9f\xcc\xbe\xbc\xff\xd6\xbd\xa0\
-\x01\xc4\x12\xba\x1fC\x88\x15\x9dS\x10\x13b\xe6\xae`\
-\xde\xbdT]\xdc\xb6\x04\x11P\x9f\x91\xcfW\xe4l\xf6\
-\xbe;\xeeN\x99\x9fH\xe8t\xe8r\xc5\x85B\xf0\xcb\
-\x84\x06w[\xaf\xbd)\x8f\x95\xe0Lv:\x97\xea\xf3\
-\xed_\x10(\xf2\xd8!8h8!\x82s\x95\xbd\xac\
-\x04_\x81P\x0fD\x00\x1e\x11\xc2\xdcO\x98\x9a\xad\xfc\
-\x80\xc6\x8b\x09\x19\x0e\xaaB\xb3\x07\xa9`\xf9\xc5g\xa0\
-\x14\x90\x95\xfe\x9dlM?\x92\xa7Nu\xdb\xbd/H\
-\xa0\xd5\xb9\xa1q\xc8\xd7\x13\xa2\x7f\x8dF\xe9X\xd3P\
-E\x13\x14c=4\x84\xd1\x80\xaa\x9bt\x8a\xbc\xce\x94\
-\xedUU#\xbf\x92Q\xbe5\x82\x94\xf1\xea\xde\xf3l\
-n\x8f\xcd\xb8\x89\x0bMH\xcf\x18\xd4[g\xca\xe5\x22\
-\x8a*\x86Vz\x86Q\xa3\xbb\x97\xafO9K\x96q\
-\xc9\x16\xcb2bW\xe6\xfc8\x88\xb8\x90\xbd9el\
-\x82\xf4\x09\xf4\xbaS`\xe9\x8b\x05\x8d\xe5\xc4\xa5}e\
-\x83\xb4\x9e\xda%X\xf5s\x00\x8c\xdd\x14\x84g\xdc\x93\
->\x19\x93\xaeE\xacl\xbe\xf0o\x81\xa1_\x15lT\
-\x89\x07\x85\x91-\x01\x1d\x1b\x12\xcd\xd8\xc4C\xd7\x977\
-\xfe.h\xb8\xc5\x8b\xe5f\x81K\xb5\x85 c\x12\xed\
-\x1e\xd7\x96\xf6\xb64\x1d&\x984\xc3\xda\xbc\x9a\xccY\
-\xa2\x14\xdf\xf6ZYC\x19\xf1\xb5\x16r\x8a\x94\x026\
-\xa7\xd3)\xa8Y\xcb\xd4V \x95\x8e\x9e\xde=\x95\xf4\
-\x96\x01\xf9\x8dx\xe74\x04\x8f \xb1\xb3\xa8\x1cV\xe5\
-\xc1\xe3)\x86\xf5\x1d\x84\xcd@'\xe4U\xc3R\x0d\xf1\
-\xa96\xd3\xef\xbf\x22\x7fh'B8\x8d \xb8\xbb\xe5\
-\x9b?kb\xd9\xca\x19\xdf4\xb0f\xe2\xe3\xc6\xe0\xb8\
-M\xb1\xd9Z\xd0\xdb\xd3S/c\xf9\x0c\x0fMs\x1b\
-]\x1a\xa4Z\x02\x06\x1e\x16\x1e\x96@\x03e\x94QL\
-\x87\x93\x93\x13\x93\xcf=\xab\xb6\x83\x9et\xecr\x81\xc1\
-\xdbF\xfb\xcf\xc8\xffA\xbc\x1a\x9f~H\x18#\xb3@\
-\x00\xc4n\xb7\xbe\x9c\xff\xf4\x08}\xc2a<P\xe0\xed\
-\xe1\x83\x9d\xd5\xc0O\x14?\x5c5\xf0N\x11n\xe9+\
-\x1a|_\xbeo\x99\x9a\xa3}\xcd\x17\xf7\xb0y\xcf\x80\
-*,o\x0b(c\xd7'\x1a\xd3%\xfd\xbb)\xf9_\
-\x1e%\xf9\x01\x87\x09\x92\x1c\xeeg\xf1\xe5o~0_\
-\xf6\x80\x03\xf1e\xe1v\xf0U}\x9b'q\xa0(\x1a\
-Q@^\xf3\x99\x12h\xda\xd1\xfd\xb1\x83O\xb9\xa6*\
-\x88\x88{1\xf0%l\x97\xd9\x89\xd38\x01*\x111\
-\xf1lq\xf5\xde\xb5\x82\xe5\xc1\xd0\x8e\xb6\xccc|\x07\
-\x9c\xe5j\x07\x5c\x1e\x02\xedpE=k\xc7\x9b\xa3\x9c\
-\xd4\x95\xba\x1d\xd0Q5\xda\x91\xfd\xbch\xb5\x03\xe3\x85\
-&\xdc\xa5e\x94\xc98\x80\xeaaj\xb7$\xf1]\xcc\
-\xd7\xdb{\xaa\xf2\xe6\xaa\xea\xbcr\x16\xc1\x97I\xd5d\
-LJV\xae\xb4\x84J\xe2a\x1bq\xd4r\x7f3\x8f\
-\xd9\x15\x8e\xc6\xf6\xed\x98\xbcv\x12@\x10\xcfG\xfc\xc8\
-\x97%\x8d\xb2C\xcc}\xd5\x91$\xcd\xa9y\xdcB\xc6\
-\x156}~\xbc@-\x1dI\xe4\xe8{R\x02\xbe\xeb\
-.mK\xdf\xb0E\x99i\x22R\x04\xf3\x85\x7f\xfc?\
-\xabzj\x13M\xa2\x9e\x0e\xd0\x92\xb8~r5\xbc\x85\
-\xb7\x9a\xbb\xdd\xf1hP\xebbGo\x8a9c\xb9\xf7\
-\xcbh\xf8\xf6\xcd`P|#lKz\x8d\x87Xt\
-,\x99\x91\xde\x91\x05S\xf6\x94o\x983\x7f\x81}\xd5\
-\xa52\x15\x93\xfcS<\x7f\xc8\x0b\x86\xfel\x9d\xd3R\
-[\xda\xe4\x98\xc3\xf7\xb2M\xa9k\x81\x02<\x01\xc4\xc7\
-\xd8yZF\x8a\xce\xdf\x99\xce\xdf\xed.\xbd\xee\xe6O\
-<\x91p\x8a\x0dq\xcb\xa1\x8d\xe6\xa5\xa3\xe5\xdb\xa9\xfd\
-p\x82\xae\x83A0\x1eB\x9b\x1e\x8dwO\xab\x84\xd0\
-\x91aBP8\xef\x14VV\xf1U.\x89\xcf\x8dr\
-{\xbb\xa5`\xf6\xd9\xd7x\xac\x8d\xb0\xa1\x8a\x94\xbeH\
-i\x8d\x5c\xf0\xf2LS\x16\x0f\xdf\x0e\xda\x08o\xb8\xa9\
-\xcf\x1b*u\x8b\x9a\xc7N\xa4t\x1c\xea\xea\x9d\x0e`\
-\xb2\xde\x88?\xe7\xa0\xbd\xdb\x99g\x06\x17\x83y\x11[\
-\xe9\xcb\xcf\x08-\xef[c\x1c\x8c[\xc3\xa0\x96w\x8c\
-K8j\xfa(6Wk\xb9b\xbe\x8cl\xbd\x9ee\
-o%\xd2x|M\x97\xc0\x13\x9b\x05\x95\x7f3K\x7f\
-\xc1(\x91\x809\xe3\xa9\xf3/I\x8e\xfe,\
-\x00\x00\x03\xfa\
-/\
-/ Copyright (C) \
-2021 The Qt Comp\
-any Ltd.\x0a// SPDX\
--License-Identif\
-ier: LicenseRef-\
-Qt-Commercial OR\
- BSD-3-Clause\x0a\x0ai\
-mport QtQuick\x0aim\
-port shared\x0a\x0a//!\
- [splash-propert\
-ies]\x0aWindow {\x0a \
- id: splash\x0a \
- color: \x22transpa\
-rent\x22\x0a title:\
- \x22Splash Window\x22\
-\x0a modality: Q\
-t.ApplicationMod\
-al\x0a flags: Qt\
-.SplashScreen\x0a \
- property int t\
-imeoutInterval: \
-2000\x0a signal \
-timeout\x0a//! [spl\
-ash-properties]\x0a\
-//! [screen-prop\
-erties]\x0a x: (\
-Screen.width - s\
-plashImage.width\
-) / 2\x0a y: (Sc\
-reen.height - sp\
-lashImage.height\
-) / 2\x0a//! [scree\
-n-properties]\x0a \
- width: splashI\
-mage.width\x0a h\
-eight: splashIma\
-ge.height\x0a\x0a I\
-mage {\x0a i\
-d: splashImage\x0a \
- source: I\
-mages.qtLogo\x0a \
- MouseArea {\
-\x0a anc\
-hors.fill: paren\
-t\x0a on\
-Clicked: Qt.quit\
-()\x0a }\x0a \
- }\x0a //! [time\
-r]\x0a Timer {\x0a \
- interval:\
- splash.timeoutI\
-nterval; running\
-: true; repeat: \
-false\x0a on\
-Triggered: {\x0a \
- splash.\
-visible = false\x0a\
- spla\
-sh.timeout()\x0a \
- }\x0a }\x0a \
- //! [timer]\x0a \
- Component.onCom\
-pleted: visible \
-= true\x0a}\x0a\
-\x00\x00\x02\xff\
-\x00\
-\x00\x0adx\x9c\xadV\xdfo\xda0\x10~\xcf_q\
-\xcb\x13l#\x01\xd6MS\xfa0mT[+\xa1\xb5\
-\x85J\xeb\xb4\xee\xc1$\x07XM\xec\xc8q(h\xe2\
-\x7f\x9f\x9d_8\x90\x12\xaa-O\xb9\xf3w\xf7}\xf1\
-\x9d}q]\x18\xf1x#\xe8b)\xa13\xea\xc2\xb0\
-?\x1c\xc0\xdd\x12\xe1V\xaa\x95(&l\x03c\x198\
-\x96\xeb\xc2\xf4\xe6\xe2\xbe7\xa6>\xb2\x04{W\x012\
-I\xe7\x14\x85\x07\x85o\x82\xf3\xde\xad\xec\xa9\xb0\x08\x85\
-OI\x08\xd7\x13\xf82\xbd\xe8\xbd\xeb\x8dB\x92&h\
-Y4\x8a\xb9\x90*\xf9mJ\xfd\xc7=\xd3\x19q&\
-\x05\x0f\x13\xcb\xba\x92\x18\xc1\x1f\x0b\xd4C\x03\x0f\x04\xe7\
-23\x9eh \x97\x1e\x9c\xf5\xfb\x99\xb9D-\xdc\x83\
-X\xf0\x18\x85\xdc|\x134pT\xd2\x90\xfaT^f\
-\x8b\xf0\x06\x06\x1f\xac\x0c=O\x99/)g\xc0\x05U\
-\xe2\x89~\xbf\xe3S)([tx\xb7\xe0\xd3O\xf2\
-D\xa5\xbf\x84\xba\xd3'\x89\xde\x16\xe7F\xd0\x88\x88\xcd\
-\xf5.\x89Wa\xf4#P\xa6\x82\x81\x1d\xe78\xfb\xfc\
-0\x83\xfahA\xa8lOQ\x00\x1br\x8c\x09\x0b\x12\
-\x9f\xc4\xd8\x9a$,\x91\x0dY\xae\xd8J\xed\x1b\x06'\
-+\xa2E\x00\x1c\x91V&=]b\x95\xb5I\xeb\xd6\
-\xda\x87\xa7\xec\x91\xf1'V`\xb6yuu\xed\x8dj\
-\xe9\xb61\xdbb\xa7\x92\x87i\xc4\x12\x0f\x86\xbbr\xc7\
-\xc4W=\xe0\xc1\xc7\xca\xb5\xf6Jo\xe5\xda\xec\x5c\x95\
-\xcfu_\xc1\xaf\xc4\x17\x88\xecw\xe5\x1c\x93\x19\x86\x86\
-\x14\xfdH\x5c\xab>\xb5\xa7\x19\x14\x1el[\xf5en\
-8\x8cD\xa8,\xfb\xc1\xf6\xecZ\xcc\x5c\x1d\x07g\xc6\
-C\xf5%R\xa4\xd8\xb0!\xf91)O\xc5\xe0\xbc:\
-\x10\x03\xd8*m\x99^\x14\xd6\xbe\xb2RMDX:\
-'\xbe\xdaT\x14\xb6\x91\xb6\x0e+d\x9a`\xf8\xd4\xe8\
-\xf5v\xa5)\xab\xd2\xc4\xca\x03\x0c\xdb\xe94\xca\xe0\xc9\
-\xcc\xd3\x08\x12\x14\xfa\xf2ai4;\xe1\xbbr\xf4\xf7\
-\x0c\xbc\xe3\xabyO\xa3\x0dh\xa4nA\xd5\xe3I+\
-gV0]\xf3\xb5\xd1\x07y\xed\x8e\x10\xc4t\xad\xcc\
-@\x93\xc8M+G\x86\xbe\xc8\xc1\x8e\xe4_\x95\x19t\
-\x86]\xcd\x0a\x01\x97\x89\x1bE\xd0\xd1\xf4\x9d\x86\x00x\
-\x0d\xc3\xf7\xceY\xb71\x902\x7f\xd9=\xb6\x13!_\
-P_U\xe0e\x82\x8b\xa8\x9b\x97\xean\x88\xfb7\xf9\
-\x01\xae\xd4@+\xd4\x0b}m\xb5j\xcfC2\x09\x13\
-\x1d`\x12?ODV\x84\x86d\x16\x22\xac\xa8\x90)\
-\xd1{\x95<J\x1e\x9f\xc0\x97\xe1>\x97\x09~45\
-\xd4>\xe8\xb2\xb5\xc1\xb8\xda<= ){\xb1\xa2\x02\
-\x7f\xafE\xbc\x05CE\xb1\xf0\xf3\x08\xaf1\x8f\x9f\xe7\
-\xd1\xff\x00N\xd3\xe4.x\x8c\xa5\xbc\xd8\x1dC\x84\xb1\
-\xa8\xd7\x8e\x96\xbf\x98\xdb\xf0_T\xc5\x07?\x0b\x87\xe2\
-\x0e1\x95\xc6\x92\xb46g\x9e\x13>\xe8\xab\xa3!\xd0\
-\x97\x84-B4\xc3'\xa5so*\xa9Y\xc8\xd5\xff\
-\x9b-0\xa8\x8f\x9eb\xa24\xdf\x0c\x83~\x0d[\xce\
-\x9c,foHm\xad\xad\xf5\x17o|\x1ar\
-"
-
-qt_resource_name = b"\
-\x00\x06\
-\x07\xe0Kg\
-\x00w\
-\x00i\x00n\x00d\x00o\x00w\
-\x00\x0e\
-\x0ei\x17\x5c\
-\x00A\
-\x00l\x00l\x00S\x00c\x00r\x00e\x00e\x00n\x00s\x00.\x00q\x00m\x00l\
-\x00\x0a\
-\x0bi\x98\xbc\
-\x00w\
-\x00i\x00n\x00d\x00o\x00w\x00.\x00q\x00m\x00l\
-\x00\x0a\
-\x08\x90\x1a|\
-\x00S\
-\x00p\x00l\x00a\x00s\x00h\x00.\x00q\x00m\x00l\
-\x00\x11\
-\x02YG\x1c\
-\x00C\
-\x00u\x00r\x00r\x00e\x00n\x00t\x00S\x00c\x00r\x00e\x00e\x00n\x00.\x00q\x00m\x00l\
-\
-"
-
-qt_resource_struct = b"\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\
-\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00h\x00\x01\x00\x00\x00\x01\x00\x00\x0d|\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x00N\x00\x00\x00\x00\x00\x01\x00\x00\x09~\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x004\x00\x01\x00\x00\x00\x01\x00\x00\x04\xec\
-\x00\x00\x01\x82Y\xad^\x0f\
-\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x01\x82Y\xad^\x0f\
-"
-
-def qInitResources():
- QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-def qCleanupResources():
- QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data)
-
-qInitResources()