Explorar o código

Integration de la fenetre de selection multiple au script
qgis_sync_compactage

olivier.massot %!s(int64=7) %!d(string=hai) anos
pai
achega
a3d586fc04
Modificáronse 2 ficheiros con 13 adicións e 11 borrados
  1. 11 8
      core/select_list_dialog.py
  2. 2 3
      qgis_sync_compactage.py

+ 11 - 8
core/select_list_dialog.py

@@ -18,7 +18,7 @@ from path import Path
 
 Ui_window, _ = uic.loadUiType(Path(__file__).parent / 'select_list_dialog.ui')
 
-def exec_(input_list):
+def exec_(*args, **kwargs):
 
     app = QApplication(sys.argv)
 
@@ -30,17 +30,20 @@ def exec_(input_list):
         SYS_HOOK(typ, value, trace)
     sys.excepthook = error_handler
 
-    dlg = SelectListDialog(input_list)
+    dlg = SelectListDialog(*args, **kwargs)
     dlg.show()
-    app.exec_()
-
-    return dlg.selection()
+    r = dlg.exec_()
+    if r:
+        return dlg.selection()
+    else:
+        return []
 
 class SelectListDialog(QDialog):
 
-    def __init__(self, input_list, title="Sélectionner les lignes"):
+    def __init__(self, input_list, modifier=lambda x: x, title="Sélectionner les lignes"):
         super (SelectListDialog, self).__init__()
         self.input_list = input_list
+        self.modifier = modifier
         self.title = title
         self.createWidgets()
 
@@ -53,9 +56,9 @@ class SelectListDialog(QDialog):
         self.ui.lbl_title.setText(self.title)
 
         index = 0
-        for nomChantier in self.input_list:
+        for item in self.input_list:
             self.ui.tbl_selection.insertRow(index)
-            self.ui.tbl_selection.setItem(index, 0, QTableWidgetItem("  {}".format(nomChantier)))
+            self.ui.tbl_selection.setItem(index, 0, QTableWidgetItem(str(self.modifier(item))))
             index += 1
         self.ui.tbl_selection.sortItems(0, Qt.AscendingOrder)
 

+ 2 - 3
qgis_sync_compactage.py

@@ -17,7 +17,7 @@ import sys
 from path import Path
 import shapefile
 
-from core import logconf
+from core import logconf, select_list_dialog
 from core.pde import ControlesDb, CSigDb, COMPACTAGE_DIR, QGisChantier, \
     QGisPoint, SRID
 from core.sqlformatter import SqlFormatter
@@ -52,8 +52,7 @@ rxi = re.compile(r"^(\d{5,6})(-S?\d{1,2})?[\s_]?(.*)$")  # non importés
 a_importer = [subdir for subdir in COMPACTAGE_DIR.dirs() if rxi.search(subdir.name)]
 
 if a_importer:
-    # TODO: Selection des chantiers à importer
-    pass
+    a_importer = select_list_dialog.exec_(a_importer, lambda x: x.name, "Sélectionnez les chantiers à importer")
 
 if not a_importer:
     logger.info("Aucun nouveau dossier à importer")