Ejemplo n.º 1
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 == 'btnAddToWms':
            stype = ['OGC:WMS/OGC:WMTS', 'wms', 'wms']
            data_url = item_data['wms']
        elif caller == 'btnAddToWfs':
            stype = ['OGC:WFS', 'wfs', 'WFS']
            data_url = item_data['wfs']
        elif caller == 'btnAddToWcs':
            stype = ['OGC:WCS', 'wcs', 'wcs']
            data_url = item_data['wcs']

        QApplication.restoreOverrideCursor()

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

        # store connection
        # check if there is a connection with same name
        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
            if self.radioTitleAsk.isChecked():  # ask to overwrite
                msg = self.tr('Connection %s exists. Overwrite?') % sname
                res = QMessageBox.warning(self, self.tr('Saving server'), msg,
                                          QMessageBox.Yes | QMessageBox.No)
                if res != QMessageBox.Yes:  # assign new name with serial
                    sname = serialize_string(sname)
            elif self.radioTitleNoAsk.isChecked():  # don't ask to overwrite
                pass
            elif self.radioTempName.isChecked():  # use temp name
                sname = serialize_string(sname)

        # no dups detected or overwrite is allowed
        self.settings.beginGroup('/Qgis/connections-%s' % stype[1])
        self.settings.setValue('/%s/url' % sname, data_url)
        self.settings.endGroup()

        # open provider window
        ows_provider = QgsProviderRegistry.instance().selectWidget(stype[2],
                                                                   self)

        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 = 'on_btnConnect_clicked'
        elif service_type == 'OGC:WFS':
            ows_provider.addWfsLayer.connect(self.iface.mainWindow().addWfsLayer)
            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 = 'on_mConnectButton_clicked'
        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.on_cmbConnections_activated(index)
        getattr(ows_provider, connect)()
Ejemplo n.º 2
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)()
Ejemplo n.º 3
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)
            if res != QMessageBox.Yes:  # assign new name with serial
                sname = serialize_string(sname)

        # 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 = QgsProviderRegistry.instance().createSelectionWidget(stype[2],
                                                                            self)
        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)()