<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>