From f317d757b05bcbd0433c1e6337bf470551da78f4 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Sat, 27 Aug 2011 22:50:32 -0500 Subject: [PATCH] These tests have moved elsewhere --- hand_tests/cropped_pies.py | 132 -------------------------------- hand_tests/double_disconnect.py | 75 ------------------- hand_tests/expanding_buttons.py | 41 ---------- hand_tests/producer_consumer.py | 157 --------------------------------------- hand_tests/qtcontacts.py | 91 ----------------------- 5 files changed, 496 deletions(-) delete mode 100755 hand_tests/cropped_pies.py delete mode 100755 hand_tests/double_disconnect.py delete mode 100755 hand_tests/expanding_buttons.py delete mode 100755 hand_tests/producer_consumer.py delete mode 100644 hand_tests/qtcontacts.py diff --git a/hand_tests/cropped_pies.py b/hand_tests/cropped_pies.py deleted file mode 100755 index 62a1ed7..0000000 --- a/hand_tests/cropped_pies.py +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env python - -from __future__ import with_statement -from __future__ import division - -import sys -import logging - -from PyQt4 import QtCore -from PyQt4 import QtGui - - -_moduleLogger = logging.getLogger(__name__) - - -class QPieDisplay(QtGui.QWidget): - - def __init__(self, parent = None, flags = QtCore.Qt.Window): - QtGui.QWidget.__init__(self, parent, flags) - self._child = None - self._size = QtCore.QSize(128, 128) - self._canvas = QtGui.QPixmap(self._size) - self._mask = QtGui.QBitmap(self._canvas.size()) - self._mask.fill(QtCore.Qt.color0) - self._generate_mask(self._mask) - self._canvas.setMask(self._mask) - - def sizeHint(self): - return self._size - - def showEvent(self, showEvent): - self.setMask(self._mask) - - QtGui.QWidget.showEvent(self, showEvent) - - def paintEvent(self, paintEvent): - painter = QtGui.QPainter(self._canvas) - painter.setRenderHint(QtGui.QPainter.Antialiasing, True) - adjustmentRect = self._canvas.rect().adjusted(0, 0, -1, -1) - - painter.setBrush(self.palette().window()) - painter.setPen(self.palette().mid().color()) - painter.drawRect(self._canvas.rect()) - - background = self.palette().highlight().color() - painter.setPen(QtCore.Qt.NoPen) - painter.setBrush(background) - painter.drawPie(adjustmentRect, 0, 360 * 16) - - dark = self.palette().mid().color() - painter.setPen(QtGui.QPen(dark, 1)) - painter.setBrush(QtCore.Qt.NoBrush) - painter.drawEllipse(adjustmentRect) - - screen = QtGui.QPainter(self) - screen.drawPixmap(QtCore.QPoint(0, 0), self._canvas) - QtGui.QWidget.paintEvent(self, paintEvent) - - def mousePressEvent(self, mouseEvent): - pass - - def mouseReleaseEvent(self, mouseEvent): - if self._child is None: - lastMousePos = mouseEvent.pos() - globalButtonPos = self.mapToGlobal(lastMousePos) - self._child = QPieDisplay(None, QtCore.Qt.SplashScreen) - self._child.move(globalButtonPos) - self._child.show() - else: - self._child.hide() - self._child = None - - def _generate_mask(self, mask): - """ - Specifies on the mask the shape of the pie menu - """ - painter = QtGui.QPainter(mask) - painter.setPen(QtCore.Qt.color1) - painter.setBrush(QtCore.Qt.color1) - painter.drawRect(mask.rect()) - -class Grid(object): - - def __init__(self): - layout = QtGui.QGridLayout() - for i in xrange(3): - for k in xrange(3): - button = QtGui.QPushButton("%s,%s" % (i, k)) - button.setSizePolicy(QtGui.QSizePolicy( - QtGui.QSizePolicy.MinimumExpanding, - QtGui.QSizePolicy.MinimumExpanding, - QtGui.QSizePolicy.PushButton, - )) - self._create_callback(button) - layout.addWidget(button, i, k) - - centralWidget = QtGui.QWidget() - centralWidget.setLayout(layout) - centralWidget.setContentsMargins(0, 0, 0, 0) - - self._window = QtGui.QMainWindow() - self._window.setAttribute(QtCore.Qt.WA_DeleteOnClose, True) - self._window.setWindowTitle("Buttons!") - self._window.setCentralWidget(centralWidget) - self._child = None - - def show(self): - self._window.show() - - def _create_callback(self, button): - button.clicked.connect(lambda: self._on_click(button)) - - def _on_click(self, button): - if self._child is None: - buttonCorner = pos = QtCore.QPoint(0, 0) - globalButtonPos = button.mapToGlobal(pos) - self._child = QPieDisplay(None, QtCore.Qt.SplashScreen) - self._child.move(globalButtonPos) - self._child.show() - else: - self._child.hide() - self._child = None - - -if __name__ == "__main__": - app = QtGui.QApplication([]) - - grid = Grid() - grid.show() - - val = app.exec_() - sys.exit(val) diff --git a/hand_tests/double_disconnect.py b/hand_tests/double_disconnect.py deleted file mode 100755 index 2acd797..0000000 --- a/hand_tests/double_disconnect.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env python - -from __future__ import with_statement -from __future__ import division - -import sys -import logging - -PYSIDE = False -DISCONNECT_ON_DELETE = False - -if PYSIDE: - import PySide.QtCore as QtCore - import PySide.QtGui as QtGui -else: - import PyQt4.QtCore as QtCore - import PyQt4.QtGui as QtGui - - -_moduleLogger = logging.getLogger(__name__) - - -class Signaller(QtCore.QObject): - - if PYSIDE: - s1 = QtCore.Signal() - s2 = QtCore.Signal() - else: - s1 = QtCore.pyqtSignal() - s2 = QtCore.pyqtSignal() - - -class Window(object): - - def __init__(self, s): - self._window = QtGui.QMainWindow() - self._window.setAttribute(QtCore.Qt.WA_DeleteOnClose, True) - self._window.setWindowTitle("Demo!") - if DISCONNECT_ON_DELETE: - self._window.destroyed.connect(self._on_destroyed) - - self._s = s - self._s.s1.connect(self._on_signal) - self._s.s2.connect(self._on_signal) - - def show(self): - self._window.show() - - def _on_signal(self): - print "Signal!" - self._window.setWindowTitle("Signaled!") - - def _on_destroyed(self, obj = None): - print "Main window destroyed" - self._s.s1.disconnect(self._on_signal) - self._s.s2.disconnect(self._on_signal) - - -if __name__ == "__main__": - app = QtGui.QApplication([]) - - s = Signaller() - w = Window(s) - w.show() - - val = app.exec_() - del w - - print "s1" - s.s1.emit() - print "s2" - s.s2.emit() - - print "Exiting" - sys.exit(val) diff --git a/hand_tests/expanding_buttons.py b/hand_tests/expanding_buttons.py deleted file mode 100755 index b800451..0000000 --- a/hand_tests/expanding_buttons.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env python - -from __future__ import with_statement -from __future__ import division - -import sys -import logging - -from PyQt4 import QtCore -from PyQt4 import QtGui - - -_moduleLogger = logging.getLogger(__name__) - - -if __name__ == "__main__": - app = QtGui.QApplication([]) - - layout = QtGui.QGridLayout() - for i in xrange(3): - for k in xrange(3): - button = QtGui.QPushButton("%s,%s" % (i, k)) - button.setSizePolicy(QtGui.QSizePolicy( - QtGui.QSizePolicy.MinimumExpanding, - QtGui.QSizePolicy.MinimumExpanding, - QtGui.QSizePolicy.PushButton, - )) - layout.addWidget(button, i, k) - - centralWidget = QtGui.QWidget() - centralWidget.setLayout(layout) - centralWidget.setContentsMargins(0, 0, 0, 0) - - window = QtGui.QMainWindow() - window.setAttribute(QtCore.Qt.WA_DeleteOnClose, True) - window.setWindowTitle("Buttons!") - window.setCentralWidget(centralWidget) - window.show() - - val = app.exec_() - sys.exit(val) diff --git a/hand_tests/producer_consumer.py b/hand_tests/producer_consumer.py deleted file mode 100755 index 22084ed..0000000 --- a/hand_tests/producer_consumer.py +++ /dev/null @@ -1,157 +0,0 @@ -#!/usr/bin/env python - -from __future__ import with_statement -from __future__ import division - -import functools -import time - - -FORCE_PYQT = False -DECORATE = True - - -try: - if FORCE_PYQT: - raise ImportError() - import PySide.QtCore as _QtCore - QtCore = _QtCore - USES_PYSIDE = True -except ImportError: - import sip - sip.setapi('QString', 2) - sip.setapi('QVariant', 2) - import PyQt4.QtCore as _QtCore - QtCore = _QtCore - USES_PYSIDE = False - - -if USES_PYSIDE: - Signal = QtCore.Signal - Slot = QtCore.Slot - Property = QtCore.Property -else: - Signal = QtCore.pyqtSignal - Slot = QtCore.pyqtSlot - Property = QtCore.pyqtProperty - - -def log_exception(): - - def log_exception_decorator(func): - - @functools.wraps(func) - def wrapper(*args, **kwds): - try: - return func(*args, **kwds) - except Exception: - print "Exception", func.__name__ - raise - - if DECORATE: - return wrapper - else: - return func - - return log_exception_decorator - - -class QThread44(QtCore.QThread): - """ - This is to imitate QThread in Qt 4.4+ for when running on older version - See http://labs.trolltech.com/blogs/2010/06/17/youre-doing-it-wrong - (On Lucid I have Qt 4.7 and this is still an issue) - """ - - def __init__(self, parent = None): - QtCore.QThread.__init__(self, parent) - - def run(self): - self.exec_() - - -class Producer(QtCore.QObject): - - data = Signal(int) - done = Signal() - - def __init__(self): - QtCore.QObject.__init__(self) - - @Slot() - @log_exception() - def process(self): - print "Starting producer" - for i in xrange(10): - self.data.emit(i) - time.sleep(0.1) - self.done.emit() - - -class Consumer(QtCore.QObject): - - def __init__(self): - QtCore.QObject.__init__(self) - - @Slot() - @log_exception() - def process(self): - print "Starting consumer" - - @Slot() - @log_exception() - def print_done(self): - print "Done" - - @Slot(int) - @log_exception() - def print_data(self, i): - print i - - -def run_producer_consumer(): - app = QtCore.QCoreApplication([]) - - producerThread = QThread44() - producer = Producer() - producer.moveToThread(producerThread) - producerThread.started.connect(producer.process) - - consumerThread = QThread44() - consumer = Consumer() - consumer.moveToThread(consumerThread) - consumerThread.started.connect(consumer.process) - - producer.data.connect(consumer.print_data) - producer.done.connect(consumer.print_done) - - @Slot() - @log_exception() - def producer_done(): - print "Shutting down" - producerThread.quit() - consumerThread.quit() - print "Done" - producer.done.connect(producer_done) - - count = [0] - - @Slot() - @log_exception() - def thread_done(): - print "Thread done" - count[0] += 1 - if count[0] == 2: - print "Quitting" - app.exit(0) - print "Done" - producerThread.finished.connect(thread_done) - consumerThread.finished.connect(thread_done) - - producerThread.start() - consumerThread.start() - print "Status %s" % app.exec_() - - -if __name__ == "__main__": - run_producer_consumer() diff --git a/hand_tests/qtcontacts.py b/hand_tests/qtcontacts.py deleted file mode 100644 index ace8436..0000000 --- a/hand_tests/qtcontacts.py +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python - -from __future__ import with_statement -from __future__ import division - -import QtMobility.Contacts as QtContacts - - -class QtContactsAddressBook(object): - - def __init__(self, name, uri): - self._name = name - self._uri = uri - self._manager = QtContacts.QContactManager.fromUri(uri) - self._contacts = None - - @property - def name(self): - return self._name - - @property - def error(self): - return self._manager.error() - - def update_account(self, force = True): - if not force and self._contacts is not None: - return - self._contacts = dict(self._get_contacts()) - - def get_contacts(self): - if self._contacts is None: - self._contacts = dict(self._get_contacts()) - return self._contacts - - def _get_contacts(self): - contacts = self._manager.contacts() - for contact in contacts: - contactId = contact.localId() - contactName = contact.displayLabel() - phoneDetails = contact.details(QtContacts.QContactPhoneNumber().DefinitionName) - phones = [{"phoneType": "Phone", "phoneNumber": phone.value(QtContacts.QContactPhoneNumber().FieldNumber)} for phone in phoneDetails] - contactDetails = phones - if 0 < len(contactDetails): - yield str(contactId), { - "contactId": str(contactId), - "name": contactName, - "numbers": contactDetails, - } - - -class _QtContactsAddressBookFactory(object): - - def __init__(self): - self._availableManagers = {} - - availableMgrs = QtContacts.QContactManager.availableManagers() - availableMgrs.remove("invalid") - for managerName in availableMgrs: - params = {} - managerUri = QtContacts.QContactManager.buildUri(managerName, params) - self._availableManagers[managerName] = managerUri - - def get_addressbooks(self): - for name, uri in self._availableManagers.iteritems(): - book = QtContactsAddressBook(name, uri) - if book.error: - print "Could not load %r due to %r" % (name, book.error) - else: - yield book - - -class _EmptyAddressBookFactory(object): - - def get_addressbooks(self): - if False: - yield None - - -if QtContacts is not None: - QtContactsAddressBookFactory = _QtContactsAddressBookFactory -else: - QtContactsAddressBookFactory = _EmptyAddressBookFactory - print "QtContacts support not available" - - -if __name__ == "__main__": - factory = QtContactsAddressBookFactory() - books = factory.get_addressbooks() - for book in books: - print book.name - print book.get_contacts() -- 1.7.9.5