From dfbf3015b3361b590c1e4a6186d6e77a4f3e39a2 Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Fri, 12 Aug 2022 19:28:56 +0300 Subject: [PATCH] editing item --- gui/gui.py | 90 ++++++++++++ gui/gui.ui | 237 ++++++++++++++++++++++++++++++- gui/modules/edit/__init__.py | 1 + gui/modules/edit/on_edit.py | 64 +++++++++ gui/modules/handlers/register.py | 7 + 5 files changed, 395 insertions(+), 4 deletions(-) create mode 100644 gui/modules/edit/__init__.py create mode 100644 gui/modules/edit/on_edit.py diff --git a/gui/gui.py b/gui/gui.py index 0777576..f15c5b7 100644 --- a/gui/gui.py +++ b/gui/gui.py @@ -590,10 +590,92 @@ class Ui_MainWindow(object): self.horizontalLayout_8.addWidget(self.options_lay) self.verticalLayout_15.addWidget(self.settings_layout) self.content.addWidget(self.settings_page) + self.edit_item_page = QtWidgets.QWidget() + self.edit_item_page.setObjectName("edit_item_page") + self.verticalLayout_19 = QtWidgets.QVBoxLayout(self.edit_item_page) + self.verticalLayout_19.setContentsMargins(0, 0, 0, 0) + self.verticalLayout_19.setObjectName("verticalLayout_19") + self.topmenu_content = QtWidgets.QWidget(self.edit_item_page) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.topmenu_content.sizePolicy().hasHeightForWidth()) + self.topmenu_content.setSizePolicy(sizePolicy) + self.topmenu_content.setObjectName("topmenu_content") + self.horizontalLayout_11 = QtWidgets.QHBoxLayout(self.topmenu_content) + self.horizontalLayout_11.setContentsMargins(0, 0, 0, 0) + self.horizontalLayout_11.setObjectName("horizontalLayout_11") + self.cancel_edit_button = QtWidgets.QPushButton(self.topmenu_content) + self.cancel_edit_button.setMinimumSize(QtCore.QSize(48, 48)) + self.cancel_edit_button.setMaximumSize(QtCore.QSize(48, 48)) + self.cancel_edit_button.setText("") + self.cancel_edit_button.setIcon(icon6) + self.cancel_edit_button.setIconSize(QtCore.QSize(32, 32)) + self.cancel_edit_button.setObjectName("cancel_edit_button") + self.horizontalLayout_11.addWidget(self.cancel_edit_button) + spacerItem22 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) + self.horizontalLayout_11.addItem(spacerItem22) + self.verticalLayout_19.addWidget(self.topmenu_content) + self.edit_old_item_name = QtWidgets.QLabel(self.edit_item_page) + self.edit_old_item_name.setText("") + self.edit_old_item_name.setObjectName("edit_old_item_name") + self.verticalLayout_19.addWidget(self.edit_old_item_name) + self.edit_box_item_name_label = QtWidgets.QLabel(self.edit_item_page) + self.edit_box_item_name_label.setObjectName("edit_box_item_name_label") + self.verticalLayout_19.addWidget(self.edit_box_item_name_label) + self.edit_box_item_name = QtWidgets.QLineEdit(self.edit_item_page) + self.edit_box_item_name.setMinimumSize(QtCore.QSize(0, 30)) + self.edit_box_item_name.setObjectName("edit_box_item_name") + self.verticalLayout_19.addWidget(self.edit_box_item_name) + self.edit_box_price_label = QtWidgets.QLabel(self.edit_item_page) + self.edit_box_price_label.setObjectName("edit_box_price_label") + self.verticalLayout_19.addWidget(self.edit_box_price_label) + self.edit_box_price = QtWidgets.QSpinBox(self.edit_item_page) + self.edit_box_price.setMinimumSize(QtCore.QSize(0, 30)) + self.edit_box_price.setStyleSheet("") + self.edit_box_price.setMaximum(10000000) + self.edit_box_price.setObjectName("edit_box_price") + self.verticalLayout_19.addWidget(self.edit_box_price) + self.edit_box_item_class_label = QtWidgets.QLabel(self.edit_item_page) + self.edit_box_item_class_label.setObjectName("edit_box_item_class_label") + self.verticalLayout_19.addWidget(self.edit_box_item_class_label) + self.edit_box_item_class = QtWidgets.QComboBox(self.edit_item_page) + self.edit_box_item_class.setMinimumSize(QtCore.QSize(0, 30)) + self.edit_box_item_class.setObjectName("edit_box_item_class") + self.verticalLayout_19.addWidget(self.edit_box_item_class) + self.edit_box_item_type_label = QtWidgets.QLabel(self.edit_item_page) + self.edit_box_item_type_label.setObjectName("edit_box_item_type_label") + self.verticalLayout_19.addWidget(self.edit_box_item_type_label) + self.edit_box_item_type = QtWidgets.QComboBox(self.edit_item_page) + self.edit_box_item_type.setMinimumSize(QtCore.QSize(0, 30)) + self.edit_box_item_type.setObjectName("edit_box_item_type") + self.verticalLayout_19.addWidget(self.edit_box_item_type) + self.edit_box_shop_label = QtWidgets.QLabel(self.edit_item_page) + self.edit_box_shop_label.setObjectName("edit_box_shop_label") + self.verticalLayout_19.addWidget(self.edit_box_shop_label) + self.edit_box_shop = QtWidgets.QComboBox(self.edit_item_page) + self.edit_box_shop.setMinimumSize(QtCore.QSize(0, 30)) + self.edit_box_shop.setObjectName("edit_box_shop") + self.verticalLayout_19.addWidget(self.edit_box_shop) + self.edit_box_image_label = QtWidgets.QLabel(self.edit_item_page) + self.edit_box_image_label.setObjectName("edit_box_image_label") + self.verticalLayout_19.addWidget(self.edit_box_image_label) + self.edit_box_image = QtWidgets.QLineEdit(self.edit_item_page) + self.edit_box_image.setMinimumSize(QtCore.QSize(0, 30)) + self.edit_box_image.setObjectName("edit_box_image") + self.verticalLayout_19.addWidget(self.edit_box_image) + spacerItem23 = QtWidgets.QSpacerItem(20, 1, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) + self.verticalLayout_19.addItem(spacerItem23) + self.edit_save_button = QtWidgets.QPushButton(self.edit_item_page) + self.edit_save_button.setMinimumSize(QtCore.QSize(0, 30)) + self.edit_save_button.setObjectName("edit_save_button") + self.verticalLayout_19.addWidget(self.edit_save_button) + self.content.addWidget(self.edit_item_page) self.verticalLayout_4.addWidget(self.content) MainWindow.setCentralWidget(self.centralwidget) self.retranslateUi(MainWindow) + self.content.setCurrentIndex(4) self.settings_toolbox.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(MainWindow) @@ -650,6 +732,14 @@ class Ui_MainWindow(object): self.app_theme_box.setItemText(2, _translate("MainWindow", "Black acrylic")) self.save_gui_setting_button.setText(_translate("MainWindow", "Save visual settings")) self.settings_toolbox.setItemText(self.settings_toolbox.indexOf(self.gui_options_page), _translate("MainWindow", "Visual options")) + self.edit_box_item_name_label.setText(_translate("MainWindow", "Item name")) + self.edit_box_price_label.setText(_translate("MainWindow", "Price")) + self.edit_box_price.setPrefix(_translate("MainWindow", "$")) + self.edit_box_item_class_label.setText(_translate("MainWindow", "Item class")) + self.edit_box_item_type_label.setText(_translate("MainWindow", "Item type")) + self.edit_box_shop_label.setText(_translate("MainWindow", "Shop website")) + self.edit_box_image_label.setText(_translate("MainWindow", "Image URL")) + self.edit_save_button.setText(_translate("MainWindow", "Save")) import gui.images_rc diff --git a/gui/gui.ui b/gui/gui.ui index a994140..49b1a6b 100644 --- a/gui/gui.ui +++ b/gui/gui.ui @@ -295,6 +295,9 @@ QToolBox::tab { + + 0 + @@ -1695,8 +1698,8 @@ p, li { white-space: pre-wrap; } 0 0 - 782 - 349 + 296 + 144 @@ -1862,8 +1865,8 @@ p, li { white-space: pre-wrap; } 0 0 - 782 - 349 + 166 + 95 @@ -1982,6 +1985,232 @@ p, li { white-space: pre-wrap; } + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 48 + 48 + + + + + 48 + 48 + + + + + + + + :/img/img/cancel.png:/img/img/cancel.png + + + + 32 + 32 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + Item name + + + + + + + + 0 + 30 + + + + + + + + Price + + + + + + + + 0 + 30 + + + + + + + $ + + + 10000000 + + + + + + + Item class + + + + + + + + 0 + 30 + + + + + + + + Item type + + + + + + + + 0 + 30 + + + + + + + + Shop website + + + + + + + + 0 + 30 + + + + + + + + Image URL + + + + + + + + 0 + 30 + + + + + + + + Qt::Vertical + + + + 20 + 1 + + + + + + + + + 0 + 30 + + + + Save + + + + + diff --git a/gui/modules/edit/__init__.py b/gui/modules/edit/__init__.py new file mode 100644 index 0000000..17f6795 --- /dev/null +++ b/gui/modules/edit/__init__.py @@ -0,0 +1 @@ +from .on_edit import * diff --git a/gui/modules/edit/on_edit.py b/gui/modules/edit/on_edit.py new file mode 100644 index 0000000..c7397a4 --- /dev/null +++ b/gui/modules/edit/on_edit.py @@ -0,0 +1,64 @@ +from gui.gui import Ui_MainWindow +from data import common +from gui.modules.core import items_list +from modules.database import Database +from modules.database.model import Item + + +def fill_type_box(ui: Ui_MainWindow): + if ui.edit_box_item_class.currentText() == "Vehicle": + ui.edit_box_item_type.clear() + ui.edit_box_item_type.addItems(common.vehicle_type) + elif ui.edit_box_item_class.currentText() == "Property": + ui.edit_box_item_type.clear() + ui.edit_box_item_type.addItems(common.property_type) + else: + ui.edit_box_item_type.clear() + ui.edit_box_item_type.addItem("Other") + + +def on_edit_item_click(ui: Ui_MainWindow): + item_to_edit_name = items_list.selected_item(ui) + + if not item_to_edit_name: + return + + item_to_edit = Database.get().items[item_to_edit_name] + + ui.edit_old_item_name.setText(item_to_edit_name) + + ui.edit_box_item_name.setText(item_to_edit.item_name) + ui.edit_box_price.setValue(item_to_edit.price) + ui.edit_box_item_class.addItems(common.items_class) + ui.edit_box_item_class.setCurrentText(item_to_edit.item_class) + ui.edit_box_item_type.addItem("Other") + ui.edit_box_item_type.addItem(item_to_edit.item_type) + ui.edit_box_item_type.setCurrentText(item_to_edit.item_type) + ui.edit_box_shop.addItems(common.shop_sites) + ui.edit_box_shop.setCurrentText(item_to_edit.shop) + ui.edit_box_image.setText(item_to_edit.image) + + ui.content.setCurrentWidget(ui.edit_item_page) + + +def on_save_edit(ui: Ui_MainWindow): + if {"", 0} & {ui.edit_box_item_name.text(), ui.edit_box_price.value()}: + return + + db = Database.get() + db.items[ui.edit_box_item_name.text()] = Item( + ui.edit_box_item_name.text(), + ui.edit_box_item_class.currentText(), + ui.edit_box_item_type.currentText(), + ui.edit_box_shop.currentText(), + ui.edit_box_price.value(), + ui.edit_box_image.text() if ui.edit_box_image.text() != "" else None + ) + + if ui.edit_box_item_name.text() != ui.edit_old_item_name.text(): + db.items.pop(ui.edit_old_item_name.text()) + + Database.write(db) + + ui.content.setCurrentWidget(ui.main_page) + items_list.refill_list(ui) diff --git a/gui/modules/handlers/register.py b/gui/modules/handlers/register.py index 0854809..63847fc 100644 --- a/gui/modules/handlers/register.py +++ b/gui/modules/handlers/register.py @@ -6,6 +6,7 @@ from gui.modules.filters import menu from gui.modules.core import items_list from gui.modules import account from gui.modules import settings +from gui.modules import edit def register_handlers(ui: Ui_MainWindow): @@ -33,5 +34,11 @@ def register_handlers(ui: Ui_MainWindow): ui.own_button.clicked.connect(lambda: account.owning.on_change_owning_clicked(ui)) + ui.edit_item_button.clicked.connect(lambda: edit.on_edit.on_edit_item_click(ui)) + ui.cancel_edit_button.clicked.connect(lambda: (ui.content.setCurrentWidget(ui.main_page), + items_list.refill_list(ui))) + ui.edit_box_item_class.currentTextChanged.connect(lambda: edit.on_edit.fill_type_box(ui)) + ui.edit_save_button.clicked.connect(lambda: edit.on_edit.on_save_edit(ui)) + on_add_click.register_add_handlers(ui) settings.register_handlers(ui)