# Copyright (c) 2009-2010, Cloud Matrix Pty. Ltd. # All rights reserved; available under the terms of the BSD License. """ PySideKick: helpful utilities for working with PySide ====================================================== This package is a rather ad-hoc collection of helpers, utilities and custom widgets for building applications with PySide. So far we have: * PySideKick.Call: helpers for calling functions in a variety of ways, e.g. qCallAfter, qCallInMainThread * PySideKick.Console: a simple interactive console to embed in your application * PySideKick.Hatchet: a tool for hacking frozen PySide apps down to size, by rebuilding PySide with a minimal set of classes """ __ver_major__ = 0 __ver_minor__ = 2 __ver_patch__ = 3 __ver_sub__ = "" __ver_tuple__ = (__ver_major__,__ver_minor__,__ver_patch__,__ver_sub__) __version__ = "%d.%d.%d%s" % __ver_tuple__ import thread from PySide import QtCore, QtGui from PySide.QtCore import Qt # Older versions of PySide don't expose the 'thread' attribute of QObject. # In this case, assume the thread importing this module is the main thread. if hasattr(QtCore.QCoreApplication,"thread"): def qIsMainThread(): app = QtCore.QCoreApplication.instance() if app is None: return False return QtCore.QThread.currentThread() is app.thread() else: _MAIN_THREAD_ID = thread.get_ident() def qIsMainThread(): return thread.get_ident() == _MAIN_THREAD_ID # PySideKick.Call needs to create a singleton object in the main gui thread. # Since this is *usually* the thread that imports this module, loading it here # will provide a small speedup in the common case. import PySideKick.Call