示例#1
0
 def initGui(self):
     self.iface.registerMapLayerConfigWidgetFactory(
         self.layer_properties_config_widget_factory
     )
     QgsGui.sourceSelectProviderRegistry().addProvider(
         self.geonodeSourceSelectProvider
     )
示例#2
0
    def unload(self):
        """Removes the plugin menu item and icon from QGIS GUI."""
        for action in self.actions:
            self.iface.removePluginMenu(self.tr(u"&QGIS GeoNode Plugin"), action)
            self.iface.removeToolBarIcon(action)

        self.iface.unregisterMapLayerConfigWidgetFactory(
            self.layer_properties_config_widget_factory
        )
        QgsGui.sourceSelectProviderRegistry().removeProvider(
            self.geonodeSourceSelectProvider
        )
 def testRegistrySingleton(self):
     registry = QgsGui.sourceSelectProviderRegistry()
     self._testRegistry(registry)
     # Check that at least OGR and GDAL are here
     self.assertTrue(registry.providersByKey('ogr'))
     self.assertTrue(registry.providersByKey('gdal'))
 def testRegistrySingleton(self):
     registry = QgsGui.sourceSelectProviderRegistry()
     self._testRegistry(registry)
     # Check that at least OGR and GDAL are here
     self.assertTrue(registry.providersByKey('ogr'))
     self.assertTrue(registry.providersByKey('gdal'))
示例#5
0
    def add_to_ows(self):
        """add to OWS provider connection list"""

        conn_name_matches = []

        item = self.treeRecords.currentItem()

        if not item:
            return

        item_data = json.loads(get_item_data(item, 'link'))

        caller = self.sender().objectName()

        # stype = human name,/qgis/connections-%s,providername
        if caller == 'mActionAddWms':
            stype = ['OGC:WMS/OGC:WMTS', 'wms', 'wms']
            data_url = item_data['wms']
        elif caller == 'mActionAddWfs':
            stype = ['OGC:WFS', 'wfs', 'WFS']
            data_url = item_data['wfs']
        elif caller == 'mActionAddWcs':
            stype = ['OGC:WCS', 'wcs', 'wcs']
            data_url = item_data['wcs']
        elif caller == 'mActionAddAms':
            stype = ['ESRI:ArcGIS:MapServer', 'ams', 'arcgismapserver']
            data_url = item_data['ams'].split('MapServer')[0] + 'MapServer'
        elif caller == 'mActionAddAfs':
            stype = ['ESRI:ArcGIS:FeatureServer', 'afs', 'arcgisfeatureserver']
            data_url = item_data['afs'].split(
                'FeatureServer')[0] + 'FeatureServer'

        sname = '%s from MetaSearch' % stype[1]

        # store connection
        # check if there is a connection with same name
        if caller in ['mActionAddAms', 'mActionAddAfs']:
            self.settings.beginGroup('/qgis/connections-%s' % stype[2])
        else:
            self.settings.beginGroup('/qgis/connections-%s' % stype[1])
        keys = self.settings.childGroups()
        self.settings.endGroup()

        for key in keys:
            if key.startswith(sname):
                conn_name_matches.append(key)
        if conn_name_matches:
            sname = conn_name_matches[-1]

        # check for duplicates
        if sname in keys:  # duplicate found
            msg = self.tr('Connection {0} exists. Overwrite?').format(sname)
            res = QMessageBox.warning(
                self, self.tr('Saving server'), msg,
                QMessageBox.Yes | QMessageBox.No | QMessageBox.Cancel)
            if res == QMessageBox.No:  # assign new name with serial
                sname = serialize_string(sname)
            elif res == QMessageBox.Cancel:
                return

        # no dups detected or overwrite is allowed
        if caller in ['mActionAddAms', 'mActionAddAfs']:
            self.settings.beginGroup('/qgis/connections-%s' % stype[2])
        else:
            self.settings.beginGroup('/qgis/connections-%s' % stype[1])
        self.settings.setValue('/%s/url' % sname, clean_ows_url(data_url))
        self.settings.endGroup()

        # open provider window
        ows_provider = QgsGui.sourceSelectProviderRegistry(
        ).createSelectionWidget(stype[2], self, Qt.Widget,
                                QgsProviderRegistry.WidgetMode.Embedded)
        service_type = stype[0]

        # connect dialog signals to iface slots
        if service_type == 'OGC:WMS/OGC:WMTS':
            ows_provider.addRasterLayer.connect(self.iface.addRasterLayer)
            conn_cmb = ows_provider.findChild(QWidget, 'cmbConnections')
            connect = 'btnConnect_clicked'
        elif service_type == 'OGC:WFS':

            def addVectorLayer(path, name):
                self.iface.mainWindow().addVectorLayer(path, name, 'WFS')

            ows_provider.addVectorLayer.connect(addVectorLayer)
            conn_cmb = ows_provider.findChild(QWidget, 'cmbConnections')
            connect = 'connectToServer'
        elif service_type == 'OGC:WCS':
            ows_provider.addRasterLayer.connect(self.iface.addRasterLayer)
            conn_cmb = ows_provider.findChild(QWidget, 'mConnectionsComboBox')
            connect = 'mConnectButton_clicked'
        elif service_type == 'ESRI:ArcGIS:MapServer':
            ows_provider.addRasterLayer.connect(self.iface.addRasterLayer)
            conn_cmb = ows_provider.findChild(QComboBox)
            connect = 'connectToServer'
        elif service_type == 'ESRI:ArcGIS:FeatureServer':

            def addAfsLayer(path, name):
                self.iface.mainWindow().addVectorLayer(path, name, 'afs')

            ows_provider.addVectorLayer.connect(addAfsLayer)
            conn_cmb = ows_provider.findChild(QComboBox)
            connect = 'connectToServer'

        ows_provider.setModal(False)
        ows_provider.show()

        # open provider dialogue against added OWS
        index = conn_cmb.findText(sname)
        if index > -1:
            conn_cmb.setCurrentIndex(index)
            # only for wfs
            if service_type == 'OGC:WFS':
                ows_provider.cmbConnections_activated(index)
            elif service_type in [
                    'ESRI:ArcGIS:MapServer', 'ESRI:ArcGIS:FeatureServer'
            ]:
                ows_provider.cmbConnections_activated(index)
        getattr(ows_provider, connect)()