<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[135592] trunk/dports/kde</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/135592">135592</a></dd>
<dt>Author</dt> <dd>nicos@macports.org</dd>
<dt>Date</dt> <dd>2015-04-27 09:55:07 -0700 (Mon, 27 Apr 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>py-pykde4: new port (ticket #47125)</pre>

<h3>Added Paths</h3>
<ul>
<li>trunk/dports/kde/py-pykde4/</li>
<li><a href="#trunkdportskdepypykde4Portfile">trunk/dports/kde/py-pykde4/Portfile</a></li>
<li>trunk/dports/kde/py-pykde4/files/</li>
<li><a href="#trunkdportskdepypykde4filesadd_qt_kde_definitionsdiff">trunk/dports/kde/py-pykde4/files/add_qt_kde_definitions.diff</a></li>
<li><a href="#trunkdportskdepypykde4filesfix_kpythonpluginfactory_builddiff">trunk/dports/kde/py-pykde4/files/fix_kpythonpluginfactory_build.diff</a></li>
<li><a href="#trunkdportskdepypykde4fileskubuntu_include_dirsdiff">trunk/dports/kde/py-pykde4/files/kubuntu_include_dirs.diff</a></li>
<li><a href="#trunkdportskdepypykde4fileskubuntu_kpythonpluginfactory_32supportdiff">trunk/dports/kde/py-pykde4/files/kubuntu_kpythonpluginfactory_3.2support.diff</a></li>
<li><a href="#trunkdportskdepypykde4filesmake_pykde4_respect_sip_flagsdiff">trunk/dports/kde/py-pykde4/files/make_pykde4_respect_sip_flags.diff</a></li>
<li><a href="#trunkdportskdepypykde4filesoptional_install_sip_filesdiff">trunk/dports/kde/py-pykde4/files/optional_install_sip_files.diff</a></li>
<li><a href="#trunkdportskdepypykde4filespykde4macportsadaptationsnoDLFCNdiff">trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations-noDLFCN.diff</a></li>
<li><a href="#trunkdportskdepypykde4filespykde4macportsadaptationstoolongfilenamediff">trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations-toolongfilename.diff</a></li>
<li><a href="#trunkdportskdepypykde4filespykde4macportsadaptationsdiff">trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations.diff</a></li>
<li><a href="#trunkdportskdepypykde4filespykde4macportsadaptations2diff">trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations2.diff</a></li>
<li><a href="#trunkdportskdepypykde4filespythonpluginfactory_python3diff">trunk/dports/kde/py-pykde4/files/pythonpluginfactory_python3.diff</a></li>
<li><a href="#trunkdportskdepypykde4filespythonpluginfactory_use_versioned_python_libdiff">trunk/dports/kde/py-pykde4/files/pythonpluginfactory_use_versioned_python_lib.diff</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkdportskdepypykde4Portfile"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/Portfile (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/Portfile                                (rev 0)
+++ trunk/dports/kde/py-pykde4/Portfile        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,158 @@
</span><ins>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
+# $Id$
+
+PortSystem          1.0
+PortGroup           kde4   1.1
+
+name                py-pykde4
+version             4.14.3
+categories          kde kde4 devel
+license             LGPL-2+
+maintainers         gmail.com:rjvbertin openmaintainer
+description         Python bindings for the KDE Development Platform
+long_description    This package contains PyKDE, the Python bindings for the KDE \
+                    libraries, that allow you to write KDE programs using Python instead of \
+                    C++. It contains at least the following modules under the \
+                    PyKDE namespace: \
+                    \
+                     * dnssd \
+                     * kdecore \
+                     * kdeui \
+                     * khtml \
+                     * kio \
+                     * knewstuff \
+                     * kparts \
+                     * kterminal \
+                     * ktexteditor \
+                     * kutils \
+                     * plasma \
+                     * solid \
+                    \
+                    And a few KDE related technologies like: \
+                    \
+                     * akonadi \
+                     * phonon \
+                     * soprano
+platforms           darwin
+homepage            http://www.riverbankcomputing.co.uk/software/pykde/intro
+master_sites        kde:stable/${version}/src/
+use_xz              yes
+distname            pykde4-${version}
+checksums           rmd160  3ea2492cd31704e559456cb78dd85660fae7e74c \
+                    sha256  7fb9d7b5ed03d531243ebd67939baf30933452dafbdfca866e6653e9a77d80fc
+
+set python.versions         {{27 2.7} {34 3.4}}
+set python.default_version  27
+
+foreach py ${python.versions} {
+    set py_ver [lindex ${py} 0]
+    subport py${py_ver}-pykde4 {
+        depends_build       port:pkgconfig
+        depends_lib-append  port:kdelibs4 \
+                            port:soprano \
+                            port:boost \
+                            port:py${py_ver}-pyqt4 \
+                            port:dbus-python${py_ver}
+        depends_run-append  port:python${py_ver} port:py${py_ver}-pyqt4
+
+        set py_bra              [lindex ${py} 1]
+        set pylibdir            ${frameworks_dir}/Python.framework/Versions/${py_bra}/lib/python${py_bra}
+        configure.args-append   -DPYKDEUIC4_ALTINSTALL=TRUE \
+                                -DDEFAULT_PYTHON_VERSION=false -DPYTHON_EXECUTABLE=${prefix}/bin/python${py_bra} \
+                                -DPYTHON_INCLUDE_PATH=${frameworks_dir}/Python.framework/Versions/${py_bra}/Headers \
+                                -DPYTHON_INCLUDE_DIR2=${frameworks_dir}/Python.framework/Versions/${py_bra}/Headers \
+                                -DPYTHON_LIBRARY=${frameworks_dir}/Python.framework/Versions/${py_bra}/Python \
+                                -DPYTHON_SITE_PACKAGES_INSTALL_DIR=${pylibdir}/site-packages
+        post-configure {
+            reinplace -W ${build.dir} &quot;s|${prefix}/lib/python${py_bra}/|${pylibdir}/|g&quot; cmake_install.cmake pykdeconfig.py tools/pykdeuic4/cmake_install.cmake
+        }
+        post-destroot {
+            foreach module [glob ${destroot}${pylibdir}/site-packages/PyKDE4/*.dylib] {
+                set fname [file rootname ${module}]
+                file rename ${module} &quot;${fname}.so&quot;
+            }
+            xinstall -m 0755 ${build.dir}/pykdeconfig.py ${destroot}${pylibdir}/site-packages/PyKDE4
+            # who will ever need ${prefix}/share/sip/PyKDE4/pykde_config.sip?
+            file delete -force ${destroot}${prefix}/share/sip
+            file delete ${destroot}${prefix}/share/apps/pykde4/examples/kpartsExamples/konsolepart.py
+            file rename ${destroot}${prefix}/share/apps/pykde4 ${destroot}${prefix}/share/apps/${subport}
+            reinplace -W ${destroot}${prefix}/share/apps/${subport}/examples \
+                &quot;s|#\!/usr/bin/env python|#\!${prefix}/bin/python${py_bra}|g&quot; __init__.py default.py \
+                    kdecoreExamples/__init__.py kdecoreExamples/kaboutdata.py kdecoreExamples/kstandarddirs.py \
+                    kdeuiExamples/__init__.py kdeuiExamples/kaboutapplicationdialog.py kdeuiExamples/kaboutkdedialog.py \
+                    kdeuiExamples/kapplication.py kdeuiExamples/kcolorbutton.py kdeuiExamples/kcolorcells.py \
+                    kdeuiExamples/kcolorcombo.py kdeuiExamples/kcolordialog.py kdeuiExamples/kcolorpatch.py \
+                    kdeuiExamples/kcombobox.py kdeuiExamples/kdatepicker.py kdeuiExamples/kdatewidget.py \
+                    kdeuiExamples/kfontdialog.py kdeuiExamples/klistwidget.py kdeuiExamples/kmainwindow.py \
+                    khtmlExamples/__init__.py kioExamples/__init__.py kpartsExamples/__init__.py kpartsExamples/katepart.py \
+                    kutilsExamples/__init__.py polkitqtExamples/PkExampleUi.py \
+                    polkitqtExamples/pkexample.py polkitqtExamples/pkexamplehelper.py solidExamples/__init__.py \
+                    solidExamples/solid_audiointerface.py solidExamples/solid_device.py solidExamples/solid_networkinterface.py \
+                    solidExamples/solid_processor.py solidExamples/solid_storageaccess.py solidExamples/solid_storagedrive.py \
+                    solidExamples/solid_storagevolume.py solid_demo.py
+            reinplace -W ${destroot}${prefix}/share/apps/${subport}/examples \
+                &quot;s|#\!python|#\!${prefix}/bin/python${py_bra}|g&quot; __init__.py default.py \
+                    kdecoreExamples/__init__.py kdecoreExamples/kaboutdata.py kdecoreExamples/kstandarddirs.py \
+                    kdeuiExamples/__init__.py kdeuiExamples/kaboutapplicationdialog.py kdeuiExamples/kaboutkdedialog.py \
+                    kdeuiExamples/kapplication.py kdeuiExamples/kcolorbutton.py kdeuiExamples/kcolorcells.py \
+                    kdeuiExamples/kcolorcombo.py kdeuiExamples/kcolordialog.py kdeuiExamples/kcolorpatch.py \
+                    kdeuiExamples/kcombobox.py kdeuiExamples/kdatepicker.py kdeuiExamples/kdatewidget.py \
+                    kdeuiExamples/kfontdialog.py kdeuiExamples/klistwidget.py kdeuiExamples/kmainwindow.py \
+                    khtmlExamples/__init__.py kioExamples/__init__.py kpartsExamples/__init__.py kpartsExamples/katepart.py \
+                    kutilsExamples/__init__.py polkitqtExamples/PkExampleUi.py \
+                    polkitqtExamples/pkexample.py polkitqtExamples/pkexamplehelper.py solidExamples/__init__.py \
+                    solidExamples/solid_audiointerface.py solidExamples/solid_device.py solidExamples/solid_networkinterface.py \
+                    solidExamples/solid_processor.py solidExamples/solid_storageaccess.py solidExamples/solid_storagedrive.py \
+                    solidExamples/solid_storagevolume.py solid_demo.py
+        }
+    }
+}
+
+subport ${name}-docs {
+    long_description            Python bindings for the KDE Development Platform: the documentation
+    # extract only the docs directory:
+    extract.post_args-append    ${distname}/docs
+    configure.args-append       -DHTML_INSTALL_DIR:PATH=${prefix}/share/doc/HTML
+    configure.post_args         ${configure.post_args}/docs
+    supported_archs             noarch
+}
+
+if {${subport} eq ${name}} {
+    depends_build-append    port:py${python.default_version}-pykde4
+    fetch {}
+    checksum {}
+    extract {}
+    patch {}
+    use_configure   no
+    build {}
+    destroot {
+        xinstall -d -m 755 ${destroot}${prefix}/share/doc/kde-installed-packages
+        system &quot;touch ${destroot}${prefix}/share/doc/kde-installed-packages/${name}=py${python.default_version}-pykde4&quot;
+    }
+}
+
+if {${subport} ne &quot;${name}-docs&quot;} {
+    # patches come directly from Kubuntu, after doing a hardcoded -p1
+    #                    python3.3.diff
+    patchfiles-append   add_qt_kde_definitions.diff \
+                        fix_kpythonpluginfactory_build.diff \
+                        make_pykde4_respect_sip_flags.diff \
+                        pythonpluginfactory_use_versioned_python_lib.diff \
+                        optional_install_sip_files.diff \
+                        pythonpluginfactory_python3.diff \
+                        kubuntu_include_dirs.diff \
+                        kubuntu_kpythonpluginfactory_3.2support.diff \
+                        pykde4-macports-adaptations.diff \
+                        pykde4-macports-adaptations2.diff \
+                        pykde4-macports-adaptations-noDLFCN.diff \
+                        pykde4-macports-adaptations-toolongfilename.diff
+}
+
+if {[variant_isset docs]} {
+    depends_run-append  port:${name}-docs
+}
+
+compiler.blacklist  llvm-gcc-4.2 macports-llvm-gcc-4.2
+
+livecheck.url       http://kde.mirrors.hoobly.com/stable/
+livecheck.regex     (\\d+(\\.\\d+)+)
</ins><span class="cx">Property changes on: trunk/dports/kde/py-pykde4/Portfile
</span><span class="cx">___________________________________________________________________
</span></span></pre></div>
<a id="svnkeywords"></a>
<div class="addfile"><h4>Added: svn:keywords</h4></div>
<a id="svneolstyle"></a>
<div class="addfile"><h4>Added: svn:eol-style</h4></div>
<a id="trunkdportskdepypykde4filesadd_qt_kde_definitionsdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/add_qt_kde_definitions.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/add_qt_kde_definitions.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/add_qt_kde_definitions.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,20 @@
</span><ins>+From: Sune Vuorela &lt;sune@debian.org&gt;
+From: Modestas Vainius &lt;modax@debian.org&gt;
+Subject: define Qt/KDE definitions when building standalone
+Forwarded: no
+Last-Update: 2011-06-30
+Origin: vendor
+
+Index: pykde4-4.13.97/CMakeLists.txt
+===================================================================
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -33,6 +33,8 @@ set_package_properties(PythonInterp PROP

+ include_directories(${KDE4_INCLUDES})

++add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS} -DQT3_SUPPORT)
++
+ find_package(SIP)
+ set_package_properties(SIP PROPERTIES DESCRIPTION &quot;The SIP binding generator&quot;
+                        URL &quot;http://riverbankcomputing.com&quot; TYPE REQUIRED
</ins></span></pre></div>
<a id="trunkdportskdepypykde4filesfix_kpythonpluginfactory_builddiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/fix_kpythonpluginfactory_build.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/fix_kpythonpluginfactory_build.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/fix_kpythonpluginfactory_build.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,26 @@
</span><ins>+From: Modestas Vainius &lt;modax@debian.org&gt;
+Subject: Include Python.h first as Qt includes steal &quot;slots&quot; keyword
+Forwarded: no
+Origin: vendor
+Last-Update: 2008-12-05
+
+Index: pykde4-4.9.80/kpythonpluginfactory/kpythonpluginfactory.cpp
+===================================================================
+--- kpythonpluginfactory/kpythonpluginfactory.cpp.orig        2012-11-14 16:14:05.000000000 +0000
++++ kpythonpluginfactory/kpythonpluginfactory.cpp        2012-11-19 17:23:32.497203781 +0000
+@@ -18,6 +18,7 @@
+    Boston, MA 02111-1307, USA.
+ */

++#include &lt;Python.h&gt;
+ #include &lt;QtCore/QCoreApplication&gt;
+ #include &lt;QFileInfo&gt;
+ #include &lt;QDir&gt;
+@@ -25,7 +26,6 @@
+ #include &lt;klibloader.h&gt;
+ #include &lt;kstandarddirs.h&gt;
+ #include &lt;kcmodule.h&gt;
+-#include &lt;Python.h&gt;
+ #include &lt;kcomponentdata.h&gt;
+ #include &lt;kdebug.h&gt;

</ins></span></pre></div>
<a id="trunkdportskdepypykde4fileskubuntu_include_dirsdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/kubuntu_include_dirs.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/kubuntu_include_dirs.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/kubuntu_include_dirs.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,35 @@
</span><ins>+Description: use multiarch include dirs
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: &lt;vendor|upstream|other&gt;, &lt;url of original patch&gt;
+Bug: &lt;url in upstream bugtracker&gt;
+Bug-Debian: http://bugs.debian.org/&lt;bugnumber&gt;
+Bug-Ubuntu: https://launchpad.net/bugs/&lt;bugnumber&gt;
+Forwarded: &lt;no|not-needed|url proving that it has been forwarded&gt;
+Reviewed-By: &lt;name and email of someone who approved the patch&gt;
+Last-Update: &lt;YYYY-MM-DD&gt;
+
+Index: pykde4-4.13.97/CMakeLists.txt
+===================================================================
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -8,6 +8,7 @@ find_package(KDE4 4.9.4 REQUIRED)
+ # Match what's used in the main macros
+ cmake_policy(SET CMP0002 OLD)
+ find_package(PythonLibrary)
++find_package(PythonLibs)

+ include(KDE4Defaults)
+ include(MacroLibrary)
+@@ -80,6 +81,7 @@ set_package_properties(PolkitQt PROPERTI
+                        &quot;Required to build Python Polkit bindings&quot;)

+ include_directories(
++    ${PYTHON_INCLUDE_DIRS}
+     ${PYTHON_INCLUDE_PATH}
+     ${SIP_INCLUDE_DIR}
+     ${QT_INCLUDE_DIR}
</ins></span></pre></div>
<a id="trunkdportskdepypykde4fileskubuntu_kpythonpluginfactory_32supportdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/kubuntu_kpythonpluginfactory_3.2support.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/kubuntu_kpythonpluginfactory_3.2support.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/kubuntu_kpythonpluginfactory_3.2support.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,42 @@
</span><ins>+Index: b/kpythonpluginfactory/kpythonpluginfactory.cpp
+===================================================================
+--- kpythonpluginfactory/kpythonpluginfactory.cpp.orig
++++ kpythonpluginfactory/kpythonpluginfactory.cpp
+@@ -33,6 +33,12 @@
+ #define PY3
+ #endif

++#if PY_MAJOR_VERSION &gt;= 3
++#if PY_MINOR_VERSION &gt;= 2
++#define PY3.2
++#endif
++#endif
++
+ /*
+ This implements a plugin factory for running Python plugins. It also
+ supports io-slaves with a kdemain() entry point.
+@@ -106,8 +112,13 @@ void KPythonPluginFactory::initialize()
+         kDebug() &lt;&lt; &quot;Initializing Python interpreter.&quot;;
+         pythonLib = LoadPythonLibrary();

++#ifdef PY3.2
++        Py_Initialize ();
++        PyEval_InitThreads ();
++#else
+         PyEval_InitThreads ();
+         Py_Initialize ();
++#endif
+         if (!Py_IsInitialized ())
+         {
+             //pythonInit = 0;
+@@ -117,8 +128,10 @@ void KPythonPluginFactory::initialize()
+         kDebug() &lt;&lt; &quot;Succesfully initialized Python interpreter.&quot;;

+         threadState = PyThreadState_GET();
++#ifndef PY3.2
+         // free the lock
+         PyEval_ReleaseLock();
++#endif
+     }
+ }

</ins></span></pre></div>
<a id="trunkdportskdepypykde4filesmake_pykde4_respect_sip_flagsdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/make_pykde4_respect_sip_flags.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/make_pykde4_respect_sip_flags.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/make_pykde4_respect_sip_flags.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,32 @@
</span><ins>+From: Michael Casadevall &lt;mcasadevall@debian.org&gt;
+Subject: Respect Qt SIP flags
+Forwarded: no
+Origin:
+Last-Update: 2009-04-15
+
+Corrects FTBFS on armel by making sure pykde4 properly parses the python-qt4
+flags passed from PythonQt4's cmake file.
+
+Index: pykde4-4.13.97/CMakeLists.txt
+===================================================================
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -101,6 +101,9 @@ include_directories(
+     ${KDEPIMLIBS_INCLUDE_DIRS}
+ )

++# Pull in ARM configuration options if needed
++STRING(REGEX MATCH &quot;PyQt_qreal_double&quot; SIP_ARM_HACK ${PYQT4_SIP_FLAGS} &quot;&quot;)
++
+ set(SIP_INCLUDES ${CMAKE_BINARY_DIR} ${PYQT4_SIP_DIR} sip)
+ set(SIP_CONCAT_PARTS 8)
+ if (WIN32)
+@@ -108,7 +111,7 @@ if (WIN32)
+ else ()
+     set(SIP_TAGS ALL WS_X11 ${PYQT4_VERSION_TAG})
+ endif ()
+-set(SIP_DISABLE_FEATURES VendorID PyQt_NoPrintRangeBug)
++set(SIP_DISABLE_FEATURES VendorID PyQt_NoPrintRangeBug ${SIP_ARM_HACK})

+ set(SIP_FILES_INSTALL_DIR ${SHARE_INSTALL_PREFIX}/sip)

</ins></span></pre></div>
<a id="trunkdportskdepypykde4filesoptional_install_sip_filesdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/optional_install_sip_files.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/optional_install_sip_files.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/optional_install_sip_files.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,40 @@
</span><ins>+From: Sune Vuorela &lt;sune@debian.org&gt;
+Subject: Install sip files only when building for default python version
+Forwarded: not-needed
+Origin: vendor
+Last-Update: 2011-07-01
+
+Make it possible to only install the sip files under some conditions
+
+Index: pykde4-4.14.1/CMakeLists.txt
+===================================================================
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -252,16 +252,21 @@ python_install(__init__.py ${PYTHON_SITE
+ # Install the .sip files for anyone that wants to build bindings on top of PyKDE4.
+ # (Don't forget the / at the end of sip/.)
+ install(FILES ${CMAKE_BINARY_DIR}/pykde_config.sip DESTINATION ${SIP_FILES_INSTALL_DIR}/PyKDE4/)
+-install(DIRECTORY sip/ DESTINATION ${SIP_FILES_INSTALL_DIR}/PyKDE4
+-    PATTERN &quot;*~&quot; EXCLUDE    # This sucks, why can't I just whitelist what I _do_ want?
+-    PATTERN &quot;.svn&quot; EXCLUDE
+-    PATTERN &quot;*.in&quot; EXCLUDE)
++if(DEFAULT_PYTHON_VERSION)
++  install(DIRECTORY sip/ DESTINATION ${SIP_FILES_INSTALL_DIR}/PyKDE4
++        PATTERN &quot;*~&quot; EXCLUDE    # This sucks, why can't I just whitelist what I _do_ want?
++        PATTERN &quot;.svn&quot; EXCLUDE
++        PATTERN &quot;*.in&quot; EXCLUDE)
++   message(&quot;Installing sip files in this build pass&quot;)
++else(DEFAULT_PYTHON_VERSION)
++   message(&quot;Not installing sip files in this build pass&quot;)
++endif(DEFAULT_PYTHON_VERSION)

+ add_subdirectory(tools)
+ #add_subdirectory(docs)
+ add_subdirectory(examples)
+-if (PYTHON_VERSION_MAJOR LESS 3)
++if (PYTHON_VERSION_MAJOR LESS 3 AND DEFAULT_PYTHON_VERSION)
+     add_subdirectory(kpythonpluginfactory)
+-endif ()
++endif (PYTHON_VERSION_MAJOR LESS 3 AND DEFAULT_PYTHON_VERSION)

+ feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
</ins></span></pre></div>
<a id="trunkdportskdepypykde4filespykde4macportsadaptationsnoDLFCNdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations-noDLFCN.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations-noDLFCN.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations-noDLFCN.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,17 @@
</span><ins>+--- __init__.py.orig        2014-08-14 22:17:11.000000000 +0200
++++ __init__.py        2015-03-10 21:54:25.000000000 +0100
+@@ -1,4 +1,9 @@
+-import sys,DLFCN
+-# This is needed to ensure that dynamic_cast and RTTI works inside kdelibs.
+-sys.setdlopenflags(DLFCN.RTLD_NOW|DLFCN.RTLD_GLOBAL)
+-     
+\ No newline at end of file
++import sys
++try:
++        import DLFCN
++        # This is needed to ensure that dynamic_cast and RTTI works inside kdelibs.
++        sys.setdlopenflags(DLFCN.RTLD_NOW|DLFCN.RTLD_GLOBAL)
++except:
++        from _ctypes import RTLD_GLOBAL
++        sys.setdlopenflags(RTLD_GLOBAL)
++     
</ins></span></pre></div>
<a id="trunkdportskdepypykde4filespykde4macportsadaptationstoolongfilenamediff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations-toolongfilename.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations-toolongfilename.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations-toolongfilename.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,16 @@
</span><ins>+--- CMakeLists.txt.orig        2015-03-12 13:06:09.000000000 +0100
++++ CMakeLists.txt        2015-03-10 15:03:07.000000000 +0100
+@@ -162,9 +162,10 @@
+ # pykdeconfig will not work.
+ execute_process(COMMAND &quot;${PYTHON_EXECUTABLE}&quot; -c &quot;import PyQt4.pyqtconfig&quot;
+                 RESULT_VARIABLE _exit_code OUTPUT_QUIET ERROR_QUIET)
+-if (NOT _exit_code)
+-    python_install(${CMAKE_CURRENT_BINARY_DIR}/pykdeconfig.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyKDE4)
+-endif ()
++# deactivate this because of cmake will try to create a recursive filename that gets way too long
++#if (NOT _exit_code)
++#    python_install(pykdeconfig.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyKDE4)
++#endif ()

+ # Do not use --no-undefined for python modules.
+ STRING(REPLACE -Wl,--no-undefined &quot;&quot; CMAKE_SHARED_LINKER_FLAGS &quot;${CMAKE_SHARED_LINKER_FLAGS}&quot;)
</ins></span></pre></div>
<a id="trunkdportskdepypykde4filespykde4macportsadaptationsdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,115 @@
</span><ins>+diff -ur ../pykde4-4.14.3-orig/CMakeLists.txt ./CMakeLists.txt
+--- ../pykde4-4.14.3-orig/CMakeLists.txt        2015-04-28 01:25:43.000000000 +0900
++++ ./CMakeLists.txt        2015-04-28 01:07:08.000000000 +0900
+@@ -8,7 +8,6 @@
+ # Match what's used in the main macros
+ cmake_policy(SET CMP0002 OLD)
+ find_package(PythonLibrary)
+-find_package(PythonLibs)

+ include(KDE4Defaults)
+ include(MacroLibrary)
+@@ -34,8 +33,6 @@

+ include_directories(${KDE4_INCLUDES})

+-add_definitions(${QT_DEFINITIONS} ${KDE4_DEFINITIONS} -DQT3_SUPPORT)
+-
+ find_package(SIP)
+ set_package_properties(SIP PROPERTIES DESCRIPTION &quot;The SIP binding generator&quot;
+                        URL &quot;http://riverbankcomputing.com&quot; TYPE REQUIRED
+@@ -78,7 +75,6 @@
+                        &quot;Required to build Python Polkit bindings&quot;)

+ include_directories(
+-    ${PYTHON_INCLUDE_DIRS}
+     ${PYTHON_INCLUDE_PATH}
+     ${SIP_INCLUDE_DIR}
+     ${QT_INCLUDE_DIR}
+@@ -103,17 +99,18 @@
+     ${KDEPIMLIBS_INCLUDE_DIRS}
+ )

+-# Pull in ARM configuration options if needed
+-STRING(REGEX MATCH &quot;PyQt_qreal_double&quot; SIP_ARM_HACK ${PYQT4_SIP_FLAGS} &quot;&quot;)
+-
+ set(SIP_INCLUDES ${CMAKE_BINARY_DIR} ${PYQT4_SIP_DIR} sip)
+ set(SIP_CONCAT_PARTS 8)
+ if (WIN32)
+     set(SIP_TAGS ALL WS_WIN ${PYQT4_VERSION_TAG})
+ else ()
+-    set(SIP_TAGS ALL WS_X11 ${PYQT4_VERSION_TAG})
+-endif ()
+-set(SIP_DISABLE_FEATURES VendorID PyQt_NoPrintRangeBug ${SIP_ARM_HACK})
++    if (APPLE)
++        set(SIP_TAGS ALL WS_MACX ${PYQT4_VERSION_TAG})
++    else ()
++        set(SIP_TAGS ALL WS_X11 ${PYQT4_VERSION_TAG})
++    endif (APPLE)
++endif (WIN32)
++set(SIP_DISABLE_FEATURES VendorID PyQt_NoPrintRangeBug)

+ set(SIP_FILES_INSTALL_DIR ${SHARE_INSTALL_PREFIX}/sip)

+@@ -259,23 +256,16 @@
+ # Install the .sip files for anyone that wants to build bindings on top of PyKDE4.
+ # (Don't forget the / at the end of sip/.)
+ install(FILES ${CMAKE_BINARY_DIR}/pykde_config.sip DESTINATION ${SIP_FILES_INSTALL_DIR}/PyKDE4/)
+-if(DEFAULT_PYTHON_VERSION)
+-  install(DIRECTORY sip/ DESTINATION ${SIP_FILES_INSTALL_DIR}/PyKDE4
+-        PATTERN &quot;*~&quot; EXCLUDE    # This sucks, why can't I just whitelist what I _do_ want?
+-        PATTERN &quot;.svn&quot; EXCLUDE
+-        PATTERN &quot;*.in&quot; EXCLUDE)
+-   message(&quot;Installing sip files in this build pass&quot;)
+-else(DEFAULT_PYTHON_VERSION)
+-   message(&quot;Not installing sip files in this build pass&quot;)
+-endif(DEFAULT_PYTHON_VERSION)
++install(DIRECTORY sip/ DESTINATION ${SIP_FILES_INSTALL_DIR}/PyKDE4
++    PATTERN &quot;*~&quot; EXCLUDE    # This sucks, why can't I just whitelist what I _do_ want?
++    PATTERN &quot;.svn&quot; EXCLUDE
++    PATTERN &quot;*.in&quot; EXCLUDE)

+ add_subdirectory(tools)
+ #add_subdirectory(docs)
+ add_subdirectory(examples)
+-# Due to version specific ABI tagging in Python 3 so files, we can build for
+-# all Python 3 versions without a problem.
+-if ((PYTHON_VERSION_MAJOR LESS 3 AND DEFAULT_PYTHON_VERSION) OR PYTHON_VERSION_MAJOR GREATER 2)
++if (PYTHON_VERSION_MAJOR LESS 3)
+     add_subdirectory(kpythonpluginfactory)
+-endif ((PYTHON_VERSION_MAJOR LESS 3 AND DEFAULT_PYTHON_VERSION) OR PYTHON_VERSION_MAJOR GREATER 2)
++endif ()

+ feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
+diff -ur ../pykde4-4.14.3-orig/cmake/modules/FindPolkitQt.cmake ./cmake/modules/FindPolkitQt.cmake
+--- ../pykde4-4.14.3-orig/cmake/modules/FindPolkitQt.cmake        2014-08-15 05:17:11.000000000 +0900
++++ ./cmake/modules/FindPolkitQt.cmake        2015-04-28 01:07:42.000000000 +0900
+@@ -28,13 +28,13 @@
+   set(POLKITQT_MIN_VERSION &quot;0.9.3&quot;)
+ endif (NOT POLKITQT_MIN_VERSION)

+-if (NOT WIN32)
++if (NOT WIN32 AND NOT APPLE)
+    # use pkg-config to get the directories and then use these values
+    # in the FIND_PATH() and FIND_LIBRARY() calls
+    find_package(PkgConfig)
+    pkg_check_modules(PC_POLKITQT QUIET polkit-qt)
+    set(POLKITQT_DEFINITIONS ${PC_POLKITQT_CFLAGS_OTHER})
+-endif (NOT WIN32)
++endif (NOT WIN32 AND NOT APPLE)

+ find_path( POLKITQT_INCLUDE_DIR
+      NAMES polkit-qt/auth.h
+diff -ur ../pykde4-4.14.3-orig/sip/kdecore/ktempdir.sip ./sip/kdecore/ktempdir.sip
+--- ../pykde4-4.14.3-orig/sip/kdecore/ktempdir.sip        2014-08-15 05:17:11.000000000 +0900
++++ ./sip/kdecore/ktempdir.sip        2015-04-28 01:08:25.000000000 +0900
+@@ -24,7 +24,9 @@
+ {
+ %TypeHeaderCode
+ #include &lt;ktempdir.h&gt;
++#ifdef Q_WS_X11
+ #include &lt;fixx11h.h&gt;
++#endif
+ %End


</ins></span></pre></div>
<a id="trunkdportskdepypykde4filespykde4macportsadaptations2diff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations2.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations2.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/pykde4-macports-adaptations2.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,1108 @@
</span><ins>+diff --git sip/kdeui/kabstractwidgetjobtracker.sip sip/kdeui/kabstractwidgetjobtracker.sip
+index 6952642..b793971 100644
+--- sip/kdeui/kabstractwidgetjobtracker.sip
++++ sip/kdeui/kabstractwidgetjobtracker.sip
+@@ -223,6 +223,7 @@ signals:

+ //  Subclasses of QObject

++%If (WS_X11)
+ %ConvertToSubClassCode
+     // CTSCC for subclasses of 'QObject'
+     sipType = NULL;
+@@ -638,6 +639,418 @@ signals:
+     else if (dynamic_cast&lt;Sonnet::ConfigWidget*&gt;(sipCpp))
+         sipType = sipType_Sonnet_ConfigWidget;
+ %End
++%End
++%If (!WS_X11)
++%ConvertToSubClassCode
++    // CTSCC for subclasses of 'QObject'
++    sipType = NULL;
++
++    if (dynamic_cast&lt;KActionCategory*&gt;(sipCpp))
++        sipType = sipType_KActionCategory;
++    else if (dynamic_cast&lt;KActionCollection*&gt;(sipCpp))
++        sipType = sipType_KActionCollection;
++    else if (dynamic_cast&lt;KCategoryDrawerV2*&gt;(sipCpp))
++        {
++        sipType = sipType_KCategoryDrawerV2;
++        if (dynamic_cast&lt;KCategoryDrawerV3*&gt;(sipCpp))
++            sipType = sipType_KCategoryDrawerV3;
++        }
++    else if (dynamic_cast&lt;KCompletion*&gt;(sipCpp))
++        sipType = sipType_KCompletion;
++    else if (dynamic_cast&lt;KConfigDialogManager*&gt;(sipCpp))
++        sipType = sipType_KConfigDialogManager;
++    else if (dynamic_cast&lt;KConfigSkeleton*&gt;(sipCpp))
++        sipType = sipType_KConfigSkeleton;
++    else if (dynamic_cast&lt;KFind*&gt;(sipCpp))
++        {
++        sipType = sipType_KFind;
++        if (dynamic_cast&lt;KReplace*&gt;(sipCpp))
++            sipType = sipType_KReplace;
++        }
++    else if (dynamic_cast&lt;KGlobalAccel*&gt;(sipCpp))
++        sipType = sipType_KGlobalAccel;
++    else if (dynamic_cast&lt;KGlobalSettings*&gt;(sipCpp))
++        sipType = sipType_KGlobalSettings;
++    else if (dynamic_cast&lt;KGlobalShortcutInfo*&gt;(sipCpp))
++        sipType = sipType_KGlobalShortcutInfo;
++    else if (dynamic_cast&lt;KHelpMenu*&gt;(sipCpp))
++        sipType = sipType_KHelpMenu;
++    else if (dynamic_cast&lt;KIconLoader*&gt;(sipCpp))
++        sipType = sipType_KIconLoader;
++    else if (dynamic_cast&lt;KAbstractWidgetJobTracker*&gt;(sipCpp))
++        {
++        sipType = sipType_KAbstractWidgetJobTracker;
++        if (dynamic_cast&lt;KStatusBarJobTracker*&gt;(sipCpp))
++            sipType = sipType_KStatusBarJobTracker;
++        else if (dynamic_cast&lt;KWidgetJobTracker*&gt;(sipCpp))
++            sipType = sipType_KWidgetJobTracker;
++        }
++    else if (dynamic_cast&lt;KUiServerJobTracker*&gt;(sipCpp))
++        sipType = sipType_KUiServerJobTracker;
++    else if (dynamic_cast&lt;KDialogJobUiDelegate*&gt;(sipCpp))
++        sipType = sipType_KDialogJobUiDelegate;
++    else if (dynamic_cast&lt;KMessageBoxMessageHandler*&gt;(sipCpp))
++        sipType = sipType_KMessageBoxMessageHandler;
++    else if (dynamic_cast&lt;KModelIndexProxyMapper*&gt;(sipCpp))
++        sipType = sipType_KModelIndexProxyMapper;
++    else if (dynamic_cast&lt;KModifierKeyInfo*&gt;(sipCpp))
++        sipType = sipType_KModifierKeyInfo;
++    else if (dynamic_cast&lt;KNotification*&gt;(sipCpp))
++        sipType = sipType_KNotification;
++    else if (dynamic_cast&lt;KNotificationRestrictions*&gt;(sipCpp))
++        sipType = sipType_KNotificationRestrictions;
++    else if (dynamic_cast&lt;KPageWidgetItem*&gt;(sipCpp))
++        sipType = sipType_KPageWidgetItem;
++    else if (dynamic_cast&lt;KPassivePopupMessageHandler*&gt;(sipCpp))
++        sipType = sipType_KPassivePopupMessageHandler;
++    else if (dynamic_cast&lt;KPixmapSequenceOverlayPainter*&gt;(sipCpp))
++        sipType = sipType_KPixmapSequenceOverlayPainter;
++    else if (dynamic_cast&lt;KStartupInfo*&gt;(sipCpp))
++        sipType = sipType_KStartupInfo;
++    else if (dynamic_cast&lt;KStatusNotifierItem*&gt;(sipCpp))
++        sipType = sipType_KStatusNotifierItem;
++    else if (dynamic_cast&lt;KViewStateMaintainerBase*&gt;(sipCpp))
++        sipType = sipType_KViewStateMaintainerBase;
++    else if (dynamic_cast&lt;KViewStateSaver*&gt;(sipCpp))
++        sipType = sipType_KViewStateSaver;
++    else if (dynamic_cast&lt;KWallet::Wallet*&gt;(sipCpp))
++        sipType = sipType_KWallet_Wallet;
++    else if (dynamic_cast&lt;KXMLGUIFactory*&gt;(sipCpp))
++        sipType = sipType_KXMLGUIFactory;
++    else if (dynamic_cast&lt;KWidgetItemDelegate*&gt;(sipCpp))
++        sipType = sipType_KWidgetItemDelegate;
++    else if (dynamic_cast&lt;KExtendableItemDelegate*&gt;(sipCpp))
++        sipType = sipType_KExtendableItemDelegate;
++    else if (dynamic_cast&lt;KPageModel*&gt;(sipCpp))
++        {
++        sipType = sipType_KPageModel;
++        if (dynamic_cast&lt;KPageWidgetModel*&gt;(sipCpp))
++            sipType = sipType_KPageWidgetModel;
++        }
++    else if (dynamic_cast&lt;KDescendantsProxyModel*&gt;(sipCpp))
++        sipType = sipType_KDescendantsProxyModel;
++    else if (dynamic_cast&lt;KIdentityProxyModel*&gt;(sipCpp))
++        {
++        sipType = sipType_KIdentityProxyModel;
++        if (dynamic_cast&lt;KCheckableProxyModel*&gt;(sipCpp))
++            sipType = sipType_KCheckableProxyModel;
++        }
++    else if (dynamic_cast&lt;KSelectionProxyModel*&gt;(sipCpp))
++        sipType = sipType_KSelectionProxyModel;
++    else if (dynamic_cast&lt;KCategorizedSortFilterProxyModel*&gt;(sipCpp))
++        sipType = sipType_KCategorizedSortFilterProxyModel;
++    else if (dynamic_cast&lt;KRecursiveFilterProxyModel*&gt;(sipCpp))
++        sipType = sipType_KRecursiveFilterProxyModel;
++    else if (dynamic_cast&lt;KAction*&gt;(sipCpp))
++        {
++        sipType = sipType_KAction;
++        if (dynamic_cast&lt;KActionMenu*&gt;(sipCpp))
++            sipType = sipType_KActionMenu;
++        else if (dynamic_cast&lt;KDualAction*&gt;(sipCpp))
++            sipType = sipType_KDualAction;
++        else if (dynamic_cast&lt;KPasteTextAction*&gt;(sipCpp))
++            sipType = sipType_KPasteTextAction;
++        else if (dynamic_cast&lt;KSelectAction*&gt;(sipCpp))
++            {
++            sipType = sipType_KSelectAction;
++            if (dynamic_cast&lt;KCodecAction*&gt;(sipCpp))
++                sipType = sipType_KCodecAction;
++            else if (dynamic_cast&lt;KFontAction*&gt;(sipCpp))
++                sipType = sipType_KFontAction;
++            else if (dynamic_cast&lt;KFontSizeAction*&gt;(sipCpp))
++                sipType = sipType_KFontSizeAction;
++            else if (dynamic_cast&lt;KRecentFilesAction*&gt;(sipCpp))
++                sipType = sipType_KRecentFilesAction;
++            }
++        else if (dynamic_cast&lt;KToggleAction*&gt;(sipCpp))
++            {
++            sipType = sipType_KToggleAction;
++            if (dynamic_cast&lt;KToggleFullScreenAction*&gt;(sipCpp))
++                sipType = sipType_KToggleFullScreenAction;
++            else if (dynamic_cast&lt;KToggleToolBarAction*&gt;(sipCpp))
++                sipType = sipType_KToggleToolBarAction;
++            }
++        else if (dynamic_cast&lt;KToolBarLabelAction*&gt;(sipCpp))
++            sipType = sipType_KToolBarLabelAction;
++        else if (dynamic_cast&lt;KToolBarPopupAction*&gt;(sipCpp))
++            sipType = sipType_KToolBarPopupAction;
++        else if (dynamic_cast&lt;KToolBarSpacerAction*&gt;(sipCpp))
++            sipType = sipType_KToolBarSpacerAction;
++        }
++    else if (dynamic_cast&lt;KApplication*&gt;(sipCpp))
++        {
++        sipType = sipType_KApplication;
++        if (dynamic_cast&lt;KUniqueApplication*&gt;(sipCpp))
++            sipType = sipType_KUniqueApplication;
++        }
++    else if (dynamic_cast&lt;KBreadcrumbSelectionModel*&gt;(sipCpp))
++        sipType = sipType_KBreadcrumbSelectionModel;
++    else if (dynamic_cast&lt;KLinkItemSelectionModel*&gt;(sipCpp))
++        sipType = sipType_KLinkItemSelectionModel;
++    else if (dynamic_cast&lt;KStyle*&gt;(sipCpp))
++        sipType = sipType_KStyle;
++    else if (dynamic_cast&lt;KSvgRenderer*&gt;(sipCpp))
++        sipType = sipType_KSvgRenderer;
++    else if (dynamic_cast&lt;Sonnet::Highlighter*&gt;(sipCpp))
++        sipType = sipType_Sonnet_Highlighter;
++    else if (dynamic_cast&lt;KSystemTrayIcon*&gt;(sipCpp))
++        sipType = sipType_KSystemTrayIcon;
++    else if (dynamic_cast&lt;KUndoStack*&gt;(sipCpp))
++        sipType = sipType_KUndoStack;
++    else if (dynamic_cast&lt;KDateValidator*&gt;(sipCpp))
++        sipType = sipType_KDateValidator;
++    else if (dynamic_cast&lt;KFloatValidator*&gt;(sipCpp))
++        sipType = sipType_KFloatValidator;
++    else if (dynamic_cast&lt;KIntValidator*&gt;(sipCpp))
++        sipType = sipType_KIntValidator;
++    else if (dynamic_cast&lt;KMimeTypeValidator*&gt;(sipCpp))
++        sipType = sipType_KMimeTypeValidator;
++    else if (dynamic_cast&lt;KStringListValidator*&gt;(sipCpp))
++        sipType = sipType_KStringListValidator;
++    else if (dynamic_cast&lt;KDoubleValidator*&gt;(sipCpp))
++        sipType = sipType_KDoubleValidator;
++    else if (dynamic_cast&lt;KActionSelector*&gt;(sipCpp))
++        sipType = sipType_KActionSelector;
++    else if (dynamic_cast&lt;KCModule*&gt;(sipCpp))
++        sipType = sipType_KCModule;
++    else if (dynamic_cast&lt;KCapacityBar*&gt;(sipCpp))
++        sipType = sipType_KCapacityBar;
++    else if (dynamic_cast&lt;KCharSelect*&gt;(sipCpp))
++        sipType = sipType_KCharSelect;
++    else if (dynamic_cast&lt;KDateTable*&gt;(sipCpp))
++        sipType = sipType_KDateTable;
++    else if (dynamic_cast&lt;KDateTimeEdit*&gt;(sipCpp))
++        sipType = sipType_KDateTimeEdit;
++    else if (dynamic_cast&lt;KDateTimeWidget*&gt;(sipCpp))
++        sipType = sipType_KDateTimeWidget;
++    else if (dynamic_cast&lt;KDateWidget*&gt;(sipCpp))
++        sipType = sipType_KDateWidget;
++    else if (dynamic_cast&lt;KEditListWidget*&gt;(sipCpp))
++        sipType = sipType_KEditListWidget;
++    else if (dynamic_cast&lt;KFadeWidgetEffect*&gt;(sipCpp))
++        sipType = sipType_KFadeWidgetEffect;
++    else if (dynamic_cast&lt;KFilterProxySearchLine*&gt;(sipCpp))
++        sipType = sipType_KFilterProxySearchLine;
++    else if (dynamic_cast&lt;KFontChooser*&gt;(sipCpp))
++        sipType = sipType_KFontChooser;
++    else if (dynamic_cast&lt;KFontRequester*&gt;(sipCpp))
++        sipType = sipType_KFontRequester;
++    else if (dynamic_cast&lt;KKeySequenceWidget*&gt;(sipCpp))
++        sipType = sipType_KKeySequenceWidget;
++    else if (dynamic_cast&lt;KLanguageButton*&gt;(sipCpp))
++        sipType = sipType_KLanguageButton;
++    else if (dynamic_cast&lt;KLed*&gt;(sipCpp))
++        sipType = sipType_KLed;
++    else if (dynamic_cast&lt;KMultiTabBar*&gt;(sipCpp))
++        sipType = sipType_KMultiTabBar;
++    else if (dynamic_cast&lt;KNumInput*&gt;(sipCpp))
++        {
++        sipType = sipType_KNumInput;
++        if (dynamic_cast&lt;KDoubleNumInput*&gt;(sipCpp))
++            sipType = sipType_KDoubleNumInput;
++        else if (dynamic_cast&lt;KIntNumInput*&gt;(sipCpp))
++            sipType = sipType_KIntNumInput;
++        }
++    else if (dynamic_cast&lt;KPageView*&gt;(sipCpp))
++        {
++        sipType = sipType_KPageView;
++        if (dynamic_cast&lt;KPageWidget*&gt;(sipCpp))
++            sipType = sipType_KPageWidget;
++        }
++    else if (dynamic_cast&lt;KPixmapRegionSelectorWidget*&gt;(sipCpp))
++        sipType = sipType_KPixmapRegionSelectorWidget;
++    else if (dynamic_cast&lt;KPixmapSequenceWidget*&gt;(sipCpp))
++        sipType = sipType_KPixmapSequenceWidget;
++    else if (dynamic_cast&lt;KShortcutWidget*&gt;(sipCpp))
++        sipType = sipType_KShortcutWidget;
++    else if (dynamic_cast&lt;KShortcutsEditor*&gt;(sipCpp))
++        sipType = sipType_KShortcutsEditor;
++    else if (dynamic_cast&lt;KTitleWidget*&gt;(sipCpp))
++        sipType = sipType_KTitleWidget;
++    else if (dynamic_cast&lt;KTreeWidgetSearchLineWidget*&gt;(sipCpp))
++        sipType = sipType_KTreeWidgetSearchLineWidget;
++    else if (dynamic_cast&lt;KXYSelector*&gt;(sipCpp))
++        {
++        sipType = sipType_KXYSelector;
++        if (dynamic_cast&lt;KHueSaturationSelector*&gt;(sipCpp))
++            sipType = sipType_KHueSaturationSelector;
++        }
++    else if (dynamic_cast&lt;KArrowButton*&gt;(sipCpp))
++        sipType = sipType_KArrowButton;
++    else if (dynamic_cast&lt;KColorButton*&gt;(sipCpp))
++        sipType = sipType_KColorButton;
++    else if (dynamic_cast&lt;KMultiTabBarButton*&gt;(sipCpp))
++        {
++        sipType = sipType_KMultiTabBarButton;
++        if (dynamic_cast&lt;KMultiTabBarTab*&gt;(sipCpp))
++            sipType = sipType_KMultiTabBarTab;
++        }
++    else if (dynamic_cast&lt;KPushButton*&gt;(sipCpp))
++        sipType = sipType_KPushButton;
++    else if (dynamic_cast&lt;KAnimatedButton*&gt;(sipCpp))
++        sipType = sipType_KAnimatedButton;
++    else if (dynamic_cast&lt;KRuler*&gt;(sipCpp))
++        sipType = sipType_KRuler;
++    else if (dynamic_cast&lt;KSelector*&gt;(sipCpp))
++        {
++        sipType = sipType_KSelector;
++        if (dynamic_cast&lt;KColorValueSelector*&gt;(sipCpp))
++            sipType = sipType_KColorValueSelector;
++        else if (dynamic_cast&lt;KGradientSelector*&gt;(sipCpp))
++            sipType = sipType_KGradientSelector;
++        }
++    else if (dynamic_cast&lt;KIntSpinBox*&gt;(sipCpp))
++        sipType = sipType_KIntSpinBox;
++    else if (dynamic_cast&lt;KColorCombo*&gt;(sipCpp))
++        sipType = sipType_KColorCombo;
++    else if (dynamic_cast&lt;KComboBox*&gt;(sipCpp))
++        {
++        sipType = sipType_KComboBox;
++        if (dynamic_cast&lt;KDateComboBox*&gt;(sipCpp))
++            sipType = sipType_KDateComboBox;
++        else if (dynamic_cast&lt;KFontComboBox*&gt;(sipCpp))
++            sipType = sipType_KFontComboBox;
++        else if (dynamic_cast&lt;KHistoryComboBox*&gt;(sipCpp))
++            sipType = sipType_KHistoryComboBox;
++        else if (dynamic_cast&lt;KTimeComboBox*&gt;(sipCpp))
++            sipType = sipType_KTimeComboBox;
++        else if (dynamic_cast&lt;Sonnet::DictionaryComboBox*&gt;(sipCpp))
++            sipType = sipType_Sonnet_DictionaryComboBox;
++        }
++    else if (dynamic_cast&lt;KDialog*&gt;(sipCpp))
++        {
++        sipType = sipType_KDialog;
++        if (dynamic_cast&lt;KAboutApplicationDialog*&gt;(sipCpp))
++            sipType = sipType_KAboutApplicationDialog;
++        else if (dynamic_cast&lt;KBugReport*&gt;(sipCpp))
++            sipType = sipType_KBugReport;
++        else if (dynamic_cast&lt;KColorDialog*&gt;(sipCpp))
++            sipType = sipType_KColorDialog;
++        else if (dynamic_cast&lt;KEditToolBar*&gt;(sipCpp))
++            sipType = sipType_KEditToolBar;
++        else if (dynamic_cast&lt;KFindDialog*&gt;(sipCpp))
++            {
++            sipType = sipType_KFindDialog;
++            if (dynamic_cast&lt;KReplaceDialog*&gt;(sipCpp))
++                sipType = sipType_KReplaceDialog;
++            }
++        else if (dynamic_cast&lt;KFontDialog*&gt;(sipCpp))
++            sipType = sipType_KFontDialog;
++        else if (dynamic_cast&lt;KNewPasswordDialog*&gt;(sipCpp))
++            sipType = sipType_KNewPasswordDialog;
++        else if (dynamic_cast&lt;KPageDialog*&gt;(sipCpp))
++            {
++            sipType = sipType_KPageDialog;
++            if (dynamic_cast&lt;KAssistantDialog*&gt;(sipCpp))
++                sipType = sipType_KAssistantDialog;
++            else if (dynamic_cast&lt;KConfigDialog*&gt;(sipCpp))
++                sipType = sipType_KConfigDialog;
++            }
++        else if (dynamic_cast&lt;KPasswordDialog*&gt;(sipCpp))
++            sipType = sipType_KPasswordDialog;
++        else if (dynamic_cast&lt;KPixmapRegionSelectorDialog*&gt;(sipCpp))
++            sipType = sipType_KPixmapRegionSelectorDialog;
++        else if (dynamic_cast&lt;KProgressDialog*&gt;(sipCpp))
++            sipType = sipType_KProgressDialog;
++        else if (dynamic_cast&lt;KShortcutsDialog*&gt;(sipCpp))
++            sipType = sipType_KShortcutsDialog;
++        else if (dynamic_cast&lt;KTipDialog*&gt;(sipCpp))
++            sipType = sipType_KTipDialog;
++        else if (dynamic_cast&lt;Sonnet::ConfigDialog*&gt;(sipCpp))
++            sipType = sipType_Sonnet_ConfigDialog;
++        else if (dynamic_cast&lt;Sonnet::Dialog*&gt;(sipCpp))
++            sipType = sipType_Sonnet_Dialog;
++        }
++    else if (dynamic_cast&lt;KDialogButtonBox*&gt;(sipCpp))
++        sipType = sipType_KDialogButtonBox;
++    else if (dynamic_cast&lt;KColorPatch*&gt;(sipCpp))
++        sipType = sipType_KColorPatch;
++    else if (dynamic_cast&lt;KDatePicker*&gt;(sipCpp))
++        sipType = sipType_KDatePicker;
++    else if (dynamic_cast&lt;KHBox*&gt;(sipCpp))
++        {
++        sipType = sipType_KHBox;
++        if (dynamic_cast&lt;KVBox*&gt;(sipCpp))
++            sipType = sipType_KVBox;
++        }
++    else if (dynamic_cast&lt;KMessageWidget*&gt;(sipCpp))
++        sipType = sipType_KMessageWidget;
++    else if (dynamic_cast&lt;KPassivePopup*&gt;(sipCpp))
++        sipType = sipType_KPassivePopup;
++    else if (dynamic_cast&lt;KPlotWidget*&gt;(sipCpp))
++        sipType = sipType_KPlotWidget;
++    else if (dynamic_cast&lt;KPopupFrame*&gt;(sipCpp))
++        sipType = sipType_KPopupFrame;
++    else if (dynamic_cast&lt;KRatingWidget*&gt;(sipCpp))
++        sipType = sipType_KRatingWidget;
++    else if (dynamic_cast&lt;KSeparator*&gt;(sipCpp))
++        sipType = sipType_KSeparator;
++    else if (dynamic_cast&lt;KCategorizedView*&gt;(sipCpp))
++        sipType = sipType_KCategorizedView;
++    else if (dynamic_cast&lt;KListWidget*&gt;(sipCpp))
++        {
++        sipType = sipType_KListWidget;
++        if (dynamic_cast&lt;KCompletionBox*&gt;(sipCpp))
++            sipType = sipType_KCompletionBox;
++        }
++    else if (dynamic_cast&lt;KColorCells*&gt;(sipCpp))
++        sipType = sipType_KColorCells;
++    else if (dynamic_cast&lt;KTimeZoneWidget*&gt;(sipCpp))
++        sipType = sipType_KTimeZoneWidget;
++    else if (dynamic_cast&lt;KTextEdit*&gt;(sipCpp))
++        {
++        sipType = sipType_KTextEdit;
++        if (dynamic_cast&lt;KRichTextEdit*&gt;(sipCpp))
++            {
++            sipType = sipType_KRichTextEdit;
++            if (dynamic_cast&lt;KRichTextWidget*&gt;(sipCpp))
++                sipType = sipType_KRichTextWidget;
++            }
++        }
++    else if (dynamic_cast&lt;KTextBrowser*&gt;(sipCpp))
++        sipType = sipType_KTextBrowser;
++    else if (dynamic_cast&lt;KSqueezedTextLabel*&gt;(sipCpp))
++        sipType = sipType_KSqueezedTextLabel;
++    else if (dynamic_cast&lt;KUrlLabel*&gt;(sipCpp))
++        sipType = sipType_KUrlLabel;
++    else if (dynamic_cast&lt;KButtonGroup*&gt;(sipCpp))
++        sipType = sipType_KButtonGroup;
++    else if (dynamic_cast&lt;KEditListBox*&gt;(sipCpp))
++        sipType = sipType_KEditListBox;
++    else if (dynamic_cast&lt;KLineEdit*&gt;(sipCpp))
++        {
++        sipType = sipType_KLineEdit;
++        if (dynamic_cast&lt;KListWidgetSearchLine*&gt;(sipCpp))
++            sipType = sipType_KListWidgetSearchLine;
++        else if (dynamic_cast&lt;KRestrictedLine*&gt;(sipCpp))
++            sipType = sipType_KRestrictedLine;
++        else if (dynamic_cast&lt;KTreeWidgetSearchLine*&gt;(sipCpp))
++            sipType = sipType_KTreeWidgetSearchLine;
++        }
++    else if (dynamic_cast&lt;KMainWindow*&gt;(sipCpp))
++        {
++        sipType = sipType_KMainWindow;
++        if (dynamic_cast&lt;KXmlGuiWindow*&gt;(sipCpp))
++            sipType = sipType_KXmlGuiWindow;
++        }
++    else if (dynamic_cast&lt;KMenu*&gt;(sipCpp))
++        sipType = sipType_KMenu;
++    else if (dynamic_cast&lt;KMenuBar*&gt;(sipCpp))
++        sipType = sipType_KMenuBar;
++    else if (dynamic_cast&lt;KSplashScreen*&gt;(sipCpp))
++        sipType = sipType_KSplashScreen;
++    else if (dynamic_cast&lt;KStatusBar*&gt;(sipCpp))
++        sipType = sipType_KStatusBar;
++    else if (dynamic_cast&lt;KTabBar*&gt;(sipCpp))
++        sipType = sipType_KTabBar;
++    else if (dynamic_cast&lt;KTabWidget*&gt;(sipCpp))
++        sipType = sipType_KTabWidget;
++    else if (dynamic_cast&lt;KToolBar*&gt;(sipCpp))
++        sipType = sipType_KToolBar;
++    else if (dynamic_cast&lt;Sonnet::ConfigWidget*&gt;(sipCpp))
++        sipType = sipType_Sonnet_ConfigWidget;
++%End
++%End

+ public:
+     ~KAbstractWidgetJobTracker ();
+diff --git sip/kdeui/kapplication.sip sip/kdeui/kapplication.sip
+index febcd38..3f95d9a 100644
+--- sip/kdeui/kapplication.sip
++++ sip/kdeui/kapplication.sip
+@@ -92,6 +92,7 @@ static void kdeui_UpdatePyArgv(PyObject *argvlist, int argc, char **argv)

+ public:
+     explicit                KApplication (bool GUIenabled = 1);
++%If (WS_X11)
+     explicit                KApplication (Display* display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0);
+ //force
+                             KApplication (Display* display, SIP_PYLIST list, const QByteArray&amp; rAppName, bool GUIenabled = 1) [(Display*, int&amp;, char**, const QByteArray&amp;, bool = 1)];
+@@ -119,6 +120,7 @@ public:
+         }
+ %End
+ //end
++%End
+ //ig                            KApplication (Display* display, int&amp; argc, char** argv, const QByteArray&amp; rAppName, bool GUIenabled = 1);

+     static KApplication*    kApplication ();
+@@ -141,8 +143,10 @@ public:
+     unsigned long           userTimestamp () const;
+     void                    updateRemoteUserTimestamp (const QString&amp; service, int time = 0);
+     bool                    notify (QObject* receiver, QEvent* event);
++%If (WS_X11)
+ //ig    int                     xErrhandler (Display*, void*);
+     int                     xioErrhandler (Display*);
++%End
+ //ig    void                    iceIOErrorHandler (_IceConn* conn);
+     bool loadedByKdeinit;
+     void                    updateUserTimestamp (int time = 0);
+@@ -154,8 +158,10 @@ signals:

+ protected:
+                             KApplication (bool GUIenabled, const KComponentData&amp; cData);
++%If (WS_X11)
+                             KApplication (Display* display, Qt::HANDLE visual, Qt::HANDLE colormap, const KComponentData&amp; cData);
+ //ig    bool                    x11EventFilter (XEvent*);
++%End

+ private:
+                             KApplication (const KApplication&amp;);
+--- sip/kdeui/kkeyserver_x11.sip.orig  2014-08-14 22:17:11.000000000 +0200
++++ sip/kdeui/kkeyserver_x11.sip        2015-03-08 21:49:55.000000000 +0100
+@@ -19,6 +19,7 @@
+ // You should have received a copy of the GNU General Public License
+ // along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.

++%If (WS_X11)
+ %ModuleHeaderCode
+ #include &lt;kkeyserver_x11.h&gt;
+ %End
+@@ -50,4 +51,4 @@
+ %ModuleHeaderCode
+ #include &lt;kkeyserver_x11.h&gt;
+ %End
+-
++%End
+diff --git sip/kdeui/kmanagerselection.sip sip/kdeui/kmanagerselection.sip
+index fd13239..e7acfcc 100644
+--- sip/kdeui/kmanagerselection.sip
++++ sip/kdeui/kmanagerselection.sip
+@@ -19,7 +19,7 @@
+ // You should have received a copy of the GNU General Public License
+ // along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.

+-
++%If (WS_X11)
+ class KSelectionOwner : QObject
+ {
+ %TypeHeaderCode
+@@ -71,4 +71,4 @@ public:
+ };
+ // KSelectionWatcher

+-
++%End
+diff --git sip/kdeui/kratingwidget.sip sip/kdeui/kratingwidget.sip
+index d5ced65..f17af8b 100644
+--- sip/kdeui/kratingwidget.sip
++++ sip/kdeui/kratingwidget.sip
+@@ -235,6 +235,7 @@ protected:

+ //  Subclasses of QObject

++%If (WS_X11)
+ %ConvertToSubClassCode
+     // CTSCC for subclasses of 'QObject'
+     sipType = NULL;
+@@ -650,7 +651,418 @@ protected:
+     else if (dynamic_cast&lt;Sonnet::ConfigWidget*&gt;(sipCpp))
+         sipType = sipType_Sonnet_ConfigWidget;
+ %End
++%End
++%If (!WS_X11)
++%ConvertToSubClassCode
++    // CTSCC for subclasses of 'QObject'
++    sipType = NULL;

++    if (dynamic_cast&lt;KActionCategory*&gt;(sipCpp))
++        sipType = sipType_KActionCategory;
++    else if (dynamic_cast&lt;KActionCollection*&gt;(sipCpp))
++        sipType = sipType_KActionCollection;
++    else if (dynamic_cast&lt;KCategoryDrawerV2*&gt;(sipCpp))
++        {
++        sipType = sipType_KCategoryDrawerV2;
++        if (dynamic_cast&lt;KCategoryDrawerV3*&gt;(sipCpp))
++            sipType = sipType_KCategoryDrawerV3;
++        }
++    else if (dynamic_cast&lt;KCompletion*&gt;(sipCpp))
++        sipType = sipType_KCompletion;
++    else if (dynamic_cast&lt;KConfigDialogManager*&gt;(sipCpp))
++        sipType = sipType_KConfigDialogManager;
++    else if (dynamic_cast&lt;KConfigSkeleton*&gt;(sipCpp))
++        sipType = sipType_KConfigSkeleton;
++    else if (dynamic_cast&lt;KFind*&gt;(sipCpp))
++        {
++        sipType = sipType_KFind;
++        if (dynamic_cast&lt;KReplace*&gt;(sipCpp))
++            sipType = sipType_KReplace;
++        }
++    else if (dynamic_cast&lt;KGlobalAccel*&gt;(sipCpp))
++        sipType = sipType_KGlobalAccel;
++    else if (dynamic_cast&lt;KGlobalSettings*&gt;(sipCpp))
++        sipType = sipType_KGlobalSettings;
++    else if (dynamic_cast&lt;KGlobalShortcutInfo*&gt;(sipCpp))
++        sipType = sipType_KGlobalShortcutInfo;
++    else if (dynamic_cast&lt;KHelpMenu*&gt;(sipCpp))
++        sipType = sipType_KHelpMenu;
++    else if (dynamic_cast&lt;KIconLoader*&gt;(sipCpp))
++        sipType = sipType_KIconLoader;
++    else if (dynamic_cast&lt;KAbstractWidgetJobTracker*&gt;(sipCpp))
++        {
++        sipType = sipType_KAbstractWidgetJobTracker;
++        if (dynamic_cast&lt;KStatusBarJobTracker*&gt;(sipCpp))
++            sipType = sipType_KStatusBarJobTracker;
++        else if (dynamic_cast&lt;KWidgetJobTracker*&gt;(sipCpp))
++            sipType = sipType_KWidgetJobTracker;
++        }
++    else if (dynamic_cast&lt;KUiServerJobTracker*&gt;(sipCpp))
++        sipType = sipType_KUiServerJobTracker;
++    else if (dynamic_cast&lt;KDialogJobUiDelegate*&gt;(sipCpp))
++        sipType = sipType_KDialogJobUiDelegate;
++    else if (dynamic_cast&lt;KMessageBoxMessageHandler*&gt;(sipCpp))
++        sipType = sipType_KMessageBoxMessageHandler;
++    else if (dynamic_cast&lt;KModelIndexProxyMapper*&gt;(sipCpp))
++        sipType = sipType_KModelIndexProxyMapper;
++    else if (dynamic_cast&lt;KModifierKeyInfo*&gt;(sipCpp))
++        sipType = sipType_KModifierKeyInfo;
++    else if (dynamic_cast&lt;KNotification*&gt;(sipCpp))
++        sipType = sipType_KNotification;
++    else if (dynamic_cast&lt;KNotificationRestrictions*&gt;(sipCpp))
++        sipType = sipType_KNotificationRestrictions;
++    else if (dynamic_cast&lt;KPageWidgetItem*&gt;(sipCpp))
++        sipType = sipType_KPageWidgetItem;
++    else if (dynamic_cast&lt;KPassivePopupMessageHandler*&gt;(sipCpp))
++        sipType = sipType_KPassivePopupMessageHandler;
++    else if (dynamic_cast&lt;KPixmapSequenceOverlayPainter*&gt;(sipCpp))
++        sipType = sipType_KPixmapSequenceOverlayPainter;
++    else if (dynamic_cast&lt;KStartupInfo*&gt;(sipCpp))
++        sipType = sipType_KStartupInfo;
++    else if (dynamic_cast&lt;KStatusNotifierItem*&gt;(sipCpp))
++        sipType = sipType_KStatusNotifierItem;
++    else if (dynamic_cast&lt;KViewStateMaintainerBase*&gt;(sipCpp))
++        sipType = sipType_KViewStateMaintainerBase;
++    else if (dynamic_cast&lt;KViewStateSaver*&gt;(sipCpp))
++        sipType = sipType_KViewStateSaver;
++    else if (dynamic_cast&lt;KWallet::Wallet*&gt;(sipCpp))
++        sipType = sipType_KWallet_Wallet;
++    else if (dynamic_cast&lt;KXMLGUIFactory*&gt;(sipCpp))
++        sipType = sipType_KXMLGUIFactory;
++    else if (dynamic_cast&lt;KWidgetItemDelegate*&gt;(sipCpp))
++        sipType = sipType_KWidgetItemDelegate;
++    else if (dynamic_cast&lt;KExtendableItemDelegate*&gt;(sipCpp))
++        sipType = sipType_KExtendableItemDelegate;
++    else if (dynamic_cast&lt;KPageModel*&gt;(sipCpp))
++        {
++        sipType = sipType_KPageModel;
++        if (dynamic_cast&lt;KPageWidgetModel*&gt;(sipCpp))
++            sipType = sipType_KPageWidgetModel;
++        }
++    else if (dynamic_cast&lt;KDescendantsProxyModel*&gt;(sipCpp))
++        sipType = sipType_KDescendantsProxyModel;
++    else if (dynamic_cast&lt;KIdentityProxyModel*&gt;(sipCpp))
++        {
++        sipType = sipType_KIdentityProxyModel;
++        if (dynamic_cast&lt;KCheckableProxyModel*&gt;(sipCpp))
++            sipType = sipType_KCheckableProxyModel;
++        }
++    else if (dynamic_cast&lt;KSelectionProxyModel*&gt;(sipCpp))
++        sipType = sipType_KSelectionProxyModel;
++    else if (dynamic_cast&lt;KCategorizedSortFilterProxyModel*&gt;(sipCpp))
++        sipType = sipType_KCategorizedSortFilterProxyModel;
++    else if (dynamic_cast&lt;KRecursiveFilterProxyModel*&gt;(sipCpp))
++        sipType = sipType_KRecursiveFilterProxyModel;
++    else if (dynamic_cast&lt;KAction*&gt;(sipCpp))
++        {
++        sipType = sipType_KAction;
++        if (dynamic_cast&lt;KActionMenu*&gt;(sipCpp))
++            sipType = sipType_KActionMenu;
++        else if (dynamic_cast&lt;KDualAction*&gt;(sipCpp))
++            sipType = sipType_KDualAction;
++        else if (dynamic_cast&lt;KPasteTextAction*&gt;(sipCpp))
++            sipType = sipType_KPasteTextAction;
++        else if (dynamic_cast&lt;KSelectAction*&gt;(sipCpp))
++            {
++            sipType = sipType_KSelectAction;
++            if (dynamic_cast&lt;KCodecAction*&gt;(sipCpp))
++                sipType = sipType_KCodecAction;
++            else if (dynamic_cast&lt;KFontAction*&gt;(sipCpp))
++                sipType = sipType_KFontAction;
++            else if (dynamic_cast&lt;KFontSizeAction*&gt;(sipCpp))
++                sipType = sipType_KFontSizeAction;
++            else if (dynamic_cast&lt;KRecentFilesAction*&gt;(sipCpp))
++                sipType = sipType_KRecentFilesAction;
++            }
++        else if (dynamic_cast&lt;KToggleAction*&gt;(sipCpp))
++            {
++            sipType = sipType_KToggleAction;
++            if (dynamic_cast&lt;KToggleFullScreenAction*&gt;(sipCpp))
++                sipType = sipType_KToggleFullScreenAction;
++            else if (dynamic_cast&lt;KToggleToolBarAction*&gt;(sipCpp))
++                sipType = sipType_KToggleToolBarAction;
++            }
++        else if (dynamic_cast&lt;KToolBarLabelAction*&gt;(sipCpp))
++            sipType = sipType_KToolBarLabelAction;
++        else if (dynamic_cast&lt;KToolBarPopupAction*&gt;(sipCpp))
++            sipType = sipType_KToolBarPopupAction;
++        else if (dynamic_cast&lt;KToolBarSpacerAction*&gt;(sipCpp))
++            sipType = sipType_KToolBarSpacerAction;
++        }
++    else if (dynamic_cast&lt;KApplication*&gt;(sipCpp))
++        {
++        sipType = sipType_KApplication;
++        if (dynamic_cast&lt;KUniqueApplication*&gt;(sipCpp))
++            sipType = sipType_KUniqueApplication;
++        }
++    else if (dynamic_cast&lt;KBreadcrumbSelectionModel*&gt;(sipCpp))
++        sipType = sipType_KBreadcrumbSelectionModel;
++    else if (dynamic_cast&lt;KLinkItemSelectionModel*&gt;(sipCpp))
++        sipType = sipType_KLinkItemSelectionModel;
++    else if (dynamic_cast&lt;KStyle*&gt;(sipCpp))
++        sipType = sipType_KStyle;
++    else if (dynamic_cast&lt;KSvgRenderer*&gt;(sipCpp))
++        sipType = sipType_KSvgRenderer;
++    else if (dynamic_cast&lt;Sonnet::Highlighter*&gt;(sipCpp))
++        sipType = sipType_Sonnet_Highlighter;
++    else if (dynamic_cast&lt;KSystemTrayIcon*&gt;(sipCpp))
++        sipType = sipType_KSystemTrayIcon;
++    else if (dynamic_cast&lt;KUndoStack*&gt;(sipCpp))
++        sipType = sipType_KUndoStack;
++    else if (dynamic_cast&lt;KDateValidator*&gt;(sipCpp))
++        sipType = sipType_KDateValidator;
++    else if (dynamic_cast&lt;KFloatValidator*&gt;(sipCpp))
++        sipType = sipType_KFloatValidator;
++    else if (dynamic_cast&lt;KIntValidator*&gt;(sipCpp))
++        sipType = sipType_KIntValidator;
++    else if (dynamic_cast&lt;KMimeTypeValidator*&gt;(sipCpp))
++        sipType = sipType_KMimeTypeValidator;
++    else if (dynamic_cast&lt;KStringListValidator*&gt;(sipCpp))
++        sipType = sipType_KStringListValidator;
++    else if (dynamic_cast&lt;KDoubleValidator*&gt;(sipCpp))
++        sipType = sipType_KDoubleValidator;
++    else if (dynamic_cast&lt;KActionSelector*&gt;(sipCpp))
++        sipType = sipType_KActionSelector;
++    else if (dynamic_cast&lt;KCModule*&gt;(sipCpp))
++        sipType = sipType_KCModule;
++    else if (dynamic_cast&lt;KCapacityBar*&gt;(sipCpp))
++        sipType = sipType_KCapacityBar;
++    else if (dynamic_cast&lt;KCharSelect*&gt;(sipCpp))
++        sipType = sipType_KCharSelect;
++    else if (dynamic_cast&lt;KDateTable*&gt;(sipCpp))
++        sipType = sipType_KDateTable;
++    else if (dynamic_cast&lt;KDateTimeEdit*&gt;(sipCpp))
++        sipType = sipType_KDateTimeEdit;
++    else if (dynamic_cast&lt;KDateTimeWidget*&gt;(sipCpp))
++        sipType = sipType_KDateTimeWidget;
++    else if (dynamic_cast&lt;KDateWidget*&gt;(sipCpp))
++        sipType = sipType_KDateWidget;
++    else if (dynamic_cast&lt;KEditListWidget*&gt;(sipCpp))
++        sipType = sipType_KEditListWidget;
++    else if (dynamic_cast&lt;KFadeWidgetEffect*&gt;(sipCpp))
++        sipType = sipType_KFadeWidgetEffect;
++    else if (dynamic_cast&lt;KFilterProxySearchLine*&gt;(sipCpp))
++        sipType = sipType_KFilterProxySearchLine;
++    else if (dynamic_cast&lt;KFontChooser*&gt;(sipCpp))
++        sipType = sipType_KFontChooser;
++    else if (dynamic_cast&lt;KFontRequester*&gt;(sipCpp))
++        sipType = sipType_KFontRequester;
++    else if (dynamic_cast&lt;KKeySequenceWidget*&gt;(sipCpp))
++        sipType = sipType_KKeySequenceWidget;
++    else if (dynamic_cast&lt;KLanguageButton*&gt;(sipCpp))
++        sipType = sipType_KLanguageButton;
++    else if (dynamic_cast&lt;KLed*&gt;(sipCpp))
++        sipType = sipType_KLed;
++    else if (dynamic_cast&lt;KMultiTabBar*&gt;(sipCpp))
++        sipType = sipType_KMultiTabBar;
++    else if (dynamic_cast&lt;KNumInput*&gt;(sipCpp))
++        {
++        sipType = sipType_KNumInput;
++        if (dynamic_cast&lt;KDoubleNumInput*&gt;(sipCpp))
++            sipType = sipType_KDoubleNumInput;
++        else if (dynamic_cast&lt;KIntNumInput*&gt;(sipCpp))
++            sipType = sipType_KIntNumInput;
++        }
++    else if (dynamic_cast&lt;KPageView*&gt;(sipCpp))
++        {
++        sipType = sipType_KPageView;
++        if (dynamic_cast&lt;KPageWidget*&gt;(sipCpp))
++            sipType = sipType_KPageWidget;
++        }
++    else if (dynamic_cast&lt;KPixmapRegionSelectorWidget*&gt;(sipCpp))
++        sipType = sipType_KPixmapRegionSelectorWidget;
++    else if (dynamic_cast&lt;KPixmapSequenceWidget*&gt;(sipCpp))
++        sipType = sipType_KPixmapSequenceWidget;
++    else if (dynamic_cast&lt;KShortcutWidget*&gt;(sipCpp))
++        sipType = sipType_KShortcutWidget;
++    else if (dynamic_cast&lt;KShortcutsEditor*&gt;(sipCpp))
++        sipType = sipType_KShortcutsEditor;
++    else if (dynamic_cast&lt;KTitleWidget*&gt;(sipCpp))
++        sipType = sipType_KTitleWidget;
++    else if (dynamic_cast&lt;KTreeWidgetSearchLineWidget*&gt;(sipCpp))
++        sipType = sipType_KTreeWidgetSearchLineWidget;
++    else if (dynamic_cast&lt;KXYSelector*&gt;(sipCpp))
++        {
++        sipType = sipType_KXYSelector;
++        if (dynamic_cast&lt;KHueSaturationSelector*&gt;(sipCpp))
++            sipType = sipType_KHueSaturationSelector;
++        }
++    else if (dynamic_cast&lt;KArrowButton*&gt;(sipCpp))
++        sipType = sipType_KArrowButton;
++    else if (dynamic_cast&lt;KColorButton*&gt;(sipCpp))
++        sipType = sipType_KColorButton;
++    else if (dynamic_cast&lt;KMultiTabBarButton*&gt;(sipCpp))
++        {
++        sipType = sipType_KMultiTabBarButton;
++        if (dynamic_cast&lt;KMultiTabBarTab*&gt;(sipCpp))
++            sipType = sipType_KMultiTabBarTab;
++        }
++    else if (dynamic_cast&lt;KPushButton*&gt;(sipCpp))
++        sipType = sipType_KPushButton;
++    else if (dynamic_cast&lt;KAnimatedButton*&gt;(sipCpp))
++        sipType = sipType_KAnimatedButton;
++    else if (dynamic_cast&lt;KRuler*&gt;(sipCpp))
++        sipType = sipType_KRuler;
++    else if (dynamic_cast&lt;KSelector*&gt;(sipCpp))
++        {
++        sipType = sipType_KSelector;
++        if (dynamic_cast&lt;KColorValueSelector*&gt;(sipCpp))
++            sipType = sipType_KColorValueSelector;
++        else if (dynamic_cast&lt;KGradientSelector*&gt;(sipCpp))
++            sipType = sipType_KGradientSelector;
++        }
++    else if (dynamic_cast&lt;KIntSpinBox*&gt;(sipCpp))
++        sipType = sipType_KIntSpinBox;
++    else if (dynamic_cast&lt;KColorCombo*&gt;(sipCpp))
++        sipType = sipType_KColorCombo;
++    else if (dynamic_cast&lt;KComboBox*&gt;(sipCpp))
++        {
++        sipType = sipType_KComboBox;
++        if (dynamic_cast&lt;KDateComboBox*&gt;(sipCpp))
++            sipType = sipType_KDateComboBox;
++        else if (dynamic_cast&lt;KFontComboBox*&gt;(sipCpp))
++            sipType = sipType_KFontComboBox;
++        else if (dynamic_cast&lt;KHistoryComboBox*&gt;(sipCpp))
++            sipType = sipType_KHistoryComboBox;
++        else if (dynamic_cast&lt;KTimeComboBox*&gt;(sipCpp))
++            sipType = sipType_KTimeComboBox;
++        else if (dynamic_cast&lt;Sonnet::DictionaryComboBox*&gt;(sipCpp))
++            sipType = sipType_Sonnet_DictionaryComboBox;
++        }
++    else if (dynamic_cast&lt;KDialog*&gt;(sipCpp))
++        {
++        sipType = sipType_KDialog;
++        if (dynamic_cast&lt;KAboutApplicationDialog*&gt;(sipCpp))
++            sipType = sipType_KAboutApplicationDialog;
++        else if (dynamic_cast&lt;KBugReport*&gt;(sipCpp))
++            sipType = sipType_KBugReport;
++        else if (dynamic_cast&lt;KColorDialog*&gt;(sipCpp))
++            sipType = sipType_KColorDialog;
++        else if (dynamic_cast&lt;KEditToolBar*&gt;(sipCpp))
++            sipType = sipType_KEditToolBar;
++        else if (dynamic_cast&lt;KFindDialog*&gt;(sipCpp))
++            {
++            sipType = sipType_KFindDialog;
++            if (dynamic_cast&lt;KReplaceDialog*&gt;(sipCpp))
++                sipType = sipType_KReplaceDialog;
++            }
++        else if (dynamic_cast&lt;KFontDialog*&gt;(sipCpp))
++            sipType = sipType_KFontDialog;
++        else if (dynamic_cast&lt;KNewPasswordDialog*&gt;(sipCpp))
++            sipType = sipType_KNewPasswordDialog;
++        else if (dynamic_cast&lt;KPageDialog*&gt;(sipCpp))
++            {
++            sipType = sipType_KPageDialog;
++            if (dynamic_cast&lt;KAssistantDialog*&gt;(sipCpp))
++                sipType = sipType_KAssistantDialog;
++            else if (dynamic_cast&lt;KConfigDialog*&gt;(sipCpp))
++                sipType = sipType_KConfigDialog;
++            }
++        else if (dynamic_cast&lt;KPasswordDialog*&gt;(sipCpp))
++            sipType = sipType_KPasswordDialog;
++        else if (dynamic_cast&lt;KPixmapRegionSelectorDialog*&gt;(sipCpp))
++            sipType = sipType_KPixmapRegionSelectorDialog;
++        else if (dynamic_cast&lt;KProgressDialog*&gt;(sipCpp))
++            sipType = sipType_KProgressDialog;
++        else if (dynamic_cast&lt;KShortcutsDialog*&gt;(sipCpp))
++            sipType = sipType_KShortcutsDialog;
++        else if (dynamic_cast&lt;KTipDialog*&gt;(sipCpp))
++            sipType = sipType_KTipDialog;
++        else if (dynamic_cast&lt;Sonnet::ConfigDialog*&gt;(sipCpp))
++            sipType = sipType_Sonnet_ConfigDialog;
++        else if (dynamic_cast&lt;Sonnet::Dialog*&gt;(sipCpp))
++            sipType = sipType_Sonnet_Dialog;
++        }
++    else if (dynamic_cast&lt;KDialogButtonBox*&gt;(sipCpp))
++        sipType = sipType_KDialogButtonBox;
++    else if (dynamic_cast&lt;KColorPatch*&gt;(sipCpp))
++        sipType = sipType_KColorPatch;
++    else if (dynamic_cast&lt;KDatePicker*&gt;(sipCpp))
++        sipType = sipType_KDatePicker;
++    else if (dynamic_cast&lt;KHBox*&gt;(sipCpp))
++        {
++        sipType = sipType_KHBox;
++        if (dynamic_cast&lt;KVBox*&gt;(sipCpp))
++            sipType = sipType_KVBox;
++        }
++    else if (dynamic_cast&lt;KMessageWidget*&gt;(sipCpp))
++        sipType = sipType_KMessageWidget;
++    else if (dynamic_cast&lt;KPassivePopup*&gt;(sipCpp))
++        sipType = sipType_KPassivePopup;
++    else if (dynamic_cast&lt;KPlotWidget*&gt;(sipCpp))
++        sipType = sipType_KPlotWidget;
++    else if (dynamic_cast&lt;KPopupFrame*&gt;(sipCpp))
++        sipType = sipType_KPopupFrame;
++    else if (dynamic_cast&lt;KRatingWidget*&gt;(sipCpp))
++        sipType = sipType_KRatingWidget;
++    else if (dynamic_cast&lt;KSeparator*&gt;(sipCpp))
++        sipType = sipType_KSeparator;
++    else if (dynamic_cast&lt;KCategorizedView*&gt;(sipCpp))
++        sipType = sipType_KCategorizedView;
++    else if (dynamic_cast&lt;KListWidget*&gt;(sipCpp))
++        {
++        sipType = sipType_KListWidget;
++        if (dynamic_cast&lt;KCompletionBox*&gt;(sipCpp))
++            sipType = sipType_KCompletionBox;
++        }
++    else if (dynamic_cast&lt;KColorCells*&gt;(sipCpp))
++        sipType = sipType_KColorCells;
++    else if (dynamic_cast&lt;KTimeZoneWidget*&gt;(sipCpp))
++        sipType = sipType_KTimeZoneWidget;
++    else if (dynamic_cast&lt;KTextEdit*&gt;(sipCpp))
++        {
++        sipType = sipType_KTextEdit;
++        if (dynamic_cast&lt;KRichTextEdit*&gt;(sipCpp))
++            {
++            sipType = sipType_KRichTextEdit;
++            if (dynamic_cast&lt;KRichTextWidget*&gt;(sipCpp))
++                sipType = sipType_KRichTextWidget;
++            }
++        }
++    else if (dynamic_cast&lt;KTextBrowser*&gt;(sipCpp))
++        sipType = sipType_KTextBrowser;
++    else if (dynamic_cast&lt;KSqueezedTextLabel*&gt;(sipCpp))
++        sipType = sipType_KSqueezedTextLabel;
++    else if (dynamic_cast&lt;KUrlLabel*&gt;(sipCpp))
++        sipType = sipType_KUrlLabel;
++    else if (dynamic_cast&lt;KButtonGroup*&gt;(sipCpp))
++        sipType = sipType_KButtonGroup;
++    else if (dynamic_cast&lt;KEditListBox*&gt;(sipCpp))
++        sipType = sipType_KEditListBox;
++    else if (dynamic_cast&lt;KLineEdit*&gt;(sipCpp))
++        {
++        sipType = sipType_KLineEdit;
++        if (dynamic_cast&lt;KListWidgetSearchLine*&gt;(sipCpp))
++            sipType = sipType_KListWidgetSearchLine;
++        else if (dynamic_cast&lt;KRestrictedLine*&gt;(sipCpp))
++            sipType = sipType_KRestrictedLine;
++        else if (dynamic_cast&lt;KTreeWidgetSearchLine*&gt;(sipCpp))
++            sipType = sipType_KTreeWidgetSearchLine;
++        }
++    else if (dynamic_cast&lt;KMainWindow*&gt;(sipCpp))
++        {
++        sipType = sipType_KMainWindow;
++        if (dynamic_cast&lt;KXmlGuiWindow*&gt;(sipCpp))
++            sipType = sipType_KXmlGuiWindow;
++        }
++    else if (dynamic_cast&lt;KMenu*&gt;(sipCpp))
++        sipType = sipType_KMenu;
++    else if (dynamic_cast&lt;KMenuBar*&gt;(sipCpp))
++        sipType = sipType_KMenuBar;
++    else if (dynamic_cast&lt;KSplashScreen*&gt;(sipCpp))
++        sipType = sipType_KSplashScreen;
++    else if (dynamic_cast&lt;KStatusBar*&gt;(sipCpp))
++        sipType = sipType_KStatusBar;
++    else if (dynamic_cast&lt;KTabBar*&gt;(sipCpp))
++        sipType = sipType_KTabBar;
++    else if (dynamic_cast&lt;KTabWidget*&gt;(sipCpp))
++        sipType = sipType_KTabWidget;
++    else if (dynamic_cast&lt;KToolBar*&gt;(sipCpp))
++        sipType = sipType_KToolBar;
++    else if (dynamic_cast&lt;Sonnet::ConfigWidget*&gt;(sipCpp))
++        sipType = sipType_Sonnet_ConfigWidget;
++%End
++%End
+ public:
+     ~KRatingWidget ();
+ };
+diff --git sip/kdeui/kuniqueapplication.sip sip/kdeui/kuniqueapplication.sip
+index d9b9ce3..cffc66b 100644
+--- sip/kdeui/kuniqueapplication.sip
++++ sip/kdeui/kuniqueapplication.sip
+@@ -29,7 +29,9 @@ class KUniqueApplication : KApplication

+ public:
+     explicit                KUniqueApplication (bool GUIenabled = 1, bool configUnique = 0);
++%If (WS_X11)
+     explicit                KUniqueApplication (Display* display, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0, bool configUnique = 0);
++%End
+     static void             addCmdLineOptions ();


+diff --git sip/kdeui/kwallet.sip sip/kdeui/kwallet.sip
+index e05454a..11308c4 100644
+--- sip/kdeui/kwallet.sip
++++ sip/kdeui/kwallet.sip
+@@ -106,7 +106,9 @@ protected:
+ //ig    virtual void            virtual_hook (int id, void* data);
+ public:
+     ~Wallet ();
++%If (!WS_MACX)
+     static bool             isUsingKSecretsService ();
++%End
+ };
+ // Wallet

+diff --git sip/kdeui/kwindowinfo.sip sip/kdeui/kwindowinfo.sip
+index 24e060c..498ebca 100644
+--- sip/kdeui/kwindowinfo.sip
++++ sip/kdeui/kwindowinfo.sip
+@@ -50,12 +50,14 @@ public:
+     int                     desktop () const;
+     QRect                   geometry () const;
+     QRect                   frameGeometry () const;
++%If (WS_X11)
+     WId                     transientFor () const;
+     WId                     groupLeader () const;
+     QByteArray              windowClassClass () const;
+     QByteArray              windowClassName () const;
+     QByteArray              windowRole () const;
+     QByteArray              clientMachine () const;
++%End
+     bool                    actionSupported (NET::Action action) const;
+                             KWindowInfo (const KWindowInfo&amp;);
+     ~KWindowInfo ();
+diff --git sip/kdeui/kwindowsystem.sip sip/kdeui/kwindowsystem.sip
+index 161f6c0..955fcc6 100644
+--- sip/kdeui/kwindowsystem.sip
++++ sip/kdeui/kwindowsystem.sip
+@@ -24,6 +24,7 @@ class KWindowSystem : QObject, NET
+ {
+ %TypeHeaderCode
+ #include &lt;kwindowsystem.h&gt;
++#include &lt;../../Library/Frameworks/QtGui.framework/Versions/4/Headers/qstyleoption.h&gt;
+ %End


+@@ -44,8 +45,10 @@ public:
+     static void             setOnAllDesktops (WId win, bool b);
+     static void             setOnDesktop (WId win, int desktop);
+     static void             setMainWindow (QWidget* subwindow, WId mainwindow);
++%If (WS_X11)
+     static WId              transientFor (WId window);
+     static WId              groupLeader (WId window);
++%End
+     static QPixmap          icon (WId win, int width = -1, int height = -1, bool scale = 0);

+     enum IconSource
+@@ -77,11 +80,13 @@ public:
+     static bool             allowedActionsSupported ();
+     static QString          readNameProperty (WId window, unsigned long atom);
+     static void             doNotManage (const QString&amp; title);
++%If (WS_X11)
+     static bool             mapViewport ();
+     static int              viewportToDesktop (const QPoint&amp; pos);
+     static int              viewportWindowToDesktop (const QRect&amp; r);
+     static QPoint           desktopToViewport (int desktop, bool absolute);
+     static QPoint           constrainViewportRelativePosition (const QPoint&amp; pos);
++%End

+ signals:
+     void                    currentDesktopChanged (int desktop);
+diff --git sip/kdeui/kxmessages.sip sip/kdeui/kxmessages.sip
+index 1b3438c..f69170d 100644
+--- sip/kdeui/kxmessages.sip
++++ sip/kdeui/kxmessages.sip
+@@ -20,6 +20,7 @@
+ // along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.


++%If (WS_X11)
+ class KXMessages : QWidget
+ {
+ %TypeHeaderCode
+@@ -48,5 +49,6 @@ public:
+     ~KXMessages ();
+ };
+ // KXMessages
++%End


+diff --git sip/kdeui/kxutils.sip sip/kdeui/kxutils.sip
+index 9327afd..1f56920 100644
+--- sip/kdeui/kxutils.sip
++++ sip/kdeui/kxutils.sip
+@@ -18,6 +18,7 @@
+ // You should have received a copy of the GNU General Public License
+ // along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.

++%If (WS_X11)
+ %ModuleHeaderCode
+ #include &lt;kxutils.h&gt;
+ %End
+@@ -28,5 +29,5 @@ int                     timestampCompare (unsigned long time1, unsigned long tim
+ int                     timestampDiff (unsigned long time1, unsigned long time2);
+ };
+ // KXUtils
+-
++%End

+diff --git sip/kdeui/netwm.sip sip/kdeui/netwm.sip
+index 2084144..26de24f 100644
+--- sip/kdeui/netwm.sip
++++ sip/kdeui/netwm.sip
+@@ -19,6 +19,7 @@
+ // You should have received a copy of the GNU General Public License
+ // along with this program.  If not, see &lt;http://www.gnu.org/licenses/&gt;.

++%If (WS_X11)
+ %ModuleHeaderCode
+ #include &lt;netwm.h&gt;
+ %End
+@@ -286,3 +287,4 @@ public:
+ typedef ulong Time;

+ //end
++%End
+--- sip/kdeui/orig.netwm_def.sip        2015-03-09 23:44:12.000000000 +0100
++++ sip/kdeui/netwm_def.sip        2015-03-09 23:39:11.000000000 +0100
+@@ -111,6 +111,7 @@
+ {
+ %TypeHeaderCode
+ #include &lt;netwm_def.h&gt;
++#include &lt;../../../../../../Library/Frameworks/QtGui.framework/Versions/4/Headers/qstyleoption.h&gt;
+ %End


+@@ -200,7 +201,9 @@
+         AllTypesMask
+     };

++%If (WS_X11)
+     static bool             typeMatchesMask (NET::WindowType type, unsigned long mask);
++%End

+     enum State
+     {
+@@ -353,7 +356,9 @@
+         DesktopLayoutCornerBottomRight
+     };

++%If (WS_X11)
+     static int              timestampCompare (unsigned long time1, unsigned long time2);
+     static int              timestampDiff (unsigned long time1, unsigned long time2);
++%End
+ };
+ // NET
</ins></span></pre></div>
<a id="trunkdportskdepypykde4filespythonpluginfactory_python3diff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/pythonpluginfactory_python3.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/pythonpluginfactory_python3.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/pythonpluginfactory_python3.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,100 @@
</span><ins>+Enable kpythonpluginfactory to build for Python 3 as well.  Should be
+upstreamed after more testing.
+Note: It is OK for the Python and Python3 versions to have the same name
+because of the version specific ABI tags in Python 3 so files and the fact
+that Python 3 interpreters will search for those first.
+Copyright (C) 2012 Barry A. Warsaw &lt;barry@python.org&gt;
+Index: pykde4-4.13.97/kpythonpluginfactory/kpythonpluginfactory.cpp
+===================================================================
+--- kpythonpluginfactory/kpythonpluginfactory.cpp.orig
++++ kpythonpluginfactory/kpythonpluginfactory.cpp
+@@ -29,6 +29,10 @@
+ #include &lt;kcomponentdata.h&gt;
+ #include &lt;kdebug.h&gt;

++#if PY_MAJOR_VERSION &gt;= 3
++#define PY3
++#endif
++
+ /*
+ This implements a plugin factory for running Python plugins. It also
+ supports io-slaves with a kdemain() entry point.
+@@ -347,17 +351,48 @@ int kdemain( int argc, char **argv )
+     PyObject *pModule;
+     char *protocol = argv[1];

++#ifdef PY3
++    /* Python 3 requires wchar_t*s for its Py_SetProgramName() and
++       PySys_SetArgv() calls.  Python 2 uses the typical char*s.  This is
++       probably not the best way to do it, but the algorithm is based on
++       Python 3's main().
++    */
++    wchar_t **program_args = (wchar_t **)PyMem_Malloc(
++        sizeof(wchar_t *) * (argc + 1));
++    char *old_locale;
++    const char *argv_i;
++
++    if (!program_args) {
++        /* out of memory */
++        Py_FatalError(&quot;out of memory&quot;);
++    }
++    for (int i = 0; i &lt; argc; i++) {
++        program_args[i] = (wchar_t *)PyMem_Malloc(
++            sizeof(wchar_t) * (strlen(argv[i]) + 1));
++        if (!program_args[i]) {
++            Py_FatalError(&quot;out of memory&quot;);
++        }
++        argv_i = argv[i];
++        if (mbsrtowcs(program_args[i], &amp;argv_i, strlen(argv[i]), NULL) &lt; 0) {
++            /* The conversion failed. */
++            Py_FatalError(&quot;conversion to wchar_t* failed&quot;);
++        }
++    }
++#else
++    char **program_args = argv;
++#endif  // PY3
++
+     kDebug() &lt;&lt; &quot;Python kioslave starting&quot;;
+     KComponentData slave(protocol);
+     kDebug() &lt;&lt; &quot;Created KComponentData for protocol &quot; &lt;&lt; protocol;

+     QLibrary *pyLib = LoadPythonLibrary();

+-    Py_SetProgramName(argv[0]);
++    Py_SetProgramName(program_args[0]);
+     Py_Initialize();

+     //PyEval_InitThreads();
+-    PySys_SetArgv(1, argv);
++    PySys_SetArgv(1, program_args);

+     QString completePath = KStandardDirs::locate(&quot;data&quot;, QString(&quot;kio_python/%1/%2.py&quot;).arg(protocol).arg(protocol));
+     kDebug() &lt;&lt; &quot;Path to Python kioslace is &quot; &lt;&lt; completePath;
+@@ -388,8 +423,8 @@ int kdemain( int argc, char **argv )
+     }
+     PyObject *pClass, *pArgs, *pArg1, *pArg2;
+     pArgs = PyTuple_New(2);
+-    pArg1 = PyString_FromString(argv[2]);
+-    pArg2 = PyString_FromString(argv[3]);
++    pArg1 = PyBytes_FromString(argv[2]);
++    pArg2 = PyBytes_FromString(argv[3]);
+     PyTuple_SetItem(pArgs, 0, pArg1);
+     PyTuple_SetItem(pArgs, 1, pArg2);
+     RunFunction(factoryFunction, pArgs);
+Index: pykde4-4.13.97/CMakeLists.txt
+===================================================================
+--- CMakeLists.txt.orig
++++ CMakeLists.txt
+@@ -275,8 +275,10 @@ endif(DEFAULT_PYTHON_VERSION)
+ add_subdirectory(tools)
+ #add_subdirectory(docs)
+ add_subdirectory(examples)
+-if (PYTHON_VERSION_MAJOR LESS 3 AND DEFAULT_PYTHON_VERSION)
++# Due to version specific ABI tagging in Python 3 so files, we can build for
++# all Python 3 versions without a problem.
++if ((PYTHON_VERSION_MAJOR LESS 3 AND DEFAULT_PYTHON_VERSION) OR PYTHON_VERSION_MAJOR GREATER 2)
+     add_subdirectory(kpythonpluginfactory)
+-endif (PYTHON_VERSION_MAJOR LESS 3 AND DEFAULT_PYTHON_VERSION)
++endif ((PYTHON_VERSION_MAJOR LESS 3 AND DEFAULT_PYTHON_VERSION) OR PYTHON_VERSION_MAJOR GREATER 2)

+ feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
</ins></span></pre></div>
<a id="trunkdportskdepypykde4filespythonpluginfactory_use_versioned_python_libdiff"></a>
<div class="addfile"><h4>Added: trunk/dports/kde/py-pykde4/files/pythonpluginfactory_use_versioned_python_lib.diff (0 => 135592)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/dports/kde/py-pykde4/files/pythonpluginfactory_use_versioned_python_lib.diff                                (rev 0)
+++ trunk/dports/kde/py-pykde4/files/pythonpluginfactory_use_versioned_python_lib.diff        2015-04-27 16:55:07 UTC (rev 135592)
</span><span class="lines">@@ -0,0 +1,21 @@
</span><ins>+From: Sune Vuorela &lt;sune@debian.org&gt;
+Subject: Make kpythonfactory dlopen versioned python library.
+Bug-Debian: http://bugs.debian.org/524685
+Bug-Debian: http://bugs.debian.org/541999
+Last-Update: 2009-09-19
+Forwarded: no
+Origin: vendor
+
+Otherwise, python-dev would be needed for Python Plugin factory to work.
+
+--- kpythonpluginfactory/kpythonpluginfactory.cpp.orig
++++ kpythonpluginfactory/kpythonpluginfactory.cpp
+@@ -307,7 +307,7 @@ QLibrary *LoadPythonLibrary()
+ {
+     QLibrary *pythonLib = new QLibrary();
+     pythonLib-&gt;setLoadHints(QLibrary::ExportExternalSymbolsHint);
+-    pythonLib-&gt;setFileName(LIB_PYTHON);
++    pythonLib-&gt;setFileName(LIB_PYTHON &quot;.1&quot;);
+     pythonLib-&gt;load();
+     return pythonLib;
+ }
</ins></span></pre>
</div>
</div>

</body>
</html>