On 10/6/07, <b class="gmail_sendername">Phil Thompson</b> &lt;<a href="mailto:phil@riverbankcomputing.co.uk">phil@riverbankcomputing.co.uk</a>&gt; wrote:<div><span class="gmail_quote"></span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Saturday 06 October 2007, Arve Knudsen wrote:<br>&gt; On 10/6/07, Phil Thompson &lt;<a href="mailto:phil@riverbankcomputing.co.uk">phil@riverbankcomputing.co.uk</a>&gt; wrote:<br>&gt; &gt; On Saturday 06 October 2007, Arve Knudsen wrote:
<br>&gt; &gt; &gt; On 10/6/07, Phil Thompson &lt;<a href="mailto:phil@riverbankcomputing.co.uk">phil@riverbankcomputing.co.uk</a>&gt; wrote:<br>&gt; &gt; &gt; &gt; On Friday 05 October 2007, Arve Knudsen wrote:<br>&gt; &gt; &gt; &gt; &gt; Hi
<br>&gt; &gt; &gt; &gt; &gt; I&#39;ve just written a Designer plugin in Python, which I have to say<br>&gt; &gt;<br>&gt; &gt; is<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; very<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; nice. However I discovered some surprising behaviour in pyuic. My
<br>&gt; &gt; &gt; &gt; &gt; widget contains Qt properties (defined using pyqtProperty), but the<br>&gt; &gt; &gt; &gt; &gt; generated<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; code<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; don&#39;t use the properties, instead it tries to use the underlying
<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; methods!?<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; I discovered this for the reason that I use a different naming<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; convention
<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; than pyuic apparently expected. For instance, I had a property<br>&gt; &gt;<br>&gt; &gt; &quot;value&quot;,<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; for<br>&gt; &gt; &gt; &gt;
<br>&gt; &gt; &gt; &gt; &gt; which pyuic expected there to be a setter method &quot;setValue&quot;. I hope<br>&gt; &gt;<br>&gt; &gt; it<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; isn&#39;t on purpose that pyuic tries to use underlying methods instead
<br>&gt; &gt;<br>&gt; &gt; of<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; the<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; properties themselves?<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; I&#39;m using PyQt 4.3
 commercial edition.<br>&gt; &gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; &gt; Thanks,<br>&gt; &gt; &gt; &gt; &gt; Arve<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; If everything is working as it should then it depends on what you
<br>&gt; &gt; &gt; &gt; have called<br>&gt; &gt; &gt; &gt; the setter. If it begins with &quot;set&quot; then pyuic (and uic) should use<br>&gt; &gt; &gt; &gt; it directly and not use setProperty(). However this has probably not
<br>&gt; &gt; &gt; &gt; had<br>&gt; &gt;<br>&gt; &gt; a<br>&gt; &gt;<br>&gt; &gt; &gt; &gt; lot<br>&gt; &gt; &gt; &gt; of testing.<br>&gt; &gt; &gt; &gt;<br>&gt; &gt; &gt; &gt; What have you called your setter?<br>&gt; &gt; &gt;
<br>&gt; &gt; &gt; Let&#39;s say the property is called &quot;value&quot;. I called my setter<br>&gt; &gt; &gt; _set_value, pyuic inferred the setter&#39;s name to be setValue.<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; Does uic behave differently to pyuic?
<br>&gt; &gt; &gt;<br>&gt; &gt; &gt;<br>&gt; &gt; &gt; I haven&#39;t used uic for some time, but this point is kind of moot since<br>&gt; &gt;<br>&gt; &gt; C++<br>&gt; &gt;<br>&gt; &gt; &gt; doesn&#39;t have properties while Python does :)
<br>&gt; &gt;<br>&gt; &gt; Qt/C++ does have properties.<br>&gt; &gt;<br>&gt; &gt; &gt; The point is that I can&#39;t see<br>&gt; &gt; &gt; that there is any reason for pyuic to try and use the setter method,<br>&gt; &gt;<br>
&gt; &gt; when<br>&gt; &gt;<br>&gt; &gt; &gt; it can simply use the property (i.e., obj.value = something).<br>&gt; &gt;<br>&gt; &gt; Because it needs to have the same behaviour as uic. If it doesn&#39;t then it<br>&gt; &gt; is
<br>&gt; &gt; clearly a pyuic bug. If not then it may be a bug in the implementation of<br>&gt; &gt; pyqtProperty.<br>&gt;<br>&gt; I&#39;m not sure I follow you here, but I&#39;ll let you comment on my attached<br>&gt; example first.
<br>&gt;<br>&gt; Can you send me a .ui file?<br>&gt;<br>&gt;<br>&gt; Better yet, I&#39;ve attached a modified PyDemo example where the setZoom<br>&gt; method is renamed to _set_zoom (to mimic my naming convention) and a basic
<br>&gt; form using the widget. This illustrates the problem. There&#39;s no problem<br>&gt; modifying PyDemo&#39;s zoom property as it were another attribute, e.g.,<br>&gt; demo.zoom = 1, but the pyuic generated code insists on calling setZoom
<br>&gt; which isn&#39;t there.<br><br>It is fixed in tonight&#39;s snapshot. The fix is to call setProperty() (as uic<br>does). Setting the attribute directly would only work if the property was<br>defined using pyqtProperty, but pyuic cannot distinguish between those and
<br>ordinary Qt properties and so it has to assume the latter.</blockquote><div><br>Great, thanks for fixing this. I didn&#39;t consider that pyuic has to deal with both Qt and PyQt properties.<br><br>Arve<br></div><br></div>
<br>