Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 0 additions & 46 deletions browsedatasource.py

This file was deleted.

60 changes: 27 additions & 33 deletions changeDataSource.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,14 @@
from __future__ import absolute_import
from builtins import range
from builtins import object
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtXml import *
from PyQt5.QtWidgets import *
from qgis.core import *
# Initialize Qt resources from file resources.py
from . import resources_rc
from qgis.PyQt.QtCore import QCoreApplication, Qt, pyqtSignal, QSettings, QTranslator, qVersion
from qgis.PyQt.QtGui import QIcon, QFontMetrics
from qgis.PyQt.QtWidgets import QTableWidgetItem, QAction, QDialogButtonBox, QLineEdit, QPushButton, QSizePolicy, QToolButton, QStyle, QHeaderView, QApplication
from qgis.core import QgsProject, QgsMapLayer, QgsFeature, QgsGeometry, QgsExpressionContext, QgsExpressionContextScope, QgsExpression, QgsFeatureRequest, Qgis, QgsVectorLayer

# Import the code for the dialog
from .changeDataSource_dialog import changeDataSourceDialog,dataSourceBrowser
from .setdatasource import setDataSource
from qgis.gui import QgsMessageBar
from .setDataSource import setDataSource
import os.path


Expand Down Expand Up @@ -169,16 +166,16 @@ def add_action(
def initGui(self):
"""Create the menu entries and toolbar icons inside the QGIS GUI."""

icon_path = os.path.join(self.plugin_dir,"icon.png")
icon_path = os.path.join(self.plugin_dir, "icon", "icon.png")
self.add_action(
icon_path,
text=self.tr(u'changeDataSource'),
callback=self.run,
parent=self.iface.mainWindow())
self.changeDSActionVector = QAction(QIcon(os.path.join(self.plugin_dir,"icon.png")), u"Change vector datasource", self.iface )
self.changeDSActionRaster = QAction(QIcon(os.path.join(self.plugin_dir,"icon.png")), u"Change raster datasource", self.iface )
self.iface.addCustomActionForLayerType(self.changeDSActionVector,"", QgsMapLayer.VectorLayer,True)
self.iface.addCustomActionForLayerType(self.changeDSActionRaster,"", QgsMapLayer.RasterLayer,True)
self.changeDSActionVector = QAction(QIcon(os.path.join(self.plugin_dir, "icon", "icon.png")), u"Change vector datasource", self.iface )
self.changeDSActionRaster = QAction(QIcon(os.path.join(self.plugin_dir, "icon", "icon.png")), u"Change raster datasource", self.iface )
self.iface.addCustomActionForLayerType(self.changeDSActionVector,"", QgsMapLayer.LayerType.VectorLayer,True)
self.iface.addCustomActionForLayerType(self.changeDSActionRaster,"", QgsMapLayer.LayerType.RasterLayer,True)
self.changeDSTool = setDataSource(self, )
self.browserDialog = dataSourceBrowser()
self.dlg.handleBadLayersCheckbox.hide()
Expand All @@ -192,9 +189,9 @@ def connectSignals(self):
self.changeDSActionRaster.triggered.connect(self.changeLayerDS)
self.dlg.replaceButton.clicked.connect(self.replaceDS)
self.dlg.layerTable.verticalHeader().sectionClicked.connect(self.activateSelection)
self.dlg.buttonBox.button(QDialogButtonBox.Reset).clicked.connect(lambda: self.buttonBoxHub("Reset"))
self.dlg.buttonBox.button(QDialogButtonBox.Apply).clicked.connect(lambda: self.buttonBoxHub("Apply"))
self.dlg.buttonBox.button(QDialogButtonBox.Cancel).clicked.connect(lambda: self.buttonBoxHub("Cancel"))
self.dlg.buttonBox.button(QDialogButtonBox.StandardButton.Reset).clicked.connect(lambda: self.buttonBoxHub("Reset"))
self.dlg.buttonBox.button(QDialogButtonBox.StandardButton.Apply).clicked.connect(lambda: self.buttonBoxHub("Apply"))
self.dlg.buttonBox.button(QDialogButtonBox.StandardButton.Cancel).clicked.connect(lambda: self.buttonBoxHub("Cancel"))
#self.dlg.reconcileButton.clicked.connect(self.reconcileUnhandled)
self.dlg.closedDialog.connect(self.removeServiceLayers)
#self.dlg.handleBadLayersCheckbox.stateChanged.connect(self.handleBadLayerOption)
Expand Down Expand Up @@ -259,7 +256,7 @@ def populateLayerTable(self, onlyUnhandled = None):
self.layersPropLayer = QgsVectorLayer(layersPropLayerDef,"layerTable","memory")
dummyFeatures = []

self.dlg.layerTable.horizontalHeader().setDefaultAlignment(Qt.AlignLeft)
self.dlg.layerTable.horizontalHeader().setDefaultAlignment(Qt.AlignmentFlag.AlignLeft)

self.dlg.layerTable.horizontalHeader().setSectionsClickable(False)

Expand All @@ -269,7 +266,7 @@ def populateLayerTable(self, onlyUnhandled = None):
lr = QgsProject.instance()

for layer in lr.mapLayers().values():
if layer.type() == QgsMapLayer.VectorLayer or layer.type() == QgsMapLayer.RasterLayer:
if layer.type() == QgsMapLayer.LayerType.VectorLayer or layer.type() == QgsMapLayer.LayerType.RasterLayer:
provider = layer.dataProvider().name()
source = layer.source()
cellStyle = ""
Expand All @@ -283,7 +280,7 @@ def populateLayerTable(self, onlyUnhandled = None):
self.dlg.layerTable.setCellWidget(lastRow,4,self.getButtonWidget(lastRow))

layerDummyFeature = QgsFeature(self.layersPropLayer.fields())
if layer.type() == QgsMapLayer.VectorLayer:
if layer.type() == QgsMapLayer.LayerType.VectorLayer:
type = "vector"
enumGeometryTypes =('Point','Line','Polygon','UnknownGeometry','NoGeometry')
geometry = enumGeometryTypes[layer.geometryType()]
Expand All @@ -300,14 +297,14 @@ def populateLayerTable(self, onlyUnhandled = None):
QgsProject.instance().layerTreeRoot().findLayer(self.layersPropLayer.id()).setItemVisibilityChecked(False)
self.dlg.mFieldExpressionWidget.setLayer(self.layersPropLayer)
self.dlg.layerTable.resizeColumnToContents(1)
self.dlg.layerTable.horizontalHeader().setSectionResizeMode(2,QHeaderView.ResizeToContents)
self.dlg.layerTable.horizontalHeader().setSectionResizeMode(2,QHeaderView.ResizeMode.ResizeToContents)
self.dlg.layerTable.setColumnWidth(4,30)
self.dlg.layerTable.setShowGrid(False)
self.dlg.layerTable.horizontalHeader().setSectionResizeMode(3,QHeaderView.Stretch) # was QHeaderView.Stretch
self.dlg.layerTable.horizontalHeader().setSectionResizeMode(3,QHeaderView.ResizeMode.Stretch) # was QHeaderView.Stretch

def getButtonWidget(self,row):
edit = QPushButton("...",parent = self.dlg.layerTable)
edit.setSizePolicy(QSizePolicy.Ignored,QSizePolicy.Ignored)
edit.setSizePolicy(QSizePolicy.Policy.Ignored,QSizePolicy.Policy.Ignored)
edit.clicked.connect(lambda: self.browseAction(row))
return edit

Expand All @@ -322,7 +319,7 @@ def browseAction(self,row):
rowLayer = QgsProject.instance().mapLayer(layerId)
enumLayerTypes = ("vector","raster","plugin")
if newType and enumLayerTypes[rowLayer.type()] != newType:
self.iface.messageBar().pushMessage("Error", "Layer type mismatch %s/%s" % (enumLayerTypes[rowLayer.type()], newType), level=QgsMessageBar.CRITICAL, duration=4)
self.iface.messageBar().pushMessage("Error", "Layer type mismatch %s/%s" % (enumLayerTypes[rowLayer.type()], newType), level=Qgis.MessageLevel.Critical, duration=4)
return None
if newDatasource:
self.dlg.layerTable.cellWidget(row,3).setText(newDatasource)
Expand All @@ -334,12 +331,12 @@ def getLabelWidget(self,txt,column, style = None):
method that returns a preformatted qlineedit widget
'''
edit = QLineEdit(parent = self.dlg.layerTable)
idealWidth = QApplication.instance().fontMetrics().width(txt)
idealWidth = QFontMetrics(QApplication.font()).horizontalAdvance(txt)
edit.setMinimumWidth(idealWidth)
if column == 2:
edit.setMaximumWidth(60)
edit.setText(txt)
edit.setSizePolicy(QSizePolicy.Minimum,QSizePolicy.Ignored)
edit.setSizePolicy(QSizePolicy.Policy.Minimum,QSizePolicy.Policy.Ignored)
if style:
edit.setStyleSheet(style)
else:
Expand Down Expand Up @@ -377,9 +374,7 @@ def replaceDS(self):
indexes.append(row)
self.replaceList.append(QgsProject.instance().mapLayer(self.dlg.layerTable.cellWidget(row,0).text()))
for row in indexes:
layerId = self.dlg.layerTable.cellWidget(row,0)
cell = self.dlg.layerTable.cellWidget(row,3)
orig = cell.text()
if self.dlg.mFieldExpressionWidget.isValidExpression():
exp = QgsExpression(self.dlg.mFieldExpressionWidget.currentText())
scope.setFeature(next(self.layersPropLayer.getFeatures(QgsFeatureRequest(row+1))))
Expand All @@ -399,7 +394,6 @@ def applyDSChanges(self):#, reconcileUnhandled = False):
rowProviderCell = self.dlg.layerTable.cellWidget(row,2)
rowDatasourceCell = self.dlg.layerTable.cellWidget(row,3)
rowLayerID = self.dlg.layerTable.cellWidget(row,0).text()
rowLayerName = self.dlg.layerTable.cellWidget(row,1).text()
rowProvider = rowProviderCell.text()
rowDatasource = rowDatasourceCell.text()
rowLayer = QgsProject.instance().mapLayer(rowLayerID)
Expand Down Expand Up @@ -462,7 +456,7 @@ def run(self):
self.dlg.raise_()
self.dlg.activateWindow()
# Run the dialog event loop
result = self.dlg.exec_()
result = self.dlg.exec()
# See if OK was pressed
if result:
# Do something useful here - delete the line containing pass and
Expand All @@ -484,10 +478,10 @@ def __init__(self, parent=None):
self.button = QToolButton(self)
self.button.setIcon(QIcon(os.path.join(os.path.dirname(__file__),"BrowseButton.png")))
self.button.setStyleSheet('border: 0px; padding: 0px;')
self.button.setCursor(Qt.ArrowCursor)
self.button.setCursor(Qt.CursorShape.ArrowCursor)
self.button.clicked.connect(self.buttonClicked.emit)

frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
frameWidth = self.style().pixelMetric(QStyle.PixelMetric.PM_DefaultFrameWidth)
buttonSize = self.button.sizeHint()

self.setStyleSheet('QLineEdit {padding-left: %dpx; }' % (buttonSize.width() + frameWidth + 1))
Expand All @@ -496,7 +490,7 @@ def __init__(self, parent=None):

def resizeEvent(self, event):
buttonSize = self.button.sizeHint()
frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth)
frameWidth = self.style().pixelMetric(QStyle.PixelMetric.PM_DefaultFrameWidth)
self.button.move(self.rect().right() - frameWidth - buttonSize.width(),
(self.rect().bottom() - buttonSize.height() + 1)/2)
super(browseLineEdit, self).resizeEvent(event)
9 changes: 4 additions & 5 deletions changeDataSource_dialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,12 @@

import os

from qgis.PyQt import QtGui, uic, QtWidgets
from qgis.PyQt import uic, QtWidgets
from qgis.PyQt.QtCore import pyqtSignal
from qgis.core import QgsBrowserModel, QgsMimeDataUtils
from .changeDataSource_dialog_base import Ui_changeDataSourceDialogBase
from .browsedatasource import Ui_dataSourceBrowser

Ui_changeDataSourceDialogBase = uic.loadUiType(os.path.join(os.path.dirname(__file__), 'ui', 'changeDataSource_dialog_base.ui'))[0]
Ui_dataSourceBrowser = uic.loadUiType(os.path.join(os.path.dirname(__file__), 'ui', 'browsedatasource.ui'))[0]

class changeDataSourceDialog(QtWidgets.QDialog, Ui_changeDataSourceDialogBase):

Expand Down Expand Up @@ -71,7 +72,6 @@ def __init__(self, parent=None):
self.acceptedFlag = None

def getUriFromBrowser(self,index):
uriItem = self.browserModel.dataItem(index)
uri_list = QgsMimeDataUtils.decodeUriList(self.browserModel.mimeData([index]))
try:
#print uri_list[0].providerKey,uri_list[0].uri
Expand All @@ -95,7 +95,6 @@ def rejectedAction(self):
def uri(title=""):
dialog = dataSourceBrowser()
dialog.setWindowTitle(title)
result = dialog.exec_()
dialog.show()
if dialog.acceptedFlag:
return (dialog.result)
Expand Down
Loading