def addInfoActions(layer): commitId = getCommitId(layer) tracking = getTrackingInfo(layer) repo = Repository(tracking.repoUrl) _infoActions[layer.id()] = [] try: commit = Commit.fromref(repo, commitId) messageAction = QAction( "Message: '%s'" % commit.message.splitlines()[0], config.iface.legendInterface()) f = messageAction.font() f.setBold(True) messageAction.setFont(f) config.iface.legendInterface().addLegendLayerAction( messageAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer( messageAction, layer) _infoActions[layer.id()].append(messageAction) except Exception, e: QgsMessageLog.logMessage( "Cannot connect to server when creating GeoGig layer context:\n %s" % str(e), level=QgsMessageLog.WARNING) messageAction = QAction("Error: Cannot connect with repository", config.iface.legendInterface()) f = messageAction.font() f.setBold(True) messageAction.setFont(f) config.iface.legendInterface().addLegendLayerAction( messageAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer( messageAction, layer) _infoActions[layer.id()].append(messageAction) return False
def addInfoActions(layer): commitId = getCommitId(layer) tracking = getTrackingInfo(layer) repo = Repository(tracking.repoUrl) _infoActions[layer.id()] = [] try: commit = Commit.fromref(repo, commitId) messageAction = QAction("Message: '%s'" % commit.message.splitlines()[0], config.iface.legendInterface()) f = messageAction.font(); f.setBold(True); messageAction.setFont(f); config.iface.legendInterface().addLegendLayerAction(messageAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer(messageAction, layer) _infoActions[layer.id()].append(messageAction) except Exception, e: QgsMessageLog.logMessage("Cannot connect to server when creating GeoGig layer context:\n %s" % str(e), level=QgsMessageLog.WARNING) messageAction = QAction("Error: Cannot connect with repository", config.iface.legendInterface()) f = messageAction.font(); f.setBold(True); messageAction.setFont(f); config.iface.legendInterface().addLegendLayerAction(messageAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer(messageAction, layer) _infoActions[layer.id()].append(messageAction) return False
def addInfoActions(layer): commitId = getCommitId(layer) tracking = getTrackingInfo(layer) repo = Repository(tracking.repoUrl) layer.infoActions = [] try: commit = Commit.fromref(repo, commitId) messageAction = QAction( "Message: '%s'" % commit.message.splitlines()[0], config.iface.legendInterface()) f = messageAction.font() f.setBold(True) messageAction.setFont(f) config.iface.legendInterface().addLegendLayerAction( messageAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer( messageAction, layer) layer.infoActions.append(messageAction) except: messageAction = QAction("Error: Cannot connect with repository", config.iface.legendInterface()) f = messageAction.font() f.setBold(True) messageAction.setFont(f) config.iface.legendInterface().addLegendLayerAction( messageAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer( messageAction, layer) layer.infoActions.append(messageAction) return False shaAction = QAction("Version ID: %s" % commitId, config.iface.legendInterface()) f = shaAction.font() f.setBold(True) shaAction.setFont(f) config.iface.legendInterface().addLegendLayerAction( shaAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer( shaAction, layer) layer.infoActions.append(shaAction) return True
def addMenuItem(self, filename, node, menu, domdoc, mapLayersDict): yaLayer = False initialFilename = filename if node is None or node.nodeName() == "": return yaLayer element = node.toElement() # if legendlayer tag if node.nodeName() == "layer-tree-layer": try: name = element.attribute("name") layerId = element.attribute("id") visible = element.attribute("checked", "") == "Qt::Checked" expanded = element.attribute("expanded", "0") == "1" action = QAction(name, self.iface.mainWindow()) embedNd = getFirstChildByAttrValue(element, "property", "key", "embedded") # is layer embedded ? if embedNd and embedNd.toElement().attribute("value") == "1": # layer is embeded efilename = None eFileNd = getFirstChildByAttrValue(element, "property", "key", "embedded_project") # get project file name embeddedFile = eFileNd.toElement().attribute("value") if not self.absolute and (embeddedFile.find(".") == 0): efilename = self.projectpath + "/" + embeddedFile # if ok if efilename: # add menu item action.triggered.connect( lambda checked, f=efilename, lid=layerId, m=menu, v =visible, x=expanded: self.do_aeag_menu( f, lid, m, v, x)) menu.addAction(action) yaLayer = True if self.optionTooltip: # search embeded maplayer (for title, abstract) mapLayer = getMapLayerDomFromQgs( efilename, layerId) if mapLayer is not None: self.addToolTip(mapLayer, action) else: QgsMessageLog.logMessage( "Menu from layer: " + layerId + " not found in project " + efilename, 'Extensions') # layer is not embedded else: if self.optionTooltip: self.addToolTip(mapLayersDict[layerId], action) action.triggered.connect( lambda checked, f=filename, lid=layerId, m=menu, v= visible, x=expanded: self.do_aeag_menu( f, lid, m, v, x)) menu.addAction(action) yaLayer = True except Exception as e: for m in e.args: QgsMessageLog.logMessage(m, 'Extensions') # / if element.tagName() == "layer-tree-layer": # if legendgroup tag if node.nodeName() == "layer-tree-group": name = element.attribute("name") if name == "-": menu.addSeparator() elif name.startswith("-"): action = QAction(name[1:], self.iface.mainWindow()) font = QFont() font.setBold(True) action.setFont(font) menu.addAction(action) else: # sub-menu sousmenu = menu.addMenu('&' + element.attribute("name")) sousmenu.menuAction().setToolTip("") sousmenu.setToolTipsVisible(self.optionTooltip) childNode = node.firstChild() # ! recursion r = self.addMenuItem(initialFilename, childNode, sousmenu, domdoc, mapLayersDict) if r and self.optionLoadAll and (len(sousmenu.actions()) > 1): action = QAction(self.tr("Load all"), self.iface.mainWindow()) font = QFont() font.setBold(True) action.setFont(font) sousmenu.addAction(action) action.triggered.connect( lambda checked, f=None, w=None, m=sousmenu: self. do_aeag_menu(f, w, m)) # / if element.tagName() == "legendgroup": nextNode = node.nextSibling() if nextNode is not None: # ! recursion r = self.addMenuItem(initialFilename, nextNode, menu, domdoc, mapLayersDict) yaLayer = yaLayer or r return yaLayer
messageAction = QAction("Error: Cannot connect with repository", config.iface.legendInterface()) f = messageAction.font() f.setBold(True) messageAction.setFont(f) config.iface.legendInterface().addLegendLayerAction( messageAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer( messageAction, layer) _infoActions[layer.id()].append(messageAction) return False shaAction = QAction("Commit ID: %s" % commitId, config.iface.legendInterface()) f = shaAction.font() f.setBold(True) shaAction.setFont(f) config.iface.legendInterface().addLegendLayerAction( shaAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer( shaAction, layer) _infoActions[layer.id()].append(shaAction) return True def updateInfoActions(layer): setAsRepoLayer(layer) def setAsNonRepoLayer(layer): removeLayerActions(layer) action = QAction("Import to GeoGig...", config.iface.legendInterface())
def addMenuItem(self, uri, filename, node, menu, absolute, mapLayersDict): """Add menu to an item.""" yaLayer = False if node is None or node.nodeName() == "": return yaLayer element = node.toElement() # if legendlayer tag if node.nodeName() == "layer-tree-layer": try: name = element.attribute("name") layerId = element.attribute("id") visible = element.attribute("checked", "") == "Qt::Checked" expanded = element.attribute("expanded", "0") == "1" action = QAction(name, self.iface.mainWindow()) embedNd = getFirstChildByAttrValue(element, "property", "key", "embedded") # is layer embedded ? if embedNd and embedNd.toElement().attribute("value") == "1": # layer is embeded efilename = None eFileNd = getFirstChildByAttrValue(element, "property", "key", "embedded_project") if eFileNd: # get project file name embeddedFile = eFileNd.toElement().attribute("value") if not absolute and (embeddedFile.find(".") == 0): efilename = QFileInfo( filename).path() + "/" + embeddedFile # if ok if efilename: # add menu item action.triggered.connect( lambda checked, uri=uri, f=efilename, lid= layerId, m=menu, v=visible, x=expanded: self. loadLayer(uri, f, lid, m, v, x)) menu.addAction(action) yaLayer = True if self.optionTooltip: # search embeded maplayer (for title, abstract) mapLayer = self.getMapLayerDomFromQgs( efilename, layerId) if mapLayer is not None: self.addToolTip(mapLayer, action) else: self.log("Menu from layer: {} not found in project {}". format(layerId, efilename)) # layer is not embedded else: efilename = filename if self.optionTooltip: self.addToolTip(mapLayersDict[layerId], action) action.triggered.connect( lambda checked, uri=uri, f=filename, lid=layerId, m= menu, v=visible, x=expanded: self.loadLayer( uri, f, lid, m, v, x)) menu.addAction(action) yaLayer = True # Add geometry type icon try: map_layer = self.getMapLayerDomFromQgs( efilename, layerId).toElement() geometry_type = map_layer.attribute("geometry") if geometry_type == "": # A TMS has not a geometry attribute. # Let's read the "type" geometry_type = map_layer.attribute("type") action.setIcon(icon_per_geometry_type(geometry_type)) except Exception: pass except Exception as e: for m in e.args: self.log(m) # / if element.tagName() == "layer-tree-layer": # if legendgroup tag if node.nodeName() == "layer-tree-group": name = element.attribute("name") propertiesNode = node.firstChild() embedNd = getFirstChildByAttrValue(propertiesNode.toElement(), "property", "key", "embedded") # is group embedded ? if embedNd and embedNd.toElement().attribute("value") == "1": # group is embeded efilename = None eFileNd = getFirstChildByAttrValue(element, "property", "key", "embedded_project") if eFileNd: # get project file name embeddedFile = eFileNd.toElement().attribute("value") if not absolute and (embeddedFile.find(".") == 0): efilename = QFileInfo( filename).path() + "/" + embeddedFile # if ok if efilename: # add menu group doc, _ = self.getQgsDoc(efilename) groupNode = getFirstChildByAttrValue( doc.documentElement(), "layer-tree-group", "name", name) # and do recursion r = self.addMenuItem( efilename, efilename, groupNode, menu, absolute, getMapLayersDict(doc), ) yaLayer = yaLayer or r else: self.log( "Menu from layer: {} not found in project {}".format( layerId, efilename)) # group is not embedded else: if name == "-": menu.addSeparator() elif name.startswith("-"): action = QAction(name[1:], self.iface.mainWindow()) font = QFont() font.setBold(True) action.setFont(font) menu.addAction(action) else: # sub-menu sousmenu = menu.addMenu("&" + element.attribute("name")) sousmenu.menuAction().setToolTip("") sousmenu.setToolTipsVisible(self.optionTooltip) childNode = node.firstChild() # ! recursion r = self.addMenuItem(uri, filename, childNode, sousmenu, absolute, mapLayersDict) if r and self.optionLoadAll and (len(sousmenu.actions()) > 1): action = QAction(self.tr("Load all"), self.iface.mainWindow()) font = QFont() font.setBold(True) action.setFont(font) sousmenu.addAction(action) action.triggered.connect( lambda checked, f=None, w=None, m=sousmenu: self. loadLayer(uri, f, w, m)) # / if element.tagName() == "legendgroup": nextNode = node.nextSibling() if nextNode is not None: # ! recursion r = self.addMenuItem(uri, filename, nextNode, menu, absolute, mapLayersDict) yaLayer = yaLayer or r return yaLayer
config.iface.legendInterface().addLegendLayerActionForLayer(messageAction, layer) _infoActions[layer.id()].append(messageAction) except Exception, e: QgsMessageLog.logMessage("Cannot connect to server when creating GeoGig layer context:\n %s" % str(e), level=QgsMessageLog.WARNING) messageAction = QAction("Error: Cannot connect with repository", config.iface.legendInterface()) f = messageAction.font(); f.setBold(True); messageAction.setFont(f); config.iface.legendInterface().addLegendLayerAction(messageAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer(messageAction, layer) _infoActions[layer.id()].append(messageAction) return False shaAction = QAction("Commit ID: %s" % commitId, config.iface.legendInterface()) f = shaAction.font(); f.setBold(True); shaAction.setFont(f); config.iface.legendInterface().addLegendLayerAction(shaAction, u"GeoGig", u"id1", QgsMapLayer.VectorLayer, False) config.iface.legendInterface().addLegendLayerActionForLayer(shaAction, layer) _infoActions[layer.id()].append(shaAction) return True def updateInfoActions(layer): setAsRepoLayer(layer) def setAsNonRepoLayer(layer): removeLayerActions(layer) action = QAction("Import to GeoGig...", config.iface.legendInterface()) action.triggered.connect(partial(addLayer, layer)) if layer.type() == QgsMapLayer.RasterLayer or layer.storageType() != 'GPKG': action.setEnabled(False) config.iface.legendInterface().addLegendLayerAction(action, u"GeoGig", u"id2", QgsMapLayer.VectorLayer, False)