├── .gitignore
├── LICENSE
├── README.md
├── about_box
├── about.py
├── about.ui
├── readme.md
└── ui_about.py
├── combine_bits
├── CCPL.txt
├── README.md
├── combine_allin1_folder
│ ├── CCPL.txt
│ ├── combine_allin1.py
│ ├── qrc_combine2.py
│ ├── qrc_combine3.py
│ └── readme_combine_allin1.txt
├── combine_alter_folder
│ ├── CCPL.txt
│ ├── combine_alter.py
│ ├── qrc_combine2.py
│ ├── qrc_combine3.py
│ ├── readme_combine_alter.txt
│ └── ui_combine.py
├── combine_folder
│ ├── CCPL.txt
│ ├── combine-STAGE1.py
│ ├── combine.py
│ ├── qrc_combine2.py
│ ├── qrc_combine3.py
│ ├── readme_combine.md
│ └── ui_combine.py
├── designer
│ ├── combine.ui
│ ├── readme.md
│ └── ui_combine.py
├── icons
│ ├── __init__.py
│ ├── combine.qrc
│ ├── qrc_combine2.py
│ ├── qrc_combine3.py
│ ├── readme.md
│ └── select_tango
│ │ └── 32x32
│ │ ├── actions
│ │ ├── document-new.png
│ │ ├── document-open.png
│ │ ├── document-print.png
│ │ ├── document-save-as.png
│ │ ├── document-save.png
│ │ ├── edit-find-replace.png
│ │ ├── go-home.png
│ │ ├── go-jump.png
│ │ ├── process-stop.png
│ │ ├── system-log-out.png
│ │ └── view-refresh.png
│ │ ├── apps
│ │ ├── help-browser.png
│ │ └── preferences-system-session.png
│ │ └── devices
│ │ └── media-floppy.png
└── trash
│ └── ui_combine.py
├── quit_prog
├── quitter.py
├── quitter.ui
├── quitter_alt.py
├── readme.md
└── ui_quitter.py
├── show_licence
├── CCPL.txt
├── licence.py
├── licence.ui
├── readme.md
└── ui_licence.py
├── truss
├── CCPL.txt
├── COPYING.txt
├── README.html
├── README.md
├── dat
│ ├── sdtruss0.dat
│ ├── sdtruss0.out
│ ├── sdtruss1.dat
│ ├── sdtruss2.dat
│ ├── sdtruss3.dat
│ └── sdtruss4.dat
├── ncrunch.py
├── out
│ ├── sdtruss0.out
│ ├── sdtruss1.out
│ ├── sdtruss2.out
│ ├── sdtruss3.out
│ └── sdtruss4.out
├── qrc_truss.py
├── tango4truss
│ ├── 32x32
│ │ ├── actions
│ │ │ ├── address-book-new.png
│ │ │ ├── document-new.png
│ │ │ ├── document-open.png
│ │ │ ├── document-print.png
│ │ │ ├── document-save-as.png
│ │ │ ├── document-save.png
│ │ │ ├── edit-find-replace.png
│ │ │ ├── go-home.png
│ │ │ ├── go-jump.png
│ │ │ ├── process-stop.png
│ │ │ ├── system-log-out.png
│ │ │ └── view-refresh.png
│ │ ├── apps
│ │ │ ├── help-browser.png
│ │ │ └── preferences-system-session.png
│ │ └── devices
│ │ │ └── media-floppy.png
│ ├── AUTHORS
│ ├── COPYING
│ └── README
├── truss.py
└── truss.qrc
├── truss3
├── CCPL.txt
├── README.md
├── dat
│ ├── sdtruss0.dat
│ ├── sdtruss0.out
│ ├── sdtruss1.dat
│ ├── sdtruss2.dat
│ ├── sdtruss3.dat
│ └── sdtruss4.dat
├── ncrunch.py
├── out
│ ├── sdtruss0.out
│ ├── sdtruss1.out
│ ├── sdtruss2.out
│ ├── sdtruss3.out
│ └── sdtruss4.out
├── qrc_truss.py
├── tango4truss
│ ├── 32x32
│ │ ├── actions
│ │ │ ├── address-book-new.png
│ │ │ ├── document-new.png
│ │ │ ├── document-open.png
│ │ │ ├── document-print.png
│ │ │ ├── document-save-as.png
│ │ │ ├── document-save.png
│ │ │ ├── edit-find-replace.png
│ │ │ ├── go-home.png
│ │ │ ├── go-jump.png
│ │ │ ├── process-stop.png
│ │ │ ├── system-log-out.png
│ │ │ └── view-refresh.png
│ │ ├── apps
│ │ │ ├── help-browser.png
│ │ │ └── preferences-system-session.png
│ │ └── devices
│ │ │ └── media-floppy.png
│ ├── AUTHORS
│ ├── COPYING
│ └── README
├── truss.py
├── truss.qrc
└── try.out
└── wiki-src
└── PySideSimplicissimus
└── simplicissimus
/.gitignore:
--------------------------------------------------------------------------------
1 | *.py[cod]
2 |
3 | # C extensions
4 | *.so
5 |
6 | # Packages
7 | *.egg
8 | *.egg-info
9 | dist
10 | build
11 | eggs
12 | parts
13 | bin
14 | var
15 | sdist
16 | develop-eggs
17 | .installed.cfg
18 | lib
19 | lib64
20 | __pycache__
21 |
22 | # Installer logs
23 | pip-log.txt
24 |
25 | # Unit test / coverage reports
26 | .coverage
27 | .tox
28 | nosetests.xml
29 |
30 | # Translations
31 | *.mo
32 |
33 | # Mr Developer
34 | .mr.developer.cfg
35 | .project
36 | .pydevproject
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | Tuts for PySide
2 | ===============
3 |
4 | ### Thank You!
5 |
6 | Thanks to all the developers of PySide, who shared their work and expertise
7 | in the PySide system and examples. Particularly thank you for your forbearance
8 | and patience when sharing your expertise with the less experienced PySide users.
9 |
10 | I am particularly grateful to **Aaron Richiger**, who made many valuable suggestions
11 | and introduced me to github. Learning is easy when expert help is at hand!
12 |
13 | ###PySide Newbie Tutorials
14 |
15 | The following are small examples for real newbies:
16 |
17 | 1. about box - shows about box with os information.
18 | 2. show licence - reads and displays licence information.
19 | 3. quit prog - provides additional button to close program.
20 | 4. combine bits - combines all of the above into a coherent small program
21 | 5. truss - solves statically determinate truss, almost real problem.
22 |
23 | The last item of the list develops Python code separately from its GUI.
24 |
25 | Al. Kabaila 2014-01-09, Canberra, Australia
26 |
27 |
--------------------------------------------------------------------------------
/about_box/about.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Copyright (c) 2010-2011, 2013 by Algis Kabaila.
4 | # This work is made available under the terms of the
5 | # Creative Commons Attribution-ShareAlike 3.0 license,
6 | # http://creativecommons.org/licenses/by-sa/3.0/.
7 |
8 | # about.py - display about box with info on platform etc.
9 |
10 | import sys
11 | import platform
12 |
13 | import PySide
14 | from PySide.QtGui import (QApplication, QMainWindow, QMessageBox)
15 |
16 | from ui_about import Ui_MainWindow
17 |
18 | __version__ = '3.1.0'
19 |
20 | class MainWindow(QMainWindow, Ui_MainWindow):
21 | def __init__(self, parent=None):
22 | super(MainWindow, self).__init__(parent)
23 | self.setupUi(self)
24 | self.resize(600, 250)
25 | self.aboutButton.clicked.connect(self.about)
26 |
27 | def about(self):
28 | '''Popup a box with about message.'''
29 | QMessageBox.about(self, "About PySide, Platform and version.",
30 | """ about.py version %s
31 |
Copyright © 2013 by Algis Kabaila.
32 | This work is made available under the terms of
33 | Creative Commons Attribution-ShareAlike 3.0 license,
34 | http://creativecommons.org/licenses/by-sa/3.0/.
35 |
This application is useful for displaying
36 | Qt version and other details.
37 |
Python %s - PySide version %s - Qt version %s on %s""" %
38 | (__version__, platform.python_version(), PySide.__version__,
39 | PySide.QtCore.__version__, platform.system()))
40 |
41 | if __name__ == '__main__':
42 | app = QApplication(sys.argv)
43 | frame = MainWindow()
44 | frame.show()
45 | sys.exit(app.exec_())
46 |
47 |
--------------------------------------------------------------------------------
/about_box/about.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 654
10 | 467
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
21 | &About
22 |
23 |
24 |
25 | -
26 |
27 |
28 | Qt::Horizontal
29 |
30 |
31 |
32 | 548
33 | 26
34 |
35 |
36 |
37 |
38 | -
39 |
40 |
41 | Qt::Vertical
42 |
43 |
44 |
45 | 20
46 | 355
47 |
48 |
49 |
50 |
51 |
52 |
53 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/about_box/readme.md:
--------------------------------------------------------------------------------
1 | This readme is for *about_box*
2 | ==============================
3 |
4 | To run this program, enter
5 |
6 | * **python about.py**
7 |
8 | where python is either python 3.x or python 2.x
9 |
--------------------------------------------------------------------------------
/about_box/ui_about.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'about.ui'
4 | #
5 | # Created: Fri Sep 16 13:21:15 2011
6 | # by: pyside-uic 0.2.8 running on PySide 1.0.1
7 | #
8 | # WARNING! All changes made in this file will be lost!
9 |
10 | from PySide import QtCore, QtGui
11 |
12 | class Ui_MainWindow(object):
13 | def setupUi(self, MainWindow):
14 | MainWindow.setObjectName("MainWindow")
15 | MainWindow.resize(654, 467)
16 | self.centralwidget = QtGui.QWidget(MainWindow)
17 | self.centralwidget.setObjectName("centralwidget")
18 | self.gridLayout = QtGui.QGridLayout(self.centralwidget)
19 | self.gridLayout.setObjectName("gridLayout")
20 | self.aboutButton = QtGui.QPushButton(self.centralwidget)
21 | self.aboutButton.setObjectName("aboutButton")
22 | self.gridLayout.addWidget(self.aboutButton, 0, 0, 1, 1)
23 | spacerItem = QtGui.QSpacerItem(548, 26, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
24 | self.gridLayout.addItem(spacerItem, 0, 1, 1, 1)
25 | spacerItem1 = QtGui.QSpacerItem(20, 355, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
26 | self.gridLayout.addItem(spacerItem1, 1, 0, 1, 1)
27 | MainWindow.setCentralWidget(self.centralwidget)
28 | self.menubar = QtGui.QMenuBar(MainWindow)
29 | self.menubar.setGeometry(QtCore.QRect(0, 0, 654, 29))
30 | self.menubar.setObjectName("menubar")
31 | MainWindow.setMenuBar(self.menubar)
32 | self.statusbar = QtGui.QStatusBar(MainWindow)
33 | self.statusbar.setObjectName("statusbar")
34 | MainWindow.setStatusBar(self.statusbar)
35 |
36 | self.retranslateUi(MainWindow)
37 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
38 |
39 | def retranslateUi(self, MainWindow):
40 | MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
41 | self.aboutButton.setText(QtGui.QApplication.translate("MainWindow", "&About", None, QtGui.QApplication.UnicodeUTF8))
42 |
43 |
--------------------------------------------------------------------------------
/combine_bits/README.md:
--------------------------------------------------------------------------------
1 |
2 | README.md for *combine_bits* section
3 | =====================================
4 |
5 | ### Introduction
6 |
7 | Returning to this work after an interruption of several months, I thought this section looked like a proverbial **dog's breakfast**, so I shall re-organise it.
8 |
9 | ### Thank you
10 |
11 | My sincere gratitude to **Aaron Richiger**, a guru of PySide who made some valuable suggestions, without ever discouraging. The errors and inadequacies are all mine and mine alone.
12 |
13 | ### Sequence
14 |
15 | 1. combine-STAGE1.py
16 | 2. combine.py
17 | 3. combine_allin1.py
18 | 4. combine_alter.py
19 |
20 | ### Separation into subdirectories
21 |
22 | The information shared by each of the methods of combining the three parts of the program (**about_box, quit_prog and show_licence**) are in two directories: **designer** and **icons**. The combine.py, combine_alter.py and the combine_allin1.py will require the data from **designer** and **icons** directories. The readme.md in each of these two directories briefly describe what is to be done in each of these.
23 |
24 | So the directoy structure of **combine_bits** has the following subdirectories:
25 |
26 | * icons
27 | * designer
28 | * combine_folder
29 | * combine_alter_folder
30 | * combine_allin1_folder
31 |
32 | ### *combine_folder* directory.
33 |
34 | In this directory are the following main programs:
35 |
36 | * **combine-STAGE1.py**
37 | * **combine.py**
38 |
39 | **STAGE1** is a fully functional program, but it lacks icons and some other "trimmings"; **combine.py** has icons etc.
40 | It is the 'finished product', as far as this tutorial is concerned. If you wish to skip the rest of this tutorial, this may be the right place for it.
41 |
42 | Other versions of this program are there two show different ways to achieve the same objectives.
43 |
44 | ### *combine_alter_folder* directory
45 |
46 | Another popular way of proceeding, which avoids the use of double inheritance.
47 |
48 | ### *combine_allin1_folder* directory
49 |
50 | A program that avoids qt-designer created files. For the fearless. I cheated by copying parts of the qt-designer made files.
51 |
52 | Al Kabaila, 2014-01-09
53 |
54 |
--------------------------------------------------------------------------------
/combine_bits/combine_allin1_folder/combine_allin1.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Copyright (c) 2010-2011, 2013 Algis Kabaila. All rights reserved.
4 | # This work is made available under the terms of the
5 | # Creative Commons Attribution-ShareAlike 3.0 license,
6 | # http://creativecommons.org/licenses/by-sa/3.0/.
7 |
8 | # combine.py - combination of ShowGPL, About, Close scripts
9 | # The purpose of this version of program is to show implementation
10 | # of most code in one file - all_in_1!. The Ui_MainWindow is eliminated
11 | # and does not appear in the program.
12 |
13 | import sys
14 | import platform
15 |
16 | import PySide
17 |
18 | from PySide.QtCore import QRect
19 | from PySide.QtGui import (QApplication, QMainWindow, QMessageBox,
20 | QIcon, QAction, QWidget, QGridLayout,
21 | QTextEdit, QMenuBar, QMenu, QStatusBar)
22 |
23 | __version__ = '3.1.5'
24 |
25 | if int(platform.python_version()[0]) < 3:
26 | import qrc_combine2
27 | else:
28 | import qrc_combine3
29 |
30 | class MainWindow(QMainWindow):
31 | def __init__(self, parent=None):
32 | super(MainWindow, self).__init__(parent)
33 | self.resize(730, 475)
34 | self.setWindowTitle('Combine Code Blocks.')
35 | centralwidget = QWidget(self)
36 | gridLayout = QGridLayout(centralwidget)
37 | # textEdit needs to be a class variable.
38 | self.textEdit = QTextEdit(centralwidget)
39 | gridLayout.addWidget(self.textEdit, 0, 0, 1, 1)
40 | self.setCentralWidget(centralwidget)
41 | menubar = QMenuBar(self)
42 | menubar.setGeometry(QRect(0, 0, 731, 29))
43 | menu_File = QMenu(menubar)
44 | self.setMenuBar(menubar)
45 | statusbar = QStatusBar(self)
46 | self.setStatusBar(statusbar)
47 | actionShow_CCPL = QAction(self)
48 | actionShow_CCPL.triggered.connect(self.showCCPL)
49 | action_About = QAction(self)
50 | action_About.triggered.connect(self.about)
51 | iconToolBar = self.addToolBar("iconBar.png")
52 | #------------------------------------------------------
53 | # Add icons to appear in tool bar - step 1
54 | actionShow_CCPL.setIcon(QIcon(":/showgpl.png"))
55 | action_About.setIcon(QIcon(":/about.png"))
56 | action_Close = QAction(self)
57 | action_Close.setCheckable(False)
58 | action_Close.setObjectName("action_Close")
59 | action_Close.setIcon(QIcon(":/quit.png"))
60 | #------------------------------------------------------
61 | # Show a tip on the Status Bar - step 2
62 | actionShow_CCPL.setStatusTip("Show CC Licence")
63 | action_About.setStatusTip("Pop up the About dialog.")
64 | action_Close.setStatusTip("Close the program.")
65 | #------------------------------------------------------
66 | menu_File.addAction(actionShow_CCPL)
67 | menu_File.addAction(action_About)
68 | menu_File.addAction(action_Close)
69 | menubar.addAction(menu_File.menuAction())
70 |
71 | iconToolBar.addAction(actionShow_CCPL)
72 | iconToolBar.addAction(action_About)
73 | iconToolBar.addAction(action_Close)
74 | action_Close.triggered.connect(self.close)
75 |
76 | def showCCPL(self):
77 | 'Read and display CCPL licence.'
78 | with open('CCPL.txt') as fi:
79 | self.textEdit.setText(fi.read())
80 |
81 |
82 |
83 | def about(self):
84 | '''Popup a box with about message.'''
85 | QMessageBox.about(self, "About PySide, Platform and version.",
86 | """ about.py version %s
87 |
Copyright © 2013 by Algis Kabaila.
88 | This work is made available under the terms of
89 | Creative Commons Attribution-ShareAlike 3.0 license,
90 | http://creativecommons.org/licenses/by-sa/3.0/.
91 |
This application is useful for displaying
92 | Qt version and other details.
93 |
Python %s - PySide version %s - Qt version %s on %s""" %
94 | (__version__, platform.python_version(), PySide.__version__,
95 | PySide.QtCore.__version__, platform.system()))
96 |
97 | if __name__ == '__main__':
98 | app = QApplication(sys.argv)
99 | frame = MainWindow()
100 | frame.show()
101 | sys.exit(app.exec_())
102 |
--------------------------------------------------------------------------------
/combine_bits/combine_allin1_folder/readme_combine_allin1.txt:
--------------------------------------------------------------------------------
1 |
2 | To run combine_allin1.py enter
3 | python combine_allin1.py
4 | where python is either version 3.x or 2.x
5 |
6 |
--------------------------------------------------------------------------------
/combine_bits/combine_alter_folder/combine_alter.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Copyright (c) 2010-2011, 2013 Algis Kabaila. All rights reserved.
4 | # This work is made available under the terms of the
5 | # Creative Commons Attribution-ShareAlike 3.0 license,
6 | # http://creativecommons.org/licenses/by-sa/3.0/.
7 |
8 | # combine_alter.py - combination of ShowCCPL, About, Close scripts
9 | # The purpose of this version of program is to show alternative
10 | # implementation, without the use of dual inheritance.
11 |
12 | import sys
13 | import platform
14 |
15 | import PySide
16 | from PySide.QtGui import (QApplication, QMainWindow, QMessageBox, QIcon)
17 |
18 | __version__ = '3.1.5'
19 | from ui_combine import Ui_MainWindow as Ui
20 |
21 | # qrc_combinex furnishes information about the visual properties of icons.
22 |
23 | if int(platform.python_version()[0]) < 3:
24 | import qrc_combine2
25 | else:
26 | import qrc_combine3
27 |
28 | class MainWindow(QMainWindow):
29 | def __init__(self, parent=None):
30 | super(MainWindow, self).__init__(parent)
31 | # Store Ui() as class variable self.ui
32 | self.ui = Ui()
33 | self.ui.setupUi(self)
34 | self.setWindowTitle('Combine Code Blocks.')
35 | self.ui.actionShow_CCPL.triggered.connect(self.showCCPL)
36 | self.ui.action_About.triggered.connect(self.about)
37 | iconToolBar = self.addToolBar("iconBar.png")
38 | #------------------------------------------------------
39 | # Add icons to appear in tool bar - step 1
40 | self.ui.actionShow_CCPL.setIcon(QIcon(":/showgpl.png"))
41 | self.ui.action_About.setIcon(QIcon(":/about.png"))
42 | self.ui.action_Close.setIcon(QIcon(":/quit.png"))
43 | #------------------------------------------------------
44 | # Show a tip on the Status Bar - step 2
45 | self.ui.actionShow_CCPL.setStatusTip("Show CC Licence")
46 | self.ui.action_About.setStatusTip("Pop up the About dialog.")
47 | self.ui.action_Close.setStatusTip("Close the program.")
48 | #------------------------------------------------------
49 | iconToolBar.addAction(self.ui.actionShow_CCPL)
50 | iconToolBar.addAction(self.ui.action_About)
51 | iconToolBar.addAction(self.ui.action_Close)
52 |
53 | def showCCPL(self):
54 | 'Read and display CCPL licence.'
55 | with open('CCPL.txt') as fi:
56 | self.ui.textEdit.setText(fi.read())
57 |
58 | # def showGPL(self):
59 | # '''Read and display CC licence.'''
60 | # with open('CCPL.txt') as nonamefile:
61 | # self.ui.textEdit.setText(nonamefile.read())
62 | #
63 | def about(self):
64 | '''Popup a box with about message.'''
65 | QMessageBox.about(self, "About PySide, Platform and the like",
66 | """ about.py version %s
67 |
Copyright © 2013 by Algis Kabaila.
68 | This work is made available under the terms of
69 | Creative Commons Attribution-ShareAlike 3.0 license,
70 | http://creativecommons.org/licenses/by-sa/3.0/.
71 |
This application is useful for displaying
72 | Qt version and other details.
73 |
Python %s - PySide version %s - Qt version %s on %s""" %
74 | (__version__, platform.python_version(), PySide.__version__,
75 | PySide.QtCore.__version__, platform.system()))
76 |
77 | if __name__ == '__main__':
78 | app = QApplication(sys.argv)
79 | frame = MainWindow()
80 | frame.show()
81 | sys.exit(app.exec_())
82 |
83 |
--------------------------------------------------------------------------------
/combine_bits/combine_alter_folder/readme_combine_alter.txt:
--------------------------------------------------------------------------------
1 |
2 | To run combine_alter.py enter
3 | python combine_alter.py
4 | where python is either version 3.x or 2.x
5 |
6 |
--------------------------------------------------------------------------------
/combine_bits/combine_alter_folder/ui_combine.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'combine.ui'
4 | #
5 | # Created: Sun Jan 5 23:17:33 2014
6 | # by: pyside-uic 0.2.14 running on PySide 1.1.2
7 | #
8 | # WARNING! All changes made in this file will be lost!
9 |
10 | from PySide import QtCore, QtGui
11 |
12 | class Ui_MainWindow(object):
13 | def setupUi(self, MainWindow):
14 | MainWindow.setObjectName("MainWindow")
15 | MainWindow.resize(731, 475)
16 | self.centralwidget = QtGui.QWidget(MainWindow)
17 | self.centralwidget.setObjectName("centralwidget")
18 | self.gridLayout = QtGui.QGridLayout(self.centralwidget)
19 | self.gridLayout.setObjectName("gridLayout")
20 | self.textEdit = QtGui.QTextEdit(self.centralwidget)
21 | self.textEdit.setObjectName("textEdit")
22 | self.gridLayout.addWidget(self.textEdit, 0, 0, 1, 1)
23 | MainWindow.setCentralWidget(self.centralwidget)
24 | self.menubar = QtGui.QMenuBar(MainWindow)
25 | self.menubar.setGeometry(QtCore.QRect(0, 0, 731, 21))
26 | self.menubar.setObjectName("menubar")
27 | self.menu_File = QtGui.QMenu(self.menubar)
28 | self.menu_File.setObjectName("menu_File")
29 | MainWindow.setMenuBar(self.menubar)
30 | self.statusbar = QtGui.QStatusBar(MainWindow)
31 | self.statusbar.setObjectName("statusbar")
32 | MainWindow.setStatusBar(self.statusbar)
33 | self.actionShow_CCPL = QtGui.QAction(MainWindow)
34 | self.actionShow_CCPL.setObjectName("actionShow_CCPL")
35 | self.action_About = QtGui.QAction(MainWindow)
36 | self.action_About.setObjectName("action_About")
37 | self.action_Close = QtGui.QAction(MainWindow)
38 | self.action_Close.setCheckable(False)
39 | self.action_Close.setObjectName("action_Close")
40 | self.menu_File.addAction(self.actionShow_CCPL)
41 | self.menu_File.addAction(self.action_About)
42 | self.menu_File.addAction(self.action_Close)
43 | self.menubar.addAction(self.menu_File.menuAction())
44 |
45 | self.retranslateUi(MainWindow)
46 | QtCore.QObject.connect(self.action_Close, QtCore.SIGNAL("triggered()"), MainWindow.close)
47 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
48 |
49 | def retranslateUi(self, MainWindow):
50 | MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
51 | self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8))
52 | self.actionShow_CCPL.setText(QtGui.QApplication.translate("MainWindow", "Show &CCPL", None, QtGui.QApplication.UnicodeUTF8))
53 | self.action_About.setText(QtGui.QApplication.translate("MainWindow", "&About", None, QtGui.QApplication.UnicodeUTF8))
54 | self.action_Close.setText(QtGui.QApplication.translate("MainWindow", "Close &X", None, QtGui.QApplication.UnicodeUTF8))
55 |
56 |
--------------------------------------------------------------------------------
/combine_bits/combine_folder/combine-STAGE1.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Copyright (c) 2010-2011, 2013 Algis Kabaila. All rights reserved.
4 | # This work is made available under the terms of the
5 | # Creative Commons Attribution-ShareAlike 3.0 license,
6 | # http://creativecommons.org/licenses/by-sa/3.0/.
7 |
8 | # combine.py - combination of ShowCCPL, About, Close partly made scripts
9 |
10 | import sys
11 | import platform
12 |
13 | import PySide
14 | from PySide.QtGui import QApplication, QMainWindow, QMessageBox
15 |
16 | __version__ = '3.0.3'
17 | from ui_combine import Ui_MainWindow
18 |
19 | class MainWindow(QMainWindow, Ui_MainWindow):
20 | def __init__(self, parent=None):
21 | super(MainWindow, self).__init__(parent)
22 | self.setupUi(self)
23 | self.actionShow_CCPL.triggered.connect(self.showCCPL)
24 | self.action_About.triggered.connect(self.about)
25 |
26 | def showCCPL(self):
27 | '''Read and display CCPL licence.'''
28 | with open('CCPL.txt') as fi:
29 | self.textEdit.setText(fi.read())
30 |
31 | def about(self):
32 | '''Popup a box with about message.'''
33 | QMessageBox.about(self, "About PySide, Platform and version.",
34 | """ about.py version %s
35 |
Copyright © 2013 by Algis Kabaila.
36 | This work is made available under the terms of
37 | Creative Commons Attribution-ShareAlike 3.0 license,
38 | http://creativecommons.org/licenses/by-sa/3.0/.
39 |
This application is useful for displaying
40 | Qt version and other details.
41 |
Python %s - PySide version %s - Qt version %s on %s""" % (__version__,
42 | platform.python_version(), PySide.__version__, PySide.QtCore.__version__,
43 | platform.system()))
44 |
45 |
46 | if __name__ == '__main__':
47 | app = QApplication(sys.argv)
48 | frame = MainWindow()
49 | frame.show()
50 | sys.exit(app.exec_())
51 |
--------------------------------------------------------------------------------
/combine_bits/combine_folder/combine.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | # Copyright (c) 2010-2011, 2013 by Algis Kabaila.
4 | # This work is made available under the terms of the
5 | # Creative Commons Attribution-ShareAlike 3.0 license,
6 | # http://creativecommons.org/licenses/by-sa/3.0/.
7 |
8 | # combine.py - combination of ShowGPL, About, Close scripts
9 |
10 | import sys
11 | import platform
12 |
13 | import PySide
14 |
15 | from PySide.QtGui import (QApplication, QMainWindow, QMessageBox, QIcon)
16 |
17 | __version__ = '3.1.5'
18 |
19 | from ui_combine import Ui_MainWindow
20 |
21 | if int(platform.python_version()[0]) < 3:
22 | import qrc_combine2
23 | else:
24 | import qrc_combine3
25 |
26 |
27 | class MainWindow(QMainWindow, Ui_MainWindow):
28 | def __init__(self, parent=None):
29 | super(MainWindow, self).__init__(parent)
30 | self.setupUi(self)
31 | self.setWindowTitle('Combine Code Blocks.')
32 | self.actionShow_CCPL.triggered.connect(self.showCCPL)
33 | self.action_About.triggered.connect(self.about)
34 | iconToolBar = self.addToolBar('')
35 | #------------------------------------------------------
36 | # Add icons to appear in tool bar - step 1
37 | self.actionShow_CCPL.setIcon(QIcon(":/showgpl.png"))
38 | self.action_About.setIcon(QIcon(":/about.png"))
39 | self.action_Close.setIcon(QIcon(":/quit.png"))
40 | #------------------------------------------------------
41 | # Show a tip on the Status Bar - step 2
42 | self.actionShow_CCPL.setStatusTip("Show CCP Licence")
43 | self.action_About.setStatusTip("Pop up the About dialog.")
44 | self.action_Close.setStatusTip("Close the program.")
45 | #------------------------------------------------------
46 | iconToolBar.addAction(self.actionShow_CCPL)
47 | iconToolBar.addAction(self.action_About)
48 | iconToolBar.addAction(self.action_Close)
49 |
50 | def showCCPL(self):
51 | 'Read and display CCPL licence.'
52 | with open('CCPL.txt') as fi:
53 | self.textEdit.setText(fi.read())
54 |
55 | def about(self):
56 | '''Popup a box with about message.'''
57 | QMessageBox.about(self, "About PySide, Platform and version.",
58 | """ about.py version %s
59 |
Copyright © 2013 by Algis Kabaila.
60 | This work is made available under the terms of
61 | Creative Commons Attribution-ShareAlike 3.0 license,
62 | http://creativecommons.org/licenses/by-sa/3.0/.
63 |
This application is useful for displaying
64 | Qt version and other details.
65 |
Python %s - PySide version %s - Qt version %s on %s""" %
66 | (__version__, platform.python_version(), PySide.__version__,
67 | PySide.QtCore.__version__, platform.system()))
68 |
69 | if __name__ == '__main__':
70 | app = QApplication(sys.argv)
71 | frame = MainWindow()
72 | frame.show()
73 | sys.exit(app.exec_())
74 |
--------------------------------------------------------------------------------
/combine_bits/combine_folder/readme_combine.md:
--------------------------------------------------------------------------------
1 | readme_combine.md
2 | =================
3 |
4 | ### First step
5 |
6 | Compile resources to a python readable format in the two
7 | directories:
8 |
9 | * designer
10 | * icons
11 |
12 | Copy back the two python readable files:
13 |
14 | * from *designer*, copy ui_combine.py
15 | * from *icons*, qrc_combine2.py and qrc_combine3.py
16 |
17 | ### Second step
18 |
19 | To run **combine-STAGE1.py** enter
20 |
21 | * python combine-STAGE1.py
22 |
23 | where python is version 2.x or 3.x
24 |
25 | ### Third step
26 |
27 | Continue editing and developing combine-STAGE1.py
28 | towards combine.py. Then to run **combine.py** enter
29 |
30 | * python combine.py
31 |
32 | where python is version 2.x or 3.x. It is good fun, is it not?
33 |
34 |
--------------------------------------------------------------------------------
/combine_bits/combine_folder/ui_combine.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'combine.ui'
4 | #
5 | # Created: Sun Jan 5 23:17:33 2014
6 | # by: pyside-uic 0.2.14 running on PySide 1.1.2
7 | #
8 | # WARNING! All changes made in this file will be lost!
9 |
10 | from PySide import QtCore, QtGui
11 |
12 | class Ui_MainWindow(object):
13 | def setupUi(self, MainWindow):
14 | MainWindow.setObjectName("MainWindow")
15 | MainWindow.resize(731, 475)
16 | self.centralwidget = QtGui.QWidget(MainWindow)
17 | self.centralwidget.setObjectName("centralwidget")
18 | self.gridLayout = QtGui.QGridLayout(self.centralwidget)
19 | self.gridLayout.setObjectName("gridLayout")
20 | self.textEdit = QtGui.QTextEdit(self.centralwidget)
21 | self.textEdit.setObjectName("textEdit")
22 | self.gridLayout.addWidget(self.textEdit, 0, 0, 1, 1)
23 | MainWindow.setCentralWidget(self.centralwidget)
24 | self.menubar = QtGui.QMenuBar(MainWindow)
25 | self.menubar.setGeometry(QtCore.QRect(0, 0, 731, 21))
26 | self.menubar.setObjectName("menubar")
27 | self.menu_File = QtGui.QMenu(self.menubar)
28 | self.menu_File.setObjectName("menu_File")
29 | MainWindow.setMenuBar(self.menubar)
30 | self.statusbar = QtGui.QStatusBar(MainWindow)
31 | self.statusbar.setObjectName("statusbar")
32 | MainWindow.setStatusBar(self.statusbar)
33 | self.actionShow_CCPL = QtGui.QAction(MainWindow)
34 | self.actionShow_CCPL.setObjectName("actionShow_CCPL")
35 | self.action_About = QtGui.QAction(MainWindow)
36 | self.action_About.setObjectName("action_About")
37 | self.action_Close = QtGui.QAction(MainWindow)
38 | self.action_Close.setCheckable(False)
39 | self.action_Close.setObjectName("action_Close")
40 | self.menu_File.addAction(self.actionShow_CCPL)
41 | self.menu_File.addAction(self.action_About)
42 | self.menu_File.addAction(self.action_Close)
43 | self.menubar.addAction(self.menu_File.menuAction())
44 |
45 | self.retranslateUi(MainWindow)
46 | QtCore.QObject.connect(self.action_Close, QtCore.SIGNAL("triggered()"), MainWindow.close)
47 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
48 |
49 | def retranslateUi(self, MainWindow):
50 | MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
51 | self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8))
52 | self.actionShow_CCPL.setText(QtGui.QApplication.translate("MainWindow", "Show &CCPL", None, QtGui.QApplication.UnicodeUTF8))
53 | self.action_About.setText(QtGui.QApplication.translate("MainWindow", "&About", None, QtGui.QApplication.UnicodeUTF8))
54 | self.action_Close.setText(QtGui.QApplication.translate("MainWindow", "Close &X", None, QtGui.QApplication.UnicodeUTF8))
55 |
56 |
--------------------------------------------------------------------------------
/combine_bits/designer/combine.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 731
10 | 475
11 |
12 |
13 |
14 | MainWindow
15 |
16 |
17 |
18 | -
19 |
20 |
21 |
22 |
23 |
42 |
43 |
44 |
45 | Show &CCPL
46 |
47 |
48 |
49 |
50 | &About
51 |
52 |
53 |
54 |
55 | false
56 |
57 |
58 | Close &X
59 |
60 |
61 |
62 |
63 |
64 |
65 | action_Close
66 | triggered()
67 | MainWindow
68 | close()
69 |
70 |
71 | -1
72 | -1
73 |
74 |
75 | 365
76 | 237
77 |
78 |
79 |
80 |
81 |
82 |
--------------------------------------------------------------------------------
/combine_bits/designer/readme.md:
--------------------------------------------------------------------------------
1 | readme.md for *designer*
2 | ========================
3 |
4 | The **combine.ui** is the file generated by the **qt-designer**. To see how it was generated, open combine.ui with the qt-designer. It needs to be converted to a python readable file with the pyside tool **pyside-uic**:
5 | We choose a name for the output file which indicates that it is
6 |
7 | * a python file, so it has an extension py
8 | * a user interface data file, so it has a prefix ui_
9 |
10 | Thus, the command is
11 |
12 | * **pyside-uic combine.ui -o ui_combine.py**
13 |
14 | **ui_combine.py** should then be copied to other directories as required.
15 |
--------------------------------------------------------------------------------
/combine_bits/designer/ui_combine.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'combine.ui'
4 | #
5 | # Created: Sun Jan 5 23:17:33 2014
6 | # by: pyside-uic 0.2.14 running on PySide 1.1.2
7 | #
8 | # WARNING! All changes made in this file will be lost!
9 |
10 | from PySide import QtCore, QtGui
11 |
12 | class Ui_MainWindow(object):
13 | def setupUi(self, MainWindow):
14 | MainWindow.setObjectName("MainWindow")
15 | MainWindow.resize(731, 475)
16 | self.centralwidget = QtGui.QWidget(MainWindow)
17 | self.centralwidget.setObjectName("centralwidget")
18 | self.gridLayout = QtGui.QGridLayout(self.centralwidget)
19 | self.gridLayout.setObjectName("gridLayout")
20 | self.textEdit = QtGui.QTextEdit(self.centralwidget)
21 | self.textEdit.setObjectName("textEdit")
22 | self.gridLayout.addWidget(self.textEdit, 0, 0, 1, 1)
23 | MainWindow.setCentralWidget(self.centralwidget)
24 | self.menubar = QtGui.QMenuBar(MainWindow)
25 | self.menubar.setGeometry(QtCore.QRect(0, 0, 731, 21))
26 | self.menubar.setObjectName("menubar")
27 | self.menu_File = QtGui.QMenu(self.menubar)
28 | self.menu_File.setObjectName("menu_File")
29 | MainWindow.setMenuBar(self.menubar)
30 | self.statusbar = QtGui.QStatusBar(MainWindow)
31 | self.statusbar.setObjectName("statusbar")
32 | MainWindow.setStatusBar(self.statusbar)
33 | self.actionShow_CCPL = QtGui.QAction(MainWindow)
34 | self.actionShow_CCPL.setObjectName("actionShow_CCPL")
35 | self.action_About = QtGui.QAction(MainWindow)
36 | self.action_About.setObjectName("action_About")
37 | self.action_Close = QtGui.QAction(MainWindow)
38 | self.action_Close.setCheckable(False)
39 | self.action_Close.setObjectName("action_Close")
40 | self.menu_File.addAction(self.actionShow_CCPL)
41 | self.menu_File.addAction(self.action_About)
42 | self.menu_File.addAction(self.action_Close)
43 | self.menubar.addAction(self.menu_File.menuAction())
44 |
45 | self.retranslateUi(MainWindow)
46 | QtCore.QObject.connect(self.action_Close, QtCore.SIGNAL("triggered()"), MainWindow.close)
47 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
48 |
49 | def retranslateUi(self, MainWindow):
50 | MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
51 | self.menu_File.setTitle(QtGui.QApplication.translate("MainWindow", "&File", None, QtGui.QApplication.UnicodeUTF8))
52 | self.actionShow_CCPL.setText(QtGui.QApplication.translate("MainWindow", "Show &CCPL", None, QtGui.QApplication.UnicodeUTF8))
53 | self.action_About.setText(QtGui.QApplication.translate("MainWindow", "&About", None, QtGui.QApplication.UnicodeUTF8))
54 | self.action_Close.setText(QtGui.QApplication.translate("MainWindow", "Close &X", None, QtGui.QApplication.UnicodeUTF8))
55 |
56 |
--------------------------------------------------------------------------------
/combine_bits/icons/__init__.py:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/OldAl/tuts4pyside/aba682aee43b5e72569750f7907f6a94a6e02bdd/combine_bits/icons/__init__.py
--------------------------------------------------------------------------------
/combine_bits/icons/combine.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | select_tango/32x32/actions/system-log-out.png
4 | select_tango/32x32/apps/preferences-system-session.png
5 | select_tango/32x32/apps/help-browser.png
6 |
7 |
8 |
--------------------------------------------------------------------------------
/combine_bits/icons/qrc_combine2.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Resource object code
4 | #
5 | # Created: Sun Jan 19 19:26:37 2014
6 | # by: The Resource Compiler for PySide (Qt v4.8.4)
7 | #
8 | # WARNING! All changes made in this file will be lost!
9 |
10 | from PySide import QtCore
11 |
12 | qt_resource_data = "\x00\x00\x06\x0d\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x05\xc4IDATX\x85\xb5\x97mlTU\x1a\xc7\x7f\xe7\x9c;\xf7\xce\x0bt\xa63#X\x05\xbbU\xa4\x15\x8a\x8a\x88\x15\x091~\xb0\x1f\xd8(\x91\x05\x85\x98]M\x13\x13\x93\xddu\xd5DT\x08\x1b7\xbeG\xfd\xe4KL\xd4\xfaR\x8bE\xa0\x84\xad\xa8@DQ\x17HX\x0dE\x0d\x85.\x985\xb4E:E\xc4y\xe9\xcc\xdc{\x8f\x1f\xa63t\xect:\xd6\xf8$7\xb9\xe7\xdcs\xcf\xf9\x9d\xff\xf3?\xe7\xdc+\x00\x22\x8b\xee\xbe\xd0\x12lv\x5cg!Z+~\x8f\x10\xc2QR\x1dHkV\x0c\xed{\xb9/_m\x00\x98R\xbc\xfd\xe4\x83-M\xcd\x0bg\x0a\xad\xdd\xc2;\xa1P\x88d2I&\x93\x01\xc0\xe7\xf3\x11\x0a\x85&5\xbe\xe3\xb8\xaa\xfd\xfd/\x9b\x1ez\xba\xf5m\xe0\x86\x22\x00\xd7\xb1\x97\xacl\xbeBtm\xdbZ\x18\x0c`\xfe\xfc\xf9\xf4\xf6\xf6\x12\x8f\xc7\x01\x986m\x1a\xcd\xcd\xcd\x93\x02PJ\xb2\xb2\xf9\x0a\xb1\xe6\x09{\xc9\xe8z\x03\x00\xadU\xe7\x8e\xfd,\xbf\xe9f\x94\x92\xe7\x1e\x1a\x06\xf5\xf5\xf5\xb8nN\x15)%\x93\x0d\xdbv\xe8\xdc\xb1\x9f_\xa6\xd8\xc8\xdfl\xd8\xf9\x0d\x8f\xbc\xb0\x15\x8d\x9e\xf4 \xe5B \x98={\xf6\x98\xfa\x02@\xb8\xe6\x0fD\x9c\xc9\xe5\xb7\xd2\x08\xd7\x84\x80/J\x03H)QJ\x92\x89\xff\xc8\xe9\xd8\x10\xee\x04BH\x01\xe1h\x04sJ\xb0b\x80R),\x00()PR24t\x9a\x9e\xad\x0f`z\xca\xaf\xc6L\xd6\xa1a\xf9\xb3\xcc\xa8\xaa\xae\x18@I1>@^\x01\xedjL\x8fb\xf6\xb2g\xc8\xdaN\xc9\x8e<\x86\xe2\xe8\xb6\x07\xd0\xae.2\xedDQ^\x01%\x0b\x9d9\x8e\xc3\xe1\xce\xfb\xcbv\xe68N\xe1\xbdJ\xa3T\xdbs\x0a\x88\x5c\x0a\x00\xb2\xd9l\xc5\x9d\x1e;\xdcST\x96B0\xbdf\x1aS\xab#c\xdaJQ&\x05\xa3\x15\xf85\x00\xdfn\x7f\xa8\xa8<\x9c\xb1\x99\xbb\xe29B\xd1\xf3\xc6\xb4-\xaf\x80<\x07`\xdbv\xc5\x00u\x7f|\xaap\x9f\xf7\x86\xeb\x94\xf6FY\x0fH%\x90\x93P\xe0X\xd7\x9a\xa2ra\xd7,\x05\xa0\xca\xad\x02!'\xe5\x81\xf1\xd4R%f+E\x05\xab@ \x18\x1e\xce\xa0J\xd0\x8e\x0e\xc7\xd1H!\xc6\x85-\x95\x82\x09< PJ2\xf3\xa2\xf3\xb9\xf1\x9ew'<\x13\xa4\x10\xdc\xd6\xdcXP\xa0\xfbP7]\xef\xfd\x9b\x81\x81\x01\x16U;\xd0s\x10)%\x96ea\xdb6\xa9T\x8a\xfe\xffM\xa5f\x8a\xcb\xf7%\x01F\x14\x98QW\xcb\x8c\xba\xda1\x03\xee\xdd\xb3\x9f\xff\xbeu\xd7\x98z\xdb\xb69~\xfc8[:7\xb3~\xdd?\x09\x85B\x08!P*\xb7\x93\xbe\xff\xc1vv\xed\xda\xc5\xd4\x8b\xaapl\x1b\xed|G\xc3\xaa\x95wvtlz\xa3\x08@\x8d\xda\x07\xc6\x8bl6\xcb\xde}\xff\xa1c\xe3;\x04\x02\x01jkk\x11\x08R\xc3)\x1e\xfd\xd7c\x04\x02\x81\xc2\x06%\xa5d\xe3\xa6\x0e:;\xb7\x10\x89D\x01M_\x7f\x1f\x01\x7f\x80\x94\xad\x9foii\xd9\xd2\xda\xda\xfa\xd3\x18\x05\xca\x85m\xdb\x5c\xb3\xb0\x09\xaf\xe5\xa5\xad\xfd-\xfe\xb4|%\xf3\x1a\xe7\x019\xf7\x9f={\x16\x00\xcb\xb20M\x93U\xb7\xaef\xd5\xad\xab\x19\x18\x18\xe0\xa5\x97_D\x08\xc1\xc5u\x970\x18\x1b\xe4\xd4\xe0\xc9\x15\xc0\xeb\xa3\x0e\xa3\xf2\x00R\x09\x12\xa94\x96G1g\xce\x5c\x1e~p-\xed\xedm\x5c\xbd`!\xb7\xdc\xb2\x9cx;\x19;\xca=\xf7\xdf\xcb\xfa\xb5\xeb8\xd1\xd7G[\xfb\x06\xd2\xa1F\xbc\x97\xdfA\xf6\x8bWPJ\xe2\xf5zq\x1c\x07)%>\x9f\x0fG\xbb\xe1\x22\x80J<0^\xf8\xa67`WMg\xed#\x8f\xe3\xad\x99\x8bw\xcej\x02\xca\xccM\xcc\xf4\x03\x02\xbf\xdfW\xd83\xaa\xaa\xaa\xd0\xae\xeb\xcb\x03\x84\x90\xc2Ak\xe51\x14\xae\xae\xfc\x9bP;6v\x22\x96\x9b\x00\x10l\x5c\x96\xab\x1f>\x83\x06\x844 \x9b!\x18\xacB\x08\x89R\x0a!\x04RJ\x0c\xa5\xe2y\x00\xbf)\xc5\x97\xdd\x07\xbb\x17\x5c\xb5\xe0J)U\xe5\xff%\xa9\xb3\x83\x1c\xda\xddJ\xd3\xa2\xc5c\x9f%\x92|\xf5U7\xca\xe3!\x1c\x8e\x90L&1\x0c\x03\xa5\x14Zk\xa4RCy\x00{\xf0\xd8\xde5\x9fk\xfd\xc2\xc7\x1f}r\x19ZW\x9c\x07Cj\xae\xbf\xd4\xcb?\xfe\xfawl\xdb.\x1cD\x90\xfb\xa4\xbf\xa3\xe5NL\xd3G \x10 \x9b\xcd\xe2\xf1x0M\x93\xfe\x81~\x04\xa2;\x0f\xf0\xc3\xf0\xc9\xaf\x0f\x9f8\xf9\xf52\xc0\x07x*\x96\x000\xeao\x7f/\x16\x8b]`\x9af\xd1OM0\x18$\xe0\xf7f/o\x9c\xa7\x85\x10\xa6\xd7\xeb\x05\xc0\xef\xf7\xd3\xdb{\xe4\xa7T:\xdd\x9e\x07\xc8\x02\xdf\x031@\xfdZ\x80Db\xf8\xc9\xd7^\x7f\xf5\xa9?\xdf\xfe\x97@2\x99,\x18-\x91H\xd0t\xcd\xb5\x9e\xfc\x96lY\x16\x86a\x90\xce\xa4\xe9\xe9\xe9I\x84\x83\xe1.F\x06\xcc\x87\x06\x9c\x11\xa0J/\xfa\xfb\xfa\x8f\x84\xaa\x83K\x8f\x1c=\x12\xf6\x18\x86\x11\x8f\xc79s\xe6\x0c\xa7N\x9dB\xbb\x9a\x9d\xbb>$\x14\xaa&\x12\x8d\x10O\xc4ik{3\xd9w\xe2\xc4\xdf::\xde\xed\x05\xb2\xe5\xcf\xdc\x89\xc3\x07\x04\xa2\xd1h\xe4\xba\xc5\xd7\xae\xf7\xfb\xfd7it\xd5\xe8\x06\xa3}a\x9a\xe6\xff\x07\xfa\xfa\x9f\xde\xbd{\xcf6\xe0G \xf1[\x01\x00\x04`\x02\xd6\x08\x90E.\x8d&\xe7T\xcd\x00\xc3@\x0aH\x8f\x945\xc0\xcf\xfd\x89+6E\xdf\xcd\xa5\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x06\xbd\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\x9bx\x00\x00\x00\x19tEXtSoftware\x00www.inkscape.org\x9b\xee<\x1a\x00\x00\x06:IDATX\x85\x9d\x97Mh\x5c\xd7\x15\xc7\x7f\xf7}\xce\xb7\xad\xb1\x0c\xb2\xc6\xb6\xc6\x91\xd2T\x89\x8d0&\x08'Q\xb30\xa9V\xc1`\x12h\x88M[\xb2\xc8\xa6\xc5\xdb\xe0U7M\x13'\x85f\x95M\x0aI?\xe8\xbetQhC\xb2H\xc6\xa6\xf5\x22\x18\x22\xac\x22\xa9\xb8nb\xeb\xdb\x96Fo\xde\xd7\xbd\xb7\x8b\x99\xf7\xfcf43\x0a=p\x997\xef\xcd\xbb\xe7\xf7?\xe7\xcc\xbd\xe7\x0a\xad5\xff\x87\x09\xc0\x04\x1c\xc0\xea\x5c'\xa6\x01\x09D\x9d\xa1:\xf7\xfa\x9a\x05\xf0\xfa\x95\xd7~\x19E\xd1\xb5\xef\xe4Y\x08\x0c\xc3\xc0u]\xf2\xf9\x02\xb9\x5c\x0e\xc7\xb61\x0c\x03\x8dFJE\x18\x86\xb8\xae\xfb\xc1\xf5w\xde\xbb\x06\x04\x1d\xa0\xc1\x00Q\x14]\xfb\xf1\x95\x9f\xb2\xb8\xb8H\xab\xd5\x22\x8a\x22\x82 \x0cC\xa2(JG\x1c\xc7H)\xb1,\x8bb\xa1\xc0\xd5\xabW\x19\x1f?\x86\x10\xa2\x13\x14\xd0Z\xe3y\x1e\xef\xfd\xfa\xfaU\xe0\xed\x8e\xf3\x81Q\xb0\xd2\x0b\xcb\xc24M,\xcbBJ\x99^+\xa5PJ\x91\xa4\xca0\x0c\x1c\xc7\xa1\x5c\xae\x90\xcf\xe70M\x0b!D\x07\xa2\x0dP*\x95\x18\x19\xa9\x02\x94\x80f\x87n8\x80\xe38X\x96\x85m\xdbH)\xd1Zw\x8d\xc4\xb4\xd68\x8eC\xb1X\xc4\xb2\xda\xa17\x0c#\x13\x01\x05@\xa9T\x02\xc8\xd1]\x1f\x83\x01\x5c\xd7\xc5q\x1c\xa4\x94\xd8\xb6\x0d\x90*\xd7Z\xa7*\xb5\xd6\xd8\xb6\x8d\xe38\x18\x86\x91Q/:3\x19\x80\xc6i\xcfaf\x1e\x0c\x07p\x1c'\x05H\x14'\x8e\x81\xd4Y\x02`w\x0a/1! \x09T\x9bG$4C-\xfd\x81\x10\x02\xd34q\x1c\x07\xd7uS'\xb6m\xe3\xban\x9a\x1e\xcb\xb2\xd2zI\xe0\xfa\x89\x14\x8f\xef\x89\xbf<\xfdt\xe1\x8fB\x9c\x1b\x1a\x81$\x94\x86a`\x9a&\xae\xeb\xa6\xf7\x12\xe5B\x08\x94R\x19\x80\xc1\x02\x13\xb6\x85\xf7\xdf/6\xef\xdc\xf9\xb3\x80i\xa084\x02\xd9\x9c&\xdf\x13\xc5Y\xf5\x8f\x01\x06\x87\x16`\xfd\x8b/J\xb7\xdfz\xeb\xafS\xaf\xbc2\x93?v\xaco1v\x01d\x1d\xf7\x02%\xd5n\x9af\xa6\xf2aP\x8d\x09\xcf\xe3\xb3\xf9\xf9O\xbe\xf7\xea\xab\xd3\x93W\xaeX\x83h\xad\xae\x972\x10\xbd@\xae\xeb255\xc5\xde\xde\x1e\xdb\xdb\xdb\x99\xfc\xef\xb7pk\x8b\xfc\xaf\xae\xf3\xe4\xcb/\xd7O\xbc\xf4\x92\xa9vwA)\xe3OB<\xea\xf9\xe97\xfb\x00\xfa\xa9Oro\xdb6G\x8f\x1e\xe5\xc8\x91#4\x9b\xc9\xfa\x92}\x1f\xfc\xf5\x0d>\x9b\xfb\x01\xd3ss\x8c\x9f?oz7oR8w\x8e\xb9w\xdf\xb51\x0c\x1b\xadAkt\x1c\xf3\xb77\xde(\x1e\x18\x81\xec\xdf\xef\xc6\x8d\x1bT*\x15fggq]w\x9fr\x7fm\x8dO\x9f\x7f\x81\xe333\x1c;}\x1a\xaf\xd1@K\xc9\xce\xe7\x9f#\xccv\x09h\xa5 \x8e)_\xb808\x05\xbd\xea\x93q\xf8\xf0aFGG\xc9\xe5r\xdc\xbd{\xb7\xcby\xeb\xfe}>}a\x8e\xda\xf44GO\x9d\xa2\xd9h\x80\x94`Ym\xe7I\xcd(\x85\x96\x12\xe5y\xfb\x01z\xa3\xd0\x9b\x8eJ\xa5\xc2\xd9\xb3gYYY\xe9\xd4AG\xf9\xea*\x7f?\xff\x1c\xb5\xc9I\x8e\x8c\x8d\xb1\xf7\xe5\x97\xa0\x14\xc2\xb6\xc14\x11\xa6\x89\x8e\x22\xb4R\x18\xae;\x1c`\x90z\xdb\xb6\x99\x99\x99ass\x93\x85\x85\x05j\xb5\xdac\xf5\x0f\x1e\x10nm\xe1NL\x10,-\x11\xad\xae\x22,\x0b\x1d\x04(\xcfC6\x9b\xe8 h\x0b\xb4,\x8cB\x81\xfc\xe9\xd3m\x7f\x83\x22\xd0\xab~zz\x9a8\x8ei4\x1a\xe9j\x99\xd8\xc8\xcc\x0c\xb3\xbf\xfb\x84\xc5\xaf\xbe\xa2\xf5\xe8\x11f\xb9L\xb0\xb2Bx\xef\x1e\xf1\xe6f\xea\x1c@\xc71rg\x87xc\xa3?@o\x1a\x84\x10\x94J%\x84\x10\xdc\xbau\x0b\xcb\xb2\xc8\xe5r\xe9:\x90\xa4\xa1v\xf1\x22g?\xfe\x98\x7f-/\xe3G\x11\xf93g\xd2\xc2\xc30\xf6\x0d\x1dE\xfdS\x90MC\xf2\xe9y\x1e\x0b\x0b\x0bh\xad\xc9\xe7\xf3X\x96\x95>K\xcc\xf7}\x0e\xbd\xf8\x22O}\xf8!w\xde|\x93\xc9\xb11\x8ag\xce\xd0\xfa\xfak\x8a\xcf>\x8bp\x1c0\x0cD\x07@\xf9>z\x10\xc0\xa0\xbfb\xd2\xa0$\xf7\x83 \xc0\xcd\xe5\x10(\xe2X\x12\xc7\x11\xa5\xe7\x9f\xe3\xf8\x07\xbfa\xf1g?g*\x0c\xa9<\xf3\x0cRJn7\x1a\x91\x0cC\xbb\xc7\xd5\xc3\x81\x00\xfd\x8a1\x0bb\x9a&KK\xcb\xd4\xebu\xaa\xd5j'\x15\xed=\xb0<;\xcb\xbd\xd7~\x84\xf8\xfd\x1f\xfc'\xa2(W\x9a\x98@i\x1d^\x86\xf3\x80\x0f\xb4\x921p;\xebu\x9a\xb4hI3\xa2\x94\xc2ky\xec\xee\xee\x10\xc7Q{\x93\xb2\x93\xe7.\xc1\xe4)\xd6\xe7\xe6~\xb1\xbc\xbe\xeem--%\xcd\xc2.\xb0\xd7\x81\x08\x80\xbd\xa1\x00\xd9\x0d(\xe9\x0b\x1c\xc7!\x0cC\x84\x80b\xa1@\xa9TJ\xbb\xa6\xb4S\xce\xe70M\x93\xe2\xe5\xcb\x8d\xff\xd4j?\xf9\xef\xf6\xb6G\x1ck\xe0\x11\xb0\x03l\x01\xdbZ\xeb\xa8o\x0a\xb2\x00\x89r!\x04\x0f\x1fn\xa3\xd0\xd4'\xea\xd4\xeb\x13T\xabU\x5c\xd7%\x96q\xdax\x0b\x03\xf2\xf9\x1c\x86\x10\x5c\xbat\xe9\xc1?O\x9c\xb8\xfd\xcd\xc5\x8b\x17\xdc \xf8!\xb0\xa6{\x0e\x22C\x8b\xd00\x0c\xf2\xf9\xd5j\xd5\x9f\x9f\x9f\x0f\xf1\xfd\x7f\x007_\xef\xe3+\x03\xa0\xbb\x94\x97\xcbe\xd6\xd6V\xf9\xf6\xfe\x06\xf5\xfa\x04\xe3\xb5q\x0a\x85\x02\xb6\xed \x0cA\x14G\xc42\xda7\xa1\xd2\x1a)%\xad\x96\x0f\xed<\x1f|2\x82v\x8d\x98\xa6\xc9\xa1C\x87h6wY\xf9\xf72\xb5\xe3c<15A\xce\xcda\xd96Zi\xa2($\x8a\xb2\x1d_\xf7\xf4Zk\xa4\x92\xf8\xad\x16@H;9\x07\x03\x00\x8c\x8c\x1c\xe6\xfe\xea\xb7\x94\xcb%\x9e\xfa\xfe\x938\xae\x83aZ\xc4R\x12+\xd5v\xdaY|\xb2\x9d@\xd7\xecZ\xa3\x94\xa2\xe5\xa7\x00C\x0f\x9f)\xc0\xfa\xc6*J\xc7\x8c\x8eV;E\x07q\x14!\xe3\xb8\xed\xf0\xa0\x06\xf0\xb1\x7f\x94R\x04\xed\xf5?9\x9c\x0e\x07\xb0m\xfb\xed\x8f~\xfb\xd1\xb5~\xbb\xe0A\xce\x93f\xa5\x1bBc\xdb\xf6;\x1c\x10~\x00\xd1\xe7x\xde\xdb\xec\x7f7\xe9\xdd\xa63c\xa8\xfd\x0f\x86\xcb\x8d\xe7c\x5c\x85\x97\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x08\xb7\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08nIDATX\x85\xc5\x97{pU\xd5\x15\xc6\x7f{\x9fsnnn\xde\xb9\x97 \x84G^\x04\x12\x02\x11\x05\x05\x22\x05D\x0a\xa2(\xd6\xe2L\xa7u\xa8v\xac\xa33:cg\xb4\xd3\x87m\x1c+}M\xffh\xcb\xd8V\x1d)v\xaaE\xc6\xe7\x0c\xa1\xa9\xa0\x11Z\x01\x8dA\x1e\x01\xcc\x83$JBBr\xf3\xbc\xaf\xdc\xdc\xb3w\xff8\xe7\xde$\xd5\x19i\xa73\xee\x995\xe7\xdc9w\xaf\xf5\x9do}k\xad\xb3\xe1K^\xe2J\xff\xb8n]\xad\xd9\x91a\xad\x11\x88\xed\x02\xb1FC\x00\xc8q\x1f\x8f\x08\x18\x10\xe8#6z_qx\xe2HCCm\xe2\xff\x02\xa0h[m\xae\x18O\xfb1\x82\xfb\xca\xe6\xcd\xe0\xc6\x15\xa5Y+\xaa\xe6\x8a\xab\x02Y\xf8\xb3\xd3\x01\x18\x1c\x8d\xd2\x1b\x1c\xa3\xb1\xf9\xa2>\xf4A\xfbXk\xe7e\xd0<\xab\xd3\xc6\x7f\xd6\xf9z\xed\xf0\xff\x0c\xa0h\xf3\xce\x87\xa5!\x9e\xdc\x5c\xb3(\xfd\xfe\xaf\xaf\xb4\xca\xe7\x05\xae\x88\xb3\xb6O\x83<\xf3\xca\xf1\x89\xfd\x87\xcfF\x95\x96\x8fw\xd6}\xffw\xff\x15\x80\xa2u\xb5^\xed\xf3\xfeuq\xe9\xccMO>\xf8\xd5\x8c\xca\xe2\x02\x10\x8e\xe3\x7f\x9d\xfc\x84\x13\x1f_\x228\x1aap$\x86\x10\x10\xc8M\xc7\x9f\x93\xc1\xb2\xf2Y\xac^:\x97\x929\xf9\x00|\xdc\xd9\xcf\xe3O\xbf\x15>\xdd\xd6[O8\xfa\xcd\xce\x86\xda\xd8\x17\x02X\xbc\xbd\xd6\x13\x0e\xa7\xbd\xbfm}U\xc5O\xee\xdf\xe0I\xf7X\xb4~\x1a\xe4\xb97\x1ai<\xdb\x8d4$\x86\x94\x08!\x90R \x10)/Zk\xb4\xd6,\xaf(d\xc7-WS:'\x9fX<\xc1S\xcf\xbe\x1d\x7f\xe5\xd0\xe9s>_\xec\xba\xe6}\xb5\xf1\xa9\xf1\x8c\xe9\xe1\xb5\xc8,>\xf6\xea\xb6\x1b\xabV\xee|hS\x9ae\x1a\xbc\xdep\x96'\x9e{\x9bK\x03!L\xd3\xc0\x9ab\xa6a`\x9a\x06\x86)1\x0c\x89i\x18HCr)\x18\xe2\xad\xe3\xedd\xf9\xd2\xa8,\x9e\xc1\x8d+J\x8d\xbe\xa1p\xde\xc9\x96\x81k\x86[\x0e\xee\x85'>\x1f@\xf1\x16\xef\xa3\xab\xae.\xba\xf77\x8f\xdc\x92n\x18\x92\xdf\xef=\xca\x9e\xfd\x1fa\x18\x06\xa6ibYnp\xcb\xf9m\x9a\xc6\xa4I\x03\xc3e\xc70$\x00\x8d\xe7{\x08E\xe2\x5c[1\x9b5\xcb\x8a\xcd3\xed}sC\xd9\xfb\xe3C-\x07\xdf\xfbL\x0a\x0a\xef\xd8\xe9\xcf\xd4V\xcb\x9b\xbf\xfdv\xfe\xbc\x99\xb9\xbcT\x7f\x92\xe7\xde\xf8\x10\xd32\xa7\xbc\xaddi\xd9\x0c\x96\x94\x14PQ\x14\xa0 \xcfGnV:\xe3\xf1\x04}\x83a\x9aZ\xfa\xa8?\xdeA(\x1a\xc7V\x0a\xdbV$l\xc5\xdd\x9b\x97r\xe7\xfa\x0a.^\x1ee\xeb\xc3\xbb\x07G\x89\x97w\xbf\xf6\xc3\xe04\x06\xfc\xa57\xed\xba\xe7\xf6\xe5\xd7\xdf\xbcz\xa1\xaf\x07\xc3\x90\xa4yL\xf2\xb2\xbc,\x9a\x9f\xcf\xaa\xaa\xd9\x9cj\xef'\x16\xb7\x1d\x9d\x00\xa7\xda\xfb\xa8.\x9bIIa\x1e\x13\xb6\xf2\x9c8\xdd]0\xd4r\xf0M\x00\x09\xb0x]m\xa6e\xca\xbb\xee\xb9m\x85\xa1\xd1<\xbd\xef8R\xc8i\x14;@L\x84\x10\x08\xe1\x10\x17O(\xe2\x09\x85\x94\x12\xe9\x0a3?\xcb\xcb\xf6\xf5\x0b\xb1,\x13\x8febY&\x864\xd8\xbd\xff#4p\xf7\x96k\x0c\xd34\xeeZ\xbc\xae6\x13\xc0\x04\x88\xf8\xbc[\xd6^],\xf3\xb3\xd39\xd5\xd6K\xcb'A<\x1es\x8a\xe8\xdc4\x98\x06\x09[q\xfc|?\xef5\xf7\xd2;\x14\xc1\x10\x82\x0d\xcb\xe7s{Mi\x0a\x5c\xe5|?\x1e\xcb$!m\x5c\xactt\x0fs\xaes\x80\xca\xa2\x00k\xaf-\x91\x07\x8f\xb6n\x01^\x96\x8e\xf6\xf5\x8e\x9b\xae[\xe0C\xc0\x91\x8f\xba\x1c1\x19N\xde\x0d7\xf7I0\xbfx\xe9\x04\xaf\xfd\xf3\x02\x03\xa3\xe3\xa4y,,\x8f\xc5\xd9\xaeA\xb4\xd6)1KI\x8a\xb1\xa9,\xbe\xdf\xdc\x0d\xc0\xc6\x95\xe5>!\xc5\x8e\x14\x03h\x96U\x95\xcd\x04\xa0\xf5\x93\xe045\x9b\xc6d*,\xd3$4ncY\xa6\x0bN\x22\xa5`\xcd\x92\xc2T\x0f\xd0Zs\xb1?\x8ce\x19\xaek\x8d\xd6\xa0\x94\xe6\xc2\xa5!\x00*K\x0a\xd0Z/\x9b\x04 \xf0\x17\xe4g\x02N_\x97n\xf0\xa9\xe6\x00\x91\x93=\xc0\xb5\x9a\xc5W\xb1\xaarf*\xb8\xad\x14\xef\x9e\xee\xc32\x0d\xd0NsRJc\x18\x92\x91\xd08\x08\xc1\x8c\xdc\x0c4\xda?\x95\x01\xf2\xdc\xc12\x16\x89\xbb\xa2\x12\x93@\xa4\x93\x12\xc3m<\xc9\xd2\x5c\xbbt\x16k\x16O\x09n\xdb\x1ch\xec\xa6g0\x8ai\x18N`%1l\xc7O$\xe6\x0c\xc8\x9c\xcc\xb4T\xfd\xcbd7\x18\x1a\x8d\xba\x0f\xbdH!\xa6\x9b\x94\x18RLc\xa3\xba8\x9f\xd5\x8b\x02(\xa5PJa\xdb6u\x1f^\xe2\xe3\xee1\xb7;NoLR\x0a\xb23\xbd\x00\x8c\x84\xc7S-H\x02\x08M\xb0\x7f(\x0c@ \xcf\x87\x108\x8a\x96\x8eI)\x10.+I\x87\xd7/\xf4\xa7\x82+\xa58\xd62DW\x7f\xd4e\xca\x01\x9cdR\xb8/\x92\x9f\xed\x00\x08\x0eG\x10\x10\x9c\x04 \xe4\x89\xe6\x0b\x97\x01X8/\xe0\xd4\xb9\x10\x08@ \xdc\xf2\x22UfR\x08\xb2\xd3\x8d\x14\xf5J)\xda\xfa\x22)\x86\xa4\x10\x08\x91\xbc:{\x11\x82\x92\xd9y\x00\x9c\xeb\xecGHy\x22\xa5\x01\xad\xf5\x9eC\xc7\xdb\xd6\xdd\xb1\xbe\xd2W\xb3t.\x07\x8e\xb6M\xf6h\x91\xbcL\x19\x9cB\xf0\x87\xfa\x0e\xd2<\x16\x1e\x8f\x85\xc7c\xa24\xa9\x06\xe5\xe2\x9f\xb2\x9c\xdd\xcb\x17\xcd\x02\xe0\xadc\xad\x11e\xab=)\x00\xbeH\xac\xeeH\xd3\x055<\x16\xa3\xb2\xa4\x80\x05\xf3\xfct\xf5\x8e\x90\x14h\xf2M\xd1\xc9\xb2\xd2\xecX;'5\x92\x01^>\xd6\x8fR\xcaa$\xb9\x07\x8dv\x9d\x14\xcd\xcaa\xc1\x9c|FC\xe3\xbc\xf3~\xab\xf2Ebu\xa9\x1447\xd4\x86\x12\x09\xb5\xf7/uM\xb6\x00\xee\xbdu\x19B\x08\xd7\x99S\xc7\xc9{\xa54\xcaVX\x06X\x06\x98\xd2\xb1\xf8D\x82\x89\x84M\xc2V([9\xffS\x1a\xad\x1c\xe0w\xad\xaf\x00\x01\x7f\xfb\xc7I\xdb\xb6\xd5\xde\xe6\x86\xda\xd0d\x15\x00\xf1\x84\xf5\xd8\xee\xd7>\x18\xee\xee\x1fc\xd1|?\xdf\xd8X\xe5\x04WN\x8e\xed\xe4\xd5\x9dpS\x05\xa8\x94\x22>1\xc1\xc4\x84M\x22a\x93\xb0ml\xdbN=\xdbZSFia.}\xc1\x10\x7f\xdawl8\x16\xb7\x1eK\xc6MM\xc3\xd1\xf6\xfahN\xd9\x06\xdd\xd13\x5c\xb3\xb9\xa6\xdc\xaa,\x0a\x10\x8eM\xd0\xde=\xe4(ZH\xa7\x22\x84\x93\xd1kJs\xb1\xb5&a;\xa0>h\x1b&a+\x07\x80\xcb\xc4D\xc2\xe6\x86%\x85l]]J\xc2V\xfc`W}\xa4\xad\xab\xff\xa9\xae\x03\x8f\x1e\xfa\x0f\x89%\x97\x16\xa5\xb7\xfe\xea\xf5\xed\x9b\xaa7\xfd\xf4\xbb\x1b\xd2\x84\x10\x1cj\xec`\xef\xa1sH)\xdd\xe9\x96\xfc\x18q\x9b\x93[fZ\x83\xd2\x0e\xfd\x097\x05\xb7\xad.\xe1\x86%\x85h`\xe7\xf3\x0d\xe3/\xd65\xd5\xb7\xbd\xf9\xe86\x10\xfa3\x0c8\xeb\x09fW\xdf\xf0\xea\xc9\xf3\x03[\x07F\xa2\x81UK\xe7\x19\x0b\xe6\xfa\xa9.+ 8\x1a\xa5o(\xe2@v\xb7'\xf3<\xf5\xe3#a\xdb,(\xcc\xe5[\x1b+\xa8*\x0e0>a\xf3\xcb\x17\x0e\xc7_\xack:\x93\x96\x16\xd9\xdc\x7fv\xbd=\xbd>>g\xcdY\xf5H\xba\x95\x1fx\xa9\xba|\xce\xc6\xa7\x1e\xba\xd9W\xea~\xe5^\xbc<\xca\xa9\xf6~Z\xbb\x87\x18\x0bO0\x16\x8b#\x85 '\xd3K\x8e/\x8d\xb2\xc2\x5c\xaa\x8a\xfd\xcc\x0e8s\xa5\xe3\xd20?\xda\xf5\xf7hS\xf3\x85w{\x8f\xbdp_t\xb0-\x08D\xbf\x10\x00\xe0\x03\xb2\x0b\xd7~\xefAov\xe0\x91;7,\xf3~\xe7k+\xcc\xf9W\xe5^\xd1Q\xea\xd3\xcb\xa3<\xffFc\xe2\xe5\x03\x1f\x8eG\x83]\xcft\x1f\xfd\xe3n`\xcc\xb5!@}\x11\x804 \x0b\xc8J/(\x9d\xed\xaf\xdc\xf6\x80\x95\xe1\xdfVU:Kl^S\x99~mE\xa1\x98\x91\xe7#'\xc3\x0b\x02FC\xe3\x0c\x8cDh:\xdf\xa3\xeb\x0e7\xc7\xce\xb4\xf6\xe8\xd8XO}\xf0\xd4\xab\x7f\x1e\x1f\xee\xe9u\x03\x87\x80A |%\x0c\x80S\xa2\x19@6\x90aY\xbe\xac\xec\xf2\x8d+}\x05\x0b6Z\xe9\xd9\xd5`\xe4h!}\x8e\x13\x15E\xdb\xa3\xf1\xf0\xd0\x99H\xdf\xf9wF\xdb\xdeiJ$b!\x1c\xbaC\xc0\xb0\x0b\xe23\xe7\xc5+=\x9c\x1a\x80\x05x]v\xbc8]\xd4r\x81*\xc0\x06\xe2\xae\xc5\x80q\xf7\xfe\x8a\x0e\xa9_\xda\xfa7=\x87\xb9\xea\xf9\xa4\xbb\x03\x00\x00\x00\x00IEND\xaeB`\x82"
13 | qt_resource_name = "\x00\x09\x06\xc7\x98g\x00a\x00b\x00o\x00u\x00t\x00.\x00p\x00n\x00g\x00\x08\x0c\x07XG\x00q\x00u\x00i\x00t\x00.\x00p\x00n\x00g\x00\x0b\x0e\x9c\xba\xe7\x00s\x00h\x00o\x00w\x00g\x00p\x00l\x00.\x00p\x00n\x00g"
14 | qt_resource_struct = "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x06\x11\x00\x00\x00.\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xd2"
15 | def qInitResources():
16 | QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
17 |
18 | def qCleanupResources():
19 | QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
20 |
21 | qInitResources()
22 |
--------------------------------------------------------------------------------
/combine_bits/icons/qrc_combine3.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Resource object code
4 | #
5 | # Created: Sun Jan 19 19:27:11 2014
6 | # by: The Resource Compiler for PySide (Qt v4.8.4)
7 | #
8 | # WARNING! All changes made in this file will be lost!
9 |
10 | from PySide import QtCore
11 |
12 | qt_resource_data = b"\x00\x00\x06\x0d\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x05\xc4IDATX\x85\xb5\x97mlTU\x1a\xc7\x7f\xe7\x9c;\xf7\xce\x0bt\xa63#X\x05\xbbU\xa4\x15\x8a\x8a\x88\x15\x091~\xb0\x1f\xd8(\x91\x05\x85\x98]M\x13\x13\x93\xddu\xd5DT\x08\x1b7\xbeG\xfd\xe4KL\xd4\xfaR\x8bE\xa0\x84\xad\xa8@DQ\x17HX\x0dE\x0d\x85.\x985\xb4E:E\xc4y\xe9\xcc\xdc{\x8f\x1f\xa63t\xect:\xd6\xf8$7\xb9\xe7\xdcs\xcf\xf9\x9d\xff\xf3?\xe7\xdc+\x00\x22\x8b\xee\xbe\xd0\x12lv\x5cg!Z+~\x8f\x10\xc2QR\x1dHkV\x0c\xed{\xb9/_m\x00\x98R\xbc\xfd\xe4\x83-M\xcd\x0bg\x0a\xad\xdd\xc2;\xa1P\x88d2I&\x93\x01\xc0\xe7\xf3\x11\x0a\x85&5\xbe\xe3\xb8\xaa\xfd\xfd/\x9b\x1ez\xba\xf5m\xe0\x86\x22\x00\xd7\xb1\x97\xacl\xbeBtm\xdbZ\x18\x0c`\xfe\xfc\xf9\xf4\xf6\xf6\x12\x8f\xc7\x01\x986m\x1a\xcd\xcd\xcd\x93\x02PJ\xb2\xb2\xf9\x0a\xb1\xe6\x09{\xc9\xe8z\x03\x00\xadU\xe7\x8e\xfd,\xbf\xe9f\x94\x92\xe7\x1e\x1a\x06\xf5\xf5\xf5\xb8nN\x15)%\x93\x0d\xdbv\xe8\xdc\xb1\x9f_\xa6\xd8\xc8\xdfl\xd8\xf9\x0d\x8f\xbc\xb0\x15\x8d\x9e\xf4 \xe5B \x98={\xf6\x98\xfa\x02@\xb8\xe6\x0fD\x9c\xc9\xe5\xb7\xd2\x08\xd7\x84\x80/J\x03H)QJ\x92\x89\xff\xc8\xe9\xd8\x10\xee\x04BH\x01\xe1h\x04sJ\xb0b\x80R),\x00()PR24t\x9a\x9e\xad\x0f`z\xca\xaf\xc6L\xd6\xa1a\xf9\xb3\xcc\xa8\xaa\xae\x18@I1>@^\x01\xedjL\x8fb\xf6\xb2g\xc8\xdaN\xc9\x8e<\x86\xe2\xe8\xb6\x07\xd0\xae.2\xedDQ^\x01%\x0b\x9d9\x8e\xc3\xe1\xce\xfb\xcbv\xe68N\xe1\xbdJ\xa3T\xdbs\x0a\x88\x5c\x0a\x00\xb2\xd9l\xc5\x9d\x1e;\xdcST\x96B0\xbdf\x1aS\xab#c\xdaJQ&\x05\xa3\x15\xf85\x00\xdfn\x7f\xa8\xa8<\x9c\xb1\x99\xbb\xe29B\xd1\xf3\xc6\xb4-\xaf\x80<\x07`\xdbv\xc5\x00u\x7f|\xaap\x9f\xf7\x86\xeb\x94\xf6FY\x0fH%\x90\x93P\xe0X\xd7\x9a\xa2ra\xd7,\x05\xa0\xca\xad\x02!'\xe5\x81\xf1\xd4R%f+E\x05\xab@ \x18\x1e\xce\xa0J\xd0\x8e\x0e\xc7\xd1H!\xc6\x85-\x95\x82\x09< PJ2\xf3\xa2\xf3\xb9\xf1\x9ew'<\x13\xa4\x10\xdc\xd6\xdcXP\xa0\xfbP7]\xef\xfd\x9b\x81\x81\x01\x16U;\xd0s\x10)%\x96ea\xdb6\xa9T\x8a\xfe\xffM\xa5f\x8a\xcb\xf7%\x01F\x14\x98QW\xcb\x8c\xba\xda1\x03\xee\xdd\xb3\x9f\xff\xbeu\xd7\x98z\xdb\xb69~\xfc8[:7\xb3~\xdd?\x09\x85B\x08!P*\xb7\x93\xbe\xff\xc1vv\xed\xda\xc5\xd4\x8b\xaapl\x1b\xed|G\xc3\xaa\x95wvtlz\xa3\x08@\x8d\xda\x07\xc6\x8bl6\xcb\xde}\xff\xa1c\xe3;\x04\x02\x01jkk\x11\x08R\xc3)\x1e\xfd\xd7c\x04\x02\x81\xc2\x06%\xa5d\xe3\xa6\x0e:;\xb7\x10\x89D\x01M_\x7f\x1f\x01\x7f\x80\x94\xad\x9foii\xd9\xd2\xda\xda\xfa\xd3\x18\x05\xca\x85m\xdb\x5c\xb3\xb0\x09\xaf\xe5\xa5\xad\xfd-\xfe\xb4|%\xf3\x1a\xe7\x019\xf7\x9f={\x16\x00\xcb\xb20M\x93U\xb7\xaef\xd5\xad\xab\x19\x18\x18\xe0\xa5\x97_D\x08\xc1\xc5u\x970\x18\x1b\xe4\xd4\xe0\xc9\x15\xc0\xeb\xa3\x0e\xa3\xf2\x00R\x09\x12\xa94\x96G1g\xce\x5c\x1e~p-\xed\xedm\x5c\xbd`!\xb7\xdc\xb2\x9cx;\x19;\xca=\xf7\xdf\xcb\xfa\xb5\xeb8\xd1\xd7G[\xfb\x06\xd2\xa1F\xbc\x97\xdfA\xf6\x8bWPJ\xe2\xf5zq\x1c\x07)%>\x9f\x0fG\xbb\xe1\x22\x80J<0^\xf8\xa67`WMg\xed#\x8f\xe3\xad\x99\x8bw\xcej\x02\xca\xccM\xcc\xf4\x03\x02\xbf\xdfW\xd83\xaa\xaa\xaa\xd0\xae\xeb\xcb\x03\x84\x90\xc2Ak\xe51\x14\xae\xae\xfc\x9bP;6v\x22\x96\x9b\x00\x10l\x5c\x96\xab\x1f>\x83\x06\x844 \x9b!\x18\xacB\x08\x89R\x0a!\x04RJ\x0c\xa5\xe2y\x00\xbf)\xc5\x97\xdd\x07\xbb\x17\x5c\xb5\xe0J)U\xe5\xff%\xa9\xb3\x83\x1c\xda\xddJ\xd3\xa2\xc5c\x9f%\x92|\xf5U7\xca\xe3!\x1c\x8e\x90L&1\x0c\x03\xa5\x14Zk\xa4RCy\x00{\xf0\xd8\xde5\x9fk\xfd\xc2\xc7\x1f}r\x19ZW\x9c\x07Cj\xae\xbf\xd4\xcb?\xfe\xfawl\xdb.\x1cD\x90\xfb\xa4\xbf\xa3\xe5NL\xd3G \x10 \x9b\xcd\xe2\xf1x0M\x93\xfe\x81~\x04\xa2;\x0f\xf0\xc3\xf0\xc9\xaf\x0f\x9f8\xf9\xf52\xc0\x07x*\x96\x000\xeao\x7f/\x16\x8b]`\x9af\xd1OM0\x18$\xe0\xf7f/o\x9c\xa7\x85\x10\xa6\xd7\xeb\x05\xc0\xef\xf7\xd3\xdb{\xe4\xa7T:\xdd\x9e\x07\xc8\x02\xdf\x031@\xfdZ\x80Db\xf8\xc9\xd7^\x7f\xf5\xa9?\xdf\xfe\x97@2\x99,\x18-\x91H\xd0t\xcd\xb5\x9e\xfc\x96lY\x16\x86a\x90\xce\xa4\xe9\xe9\xe9I\x84\x83\xe1.F\x06\xcc\x87\x06\x9c\x11\xa0J/\xfa\xfb\xfa\x8f\x84\xaa\x83K\x8f\x1c=\x12\xf6\x18\x86\x11\x8f\xc79s\xe6\x0c\xa7N\x9dB\xbb\x9a\x9d\xbb>$\x14\xaa&\x12\x8d\x10O\xc4ik{3\xd9w\xe2\xc4\xdf::\xde\xed\x05\xb2\xe5\xcf\xdc\x89\xc3\x07\x04\xa2\xd1h\xe4\xba\xc5\xd7\xae\xf7\xfb\xfd7it\xd5\xe8\x06\xa3}a\x9a\xe6\xff\x07\xfa\xfa\x9f\xde\xbd{\xcf6\xe0G \xf1[\x01\x00\x04`\x02\xd6\x08\x90E.\x8d&\xe7T\xcd\x00\xc3@\x0aH\x8f\x945\xc0\xcf\xfd\x89+6E\xdf\xcd\xa5\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x06\xbd\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x00\x09pHYs\x00\x00\x0d\xd7\x00\x00\x0d\xd7\x01B(\x9bx\x00\x00\x00\x19tEXtSoftware\x00www.inkscape.org\x9b\xee<\x1a\x00\x00\x06:IDATX\x85\x9d\x97Mh\x5c\xd7\x15\xc7\x7f\xf7}\xce\xb7\xad\xb1\x0c\xb2\xc6\xb6\xc6\x91\xd2T\x89\x8d0&\x08'Q\xb30\xa9V\xc1`\x12h\x88M[\xb2\xc8\xa6\xc5\xdb\xe0U7M\x13'\x85f\x95M\x0aI?\xe8\xbetQhC\xb2H\xc6\xa6\xf5\x22\x18\x22\xac\x22\xa9\xb8nb\xeb\xdb\x96Fo\xde\xd7\xbd\xb7\x8b\x99\xf7\xfcf43\x0a=p\x997\xef\xcd\xbb\xe7\xf7?\xe7\xcc\xbd\xe7\x0a\xad5\xff\x87\x09\xc0\x04\x1c\xc0\xea\x5c'\xa6\x01\x09D\x9d\xa1:\xf7\xfa\x9a\x05\xf0\xfa\x95\xd7~\x19E\xd1\xb5\xef\xe4Y\x08\x0c\xc3\xc0u]\xf2\xf9\x02\xb9\x5c\x0e\xc7\xb61\x0c\x03\x8dFJE\x18\x86\xb8\xae\xfb\xc1\xf5w\xde\xbb\x06\x04\x1d\xa0\xc1\x00Q\x14]\xfb\xf1\x95\x9f\xb2\xb8\xb8H\xab\xd5\x22\x8a\x22\x82 \x0cC\xa2(JG\x1c\xc7H)\xb1,\x8bb\xa1\xc0\xd5\xabW\x19\x1f?\x86\x10\xa2\x13\x14\xd0Z\xe3y\x1e\xef\xfd\xfa\xfaU\xe0\xed\x8e\xf3\x81Q\xb0\xd2\x0b\xcb\xc24M,\xcbBJ\x99^+\xa5PJ\x91\xa4\xca0\x0c\x1c\xc7\xa1\x5c\xae\x90\xcf\xe70M\x0b!D\x07\xa2\x0dP*\x95\x18\x19\xa9\x02\x94\x80f\x87n8\x80\xe38X\x96\x85m\xdbH)\xd1Zw\x8d\xc4\xb4\xd68\x8eC\xb1X\xc4\xb2\xda\xa17\x0c#\x13\x01\x05@\xa9T\x02\xc8\xd1]\x1f\x83\x01\x5c\xd7\xc5q\x1c\xa4\x94\xd8\xb6\x0d\x90*\xd7Z\xa7*\xb5\xd6\xd8\xb6\x8d\xe38\x18\x86\x91Q/:3\x19\x80\xc6i\xcfaf\x1e\x0c\x07p\x1c'\x05H\x14'\x8e\x81\xd4Y\x02`w\x0a/1! \x09T\x9bG$4C-\xfd\x81\x10\x02\xd34q\x1c\x07\xd7uS'\xb6m\xe3\xban\x9a\x1e\xcb\xb2\xd2zI\xe0\xfa\x89\x14\x8f\xef\x89\xbf<\xfdt\xe1\x8fB\x9c\x1b\x1a\x81$\x94\x86a`\x9a&\xae\xeb\xa6\xf7\x12\xe5B\x08\x94R\x19\x80\xc1\x02\x13\xb6\x85\xf7\xdf/6\xef\xdc\xf9\xb3\x80i\xa084\x02\xd9\x9c&\xdf\x13\xc5Y\xf5\x8f\x01\x06\x87\x16`\xfd\x8b/J\xb7\xdfz\xeb\xafS\xaf\xbc2\x93?v\xaco1v\x01d\x1d\xf7\x02%\xd5n\x9af\xa6\xf2aP\x8d\x09\xcf\xe3\xb3\xf9\xf9O\xbe\xf7\xea\xab\xd3\x93W\xaeX\x83h\xad\xae\x972\x10\xbd@\xae\xeb255\xc5\xde\xde\x1e\xdb\xdb\xdb\x99\xfc\xef\xb7pk\x8b\xfc\xaf\xae\xf3\xe4\xcb/\xd7O\xbc\xf4\x92\xa9vwA)\xe3OB<\xea\xf9\xe97\xfb\x00\xfa\xa9Oro\xdb6G\x8f\x1e\xe5\xc8\x91#4\x9b\xc9\xfa\x92}\x1f\xfc\xf5\x0d>\x9b\xfb\x01\xd3ss\x8c\x9f?oz7oR8w\x8e\xb9w\xdf\xb51\x0c\x1b\xadAkt\x1c\xf3\xb77\xde(\x1e\x18\x81\xec\xdf\xef\xc6\x8d\x1bT*\x15fggq]w\x9fr\x7fm\x8dO\x9f\x7f\x81\xe333\x1c;}\x1a\xaf\xd1@K\xc9\xce\xe7\x9f#\xccv\x09h\xa5 \x8e)_\xb808\x05\xbd\xea\x93q\xf8\xf0aFGG\xc9\xe5r\xdc\xbd{\xb7\xcby\xeb\xfe}>}a\x8e\xda\xf44GO\x9d\xa2\xd9h\x80\x94`Ym\xe7I\xcd(\x85\x96\x12\xe5y\xfb\x01z\xa3\xd0\x9b\x8eJ\xa5\xc2\xd9\xb3gYYY\xe9\xd4AG\xf9\xea*\x7f?\xff\x1c\xb5\xc9I\x8e\x8c\x8d\xb1\xf7\xe5\x97\xa0\x14\xc2\xb6\xc14\x11\xa6\x89\x8e\x22\xb4R\x18\xae;\x1c`\x90z\xdb\xb6\x99\x99\x99ass\x93\x85\x85\x05j\xb5\xdac\xf5\x0f\x1e\x10nm\xe1NL\x10,-\x11\xad\xae\x22,\x0b\x1d\x04(\xcfC6\x9b\xe8 h\x0b\xb4,\x8cB\x81\xfc\xe9\xd3m\x7f\x83\x22\xd0\xab~zz\x9a8\x8ei4\x1a\xe9j\x99\xd8\xc8\xcc\x0c\xb3\xbf\xfb\x84\xc5\xaf\xbe\xa2\xf5\xe8\x11f\xb9L\xb0\xb2Bx\xef\x1e\xf1\xe6f\xea\x1c@\xc71rg\x87xc\xa3?@o\x1a\x84\x10\x94J%\x84\x10\xdc\xbau\x0b\xcb\xb2\xc8\xe5r\xe9:\x90\xa4\xa1v\xf1\x22g?\xfe\x98\x7f-/\xe3G\x11\xf93g\xd2\xc2\xc30\xf6\x0d\x1dE\xfdS\x90MC\xf2\xe9y\x1e\x0b\x0b\x0bh\xad\xc9\xe7\xf3X\x96\x95>K\xcc\xf7}\x0e\xbd\xf8\x22O}\xf8!w\xde|\x93\xc9\xb11\x8ag\xce\xd0\xfa\xfak\x8a\xcf>\x8bp\x1c0\x0cD\x07@\xf9>z\x10\xc0\xa0\xbfb\xd2\xa0$\xf7\x83 \xc0\xcd\xe5\x10(\xe2X\x12\xc7\x11\xa5\xe7\x9f\xe3\xf8\x07\xbfa\xf1g?g*\x0c\xa9<\xf3\x0cRJn7\x1a\x91\x0cC\xbb\xc7\xd5\xc3\x81\x00\xfd\x8a1\x0bb\x9a&KK\xcb\xd4\xebu\xaa\xd5j'\x15\xed=\xb0<;\xcb\xbd\xd7~\x84\xf8\xfd\x1f\xfc'\xa2(W\x9a\x98@i\x1d^\x86\xf3\x80\x0f\xb4\x921p;\xebu\x9a\xb4hI3\xa2\x94\xc2ky\xec\xee\xee\x10\xc7Q{\x93\xb2\x93\xe7.\xc1\xe4)\xd6\xe7\xe6~\xb1\xbc\xbe\xeem--%\xcd\xc2.\xb0\xd7\x81\x08\x80\xbd\xa1\x00\xd9\x0d(\xe9\x0b\x1c\xc7!\x0cC\x84\x80b\xa1@\xa9TJ\xbb\xa6\xb4S\xce\xe70M\x93\xe2\xe5\xcb\x8d\xff\xd4j?\xf9\xef\xf6\xb6G\x1ck\xe0\x11\xb0\x03l\x01\xdbZ\xeb\xa8o\x0a\xb2\x00\x89r!\x04\x0f\x1fn\xa3\xd0\xd4'\xea\xd4\xeb\x13T\xabU\x5c\xd7%\x96q\xdax\x0b\x03\xf2\xf9\x1c\x86\x10\x5c\xbat\xe9\xc1?O\x9c\xb8\xfd\xcd\xc5\x8b\x17\xdc \xf8!\xb0\xa6{\x0e\x22C\x8b\xd00\x0c\xf2\xf9\xd5j\xd5\x9f\x9f\x9f\x0f\xf1\xfd\x7f\x007_\xef\xe3+\x03\xa0\xbb\x94\x97\xcbe\xd6\xd6V\xf9\xf6\xfe\x06\xf5\xfa\x04\xe3\xb5q\x0a\x85\x02\xb6\xed \x0cA\x14G\xc42\xda7\xa1\xd2\x1a)%\xad\x96\x0f\xed<\x1f|2\x82v\x8d\x98\xa6\xc9\xa1C\x87h6wY\xf9\xf72\xb5\xe3c<15A\xce\xcda\xd96Zi\xa2($\x8a\xb2\x1d_\xf7\xf4Zk\xa4\x92\xf8\xad\x16@H;9\x07\x03\x00\x8c\x8c\x1c\xe6\xfe\xea\xb7\x94\xcb%\x9e\xfa\xfe\x938\xae\x83aZ\xc4R\x12+\xd5v\xdaY|\xb2\x9d@\xd7\xecZ\xa3\x94\xa2\xe5\xa7\x00C\x0f\x9f)\xc0\xfa\xc6*J\xc7\x8c\x8eV;E\x07q\x14!\xe3\xb8\xed\xf0\xa0\x06\xf0\xb1\x7f\x94R\x04\xed\xf5?9\x9c\x0e\x07\xb0m\xfb\xed\x8f~\xfb\xd1\xb5~\xbb\xe0A\xce\x93f\xa5\x1bBc\xdb\xf6;\x1c\x10~\x00\xd1\xe7x\xde\xdb\xec\x7f7\xe9\xdd\xa63c\xa8\xfd\x0f\x86\xcb\x8d\xe7c\x5c\x85\x97\x00\x00\x00\x00IEND\xaeB`\x82\x00\x00\x08\xb7\x89PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\x00\x00 \x00\x00\x00 \x08\x06\x00\x00\x00szz\xf4\x00\x00\x00\x04sBIT\x08\x08\x08\x08|\x08d\x88\x00\x00\x08nIDATX\x85\xc5\x97{pU\xd5\x15\xc6\x7f{\x9fsnnn\xde\xb9\x97 \x84G^\x04\x12\x02\x11\x05\x05\x22\x05D\x0a\xa2(\xd6\xe2L\xa7u\xa8v\xac\xa33:cg\xb4\xd3\x87m\x1c+}M\xffh\xcb\xd8V\x1d)v\xaaE\xc6\xe7\x0c\xa1\xa9\xa0\x11Z\x01\x8dA\x1e\x01\xcc\x83$JBBr\xf3\xbc\xaf\xdc\xdc\xb3w\xff8\xe7\xde$\xd5\x19i\xa73\xee\x995\xe7\xdc9w\xaf\xf5\x9do}k\xad\xb3\xe1K^\xe2J\xff\xb8n]\xad\xd9\x91a\xad\x11\x88\xed\x02\xb1FC\x00\xc8q\x1f\x8f\x08\x18\x10\xe8#6z_qx\xe2HCCm\xe2\xff\x02\xa0h[m\xae\x18O\xfb1\x82\xfb\xca\xe6\xcd\xe0\xc6\x15\xa5Y+\xaa\xe6\x8a\xab\x02Y\xf8\xb3\xd3\x01\x18\x1c\x8d\xd2\x1b\x1c\xa3\xb1\xf9\xa2>\xf4A\xfbXk\xe7e\xd0<\xab\xd3\xc6\x7f\xd6\xf9z\xed\xf0\xff\x0c\xa0h\xf3\xce\x87\xa5!\x9e\xdc\x5c\xb3(\xfd\xfe\xaf\xaf\xb4\xca\xe7\x05\xae\x88\xb3\xb6O\x83<\xf3\xca\xf1\x89\xfd\x87\xcfF\x95\x96\x8fw\xd6}\xffw\xff\x15\x80\xa2u\xb5^\xed\xf3\xfeuq\xe9\xccMO>\xf8\xd5\x8c\xca\xe2\x02\x10\x8e\xe3\x7f\x9d\xfc\x84\x13\x1f_\x228\x1aap$\x86\x10\x10\xc8M\xc7\x9f\x93\xc1\xb2\xf2Y\xac^:\x97\x929\xf9\x00|\xdc\xd9\xcf\xe3O\xbf\x15>\xdd\xd6[O8\xfa\xcd\xce\x86\xda\xd8\x17\x02X\xbc\xbd\xd6\x13\x0e\xa7\xbd\xbfm}U\xc5O\xee\xdf\xe0I\xf7X\xb4~\x1a\xe4\xb97\x1ai<\xdb\x8d4$\x86\x94\x08!\x90R \x10)/Zk\xb4\xd6,\xaf(d\xc7-WS:'\x9fX<\xc1S\xcf\xbe\x1d\x7f\xe5\xd0\xe9s>_\xec\xba\xe6}\xb5\xf1\xa9\xf1\x8c\xe9\xe1\xb5\xc8,>\xf6\xea\xb6\x1b\xabV\xee|hS\x9ae\x1a\xbc\xdep\x96'\x9e{\x9bK\x03!L\xd3\xc0\x9ab\xa6a`\x9a\x06\x86)1\x0c\x89i\x18HCr)\x18\xe2\xad\xe3\xedd\xf9\xd2\xa8,\x9e\xc1\x8d+J\x8d\xbe\xa1p\xde\xc9\x96\x81k\x86[\x0e\xee\x85'>\x1f@\xf1\x16\xef\xa3\xab\xae.\xba\xf77\x8f\xdc\x92n\x18\x92\xdf\xef=\xca\x9e\xfd\x1fa\x18\x06\xa6ibYnp\xcb\xf9m\x9a\xc6\xa4I\x03\xc3e\xc70$\x00\x8d\xe7{\x08E\xe2\x5c[1\x9b5\xcb\x8a\xcd3\xed}sC\xd9\xfb\xe3C-\x07\xdf\xfbL\x0a\x0a\xef\xd8\xe9\xcf\xd4V\xcb\x9b\xbf\xfdv\xfe\xbc\x99\xb9\xbcT\x7f\x92\xe7\xde\xf8\x10\xd32\xa7\xbc\xaddi\xd9\x0c\x96\x94\x14PQ\x14\xa0 \xcfGnV:\xe3\xf1\x04}\x83a\x9aZ\xfa\xa8?\xdeA(\x1a\xc7V\x0a\xdbV$l\xc5\xdd\x9b\x97r\xe7\xfa\x0a.^\x1ee\xeb\xc3\xbb\x07G\x89\x97w\xbf\xf6\xc3\xe04\x06\xfc\xa57\xed\xba\xe7\xf6\xe5\xd7\xdf\xbcz\xa1\xaf\x07\xc3\x90\xa4yL\xf2\xb2\xbc,\x9a\x9f\xcf\xaa\xaa\xd9\x9cj\xef'\x16\xb7\x1d\x9d\x00\xa7\xda\xfb\xa8.\x9bIIa\x1e\x13\xb6\xf2\x9c8\xdd]0\xd4r\xf0M\x00\x09\xb0x]m\xa6e\xca\xbb\xee\xb9m\x85\xa1\xd1<\xbd\xef8R\xc8i\x14;@L\x84\x10\x08\xe1\x10\x17O(\xe2\x09\x85\x94\x12\xe9\x0a3?\xcb\xcb\xf6\xf5\x0b\xb1,\x13\x8febY&\x864\xd8\xbd\xff#4p\xf7\x96k\x0c\xd34\xeeZ\xbc\xae6\x13\xc0\x04\x88\xf8\xbc[\xd6^],\xf3\xb3\xd39\xd5\xd6K\xcb'A<\x1es\x8a\xe8\xdc4\x98\x06\x09[q\xfc|?\xef5\xf7\xd2;\x14\xc1\x10\x82\x0d\xcb\xe7s{Mi\x0a\x5c\xe5|?\x1e\xcb$!m\x5c\xactt\x0fs\xaes\x80\xca\xa2\x00k\xaf-\x91\x07\x8f\xb6n\x01^\x96\x8e\xf6\xf5\x8e\x9b\xae[\xe0C\xc0\x91\x8f\xba\x1c1\x19N\xde\x0d7\xf7I0\xbfx\xe9\x04\xaf\xfd\xf3\x02\x03\xa3\xe3\xa4y,,\x8f\xc5\xd9\xaeA\xb4\xd6)1KI\x8a\xb1\xa9,\xbe\xdf\xdc\x0d\xc0\xc6\x95\xe5>!\xc5\x8e\x14\x03h\x96U\x95\xcd\x04\xa0\xf5\x93\xe045\x9b\xc6d*,\xd3$4ncY\xa6\x0bN\x22\xa5`\xcd\x92\xc2T\x0f\xd0Zs\xb1?\x8ce\x19\xaek\x8d\xd6\xa0\x94\xe6\xc2\xa5!\x00*K\x0a\xd0Z/\x9b\x04 \xf0\x17\xe4g\x02N_\x97n\xf0\xa9\xe6\x00\x91\x93=\xc0\xb5\x9a\xc5W\xb1\xaarf*\xb8\xad\x14\xef\x9e\xee\xc32\x0d\xd0NsRJc\x18\x92\x91\xd08\x08\xc1\x8c\xdc\x0c4\xda?\x95\x01\xf2\xdc\xc12\x16\x89\xbb\xa2\x12\x93@\xa4\x93\x12\xc3m<\xc9\xd2\x5c\xbbt\x16k\x16O\x09n\xdb\x1ch\xec\xa6g0\x8ai\x18N`%1l\xc7O$\xe6\x0c\xc8\x9c\xcc\xb4T\xfd\xcbd7\x18\x1a\x8d\xba\x0f\xbdH!\xa6\x9b\x94\x18RLc\xa3\xba8\x9f\xd5\x8b\x02(\xa5PJa\xdb6u\x1f^\xe2\xe3\xee1\xb7;NoLR\x0a\xb23\xbd\x00\x8c\x84\xc7S-H\x02\x08M\xb0\x7f(\x0c@ \xcf\x87\x108\x8a\x96\x8eI)\x10.+I\x87\xd7/\xf4\xa7\x82+\xa58\xd62DW\x7f\xd4e\xca\x01\x9cdR\xb8/\x92\x9f\xed\x00\x08\x0eG\x10\x10\x9c\x04 \xe4\x89\xe6\x0b\x97\x01X8/\xe0\xd4\xb9\x10\x08@ \xdc\xf2\x22UfR\x08\xb2\xd3\x8d\x14\xf5J)\xda\xfa\x22)\x86\xa4\x10\x08\x91\xbc:{\x11\x82\x92\xd9y\x00\x9c\xeb\xecGHy\x22\xa5\x01\xad\xf5\x9eC\xc7\xdb\xd6\xdd\xb1\xbe\xd2W\xb3t.\x07\x8e\xb6M\xf6h\x91\xbcL\x19\x9cB\xf0\x87\xfa\x0e\xd2<\x16\x1e\x8f\x85\xc7c\xa24\xa9\x06\xe5\xe2\x9f\xb2\x9c\xdd\xcb\x17\xcd\x02\xe0\xadc\xad\x11e\xab=)\x00\xbeH\xac\xeeH\xd3\x055<\x16\xa3\xb2\xa4\x80\x05\xf3\xfct\xf5\x8e\x90\x14h\xf2M\xd1\xc9\xb2\xd2\xecX;'5\x92\x01^>\xd6\x8fR\xcaa$\xb9\x07\x8dv\x9d\x14\xcd\xcaa\xc1\x9c|FC\xe3\xbc\xf3~\xab\xf2Ebu\xa9\x1447\xd4\x86\x12\x09\xb5\xf7/uM\xb6\x00\xee\xbdu\x19B\x08\xd7\x99S\xc7\xc9{\xa54\xcaVX\x06X\x06\x98\xd2\xb1\xf8D\x82\x89\x84M\xc2V([9\xffS\x1a\xad\x1c\xe0w\xad\xaf\x00\x01\x7f\xfb\xc7I\xdb\xb6\xd5\xde\xe6\x86\xda\xd0d\x15\x00\xf1\x84\xf5\xd8\xee\xd7>\x18\xee\xee\x1fc\xd1|?\xdf\xd8X\xe5\x04WN\x8e\xed\xe4\xd5\x9dpS\x05\xa8\x94\x22>1\xc1\xc4\x84M\x22a\x93\xb0ml\xdbN=\xdbZSFia.}\xc1\x10\x7f\xdawl8\x16\xb7\x1eK\xc6MM\xc3\xd1\xf6\xfahN\xd9\x06\xdd\xd13\x5c\xb3\xb9\xa6\xdc\xaa,\x0a\x10\x8eM\xd0\xde=\xe4(ZH\xa7\x22\x84\x93\xd1kJs\xb1\xb5&a;\xa0>h\x1b&a+\x07\x80\xcb\xc4D\xc2\xe6\x86%\x85l]]J\xc2V\xfc`W}\xa4\xad\xab\xff\xa9\xae\x03\x8f\x1e\xfa\x0f\x89%\x97\x16\xa5\xb7\xfe\xea\xf5\xed\x9b\xaa7\xfd\xf4\xbb\x1b\xd2\x84\x10\x1cj\xec`\xef\xa1sH)\xdd\xe9\x96\xfc\x18q\x9b\x93[fZ\x83\xd2\x0e\xfd\x097\x05\xb7\xad.\xe1\x86%\x85h`\xe7\xf3\x0d\xe3/\xd65\xd5\xb7\xbd\xf9\xe86\x10\xfa3\x0c8\xeb\x09fW\xdf\xf0\xea\xc9\xf3\x03[\x07F\xa2\x81UK\xe7\x19\x0b\xe6\xfa\xa9.+ 8\x1a\xa5o(\xe2@v\xb7'\xf3<\xf5\xe3#a\xdb,(\xcc\xe5[\x1b+\xa8*\x0e0>a\xf3\xcb\x17\x0e\xc7_\xack:\x93\x96\x16\xd9\xdc\x7fv\xbd=\xbd>>g\xcdY\xf5H\xba\x95\x1fx\xa9\xba|\xce\xc6\xa7\x1e\xba\xd9W\xea~\xe5^\xbc<\xca\xa9\xf6~Z\xbb\x87\x18\x0bO0\x16\x8b#\x85 '\xd3K\x8e/\x8d\xb2\xc2\x5c\xaa\x8a\xfd\xcc\x0e8s\xa5\xe3\xd20?\xda\xf5\xf7hS\xf3\x85w{\x8f\xbdp_t\xb0-\x08D\xbf\x10\x00\xe0\x03\xb2\x0b\xd7~\xefAov\xe0\x91;7,\xf3~\xe7k+\xcc\xf9W\xe5^\xd1Q\xea\xd3\xcb\xa3<\xffFc\xe2\xe5\x03\x1f\x8eG\x83]\xcft\x1f\xfd\xe3n`\xcc\xb5!@}\x11\x804 \x0b\xc8J/(\x9d\xed\xaf\xdc\xf6\x80\x95\xe1\xdfVU:Kl^S\x99~mE\xa1\x98\x91\xe7#'\xc3\x0b\x02FC\xe3\x0c\x8cDh:\xdf\xa3\xeb\x0e7\xc7\xce\xb4\xf6\xe8\xd8XO}\xf0\xd4\xab\x7f\x1e\x1f\xee\xe9u\x03\x87\x80A |%\x0c\x80S\xa2\x19@6\x90aY\xbe\xac\xec\xf2\x8d+}\x05\x0b6Z\xe9\xd9\xd5`\xe4h!}\x8e\x13\x15E\xdb\xa3\xf1\xf0\xd0\x99H\xdf\xf9wF\xdb\xdeiJ$b!\x1c\xbaC\xc0\xb0\x0b\xe23\xe7\xc5+=\x9c\x1a\x80\x05x]v\xbc8]\xd4r\x81*\xc0\x06\xe2\xae\xc5\x80q\xf7\xfe\x8a\x0e\xa9_\xda\xfa7=\x87\xb9\xea\xf9\xa4\xbb\x03\x00\x00\x00\x00IEND\xaeB`\x82"
13 | qt_resource_name = b"\x00\x09\x06\xc7\x98g\x00a\x00b\x00o\x00u\x00t\x00.\x00p\x00n\x00g\x00\x08\x0c\x07XG\x00q\x00u\x00i\x00t\x00.\x00p\x00n\x00g\x00\x0b\x0e\x9c\xba\xe7\x00s\x00h\x00o\x00w\x00g\x00p\x00l\x00.\x00p\x00n\x00g"
14 | qt_resource_struct = b"\x00\x00\x00\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x06\x11\x00\x00\x00.\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xd2"
15 | def qInitResources():
16 | QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
17 |
18 | def qCleanupResources():
19 | QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
20 |
21 | qInitResources()
22 |
--------------------------------------------------------------------------------
/combine_bits/icons/readme.md:
--------------------------------------------------------------------------------
1 | readme.md for **icons**
2 | ==========================
3 |
4 | The **combine.qrc** is prepared with a plain text editor, such as **kate** or **vim** (not a word processor, such as libre office writer or MS Word). It is a XML file which is easily written following the extant pattern.
5 |
6 | Inspection of the file reveals the replacement of the path to the icon by a much simpler token. Applications refer to icons by that token. For the format, find the token name in the code.
7 |
8 | In a similar way to the file in **qt-designer**, the XML file needs to be converted to a python readable file, with a pyside compiler **pyside-rcc**:
9 |
10 | * **pyside-rcc [options] combine.qrc -o