<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Oops,<br>
<br>
That should have been composerWillBeRemoved<br>
<br>
Sorry for that...<br>
<br>
Matthias<br>
<br>
<div class="moz-cite-prefix">On 04/07/2015 10:07 PM, Junior Delaz
wrote:<br>
</div>
<blockquote
cite="mid:CAECJsSq3HTyGW0Hw3_L+Uf2j2CTfs7EJc-yhz50B0vTt3F=pkg@mail.gmail.com"
type="cite">
<div dir="ltr">
<div><font>Thank you Matthias for your perseverance. It's very
helpful and encouraging for beginners.<br>
</font></div>
<font>I have already tried composerRemoved but when loading the
plugin, QGIS complains :</font><br>
<span style="color:rgb(255,0,0)"><br>
Impossible de charger l'extension MapsPrinter provoque une
erreur lors de l'appel de sa méthode initGui()</span><br>
<pre style="margin:12px 0px;text-indent:0px"><span style="font-family:"Courier New,courier"">Traceback (most recent call last):
File "C:/OSGeo4W/apps/qgis/./python\qgis\utils.py", line 228, in startPlugin
plugins[packageName].initGui()
File "C:/Users/harrissou/.qgis2/python/plugins\MapsPrinter\maps_printer.py", line 129, in initGui
self.iface.composerRemoved.connect(self.refreshList)
AttributeError: 'QgisInterface' object has no attribute 'composerRemoved'
</span></pre>
<pre style="margin:12px 0px;text-indent:0px"><font size="4"><span style="font-family:"Courier New,courier"">This happens with all the versions of QGIS I use :
- osgeo4w 32bits (windows 8), </span></font><font size="4"><span style="font-family:"Courier New,courier""><font size="4"><span style="font-family:"Courier New,courier"">osgeo4w </span></font>64bits (windows 7): either with QGIS 2.8, 2.8rel-dev and 2.9
- and Mac OS 10.9 (it is a QGIS 2.4 but composerRemoved is supposed to have been added since QGIS 2.3 [0])
</span></font></pre>
<pre style="margin:12px 0px;text-indent:0px"><font size="4"><span style="font-family:"Courier New,courier"">About Qt.QueuedConnection, my first tests were on the Mac OS (x86-64) and Osgeo4w 64bits versions. But I never encountered crash with the 32 bits version, using the same code. Can the bug be bound to the architecture?
</span></font></pre>
<pre style="margin:12px 0px;text-indent:0px"><font size="4"><span style="font-family:"Courier New,courier"">[0] </span></font><a moz-do-not-send="true" href="https://github.com/qgis/QGIS/blob/master/src/app/qgisapp.h#L1260">https://github.com/qgis/QGIS/blob/master/src/app/qgisapp.h#L1260</a>
</pre>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2015-04-06 22:11 GMT+02:00 Matthias
Kuhn <span dir="ltr"><<a moz-do-not-send="true"
href="mailto:matthias@opengis.ch" target="_blank">matthias@opengis.ch</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0
.8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hi Junior,<br>
<br>
The following lines work for a short test-case.<br>
<br>
def compAdded( composer ):<br>
print composer<br>
<br>
def compRemoved( composer ):<br>
print composer<br>
<br>
iface.composerAdded.connect( compAdded )<br>
iface.composerRemoved.connect( compRemoved )<br>
<br>
It is possible that the QueuedConnection crashes because
along with it a composer is emitted which at the time the
slot is executed is already deleted. That was only a
possible approach which I did not test and reading your
report seems unstable.<span class="HOEnZb"><font
color="#888888"><br>
<br>
Matthias</font></span>
<div>
<div class="h5"><br>
<br>
<div>On 04/06/2015 12:33 AM, Junior Delaz wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>Hi,<br>
</div>
I do understand nothing.<br>
</div>
<div>After I read your message, Matthias, I told
myself that using QT. QueuedConnection should be
the easiest way. Then i wrote <br>
self.iface.composerWillBeRemoved.connect(self.refreshList,
Qt.QueuedConnection)<br>
But each time i delete a composer, QGIS crashes.<br>
</div>
<div>So I've spent the week on reading about
Qt.QueuedConnection and then signal and slots,
function partial, QSignalMapper, sender trying
to understand how I can catch the sender and
manage to update my list. All this without
success in the code.<br>
</div>
<div>And today, I tried again Qt.QueuedConnection,
QGIS crashed. Without any changes, I tried again
and it worked and continues to work. Adding and
deleting composer in the composer manager echoes
in my list.<br>
</div>
<div>I hope it will remain like that. <br>
</div>
<div><br>
</div>
<div>But now I realize that I didn't take into
account the renaming of a composer. :(<br>
<br>
</div>
<div>I think I'd wisely keep the refreshlist
button unless someone tells me how I can reach
the composer manager dialog programmatically. So
that I will try to synchronize my list with its
widgetlistitems...<br>
</div>
<div><br>
</div>
<div>Thanks for all...<br>
</div>
<div><br>
</div>
</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2015-03-31 14:50
GMT+02:00 Matthias Kuhn <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:matthias@opengis.ch"
target="_blank">matthias@opengis.ch</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0
0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> You
should get a parameter containing the
composer that is being deleted with
composerWillBeRemoved signal. Try to use
that to infer which composer has been
removed. As the signal name indicates, at
the time it is emitted, the composer is not
deleted yet.<br>
As an alternative you may make the
connection with Qt.QueuedConnection. It is
possible that with this connection style you
will receive the signal after deletion and
are able to continue using your current
update method.<br>
<br>
Best<span><font color="#888888"><br>
Matthias</font></span>
<div>
<div><br>
<br>
<div>On 03/31/2015 02:04 PM, Junior
Delaz wrote:<br>
</div>
<blockquote type="cite">
<div dir="ltr">
<div>
<div>
<div>
<div>
<div>
<div>Matthias,<br>
</div>
Thanks. I just give it a
try it and all goes well
with composerAdded. <br>
</div>
But not really well with
composerWillBeRemoved
signal. The first deletion
in the composer manager does
nothing and deleting a
second composer does remove
the first one in my list.
and so on...<br>
My update function should be
rewritten I think. I'll try
to see how improving it and
may (surely) ask again for
help (if needed).<br>
</div>
<br>
</div>
</div>
While seeking information about
composerWillBeRemoved, I found a
composerRemoved [1] [2] signal
(that doesn't appear in the API
doc) and without being able to use
it. :(<br>
[1] <a moz-do-not-send="true"
href="https://github.com/qgis/QGIS/blob/master/src/app/composer/qgscomposermanager.cpp"
target="_blank">https://github.com/qgis/QGIS/blob/master/src/app/composer/qgscomposermanager.cpp</a>
(line 48<br>
[2] <a moz-do-not-send="true"
href="https://github.com/qgis/QGIS/blob/master/src/app/qgisapp.cpp"
target="_blank">https://github.com/qgis/QGIS/blob/master/src/app/qgisapp.cpp</a>
(line 5601)<br>
<br>
</div>
Another thing that may not be
related : what the
deletePrintComposers function (<a
moz-do-not-send="true"
href="https://github.com/qgis/QGIS/blob/master/src/app/qgisapp.cpp"
target="_blank">https://github.com/qgis/QGIS/blob/master/src/app/qgisapp.cpp</a>
line 5698) is for?<br>
<br>
Thanks again for the clue.</div>
<div class="gmail_extra"><br>
<div class="gmail_quote">2015-03-31
9:43 GMT+02:00 Matthias Kuhn <span
dir="ltr"><<a
moz-do-not-send="true"
href="mailto:matthias@opengis.ch"
target="_blank">matthias@opengis.ch</a>></span>:<br>
<blockquote class="gmail_quote"
style="margin:0 0 0
.8ex;border-left:1px #ccc
solid;padding-left:1ex">
<div bgcolor="#FFFFFF"
text="#000000"> QgisInterface
(iface) has a composerAdded
and composerWillBeRemoved
signal.<br>
<br>
Did you try to connect to
these?<br>
<br>
Best,<br>
Matthias
<div>
<div><br>
<br>
<div>On 03/31/2015 09:34
AM, Junior wrote:<br>
</div>
<blockquote type="cite">
<div
style="font-family:'Calibri','sans-serif'">
<div>Hi all, Luca</div>
<div>Thanks for
answering. But i
already have an
update function that
I linked to an
update list button.
I even linked it to
the icon on the
toolbar so that when
user calls
foreground the
dialog it's already
updated.</div>
<div>The case I'd like
to manage: user can
open plugin dialog
and composer
manager. The two
dialogs are visible
(to the eyes) even
though composer
manager is the one
at foreground. He
makes changes and
directly clicked on
the plugin dialog.
He should update
list but if he
forgets and
executes, this may
lead to bug I don't
want to / can't yet
manage.</div>
<div>Reason why I want
to ensure that list
is always up to date
when he interacts
with the dialog</div>
<div><br>
</div>
<div>Envoyé depuis mon
HTC</div>
<br>
<div>----- Reply
message -----<br>
De : "Luca
Manganelli" <a
moz-do-not-send="true"
href="mailto:luca76@gmail.com" target="_blank"><luca76@gmail.com></a><br>
Pour :<br>
Cc : <a
moz-do-not-send="true"
href="mailto:qgis-user@lists.osgeo.org" target="_blank">"qgis-user@lists.osgeo.org"</a>
<a
moz-do-not-send="true"
href="mailto:qgis-user@lists.osgeo.org" target="_blank"><qgis-user@lists.osgeo.org></a>,
"qgis-developer" <a
moz-do-not-send="true" href="mailto:qgis-developer@lists.osgeo.org"
target="_blank"><qgis-developer@lists.osgeo.org></a><br>
Objet :
[Qgis-developer]
[Qgis-user] Pyqt4 :
which signal is sent
when dialog comes to
foreground?<br>
Date : mar., mars
31, 2015 07:56</div>
</div>
<br>
<pre style="word-wrap:break-word;white-space:pre-wrap">On Mon, Mar 30, 2015 at 6:12 PM, Junior Delaz <a moz-do-not-send="true" href="mailto:delazj@gmail.com" target="_blank"><delazj@gmail.com></a> wrote:
> I've read about defining a custom showEvent function but can't understand
> where to put it and what inside.
> If somebody can give some tips...
You could add a "Update list" button
_______________________________________________
Qgis-developer mailing list
<a moz-do-not-send="true" href="mailto:Qgis-developer@lists.osgeo.org" target="_blank">Qgis-developer@lists.osgeo.org</a>
<a moz-do-not-send="true" href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a>
</pre>
<br>
<fieldset></fieldset>
<br>
<pre>_______________________________________________
Qgis-developer mailing list
<a moz-do-not-send="true" href="mailto:Qgis-developer@lists.osgeo.org" target="_blank">Qgis-developer@lists.osgeo.org</a>
<a moz-do-not-send="true" href="http://lists.osgeo.org/mailman/listinfo/qgis-developer" target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a></pre>
</blockquote>
<br>
</div>
</div>
</div>
<br>
_______________________________________________<br>
Qgis-developer mailing list<br>
<a moz-do-not-send="true"
href="mailto:Qgis-developer@lists.osgeo.org"
target="_blank">Qgis-developer@lists.osgeo.org</a><br>
<a moz-do-not-send="true"
href="http://lists.osgeo.org/mailman/listinfo/qgis-developer"
target="_blank">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</body>
</html>