Hi William,<br><br><div class="gmail_quote">On Thu, May 10, 2012 at 11:28 AM, William Kyngesburye <span dir="ltr">&lt;<a href="mailto:woklist@kyngchaos.com" target="_blank">woklist@kyngchaos.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
On May 10, 2012, at 11:43 AM, Larry Shaffer wrote:<br>
<br>
&gt; Hi William,<br>
&gt;<br>
&gt; On Thu, May 10, 2012 at 8:26 AM, William Kyngesburye &lt;<a href="mailto:woklist@kyngchaos.com">woklist@kyngchaos.com</a>&gt; wrote:<br>
&gt; On May 9, 2012, at 12:08 PM, Larry Shaffer wrote:<br>
&gt;<br>
&gt; &gt; During a recent audit of almost every PyQGIS plugin (casually studying repetitive design patterns) and helping some users on <a href="http://gis.stackexhange.com" target="_blank">gis.stackexhange.com</a> [0] I have come across an issue that may affect over 30 plugins (for now, only on Mac).<br>

&gt; &gt;<br>
&gt; &gt; From what I can gather, William Kyngesburye&#39;s Mac builds (and Unix/Linux, too?) consistently use a current, stable version of Qt, now at 4.8, while the OSGEO4W package is at 4.4 [1]. This hasn&#39;t been an issue since, I believe (and assume), the bundled Qt in Mac builds included Qt3 support. The most recent 1.7.4 Mac version appears to have a bundled Qt with no Qt3 support (is this correct?).<br>

&gt; &gt;<br>
&gt; I haven&#39;t included Qt3Support since QGIS 1.2, when the last of the Qt3 usage was removed (I think GRASS plugin was the last holdout).<br>
&gt;<br>
&gt; I&#39;m referring to Qt4 being compiled with the legacy &#39;-qt3support&#39; option (supposedly on by default [0]), not direct Qt3 support (frameworks, etc). Recently, when there was an issue with QWebKit on 10.6, you posted a configure line for compiling Qt4 to fix the problem [1]. I noted that you chose the &#39;-no-qt3support&#39; option. Is that the same Qt you used for bundling the recent QGIS 1.7.4-x? Had you nixed -qt3support in past builds, or used Nokia&#39;s pre-compiled Qt4 builds with &#39;-qt3support&#39;?<br>

&gt;<br>
&gt; [0] <a href="http://qt-project.org/doc/qt-4.8/configure-options.html" target="_blank">http://qt-project.org/doc/qt-4.8/configure-options.html</a><br>
&gt; [1] <a href="http://osgeo-org.1560.n6.nabble.com/OS-X-QtWebKit-problem-fixed-PyQwt-still-broken-td4513113.html#a4519323" target="_blank">http://osgeo-org.1560.n6.nabble.com/OS-X-QtWebKit-problem-fixed-PyQwt-still-broken-td4513113.html#a4519323</a><br>

&gt;<br>
&quot;Qt3Support&quot; is the library/framework you get with the qt3support compile option.  I don&#39;t think there is anything extra in the other frameworks/libraries when you compile with this option.<br></blockquote>
<div><br>Thank you for the clarification on the Qt3Support framework.<br><br>OK, I think I&#39;ve figured it out. When compiling Qt, and setting the -qt3support option, the variable QT3_SUPPORT is set [0]. While this is expected to produce the Qt3Support framework, it also affects the build of Qt4 frameworks in ~580 places (results of search for &#39;#ifdef QT3_SUPPORT&#39; in src directory [1]). This includes QAction, which is reverted to emitting the activated() signal again [2][3].<br>
<br>The upshot of this is PyQt4, when compiled against a Qt4 build with the -qt3support option, will have that support, regardless (I think) of whether the Qt3Support framework is included in the Mac app bundle or not.<br>
<br>So, I&#39;m guessing that when you compiled Qt to fix the QWebKit issue (with no -qt3support option) you truly nixed the Qt3 support, as expected. BTW, I think this is good: it will ferret-out the current plugins still relying upon legacy Qt3 code (unfortunately only on Mac, causing some confusion for users).<br>
<br>[0] <a href="http://qt.gitorious.org/qt/qt/blobs/4.8/src/qbase.pri#line163">http://qt.gitorious.org/qt/qt/blobs/4.8/src/qbase.pri#line163</a><br>[1] <a href="http://dl.dropbox.com/u/4058089/qgis/ifdef_QT3_SUPPORT.txt">http://dl.dropbox.com/u/4058089/qgis/ifdef_QT3_SUPPORT.txt</a><br>
[2] <a href="http://qt.gitorious.org/qt/qt/blobs/4.8/src/gui/kernel/qaction.h#line232">http://qt.gitorious.org/qt/qt/blobs/4.8/src/gui/kernel/qaction.h#line232</a><br>[3] <a href="http://qt.gitorious.org/qt/qt/blobs/4.8/src/gui/kernel/qaction.cpp#line1260">http://qt.gitorious.org/qt/qt/blobs/4.8/src/gui/kernel/qaction.cpp#line1260</a><br>
<br><br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
&gt; &gt; This has caused many PyQGIS plugins to fail to launch on Mac, due to their use of a Qt3-only QAction signal of activated() in a plugin&#39;s initGui() method. Basically, the plugin does not launch (i.e. does nothing), with no error. However, for Windows users, the plugin launches fine, causing problems when trying to offer cross-platform support for plugin issues.<br>

&gt; &gt;<br>
&gt; &gt; Can someone else verify these findings?<br>
&gt; &gt;<br>
&gt; &gt; I am slightly surprised Qt3 is still supported, and think dropping its support sounds like a good idea, especially for QGIS version 1.8 or &gt;, but certainly don&#39;t know all the details on versioning for QGIS distributions. I understand this may cause problems with the OSGEO4W package. (btw: Why is it still on Qt 4.4?)<br>

&gt; &gt;<br>
&gt; I would assume that Qt3 usage in external plugins would require support in PyQt, but PyQt has never compiled a PyQt3 module for me, and I&#39;m not sure if it can, or how.<br>
&gt;<br>
&gt; Can you think of anything else that might have caused this issue, via differences between your 1.7.3 and 1.7.4 builds? It may be even between the latest 1.7.4-x builds. I can try to re-install each of the versions to find when the issue occurs.<br>

&gt;<br>
There is something going on with the Qt 4.8.1 that I upgraded to in QGIS 1.7.4 (1.7.3 used Qt 4.8.0, which had the QtWebKit problem) - there are mysterious crashes is various places.  There may be other problems in the latest Qt that don&#39;t cause a crash, but break plugins.<br>

<br>
&gt;<br>
&gt; &gt; Here are the plugins I have found that use the deprecated activated() signal, including two core C++ [2]<br>
&gt;<br>
&gt; This is odd because those plugins then should not even compile if Qt3 is missing.  And spatialquery works for me without Qt3Support.  (GRASS works, but has its own problems)<br>
&gt;<br>
&gt; The &#39;Hello World&#39; plugin is the simplest for testing/exhibiting the issue [2]. Odd that I get no launch of Spatial Query plugin, on all my 1.7.4-4 installs, but you&#39;re having success with it.<br>
&gt;<br>
&gt; [2] <a href="http://plugins.qgis.org/plugins/HelloWorld/" target="_blank">http://plugins.qgis.org/plugins/HelloWorld/</a><br>
&gt;<br>
I tried on OSX 10.7, I&#39;ll try it this evening on OSX 10.6 when I get home.<br></blockquote><div><br>I tried with 1.7.4-4 on 10.7 and 10.6.8 with same results: no launching of plugins. It works with my nightly builds of QGIS (1.8 RC1), which are bundled with &#39;-D QGIS_MACAPP_BUNDLE=2&#39;, i.e. app does not contain the Qt3Support framework, but PyQt4 still supports the Qt3 deprecated features (as noted above), allowing all of the affected plugins to launch [4].<br>
 <br>[4] <a href="http://dl.dropbox.com/u/4058089/qgis/qt3support_with-no-framework.png">http://dl.dropbox.com/u/4058089/qgis/qt3support_with-no-framework.png</a><br><br><br><br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">

&gt;<br>
&gt; &gt; and a ZIP archive of the particular files that I found to contain that signal [3]. Without a complete examination of each plugin, I am not entirely certain all of the signals are of QAction. I tried to include only those that appear to be. (Note: there may be more uses of Qt3 deprecated methods, etc.)<br>

&gt; &gt;<br>
&gt; &gt; Please correct me if I am off on my assessment of this situation, or if I am late to the discussion.<br>
&gt; &gt;<br>
&gt; &gt; [0] <a href="http://gis.stackexchange.com/a/22953/6725" target="_blank">http://gis.stackexchange.com/a/22953/6725</a> , <a href="http://gis.stackexchange.com/a/24860/6725" target="_blank">http://gis.stackexchange.com/a/24860/6725</a><br>

&gt; &gt; [1] <a href="http://trac.osgeo.org/osgeo4w/wiki/pkg-qt4-libs" target="_blank">http://trac.osgeo.org/osgeo4w/wiki/pkg-qt4-libs</a><br>
&gt; &gt; [2] <a href="http://dl.dropbox.com/u/4058089/qgis/plugins_contain-qt3activated.txt" target="_blank">http://dl.dropbox.com/u/4058089/qgis/plugins_contain-qt3activated.txt</a><br>
&gt; &gt; [3] <a href="http://dl.dropbox.com/u/4058089/qgis/plugins_contain-qt3activated.zip" target="_blank">http://dl.dropbox.com/u/4058089/qgis/plugins_contain-qt3activated.zip</a><br>
&gt; &gt;<br>
&gt; &gt; Regards,<br>
&gt; &gt;<br>
&gt; &gt; Larry Shaffer<br>
&gt; &gt; Dakota Cartography<br>
&gt; &gt; Black Hills, South Dakota<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; Qgis-developer mailing list<br>
&gt; &gt; <a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><br>
&gt; &gt; <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
&gt;<br>
&gt; -----<br>
&gt; William Kyngesburye &lt;kyngchaos*at*kyngchaos*dot*com&gt;<br>
&gt; <a href="http://www.kyngchaos.com/" target="_blank">http://www.kyngchaos.com/</a><br>
&gt;<br>
&gt; &quot;History is an illusion caused by the passage of time, and time is an illusion caused by the passage of history.&quot;<br>
&gt;<br>
&gt; - Hitchhiker&#39;s Guide to the Galaxy<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Qgis-developer mailing list<br>
&gt; <a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><br>
&gt; <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
<br>
-----<br>
William Kyngesburye &lt;kyngchaos*at*kyngchaos*dot*com&gt;<br>
<a href="http://www.kyngchaos.com/" target="_blank">http://www.kyngchaos.com/</a><br>
<br>
Theory of the Universe<br>
<br>
There is a theory which states that if ever anyone discovers exactly what the universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarrely inexplicable.  There is another theory which states that this has already happened.<br>

<br>
-Hitchhiker&#39;s Guide to the Galaxy 2nd season intro<br>
<br>
<br>
</blockquote></div><br>Regards,<br><br>Larry Shaffer<br>Dakota Cartography<br>Black Hills, South Dakota<br>
<br>