From 95376dcbd8ef65e8e95bb7c6e28946168162ab7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Germ=C3=A1n=20Carrillo?= Date: Mon, 26 Aug 2024 17:40:10 -0500 Subject: [PATCH] [gui] Convert current Basket manager into Create Basket dialog --- .../{basket_manager.py => create_baskets.py} | 8 +-- QgisModelBaker/gui/dataset_manager.py | 4 +- ...basket_panel.py => create_basket_panel.py} | 56 +++++++++---------- .../workflow_wizard/default_baskets_page.py | 20 ++++--- .../{basket_manager.ui => create_baskets.ui} | 8 +-- 5 files changed, 50 insertions(+), 46 deletions(-) rename QgisModelBaker/gui/{basket_manager.py => create_baskets.py} (91%) rename QgisModelBaker/gui/panel/{basket_panel.py => create_basket_panel.py} (85%) rename QgisModelBaker/ui/{basket_manager.ui => create_baskets.ui} (76%) diff --git a/QgisModelBaker/gui/basket_manager.py b/QgisModelBaker/gui/create_baskets.py similarity index 91% rename from QgisModelBaker/gui/basket_manager.py rename to QgisModelBaker/gui/create_baskets.py index 114687a9c..443099b94 100644 --- a/QgisModelBaker/gui/basket_manager.py +++ b/QgisModelBaker/gui/create_baskets.py @@ -19,13 +19,13 @@ from qgis.PyQt.QtWidgets import QDialog, QMessageBox -from QgisModelBaker.gui.panel.basket_panel import BasketPanel +from QgisModelBaker.gui.panel.create_basket_panel import CreateBasketPanel from QgisModelBaker.utils import gui_utils -DIALOG_UI = gui_utils.get_ui_class("basket_manager.ui") +DIALOG_UI = gui_utils.get_ui_class("create_baskets.ui") -class BasketManagerDialog(QDialog, DIALOG_UI): +class CreateBasketDialog(QDialog, DIALOG_UI): def __init__(self, parent=None, db_connector=None, datasetname=None): QDialog.__init__(self, parent) self.setupUi(self) @@ -37,7 +37,7 @@ def __init__(self, parent=None, db_connector=None, datasetname=None): self.buttonBox.rejected.connect(self._rejected) # baskets part - self.baskets_panel = BasketPanel(self) + self.baskets_panel = CreateBasketPanel(self) self.baskets_layout.addWidget(self.baskets_panel) self.baskets_panel.load_basket_config(self.db_connector, self.datasetname) diff --git a/QgisModelBaker/gui/dataset_manager.py b/QgisModelBaker/gui/dataset_manager.py index 3d2734e58..b7f8a9815 100644 --- a/QgisModelBaker/gui/dataset_manager.py +++ b/QgisModelBaker/gui/dataset_manager.py @@ -28,7 +28,7 @@ ) import QgisModelBaker.libs.modelbaker.utils.db_utils as db_utils -from QgisModelBaker.gui.basket_manager import BasketManagerDialog +from QgisModelBaker.gui.create_baskets import CreateBasketDialog from QgisModelBaker.gui.edit_dataset_name import EditDatasetDialog from QgisModelBaker.libs.modelbaker.db_factory.db_simple_factory import DbSimpleFactory from QgisModelBaker.libs.modelbaker.iliwrapper.globals import DbIliMode @@ -183,7 +183,7 @@ def _open_basket_manager(self): datasetname = self.dataset_tableview.selectedIndexes()[0].data( int(DatasetModel.Roles.DATASETNAME) ) - basket_manager_dialog = BasketManagerDialog( + basket_manager_dialog = CreateBasketDialog( self, db_connector, datasetname ) basket_manager_dialog.exec_() diff --git a/QgisModelBaker/gui/panel/basket_panel.py b/QgisModelBaker/gui/panel/create_basket_panel.py similarity index 85% rename from QgisModelBaker/gui/panel/basket_panel.py rename to QgisModelBaker/gui/panel/create_basket_panel.py index 0053917de..02be9c350 100644 --- a/QgisModelBaker/gui/panel/basket_panel.py +++ b/QgisModelBaker/gui/panel/create_basket_panel.py @@ -30,7 +30,7 @@ WIDGET_UI = gui_utils.get_ui_class("basket_panel.ui") -class BasketModel(QAbstractTableModel): +class CreateBasketModel(QAbstractTableModel): """ ItemModel providing all the baskets, the existing ones and the possible ones in the given dataset. It provides the topic, the suggested BIDs (t_ili_tid) and the information if it's created already. @@ -54,17 +54,17 @@ def __init__(self): self.basket_settings = {} def columnCount(self, parent): - return len(BasketModel.Columns) + return len(CreateBasketModel.Columns) def rowCount(self, parent): return len(self.basket_settings.keys()) def flags(self, index): - if index.data(int(BasketModel.Roles.EXISTING)): + if index.data(int(CreateBasketModel.Roles.EXISTING)): return Qt.ItemIsSelectable - if index.column() == BasketModel.Columns.DO_CREATE: + if index.column() == CreateBasketModel.Columns.DO_CREATE: return Qt.ItemIsEnabled - if index.column() == BasketModel.Columns.BID_VALUE: + if index.column() == CreateBasketModel.Columns.BID_VALUE: return Qt.ItemIsEditable | Qt.ItemIsEnabled return Qt.ItemIsSelectable | Qt.ItemIsEnabled @@ -82,33 +82,33 @@ def parent(self, index): def headerData(self, section, orientation, role): if orientation == Qt.Horizontal and role == Qt.DisplayRole: - if section == BasketModel.Columns.DO_CREATE: + if section == CreateBasketModel.Columns.DO_CREATE: return self.tr("Create") - if section == BasketModel.Columns.TOPIC: + if section == CreateBasketModel.Columns.TOPIC: return self.tr("Topic") - if section == BasketModel.Columns.BID_DOMAIN: + if section == CreateBasketModel.Columns.BID_DOMAIN: return self.tr("BID (OID Type)") - if section == BasketModel.Columns.BID_VALUE: + if section == CreateBasketModel.Columns.BID_VALUE: return self.tr("BID Value") def data(self, index, role): if role == int(Qt.DisplayRole) or role == int(Qt.EditRole): key = list(self.basket_settings.keys())[index.row()] - if index.column() == BasketModel.Columns.DO_CREATE: + if index.column() == CreateBasketModel.Columns.DO_CREATE: return self.basket_settings[key]["create"] - if index.column() == BasketModel.Columns.TOPIC: + if index.column() == CreateBasketModel.Columns.TOPIC: return key - if index.column() == BasketModel.Columns.BID_DOMAIN: + if index.column() == CreateBasketModel.Columns.BID_DOMAIN: return self.basket_settings[key]["bid_domain"] or "---" - if index.column() == BasketModel.Columns.BID_VALUE: + if index.column() == CreateBasketModel.Columns.BID_VALUE: return self.basket_settings[key]["bid_value"] elif role == int(Qt.ToolTipRole): key = list(self.basket_settings.keys())[index.row()] - if index.column() == BasketModel.Columns.DO_CREATE: + if index.column() == CreateBasketModel.Columns.DO_CREATE: return self.tr("If this basket should be created") - if index.column() == BasketModel.Columns.TOPIC: + if index.column() == CreateBasketModel.Columns.TOPIC: return key - if index.column() == BasketModel.Columns.BID_DOMAIN: + if index.column() == CreateBasketModel.Columns.BID_DOMAIN: message = self.tr( "

The OID format is not defined, you can use whatever you want, but it should always start with an underscore _ or an alphanumeric value.

" ) @@ -141,20 +141,20 @@ def data(self, index, role): ) ) return message - if index.column() == BasketModel.Columns.BID_VALUE: + if index.column() == CreateBasketModel.Columns.BID_VALUE: return "

Use `{t_id}` as placeholder when you want to use the next T_Id sequence value." - elif role == int(BasketModel.Roles.EXISTING): + elif role == int(CreateBasketModel.Roles.EXISTING): key = list(self.basket_settings.keys())[index.row()] return self.basket_settings[key]["existing"] return None def setData(self, index, data, role): if role == int(Qt.EditRole): - if index.column() == BasketModel.Columns.BID_VALUE: + if index.column() == CreateBasketModel.Columns.BID_VALUE: key = list(self.basket_settings.keys())[index.row()] self.basket_settings[key]["bid_value"] = data self.dataChanged.emit(index, index) - if index.column() == BasketModel.Columns.DO_CREATE: + if index.column() == CreateBasketModel.Columns.DO_CREATE: key = list(self.basket_settings.keys())[index.row()] self.basket_settings[key]["create"] = data self.dataChanged.emit(index, index) @@ -228,30 +228,30 @@ def save_basket_config(self, db_connector, dataset): return feedbacks -class BasketPanel(QWidget, WIDGET_UI): +class CreateBasketPanel(QWidget, WIDGET_UI): def __init__(self, parent=None): QWidget.__init__(self, parent) self.setupUi(self) self.parent = parent - self.bid_model = BasketModel() + self.bid_model = CreateBasketModel() self.basket_view.setModel(self.bid_model) self.basket_view.horizontalHeader().setSectionResizeMode( - BasketModel.Columns.DO_CREATE, QHeaderView.ResizeToContents + CreateBasketModel.Columns.DO_CREATE, QHeaderView.ResizeToContents ) self.basket_view.horizontalHeader().setSectionResizeMode( - BasketModel.Columns.TOPIC, QHeaderView.Stretch + CreateBasketModel.Columns.TOPIC, QHeaderView.Stretch ) self.basket_view.horizontalHeader().setSectionResizeMode( - BasketModel.Columns.BID_DOMAIN, QHeaderView.ResizeToContents + CreateBasketModel.Columns.BID_DOMAIN, QHeaderView.ResizeToContents ) self.basket_view.horizontalHeader().setSectionResizeMode( - BasketModel.Columns.BID_VALUE, QHeaderView.ResizeToContents + CreateBasketModel.Columns.BID_VALUE, QHeaderView.ResizeToContents ) self.basket_view.setItemDelegateForColumn( - BasketModel.Columns.DO_CREATE, - CheckDelegate(self, Qt.EditRole, BasketModel.Roles.EXISTING), + CreateBasketModel.Columns.DO_CREATE, + CheckDelegate(self, Qt.EditRole, CreateBasketModel.Roles.EXISTING), ) self.basket_view.setEditTriggers(QAbstractItemView.AllEditTriggers) diff --git a/QgisModelBaker/gui/workflow_wizard/default_baskets_page.py b/QgisModelBaker/gui/workflow_wizard/default_baskets_page.py index 6f62db368..3609136e7 100644 --- a/QgisModelBaker/gui/workflow_wizard/default_baskets_page.py +++ b/QgisModelBaker/gui/workflow_wizard/default_baskets_page.py @@ -20,7 +20,7 @@ from qgis.PyQt.QtWidgets import QWizardPage import QgisModelBaker.libs.modelbaker.utils.db_utils as db_utils -from QgisModelBaker.gui.panel.basket_panel import BasketPanel +from QgisModelBaker.gui.panel.create_basket_panel import CreateBasketPanel from QgisModelBaker.utils import gui_utils from QgisModelBaker.utils.globals import DEFAULT_DATASETNAME from QgisModelBaker.utils.gui_utils import LogLevel @@ -38,8 +38,8 @@ def __init__(self, parent, title): self.setTitle(title) self.setStyleSheet(gui_utils.DEFAULT_STYLE) - self.baskets_panel = BasketPanel(self) - self.baskets_layout.addWidget(self.baskets_panel) + self.create_baskets_panel = CreateBasketPanel(self) + self.baskets_layout.addWidget(self.create_baskets_panel) self.create_default_baskets_button.clicked.connect(self._create_default_baskets) self.skip_button.clicked.connect(self._skip) @@ -59,12 +59,14 @@ def nextId(self): def restore_configuration(self, configuration): self.db_connector = db_utils.get_db_connector(configuration) - self.baskets_panel.load_basket_config(self.db_connector, DEFAULT_DATASETNAME) + self.create_baskets_panel.load_basket_config( + self.db_connector, DEFAULT_DATASETNAME + ) def _create_default_baskets(self): self.progress_bar.setValue(0) # we store the settings to the db - feedbacks = self.baskets_panel.save_basket_config( + feedbacks = self.create_baskets_panel.save_basket_config( self.db_connector, DEFAULT_DATASETNAME ) success = True @@ -83,10 +85,12 @@ def _create_default_baskets(self): self.setStyleSheet(gui_utils.SUCCESS_STYLE) self.create_default_baskets_button.setDisabled(True) self.skip_button.setDisabled(True) - self.baskets_panel.setDisabled(True) + self.create_baskets_panel.setDisabled(True) self.setComplete(True) else: - self.workflow_wizard.log_panel.print_info(message) + self.workflow_wizard.log_panel.print_info( + message + ) # TODO: Where message comes from? self.progress_bar.setFormat( self.tr( "Issues occured. Skip to proceed and fix it in Dataset Manager..." @@ -101,7 +105,7 @@ def _skip(self): self.setStyleSheet(gui_utils.INACTIVE_STYLE) self.create_default_baskets_button.setDisabled(True) self.skip_button.setDisabled(True) - self.baskets_panel.setDisabled(True) + self.create_baskets_panel.setDisabled(True) self.setComplete(True) def help_text(self): diff --git a/QgisModelBaker/ui/basket_manager.ui b/QgisModelBaker/ui/create_baskets.ui similarity index 76% rename from QgisModelBaker/ui/basket_manager.ui rename to QgisModelBaker/ui/create_baskets.ui index 9c9237e88..ece11a45a 100644 --- a/QgisModelBaker/ui/basket_manager.ui +++ b/QgisModelBaker/ui/create_baskets.ui @@ -1,7 +1,7 @@ - BasketManagerDialog - + CreateBasketDialog + 0 @@ -11,13 +11,13 @@ - Manage Baskets + Create Baskets - QDialogButtonBox::Cancel|QDialogButtonBox::Ok + QDialogButtonBox::Cancel|QDialogButtonBox::Save