|
|
@@ -6,8 +6,9 @@ from qgis.core import QgsProject # @UnresolvedImport
|
|
|
|
|
|
from PyQt5 import QtWidgets
|
|
|
from PyQt5 import uic
|
|
|
-from PyQt5.Qt import QIcon, QPixmap, Qt, QTableWidgetItem, QHeaderView
|
|
|
-from PyQt5.QtWidgets import QApplication
|
|
|
+from PyQt5.Qt import Qt
|
|
|
+from PyQt5.QtGui import QIcon, QPixmap
|
|
|
+from PyQt5.QtWidgets import QApplication, QTreeWidgetItem
|
|
|
|
|
|
from core.constants import MAIN, RSCDIR
|
|
|
|
|
|
@@ -15,12 +16,9 @@ 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)
|
|
|
@@ -42,8 +40,6 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
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)
|
|
|
@@ -51,12 +47,10 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
# self.ui.cbb_schemas.addItem("Schéma MN v3 REC", 4)
|
|
|
self.ui.cbb_schemas.currentIndexChanged.connect(self.update_layers_list)
|
|
|
|
|
|
+ self.ui.tree_report.setColumnWidth(0, 35)
|
|
|
+
|
|
|
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)
|
|
|
@@ -76,36 +70,27 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
|
|
|
self.ui.btn_run.setEnabled(True)
|
|
|
|
|
|
- self.clear_layers_table()
|
|
|
+ self.ui.tree_report.clear()
|
|
|
|
|
|
for layername in expected:
|
|
|
|
|
|
- cur_row = self.ui.tbl_layers.rowCount()
|
|
|
- self.ui.tbl_layers.insertRow(cur_row)
|
|
|
+ item = QTreeWidgetItem()
|
|
|
|
|
|
- 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")))
|
|
|
+ item.setIcon(0, QIcon(QPixmap(RSCDIR / "ok_16.png")))
|
|
|
+ item.setText(1, layername)
|
|
|
else:
|
|
|
- lbl_icon.setIcon(QIcon(QPixmap(RSCDIR / "error_16.png")))
|
|
|
- lbl_message.setText("La couche est introuvable")
|
|
|
+ item.setIcon(0, QIcon(QPixmap(RSCDIR / "error_16.png")))
|
|
|
+ item.setText(1, f"{layername}: 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)
|
|
|
+ self.ui.tree_report.addTopLevelItem(item)
|
|
|
+
|
|
|
|
|
|
def run(self):
|
|
|
|
|
|
QApplication.setOverrideCursor(Qt.WaitCursor)
|
|
|
- self.clear_layers_table()
|
|
|
+ self.ui.tree_report.clear()
|
|
|
|
|
|
validator = self.selected_validator()
|
|
|
|
|
|
@@ -125,35 +110,22 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
|
|
|
logger.debug(f"Rapport d'exec: {report}")
|
|
|
|
|
|
- for chk in report["checkpoints"]:
|
|
|
- cur_row = self.ui.tbl_layers.rowCount()
|
|
|
- self.ui.tbl_layers.insertRow(cur_row)
|
|
|
+ for type_err in report["errors"]:
|
|
|
+ topitem = QTreeWidgetItem()
|
|
|
|
|
|
- lbl_icon, lbl_checkpoint = QTableWidgetItem(), QTableWidgetItem()
|
|
|
+ topitem.setIcon(0, QIcon(QPixmap(RSCDIR / "error_16.png")))
|
|
|
+ topitem.setText(1, "{} ({})".format(type_err, len(report["errors"][type_err]["list"])))
|
|
|
|
|
|
- lbl_checkpoint.setText(chk["name"])
|
|
|
- lbl_icon.setIcon(QIcon(QPixmap(RSCDIR / ("ok_16.png" if chk["valid"] else "error_16.png"))))
|
|
|
+ self.ui.tree_report.addTopLevelItem(topitem)
|
|
|
|
|
|
- self.ui.tbl_layers.setItem(cur_row, 0, lbl_icon)
|
|
|
- self.ui.tbl_layers.setItem(cur_row, 1, lbl_checkpoint)
|
|
|
- if not chk["valid"]:
|
|
|
- self.ui.tbl_layers.setItem(cur_row, 2, QTableWidgetItem("Des erreurs ont été trouvées"))
|
|
|
-
|
|
|
- for type_err in report["errors"]:
|
|
|
for err in report["errors"][type_err]["list"]:
|
|
|
- cur_row = self.ui.tbl_layers.rowCount()
|
|
|
- self.ui.tbl_layers.insertRow(cur_row)
|
|
|
|
|
|
- lbl_icon, lbl_field, lbl_err = QTableWidgetItem(), QTableWidgetItem(), QTableWidgetItem()
|
|
|
+ item = QTreeWidgetItem()
|
|
|
|
|
|
- lbl_field.setText(f"{err['layername']}.{err['field']}")
|
|
|
- lbl_err.setText(f"{type_err}: {err['message']}")
|
|
|
-# lbl_icon.setIcon(QIcon(QPixmap(RSCDIR / "error_16.png")))
|
|
|
+ item.setText(1, "{} > {}: {}".format(err["layername"], err["field"], err["message"]))
|
|
|
+
|
|
|
+ topitem.addChild(item)
|
|
|
|
|
|
-# self.ui.tbl_layers.setItem(cur_row, 0, lbl_icon)
|
|
|
- self.ui.tbl_layers.setItem(cur_row, 1, lbl_field)
|
|
|
- self.ui.tbl_layers.setItem(cur_row, 2, lbl_err)
|
|
|
-
|
|
|
def show_help(self):
|
|
|
pass
|
|
|
|