[Qgis-developer] Re : [Qgis-user] Pyqt4 : which signal is sent when dialog comes to foreground?
Matthias Kuhn
matthias at opengis.ch
Mon Apr 6 13:11:58 PDT 2015
Hi Junior,
The following lines work for a short test-case.
def compAdded( composer ):
print composer
def compRemoved( composer ):
print composer
iface.composerAdded.connect( compAdded )
iface.composerRemoved.connect( compRemoved )
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.
Matthias
On 04/06/2015 12:33 AM, Junior Delaz wrote:
> Hi,
> I do understand nothing.
> After I read your message, Matthias, I told myself that using QT.
> QueuedConnection should be the easiest way. Then i wrote
> self.iface.composerWillBeRemoved.connect(self.refreshList,
> Qt.QueuedConnection)
> But each time i delete a composer, QGIS crashes.
> 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.
> 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.
> I hope it will remain like that.
>
> But now I realize that I didn't take into account the renaming of a
> composer. :(
>
> 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...
>
> Thanks for all...
>
>
> 2015-03-31 14:50 GMT+02:00 Matthias Kuhn <matthias at opengis.ch
> <mailto:matthias at opengis.ch>>:
>
> 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.
> 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.
>
> Best
> Matthias
>
>
> On 03/31/2015 02:04 PM, Junior Delaz wrote:
>> Matthias,
>> Thanks. I just give it a try it and all goes well with
>> composerAdded.
>> 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...
>> 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).
>>
>> 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. :(
>> [1]
>> https://github.com/qgis/QGIS/blob/master/src/app/composer/qgscomposermanager.cpp
>> (line 48
>> [2] https://github.com/qgis/QGIS/blob/master/src/app/qgisapp.cpp
>> (line 5601)
>>
>> Another thing that may not be related : what the
>> deletePrintComposers function
>> (https://github.com/qgis/QGIS/blob/master/src/app/qgisapp.cpp
>> line 5698) is for?
>>
>> Thanks again for the clue.
>>
>> 2015-03-31 9:43 GMT+02:00 Matthias Kuhn <matthias at opengis.ch
>> <mailto:matthias at opengis.ch>>:
>>
>> QgisInterface (iface) has a composerAdded and
>> composerWillBeRemoved signal.
>>
>> Did you try to connect to these?
>>
>> Best,
>> Matthias
>>
>>
>> On 03/31/2015 09:34 AM, Junior wrote:
>>> Hi all, Luca
>>> 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.
>>> 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.
>>> Reason why I want to ensure that list is always up to date
>>> when he interacts with the dialog
>>>
>>> Envoyé depuis mon HTC
>>>
>>> ----- Reply message -----
>>> De : "Luca Manganelli" <luca76 at gmail.com>
>>> <mailto:luca76 at gmail.com>
>>> Pour :
>>> Cc : "qgis-user at lists.osgeo.org"
>>> <mailto:qgis-user at lists.osgeo.org>
>>> <qgis-user at lists.osgeo.org>
>>> <mailto:qgis-user at lists.osgeo.org>, "qgis-developer"
>>> <qgis-developer at lists.osgeo.org>
>>> <mailto:qgis-developer at lists.osgeo.org>
>>> Objet : [Qgis-developer] [Qgis-user] Pyqt4 : which signal is
>>> sent when dialog comes to foreground?
>>> Date : mar., mars 31, 2015 07:56
>>>
>>> On Mon, Mar 30, 2015 at 6:12 PM, Junior Delaz <delazj at gmail.com> <mailto:delazj at gmail.com> 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
>>> Qgis-developer at lists.osgeo.org <mailto:Qgis-developer at lists.osgeo.org>
>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>>
>>>
>>> _______________________________________________
>>> Qgis-developer mailing list
>>> Qgis-developer at lists.osgeo.org <mailto:Qgis-developer at lists.osgeo.org>
>>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>
>>
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer at lists.osgeo.org
>> <mailto:Qgis-developer at lists.osgeo.org>
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20150406/b5e121c9/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20150406/b5e121c9/attachment.pgp>
More information about the Qgis-developer
mailing list