Skip to content

Commit

Permalink
[gui] Convert current Basket manager into Create Basket dialog
Browse files Browse the repository at this point in the history
  • Loading branch information
gacarrillor committed Aug 26, 2024
1 parent d29c419 commit 95376dc
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 46 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions QgisModelBaker/gui/dataset_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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_()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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

Expand All @@ -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(
"<html><head/><body><p>The OID format is not defined, you can use whatever you want, but it should always start with an underscore <code>_</code> or an alphanumeric value.</p></body></html>"
)
Expand Down Expand Up @@ -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 "<html><head/><body><p>Use `{t_id}` as placeholder when you want to use the next T_Id sequence value.</body></html>"
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)
Expand Down Expand Up @@ -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)

Expand Down
20 changes: 12 additions & 8 deletions QgisModelBaker/gui/workflow_wizard/default_baskets_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand All @@ -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
Expand All @@ -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..."
Expand All @@ -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):
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>BasketManagerDialog</class>
<widget class="QDialog" name="BasketManagerDialog">
<class>CreateBasketDialog</class>
<widget class="QDialog" name="CreateBasketDialog">
<property name="geometry">
<rect>
<x>0</x>
Expand All @@ -11,13 +11,13 @@
</rect>
</property>
<property name="windowTitle">
<string>Manage Baskets</string>
<string>Create Baskets</string>
</property>
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Save</set>
</property>
</widget>
</item>
Expand Down

0 comments on commit 95376dc

Please sign in to comment.