editing item

This commit is contained in:
BarsTiger
2022-08-12 19:28:56 +03:00
parent 12b0ac42b7
commit dfbf3015b3
5 changed files with 395 additions and 4 deletions

View File

@@ -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

View File

@@ -295,6 +295,9 @@ QToolBox::tab {
</property>
<item>
<widget class="QStackedWidget" name="content">
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="main_page">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
@@ -1695,8 +1698,8 @@ p, li { white-space: pre-wrap; }
<rect>
<x>0</x>
<y>0</y>
<width>782</width>
<height>349</height>
<width>296</width>
<height>144</height>
</rect>
</property>
<attribute name="label">
@@ -1862,8 +1865,8 @@ p, li { white-space: pre-wrap; }
<rect>
<x>0</x>
<y>0</y>
<width>782</width>
<height>349</height>
<width>166</width>
<height>95</height>
</rect>
</property>
<attribute name="label">
@@ -1982,6 +1985,232 @@ p, li { white-space: pre-wrap; }
</item>
</layout>
</widget>
<widget class="QWidget" name="edit_item_page">
<layout class="QVBoxLayout" name="verticalLayout_19">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QWidget" name="topmenu_content" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_11">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QPushButton" name="cancel_edit_button">
<property name="minimumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>48</width>
<height>48</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset resource="images.qrc">
<normaloff>:/img/img/cancel.png</normaloff>:/img/img/cancel.png</iconset>
</property>
<property name="iconSize">
<size>
<width>32</width>
<height>32</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="edit_old_item_name">
<property name="text">
<string/>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="edit_box_item_name_label">
<property name="text">
<string>Item name</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="edit_box_item_name">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="edit_box_price_label">
<property name="text">
<string>Price</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="edit_box_price">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="prefix">
<string>$</string>
</property>
<property name="maximum">
<number>10000000</number>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="edit_box_item_class_label">
<property name="text">
<string>Item class</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="edit_box_item_class">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="edit_box_item_type_label">
<property name="text">
<string>Item type</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="edit_box_item_type">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="edit_box_shop_label">
<property name="text">
<string>Shop website</string>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="edit_box_shop">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="edit_box_image_label">
<property name="text">
<string>Image URL</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="edit_box_image">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer_19">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>1</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="edit_save_button">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="text">
<string>Save</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
</layout>

View File

@@ -0,0 +1 @@
from .on_edit import *

View File

@@ -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)

View File

@@ -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)