|
|
@@ -2,7 +2,8 @@
|
|
|
"""
|
|
|
from core import mncheck, checking
|
|
|
import logging
|
|
|
-from qgis.core import QgsProject, QgsVectorLayer
|
|
|
+from qgis.core import QgsProject
|
|
|
+import sys
|
|
|
|
|
|
from PyQt5 import QtWidgets
|
|
|
from PyQt5 import uic
|
|
|
@@ -37,6 +38,7 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
self.available_schemas = mncheck.list_schemas()
|
|
|
self.iface = iface
|
|
|
self.schema_lib = None
|
|
|
+ self.user_conf = {}
|
|
|
|
|
|
self.createWidgets()
|
|
|
|
|
|
@@ -45,6 +47,8 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
self.ui = Ui_Main()
|
|
|
self.ui.setupUi(self)
|
|
|
|
|
|
+ self.user_conf = mncheck.get_user_data()
|
|
|
+
|
|
|
self.setWindowTitle(f"MnCheck v{VERSION}")
|
|
|
self.setWindowIcon(QIcon(MAIN / "icon.png"))
|
|
|
|
|
|
@@ -63,6 +67,9 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
except AttributeError:
|
|
|
self.ui.cbb_schemas.addItem(schema_name, i)
|
|
|
|
|
|
+ if 'current_schema' in self.user_conf and self.user_conf['current_schema'] == schema_name:
|
|
|
+ self.ui.cbb_schemas.setCurrentIndex(i)
|
|
|
+
|
|
|
self.ui.cbb_schemas.currentIndexChanged.connect(self.update_layers_list)
|
|
|
|
|
|
self.ui.progress_bar.setVisible(False)
|
|
|
@@ -71,22 +78,22 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
self.ui.tree_report.itemClicked.connect(self.tree_item_clicked)
|
|
|
self.ui.tree_report.expanded.connect(self.tree_item_expanded)
|
|
|
|
|
|
+ QgsProject.instance().layersAdded.connect(self.update_layers_list)
|
|
|
+ QgsProject.instance().layersRemoved.connect(self.update_layers_list)
|
|
|
+
|
|
|
self.update_layers_list()
|
|
|
|
|
|
def tree_item_expanded(self, _):
|
|
|
self.tree_auto_resize()
|
|
|
-
|
|
|
+
|
|
|
def tree_auto_resize(self):
|
|
|
self.ui.tree_report.resizeColumnToContents(1)
|
|
|
self.ui.tree_report.resizeColumnToContents(2)
|
|
|
self.ui.tree_report.setColumnWidth(1, self.ui.tree_report.columnWidth(1) + 20)
|
|
|
self.ui.tree_report.setColumnWidth(2, self.ui.tree_report.columnWidth(2) + 20)
|
|
|
|
|
|
- def current_schema(self):
|
|
|
- schema_name = self.available_schemas[int(self.ui.cbb_schemas.itemData(self.ui.cbb_schemas.currentIndex()))]
|
|
|
- logger.info("Selected schema: %s", schema_name)
|
|
|
-
|
|
|
- return mncheck.get_schema(schema_name)
|
|
|
+ def current_schema_name(self):
|
|
|
+ return self.available_schemas[int(self.ui.cbb_schemas.itemData(self.ui.cbb_schemas.currentIndex()))]
|
|
|
|
|
|
def init_progress_bar(self, value=0, minimum=0, maximum=100):
|
|
|
self.ui.progress_bar.setMinimum(minimum)
|
|
|
@@ -98,12 +105,20 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
|
|
|
def test_ended(self, test):
|
|
|
logger.debug("* %s - %s", test.name, test.status_str)
|
|
|
+ if test.status == checking.ERROR:
|
|
|
+ try:
|
|
|
+ logger.debug("%s", "\n".join([e.info['exc_info'] for e in test.errors]))
|
|
|
+ except KeyError:
|
|
|
+ pass
|
|
|
self.ui.progress_bar.setValue(self.ui.progress_bar.value() + 1)
|
|
|
self.ui.progress_bar.update()
|
|
|
|
|
|
def update_layers_list(self):
|
|
|
|
|
|
- schema = self.current_schema()
|
|
|
+ schema_name = self.current_schema_name()
|
|
|
+ logger.info("Selected schema: %s", schema_name)
|
|
|
+
|
|
|
+ schema = mncheck.get_schema(schema_name)
|
|
|
|
|
|
expected = [model.layername for model in schema.models]
|
|
|
logger.info("Expected layers: %s", str(expected))
|
|
|
@@ -138,7 +153,9 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
self.ui.tree_report.clear()
|
|
|
|
|
|
try:
|
|
|
- schema = self.current_schema()
|
|
|
+ schema_name = self.current_schema_name()
|
|
|
+
|
|
|
+ schema = mncheck.get_schema(schema_name)
|
|
|
if not schema:
|
|
|
logger.error("Aucun schéma sélectionné - Opération annulée")
|
|
|
return
|
|
|
@@ -199,19 +216,18 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
|
|
|
msg = err.message
|
|
|
|
|
|
+ erritem.setText(1, msg)
|
|
|
+
|
|
|
if "exc_info" in err.info:
|
|
|
- logger.debug("%s", err.message, err.info["exc_info"])
|
|
|
- erritem.setData(1, Qt.UserRole, err.info["exc_info"])
|
|
|
+ erritem.setData(1, Qt.UserRole, err)
|
|
|
|
|
|
elif "model" in err.info:
|
|
|
data = err.info["model"]
|
|
|
- erritem.setText(1, msg)
|
|
|
erritem.setText(2, f"{data.layername}".upper())
|
|
|
erritem.setData(1, Qt.UserRole, data)
|
|
|
|
|
|
elif "item" in err.info:
|
|
|
data = err.info["item"]
|
|
|
- erritem.setText(1, msg)
|
|
|
erritem.setText(2, f"{data}")
|
|
|
erritem.setData(1, Qt.UserRole, data)
|
|
|
|
|
|
@@ -229,7 +245,7 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
if not data:
|
|
|
return
|
|
|
|
|
|
- if hasattr(data, "_feature"):
|
|
|
+ elif hasattr(data, "_feature"):
|
|
|
self.zoom_to_feature(data.layer, data._feature)
|
|
|
|
|
|
elif hasattr(data, "layer"):
|
|
|
@@ -252,8 +268,15 @@ class DlgMain(QtWidgets.QDialog):
|
|
|
def show_help(self):
|
|
|
pass
|
|
|
|
|
|
- def show_settings(self):
|
|
|
- pass
|
|
|
-
|
|
|
-
|
|
|
+ def store_config(self):
|
|
|
+ user_conf = mncheck.get_user_data()
|
|
|
+
|
|
|
+ user_conf["current_schema"] = self.current_schema_name()
|
|
|
+
|
|
|
+ mncheck.dump_user_data(user_conf)
|
|
|
+
|
|
|
+ def closeEvent(self, event):
|
|
|
+ self.store_config()
|
|
|
+
|
|
|
+ super().closeEvent(event)
|
|
|
|