Hi Dennis On Tue, Oct 3, 2017 at 3:21 PM, Denis Rouzaud <denis.rouz...@gmail.com> wrote:
> Hi Ricardo, > > Sorry to bother, but I think this kind of hack should be discouraged. > No bother at all :) I am just playing around with some ideas for improving the WMS layer support. The whole 'hijack QGIS native dialog' thing is just a sidetrack that is not really my main goal. It just seemed like a wacky, fun idea to try out. just to see if it is possible! > > This modifies QGIS behavior in a hidden way by replacing native dialogs. > And as you pointed, there is probably no way of uninstalling your plugin > properly. It will require QGIS to restart to work as expected, which is not > that bad, but still. > > If you think current behavior is not optimal, I would suggest to either: > * bring your improvements into master instead of a plugin > That might be the plan for the long run. For now I'm just having some fun at lunch break ;) > * create a dedicated button and menu entry in your plugin for your > customized dialog > > With the latter option, I think it would be possible to add your menu > entry and button in the layer menu and layer toolbar, respectively. > Yeah I am aware there is a proper way to do this, and this is not it. This is just toying and poking at stuff to see what is possible. On a more "serious" tone, I agree with you 100%. This is not something that I'd be putting out there for the world to use. > > Just my two cents. > > Denis > > Cheers > > > > > Le mar. 3 oct. 2017 à 16:09, Ricardo Filipe Soares Garcia da < > ricardo.garcia.si...@gmail.com> a écrit : > >> Hi all >> >> Answering my own question for posterity >> >> Turns out I can disconnect all slots from a signal by calling >> `my_action.triggered.disconnect()` without any arguments. My goal of >> replacing the native QGIS 'Add WMS/WMTS layer' dialogue with another one >> can be achieved like this: >> >> ```python >> >> def my_handler(): >> print("Hello") >> >> action = iface.actionAddWmsLayer() >> action.triggered.disconnect() >> action.triggered.connect(my_handler) >> ``` >> >> This leaves another problem to be solved: How to restore the native QGIS >> dialogue when my would-be plugin is deactivated by the user. The following >> seems to work on QGIS 2.18: >> >> ``` >> provider_registry = qgis.core.QgsProviderRegistry.instance() >> add_wms_dialog = provider_registry.selectWidget("wms") >> action.triggered.disconnect() >> action.triggered.connect(add_wms_dialog.show) >> >> ``` >> >> Best regards >> >> >> >> On Mon, Oct 2, 2017 at 12:41 PM, Ricardo Filipe Soares Garcia da < >> ricardo.garcia.si...@gmail.com> wrote: >> >>> Hi all >>> >>> Is it possible to replace one of QGIS' dialogues with a custom one >>> during runtime by using Python? >>> >>> My concrete goal is to replace the dialogue that shows when clicking the >>> 'Add WMS/WMTS Layer' with something custom. I'd like to enhance the native >>> QGIS dialogue with additional elements for selecting additional dimensions, >>> like time or elevation. >>> >>> Can this be done? >>> >>> I'm thinking that I'd only have to replace whatever slot is currently >>> defined on the `iface.actionAddWmsLayer()` action with a custom function >>> that would load my UI instead. The problem is that I can't seem to find >>> where a signal's connected slots are stored with Qt. >>> >>> Ideally there would be some introspection mechanism by which I'd be able >>> to retrieve which slots are associated with the action's `triggered` signal >>> - I can't seem to find it though. After knowing which slot(s) were >>> connected to the action's signal, I would presumably be able to >>> `disconnect()` them and then connect my own. >>> >>> By looking at Qt's docs I thought that the QMetaObject class might be >>> the place to look, but I still cannot find anything that looks seems to >>> hold the registry of a signal's connected slots. >>> >>> Thanks in advance :) >>> >>> >>> >>> -- >>> ___________________________ ___ __ >>> Ricardo Garcia Silva >>> >> >> >> >> -- >> ___________________________ ___ __ >> Ricardo Garcia Silva >> _______________________________________________ >> QGIS-Developer mailing list >> QGIS-Developer@lists.osgeo.org >> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer >> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer > > -- ___________________________ ___ __ Ricardo Garcia Silva
_______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer