Python bindings for the Qt widgets provided by CTK: The Common Toolkit, a set of common support code for medical imaging, surgical navigation, and related purposes.
To build these bindings you will need to have a working copy of Qt (with qmake), SIP and PyQt5 installed and preferably on your path.
This build has been tested on OSX 10.10.4 (Yosemite) with Python 3.4.3, Qt 5.4, SIP 4.16.8 and PyQt5.4.2 using the clang_64 (clang-602.0.53) compiler.
To build run:
$ python configure.py
$ make
This build has been tested on Windows 7 Professional SP1 (64bit) with Python 3.4.2 (32bit), Qt 5.4, SIP 4.16.8 and PyQt5.4.2 using the Microsoft Visual Studio 2010 (x86) compiler.
To build run the following from the Visual Studio Command Prompt (2010):
> python configure.py
> nmake
Please refer to the CTK C++ documentation available here: http://www.commontk.org/docs/html/classes.html
Testing currently consists of running the example code in the tests directory.
- ctkBackTrace: ~ctkBackTrace() should throw().
- ctkBinaryFileDescriptor: commented out until I work out how to install binutils (<bfd.h>).
- ctkCallback: effectively useless until I work out how to SIPify function pointers.
- ctkCorePythonQtDecorators: omitted as is seems somewhat cyclical to allow Python -> C++ -> Python!
- ctkDependencyGraph: need to work out how to pass std::list as function argument.
- ctkException: is there any point in exposing this to Python?
- ctkHighPrecisionTimer: not wrapped as not exported.
- ctkLogger: wrapped but deprecated.
- ctkSingleton: not wrapped as not exported.
- ctkAbstract*.tpp: not wrapped as not exported.
- ctkAbstractQObjectFactory: not included due to missing namespace error 'QAlgorithmsPrivate'
- ctk*EventPlayer & ctk*EventTranslator: not included due to dependency on QtTesting (currently out of scope).
- ctkCheckableComboBox: checkableModelHelper() seems to have no implementation, thus is not wrapped.
- ctkCheckableModelHelper: headerCheckState() and checkState() overloads can't be resolved.
- ctkProxyStyle: not wrapped as QProxyStyle (on which depends) is not wrapped by PyQt5(?).
- ctkDoubleSpinBox: coordinates() returns unsupported type (double const*).
- ctkDoubleSpinBox: coordinatesChanged(double*) takes unsupported type as argument.
- ctkTransferFunction: need to write recipe for qreal[].
- ctkIconEnginePlugin: cannot wrap as QIconEnginePlugin is not wrapped by PyQt5(?).
- ctkRangeWidget: range() ommited until I work out how to wrap double arrays.
- ctkSignalMapper: unresolved symbol issue.
- ctkTransferFunctionItem: unresolved symbol issue with protected color() methods.
- ctkTransferFunctionNativeItem: removed until GL dependency resolved.