From 8045bbc6b7109d94f3d6bdb0e3beebdc3adfd36f Mon Sep 17 00:00:00 2001 From: BarsTiger Date: Tue, 9 Aug 2022 22:50:19 +0300 Subject: [PATCH] mark items as owned and unowned --- gui/modules/account/__init__.py | 1 + gui/modules/account/accounts.py | 2 ++ gui/modules/account/owning.py | 14 ++++++++++++++ gui/modules/core/items_list.py | 18 +++++++++++++----- gui/modules/handlers/fill_info.py | 8 +++----- gui/modules/handlers/on_item_remove.py | 5 +---- gui/modules/handlers/register.py | 2 ++ modules/database/database.py | 19 +++++++++++++++++++ 8 files changed, 55 insertions(+), 14 deletions(-) create mode 100644 gui/modules/account/owning.py diff --git a/gui/modules/account/__init__.py b/gui/modules/account/__init__.py index 6b80e14..d832b3e 100644 --- a/gui/modules/account/__init__.py +++ b/gui/modules/account/__init__.py @@ -1,2 +1,3 @@ from .manager import * from .accounts import * +from .owning import * diff --git a/gui/modules/account/accounts.py b/gui/modules/account/accounts.py index 722de60..e33c86f 100644 --- a/gui/modules/account/accounts.py +++ b/gui/modules/account/accounts.py @@ -1,5 +1,6 @@ from gui.gui import Ui_MainWindow from modules.database import Database +from gui.modules.core import items_list from modules.config import Config @@ -17,3 +18,4 @@ def fill_accounts(ui: Ui_MainWindow): def set_current_profile(ui: Ui_MainWindow): if ui.accounts_list.currentItem(): Config.update("profile", ui.accounts_list.currentItem().text()) + items_list.refill_list(ui) diff --git a/gui/modules/account/owning.py b/gui/modules/account/owning.py new file mode 100644 index 0000000..834876e --- /dev/null +++ b/gui/modules/account/owning.py @@ -0,0 +1,14 @@ +from gui.gui import Ui_MainWindow +from gui.modules.core import items_list +from modules.database import Database + + +def on_change_owning_clicked(ui: Ui_MainWindow): + if items_list.selected_item(ui) not in Database.get_profile().owned_items: + Database.set_owned(items_list.selected_item(ui)) + ui.own_button.setText("Mark this item as unowned") + items_list.refill_list(ui) + else: + Database.set_unowned(items_list.selected_item(ui)) + ui.own_button.setText("Mark this item as owned") + items_list.refill_list(ui) diff --git a/gui/modules/core/items_list.py b/gui/modules/core/items_list.py index 02181d5..34a63f2 100644 --- a/gui/modules/core/items_list.py +++ b/gui/modules/core/items_list.py @@ -6,6 +6,12 @@ from PyQt5 import QtWidgets, QtGui from gui.modules.handlers import fill_info +def selected_item(ui: Ui_MainWindow): + if ui.items_list.currentItem(): + return ui.items_list.currentItem().text() \ + .removesuffix(' - ' + ui.items_list.currentItem().text().split(' - ')[-1]).replace("☑", "") + + def refill_list(ui: Ui_MainWindow): ui.items_list.clear() if Database.get().items: @@ -24,14 +30,14 @@ def refill_list(ui: Ui_MainWindow): continue if (not ui.filter_show_owned_items_check.isChecked()) and item.item_name in \ - Database.get().profiles[Config.get().profile].owned_items: + Database.get_profile().owned_items: continue list_item = QtWidgets.QListWidgetItem() if Config.get().profile: ui.own_button.setEnabled(True) - if item.item_name in Database.get().profiles[Config.get().profile].owned_items: + if item.item_name in Database.get_profile().owned_items: ui.own_button.setText("Mark this item as unowned") else: ui.own_button.setText("Mark this item as owned") @@ -39,9 +45,11 @@ def refill_list(ui: Ui_MainWindow): ui.own_button.setEnabled(False) ui.own_button.setText("Select profile first") - list_item.setText(f'' - f'{"☑" if Config.get().profile and item.item_name in Database.get().profiles[Config.get().profile].owned_items else ""}' - f'{item.item_name} - ${"{:,}".format(item.price)}') + list_item.setText( + f'' + f'{"☑" if Config.get().profile and item.item_name in Database.get_profile().owned_items else ""}' + f'{item.item_name} - ${"{:,}".format(item.price)}' + ) pixmap = QtGui.QPixmap() try: pixmap.loadFromData(requests.get(item.image).content) diff --git a/gui/modules/handlers/fill_info.py b/gui/modules/handlers/fill_info.py index 5a010a7..e1b461a 100644 --- a/gui/modules/handlers/fill_info.py +++ b/gui/modules/handlers/fill_info.py @@ -3,14 +3,12 @@ from PyQt5 import QtWidgets, QtGui, QtCore from gui.gui import Ui_MainWindow from modules.database import Database from modules.config import Config +from gui.modules.core import items_list def on_item_click(ui: Ui_MainWindow, mode: str): if ui.items_list.currentItem(): - item = Database.get().items[ - ui.items_list.currentItem().text().removesuffix(' - ' + ui.items_list.currentItem().text().split(' - ')[-1]) - .replace("☑", "") - ] + item = Database.get().items[items_list.selected_item(ui)] pixmap = QtGui.QPixmap() try: @@ -23,7 +21,7 @@ def on_item_click(ui: Ui_MainWindow, mode: str): if Config.get().profile: ui.own_button.setEnabled(True) - if item.item_name in Database.get().profiles[Config.get().profile].owned_items: + if item.item_name in Database.get_profile().owned_items: ui.own_button.setText("Mark this item as unowned") else: ui.own_button.setText("Mark this item as owned") diff --git a/gui/modules/handlers/on_item_remove.py b/gui/modules/handlers/on_item_remove.py index a886428..a1ec54a 100644 --- a/gui/modules/handlers/on_item_remove.py +++ b/gui/modules/handlers/on_item_remove.py @@ -7,10 +7,7 @@ from gui.modules.filters.menu import refill_filters def on_rm_click(ui: Ui_MainWindow): from gui.modules.handlers import fill_info if ui.items_list.currentItem(): - Database.remove_item( - ui.items_list.currentItem().text().removesuffix(' - ' + ui.items_list.currentItem().text().split(' - ')[-1]) - .replace("☑", "") - ) + Database.remove_item(items_list.selected_item(ui)) items_list.refill_list(ui) refill_filters(ui) fill_info.on_item_click(ui, 'close') diff --git a/gui/modules/handlers/register.py b/gui/modules/handlers/register.py index 1a0a603..a4a5f67 100644 --- a/gui/modules/handlers/register.py +++ b/gui/modules/handlers/register.py @@ -30,4 +30,6 @@ def register_handlers(ui: Ui_MainWindow): ui.accept_account_name.clicked.connect(lambda: account.manager.create_account(ui)) ui.use_this_account_button.clicked.connect(lambda: account.accounts.set_current_profile(ui)) + ui.own_button.clicked.connect(lambda: account.owning.on_change_owning_clicked(ui)) + on_add_click.register_add_handlers(ui) diff --git a/modules/database/database.py b/modules/database/database.py index 41b9af9..fc3bb5e 100644 --- a/modules/database/database.py +++ b/modules/database/database.py @@ -16,6 +16,10 @@ class Database: json.dump(default_database, f, indent=4) return DatabaseModel.from_dict(default_database) + @staticmethod + def get_profile(): + return Database.get().profiles[Config.get().profile] + @staticmethod def write(db: DatabaseModel): with open(Config.get().database, 'w') as f: @@ -48,3 +52,18 @@ class Database: db.profiles.pop(profile_name) Database.write(db) + + @staticmethod + def set_owned(item_name: str): + db = Database.get() + db.profiles[Config.get().profile].owned_items.append(item_name) + + Database.write(db) + + @staticmethod + def set_unowned(item_name: str): + db = Database.get() + if item_name in db.profiles[Config.get().profile].owned_items: + db.profiles[Config.get().profile].owned_items.remove(item_name) + + Database.write(db)