PyQt Sensing Δ 8th of September 2014 Ω 11:37 AM

ΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞ
yourDragonXi~ About PyQt by Python.org
yourDragonXi~ PyQt4
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ Tutorial: Creating GUI Applications in Python with QT
yourDragonXi~ Riverbank PyQt
yourDragonXi~ PyQT Components
yourDragonXi~ Why PyQt ?
yourDragonXi~ Qt and PyQt - An advanced GUI library for Python
yourDragonXi~ Installing sip and PyQt without BlackAdder
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
yourDragonXi~ sense for Ξ
ξ
ξ
«Software Sensing
Θ

Θ
ΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞΞ
































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~ About PyQt by Python.org

»About PyQt by Python.org

About PyQt
ξ a comprehensive set of Python bindings for the Qt cross-platform GUI/XML/SQL C++ framework from Trolltech (Nokia)
ξ provides bindings for Qt 2 and Qt 3
ξ PyQt4, a separate set of bindings, covers the Qt 4 series of releases

ξ implements around 300 classes and over 5,750 functions and methods including:
* a substantial set of GUI widgets
* classes for accessing SQL databases (ODBC, MySQL, PostgreSQL, Oracle)
* QScintilla, Scintilla-based rich text editor widget
* data aware widgets that are automatically populated from a database
* an XML parser
* SVG support
* classes for embedding ActiveX controls on Windows (only in commercial version)

Graphical debugger called eric, written using PyQt
ξ can be used to debug PyQt and ordinary Python console applications
ξ It's now available separately as eric3 from http://www.die-offenbachs.de/eric/index.html

PyQt includes pyuic
ξ generates Python code from GUI designs created with Qt Designer
ξ this makes PyQt very useful as a rapid prototyping tool for applications
ξ that will eventually be (partly or completely) implemented in C++
ξ because the user interface designs can be re-used without modification

PyQt is available for Windows, UNIX/Linux, Mac OS X and the Sharp Zaurus.



select: ~[Σ] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~ PyQt4

»PyQt4



select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~



select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~ Tutorial: Creating GUI Applications in Python with QT

»Tutorial: Creating GUI Applications in Python with QT



select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~ Riverbank PyQt

»Riverbank PyQt



select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~ PyQT Components

»PyQT Components

QtCore
ξ contains the core non-GUI classes, including the event loop and Qt's signal and slot mechanism
ξ includes platform independent abstractions for Unicode, threads, mapped files, shared memory, regular expressions,
ξ and user and application settings.

QtGui
ξ contains the majority of the GUI classes
ξ these include a number of table, tree and list classes based on the model-view-controller design pattern
ξ provided is a sophisticated 2D canvas widget capable of storing thousands of items including ordinary widgets

QtHelp
ξ contains classes for creating and viewing searchable documentation and being able to integrate online help with PyQt applications
ξ is based on the C++ port of the Lucene text search engine

QtNetwork
ξ contains classes for writing UDP and TCP clients and servers
ξ includes classes that implement FTP and HTTP clients and support DNS lookups
ξ network events are integrated with the event loop making it very easy to develop networked application

QtOpenGL
ξ contains classes that enable the use of OpenGL in rendering 3D graphics in PyQt applications

QtScript
ξ contains classes that enable PyQt applications to be scripted using Qt's JavaScript interpreter

QtSql
ξ contains classes that integrate with open-source and proprietary SQL databases
ξ includes editable data models for database tables that can be used with GUI classes
ξ also includes an implementation of SQLite

QtSvg
ξ contains classes for displaying the contents of SVG files
ξ supports the static features of SVG 1.2 Tiny

QtTest
ξ contains functions that enable unit testing of PyQt applications
ξ PyQt does not implement the complete Qt unit test framework
ξ Instead it assumes that the standard Python unit test framework will be used and
ξ implements those functions that simulate a user interacting with a GUI

QtWebKit
ξ implements a web browser engine based on the WebKit open source browser engine used by Apple's Safari
ξ allows the methods and properties of Python objects to be published and appear as JavaScript objects to scripts embedded in HTML pages

QtXml
ξ implements SAX and DOM interfaces to Qt's XML parser

QtXmlPatterns
ξ implements XQuery and XPath support for XML and custom data models

phonon
ξ implements a multimedia framework that enables the use of audio and video content in PyQt applications
ξ On Windows DirectX is used as the backend, on MacOS/X QuickTime is used as the backend, and on Linux GStreamer is used as the backend

QtAssistant
ξ implements a simple interface for integrating Qt Assistant with PyQt applications to provide online help
ξ is itself implemented using QtHelp

QtDesigner
ξ contains classes that allow Qt Designer to be extended using PyQt

QAxContainer
ξ implements access to ActiveX controls and COM objects
ξ is only available in the commercial version of PyQt for Windows

Qt
ξ consolidates the classes contained in all of the modules described above into a single module
ξ this has the advantage that you don't have to worry about which underlying module contains a particular class
ξ it has the disadvantage that it loads the whole of the Qt framework, thereby increasing the memory footprint of an application
ξ whether you use this consolidated module, or the individual component modules is down to personal taste

dbus.mainloop.qt
ξ PyQt does not support Qt's native DBus classes
ξ instead the module enables the Qt event loop to be used with the standard DBus Python bindings
ξ is only available for PyQt for X11

uic
ξ implements support for handling the XML files created by Qt Designer that describe the whole or part of a graphical user interface
ξ includes classes that load an XML file and render it directly, and
ξ classes that generate Python code from an XML file for later execution




select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~ Why PyQt ?

»Why PyQt ?
ξ PyQt brings together the Qt C++ cross-platform application framework and the cross-platform interpreted language Python
ξ Qt is more than a GUI toolkit.
ξ It includes abstractions of network sockets, threads, Unicode, regular expressions, SQL databases, SVG, OpenGL, XML,
ξ a fully functional web browser, a help system, a multimedia framework, as well as a rich collection of GUI widgets

Qt classes
ξ employ a signal/slot mechanism for communicating between objects that is type safe
ξ but loosely coupled making it easy to create re-usable software components.

Qt also includes Qt Designer
ξ a graphical user interface designer
ξ PyQt is able to generate Python code from Qt Designer
ξ It is also possible to add new GUI controls written in Python to Qt Designer

Python
ξ is a simple but powerful object-orientated language
ξ Its simplicity makes it easy to learn, but its power means that large and complex applications can be created
ξ Its interpreted nature means that Python programmers are very productive because there is no edit/compile/link/run development cycle
ξ Much of Python's power comes from its comprehensive set of extension modules providing a wide variety of functions
ξ including HTTP servers, XML parsers, database access, data compression tools and, of course, graphical user interfaces
ξ Extension modules are usually implemented in either Python, C or C++
ξ Using tools such as SIP it is relatively straight forward to create an extension module that encapsulates an existing C or C++ library. Used in this way, Python can then become the glue to create new applications from established libraries.

PyQt combines all the advantages of Qt and Python
ξ a programmer has all the power of Qt, but is able to exploit it with the simplicity of Python



select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~ Qt and PyQt - An advanced GUI library for Python

Tkinter
ξ For a Python programmer, the default GUI choice is Tk, via the Tkinter binding -- and it is easy to see why
ξ Tkinter and the idle IDE are written by Python's creators and come as the default on most Python distributions
ξ the standard Python documentation discusses Tkinter, but no other GUI bindings
ξ Tk and Tkinter are so darn good that there's little reason for programmers to go looking for substitutes
ξ to tempt a Python programmer away from the default, then, a toolkit must offer something extra

PyQt's Advantages
ξ Qt and PyQt are quite fast;
ξ the design of Qt and PyQt is thoroughly object-oriented;
ξ Qt comes with a much larger collection of well-designed widgets than does Tk

PyQt's Disadvantages
ξ Qt has a more restricted license than many toolkits (at least on non-Linux platforms);
ξ it is often tricky to get Qt and PyQt installed correctly;
ξ Qt is a quite large library
ξ users of your PyQt application will need to manage to install Qt and PyQt, which makes distribution difficult
ξ PyQt follows the licensing of Qt closely
ξ it is available under the GPL on UNIX/X11 platforms and the Qt Palmtop Environment environment on the Zaurus,
ξ and a free-as-in-free-beer Windows package for an older version of Qt also exists
ξ commercial licenses for PyQt are available for Windows

Qt's signals/slots
ξ to communicate events and messages between widgets (and among other objects)
ξ is quite different from the callback mechanism used by most toolkits, including Tkinter
ξ with signals/slots, it is much easier to control communications between objects in a flexible and maintainable manner than it is with a fragile callback style
ξ the larger applications get, the more important this advantage of Qt becomes

logger-qt.py
#!/usr/bin/env python
import sys, time
from qt import * # Generally advertised as safe

class Logger(QWidget):
def __init__(self, *args):
QWidget.__init__(self, *args)
self.setCaption("Timestamp logging application")
self.layout = QGridLayout(self, 3, 2, 5, 10) <--- The Logger class begins by creating a layout manager
self.tsdisp = QTextEdit(self)
self.tsdisp.setMinimumSize(250, 300)
self.tsdisp.setTextFormat(Qt.PlainText)
self.tscount = QLabel("", self)
self.tscount.setFont(QFont("Sans", 24))
self.log = QPushButton("&Log Timestamp", self) <--- All Qt widgets work natively with QString objects, not with Python string or Unicode objects.
self.quit = QPushButton("&Quit", self)
self.layout.addMultiCellWidget(self.tsdisp, 0, 2, 0, 0)
self.layout.addWidget(self.tscount, 0, 1)
self.layout.addWidget(self.log, 1, 1)
self.layout.addWidget(self.quit, 2, 1)
self.connect(self.log, SIGNAL("clicked()"), <--- button is connected to the log_timestamp method;
self.log_timestamp)
self.connect(self.quit, SIGNAL("clicked()"), <--- button is connected to the close method of the QWidget class.
self.close)
def log_timestamp(self):
stamp = time.ctime()
self.tsdisp.append(stamp)
self.tscount.setText(str(self.tsdisp.lines()))
if __name__ == "__main__":
app = QApplication(sys.argv)
app.connect(app, SIGNAL('lastWindowClosed()'), app,
SLOT('quit()'))
logger = Logger()
logger.show()
app.setMainWidget(logger)
app.exec_loop()

logger-qt.py enhancement
ξ adding logging to standard output to this application
ξ subclassing the Logger class, or, for the sake of the demonstration, create a simple standalone function:

def logwrite():
print(time.ctime())

if __name__ == "__main__":
app = QApplication(sys.argv)
app.connect(app, SIGNAL('lastWindowClosed()'), app,
SLOT('quit()'))
logger = Logger()
QObject.connect(logger.log, SIGNAL("clicked()"), logwrite) <--- connecting the log QPushButton's clicked() signal to the new function.
logger.show()
app.setMainWidget(logger)
app.exec_loop()

Disconnecting the signal from the slot to prevent the original method to be called:

QObject.disconnect(logger.log, SIGNAL("clicked()"),
logger.log_timestamp)




select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~ Installing sip and PyQt without BlackAdder

»Installing sip and PyQt without BlackAdder
ξ All components that combine to form a PyQt development environment are also freely available.
ξ Python, Qt, Qt Designer, sip, PyQt and editors are all available as open source.
ξ If you use Linux—and particularly if you use a modern and complete distribution like SuSE or Redhat—
ξ everything you need is included on your distribution media, including PyQt.
ξ There are also Debian packages of PyQt available.
ξ Installing these ready-made packages is very easy, but they are not always completely up-to-date !

Building PyQt from source
ξ is necessary if you want to always run the latest version of PyQt
ξ you can also access the PyQt CVS repository (the central place where the most current code is kept — also at http://www.thekompany.com)
ξ compiling PyQt from CVS source entails creating the C++ bindings code from the sip definition files, and
ξ then carrying on as if you had downloaded the source
ξ keep in mind that CVS versions of software are not expected to work!



select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~





select: ~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yourDragonXi ~




~[Σ] ~[Ω] ~[Δ]!































































~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Small & Smart Inc reserves rights to change this document without any notice
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~