Skip to content

Commit

Permalink
exception ordering loayer table fixed
Browse files Browse the repository at this point in the history
  • Loading branch information
enricofer committed Nov 15, 2015
1 parent d929990 commit 72a1b22
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 27 deletions.
44 changes: 18 additions & 26 deletions changeDataSource.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,11 +194,10 @@ def connectSignals(self):
QgsProject.instance().setBadLayerHandler(self.badLayersHandler)
QgsProject.instance().writeProject.connect(self.backupUnhandledLayers)

def resetEmbeddedLayer(self):
def setEmbeddedLayer(self,layer):
root = QgsProject.instance().layerTreeRoot()
layerNode = root.findLayer(self.iface.legendInterface().currentLayer().id())
layerNode.removeCustomProperty("embedded")
layerNode.removeCustomProperty("embedded_project")
layerNode = root.findLayer(layer.id())
layerNode.setCustomProperty("embedded","")

def initHandleBadLayers(self):
'''
Expand Down Expand Up @@ -240,10 +239,7 @@ def recoverUnhandledLayers(self):
assign original style to unhandled layers
'''
XMLDocument = QDomDocument("style")
XMLDocumentControl = QDomDocument("style")
XMLMapLayers = QDomElement()
XMLMapLayers = XMLDocument.createElement("maplayers")
XMLMapLayer = QDomElement()
XMLMapLayer = XMLDocument.createElement("maplayer")
unhandledLayer.writeLayerXML(XMLMapLayer,XMLDocument)
unhandledRendererDom = XMLMapLayer.namedItem("renderer-v2")
Expand Down Expand Up @@ -368,21 +364,8 @@ def populateLayerTable(self):
self.dlg.layerTable.hideColumn(5)
self.dlg.layerTable.hideColumn(6)
lr = QgsMapLayerRegistry.instance()
#self.dlg.layerTable.setRowCount(lr.count())
if self.badLayersHandler.getUnhandledLayers():
defaultLayerOrder = self.badLayersHandler.originalOrder
else:
defaultLayerOrder = []
for layer in self.iface.legendInterface().layers():
defaultLayerOrder.append(layer.id())
#print defaultLayerOrder
#for lid in lr.mapLayers():

for lid in defaultLayerOrder:
if lr.mapLayer( lid ):
layer = lr.mapLayer( lid )
else:
layer = self.badLayersHandler.getUnhandledLayerFromBadId(lid)

for layer in self.iface.legendInterface().layers():
if layer.type() == QgsMapLayer.VectorLayer or layer.type() == QgsMapLayer.RasterLayer:
lastRow = self.dlg.layerTable.rowCount()
self.dlg.layerTable.insertRow(lastRow)
Expand All @@ -392,11 +375,9 @@ def populateLayerTable(self):
source = self.badLayersHandler.getUnhandledLayerFromActualId(layer.id())["datasource"]
source = QgsProject.instance().readPath(source)
cellStyle = "QLineEdit{background: rgb(190,170,160);font: italic;}"
order = self.badLayersHandler.getUnhandledLayersOrder(layer.id())
else:
provider = layer.dataProvider().name()
source = layer.source()
order = defaultLayerOrder.index(layer.id())
cellStyle = ""
self.dlg.layerTable.setCellWidget(lastRow,0,self.getLabelWidget(layer.id(),0,style = cellStyle))
self.dlg.layerTable.setCellWidget(lastRow,1,self.getLabelWidget(layer.name(),1,style = cellStyle))
Expand All @@ -422,7 +403,6 @@ def populateLayerTable(self):
#orderWidget.setData(Qt.EditRole,defaultLayerOrder[order])
#self.dlg.layerTable.setItem(lastRow,6,orderWidget)
#self.dlg.layerTable.sortItems(6)
print dummyFeatures
self.layersPropLayer.dataProvider().addFeatures(dummyFeatures)
QgsMapLayerRegistry.instance().addMapLayer(self.layersPropLayer)
self.iface.legendInterface().setLayerVisible(self.layersPropLayer, False)
Expand Down Expand Up @@ -638,7 +618,7 @@ def __init__(self,parent):

def removeUnhandledLayer(self,removeKey):
if self.getUnhandledLayers() and removeKey in self.getUnhandledLayers():
self.unhandledLayers.pop(removeKey,None)
del self.unhandledLayers[removeKey]

def getUnhandledLayers(self):
if self.badSession == self.parent.session:
Expand Down Expand Up @@ -679,6 +659,18 @@ def getUnhandledLayerFromActualId(self,actualId):
else:
None

def buildOriginalOrder(self):
self.originalOrder = []
legendElements = projectDom.elementsByTagName("legendlayer")
for legendItem in range(0,legendElements.count()):
legendLayerId = legendElements.item(legendItem).firstChild().firstChild().attributes().namedItem("layerid").nodeValue()
if legendLayerId in self.unhandledLayers:
id = self.unhandledLayers[legendLayerId]["tempid"]
else:
id = legendLayerId
self.originalOrder.append(id)


def handleBadLayers(self,layers,projectDom):
self.badLayers = layers
self.badSession = self.parent.session
Expand Down
2 changes: 1 addition & 1 deletion setdatasource.py
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ def changeDataSourceAction(self):
self.applyDataSource(self.layer,self.selectDatasourceCombo.currentText().lower().replace(' ',''),self.lineEdit.toPlainText())

def applyDataSource(self,applyLayer,newDatasourceType,newDatasource):
print applyLayer.id(),newDatasourceType,newDatasource
#print applyLayer.id(),newDatasourceType,newDatasource
self.hide()
# new layer import
if applyLayer.type() == QgsMapLayer.VectorLayer:
Expand Down

0 comments on commit 72a1b22

Please sign in to comment.