| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- """
- """
- import importlib
- import logging
- from qgis.core import QgsProject #@UnresolvedImport
- from PyQt5 import QtWidgets
- from PyQt5 import uic
- from PyQt5.Qt import QIcon, QPixmap, Qt, QTableWidgetItem, QHeaderView
- from core.constants import MAIN, RSCDIR
- logger = logging.getLogger("mncheck")
- Ui_Main, _ = uic.loadUiType(MAIN / 'ui'/ 'dlg_main.ui')
- Ui_ChkFrame, _ = uic.loadUiType(MAIN / 'ui'/ 'checkframe.ui')
- SCHEMAS = ["mn1_rec", "mn2_rec", "mn3_pro", "mn3_exe", "mn3_rec"]
- class DlgMain(QtWidgets.QDialog):
- def __init__(self, iface, parent=None):
- super(DlgMain, self).__init__(parent)
- self.createWidgets()
- self.iface = iface
- self.schema_lib = None
- def createWidgets(self):
- """ set up the interface """
- self.ui = Ui_Main()
- self.ui.setupUi(self)
-
- self.ui.btn_run.setIcon(QIcon(RSCDIR / "play.png"))
- self.ui.btn_run.clicked.connect(self.run)
-
- self.ui.btn_help.setIcon(QIcon(RSCDIR / "question.png"))
- self.ui.btn_help.clicked.connect(self.show_help)
-
- self.ui.btn_settings.setIcon(QIcon(RSCDIR / "settings.png"))
- self.ui.btn_settings.clicked.connect(self.show_settings)
- self.ui.tbl_layers.horizontalHeaderItem(1).setTextAlignment(Qt.AlignLeft)
- self.ui.cbb_schemas.addItem("Schéma MN v1 REC", 0)
- self.ui.cbb_schemas.addItem("Schéma MN v2 REC", 1)
- # self.ui.cbb_schemas.addItem("Schéma MN v3 PRO", 2)
- # self.ui.cbb_schemas.addItem("Schéma MN v3 EXE", 3)
- # self.ui.cbb_schemas.addItem("Schéma MN v3 REC", 4)
- self.ui.cbb_schemas.currentIndexChanged.connect(self.update_layers_list)
-
- self.update_layers_list()
-
- def clear_layers_table(self):
- while self.ui.tbl_layers.rowCount():
- self.ui.tbl_layers.removeRow(0)
-
- def selected_validator(self):
- schema_lib_name = SCHEMAS[int(self.ui.cbb_schemas.itemData(self.ui.cbb_schemas.currentIndex()))]
- logger.info("Selected schema: %s", schema_lib_name)
-
- schema_lib = importlib.import_module("schemas." + schema_lib_name)
- return schema_lib.Validator
-
- def update_layers_list(self):
-
- validator = self.selected_validator()
- expected = [model.layername for model in validator.models]
- logger.info("Expected layers: %s", str(expected))
- found = [layer.name().lower() for layer in QgsProject.instance().mapLayers().values()]
- logger.info("Found layers: %s", str(found))
- self.ui.btn_run.setEnabled(True)
- self.clear_layers_table()
- for layername in expected:
-
- cur_row = self.ui.tbl_layers.rowCount()
- self.ui.tbl_layers.insertRow(cur_row)
-
- lbl_icon, lbl_layer, lbl_message = QTableWidgetItem(), QTableWidgetItem(), QTableWidgetItem()
- lbl_layer.setText(layername)
- if layername.lower() in found:
- lbl_icon.setIcon(QIcon(QPixmap(RSCDIR / "ok_16.png")))
- else:
- lbl_icon.setIcon(QIcon(QPixmap(RSCDIR / "error_16.png")))
- lbl_message.setText("La couche est introuvable")
- self.ui.btn_run.setEnabled(False)
-
- self.ui.tbl_layers.setItem(cur_row, 0, lbl_icon)
- self.ui.tbl_layers.setItem(cur_row, 1, lbl_layer)
- self.ui.tbl_layers.setItem(cur_row, 2, lbl_message)
-
- self.ui.tbl_layers.horizontalHeader().setSectionResizeMode(0, QHeaderView.Fixed)
- self.ui.tbl_layers.horizontalHeader().setSectionResizeMode(1, QHeaderView.ResizeToContents)
- self.ui.tbl_layers.horizontalHeader().setSectionResizeMode(2, QHeaderView.Stretch)
- def run(self):
-
- validator = self.selected_validator()
-
- if not validator:
- logger.info("Aucun schéma sélectionné - Opération annulée")
- return
-
- report = validator.submit(self.iface)
-
- logger.info(report)
-
- def show_help(self):
- pass
-
- def show_settings(self):
- pass
|