From ca49dec1c210d08d93af711f0f5c76e534cfda46 Mon Sep 17 00:00:00 2001 From: luxick Date: Wed, 24 May 2017 13:09:38 +0200 Subject: [PATCH] Select lists to show in Wants View --- cardvault/application.py | 7 ++++++- cardvault/cardlist.py | 6 +++++- cardvault/gui/wants.glade | 14 ++++++++++++-- cardvault/handlers.py | 16 ++++++++++++++-- cardvault/wants_funct.py | 34 ++++++++++++++++++++++++++++------ 5 files changed, 65 insertions(+), 12 deletions(-) diff --git a/cardvault/application.py b/cardvault/application.py index 4468784..a9495f3 100644 --- a/cardvault/application.py +++ b/cardvault/application.py @@ -296,10 +296,15 @@ class Application: all_ids = list(set(all_ids) | set(next_ids)) return all_ids + def get_wanted_cards(self, list_name: str = None) -> Dict[str, Type[mtgsdk.Card]]: + if list_name: + out = {card.multiverse_id: card for card in self.wants[list_name]} + return out + def add_want_list(self, name): self.wants[name] = [] util.log("Want list '" + name + "' created", util.LogLevel.Info) - self.push_status("Created want list '" + name + "'") + self.push_status("Created want listwantsListContainer '" + name + "'") self.unsaved_changes = True def add_card_to_want_list(self, list_name, card): diff --git a/cardvault/cardlist.py b/cardvault/cardlist.py index 5017802..1666872 100644 --- a/cardvault/cardlist.py +++ b/cardvault/cardlist.py @@ -2,6 +2,10 @@ import gi from cardvault import util from cardvault import application from gi.repository import Gtk, GdkPixbuf, Gdk + +from typing import Dict, Type +from mtgsdk import Card + import time gi.require_version('Gtk', '3.0') gi.require_version('Gdk', '3.0') @@ -123,7 +127,7 @@ class CardList(Gtk.ScrolledWindow): output[card_id] = card return output - def update(self, library, colorize=False): + def update(self, library: Dict[str, Type[Card]], colorize=False): self.store.clear() if library is None: return diff --git a/cardvault/gui/wants.glade b/cardvault/gui/wants.glade index a36ebdf..aef9f54 100644 --- a/cardvault/gui/wants.glade +++ b/cardvault/gui/wants.glade @@ -34,8 +34,9 @@ True wantsListsStore 0 + - + @@ -109,8 +110,17 @@ True False + 2 - + + True + False + + + False + True + 0 + diff --git a/cardvault/handlers.py b/cardvault/handlers.py index 0bc1f8d..9211a6c 100644 --- a/cardvault/handlers.py +++ b/cardvault/handlers.py @@ -258,6 +258,13 @@ class Handlers: self.app.add_want_list(name) wants_funct.reload_wants_view(self.app) + def on_want_list_selected(self, selection, path, column): + (model, pathlist) = selection.get_selected_rows() + for path in pathlist: + tree_iter = model.get_iter(path) + list_name = model.get_value(tree_iter, 0) + wants_funct.reload_wants_view(self.app, list_name) + # Handlers for TreeViews etc. wich have been not added by Glade # ---------------------------------Search Tree---------------------------------------------- @@ -313,5 +320,10 @@ class Handlers: # ---------------------------------Wants Tree---------------------------------------------- def on_wants_card_selected(self, tree, row, column): - # TODO - pass + (model, path_list) = tree.get_selection().get_selected_rows() + for path in path_list: + tree_iter = model.get_iter(path) + card_id = model.get_value(tree_iter, 0) + card_list = self.app.ui.get_object("wantsListContainer").get_child() + card = card_list.lib[card_id] + self.app.show_card_details(card) diff --git a/cardvault/wants_funct.py b/cardvault/wants_funct.py index 57078c3..3c0de2e 100644 --- a/cardvault/wants_funct.py +++ b/cardvault/wants_funct.py @@ -1,3 +1,7 @@ +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk + from cardvault import cardlist from cardvault import application @@ -18,11 +22,29 @@ def init_wants_view(app: 'application.Application'): app.ui.get_object("wantsOverlay").set_visible(False) -def reload_wants_view(app: 'application.Application'): - store = app.ui.get_object("wantsListsStore") +def reload_wants_view(app: 'application.Application', selected_list: str = None): + tree = app.ui.get_object("wantsListContainer").get_child() # type: cardlist.CardList + cards = app.get_wanted_cards(selected_list) + reload_wants_list(app, True) + if cards: + app.ui.get_object("wantsOverlay").set_visible(False) + tree.update(cards) + else: + tree.store.clear() + app.ui.get_object("wantsOverlay").set_visible(True) + + # Set Title + label = app.ui.get_object("wantsTileLabel") # type: Gtk.Label + label.set_markup("" + selected_list + "") + +def reload_wants_list(app: 'application.Application', preserve=False): + tree = app.ui.get_object("wantsListsTree") + (path, column) = tree.get_cursor() + store = tree.get_model() store.clear() - for list_name in app.wants.keys(): - display_name = list_name + " (" + str(len(app.wants[list_name])) + ")" - store.append([list_name, display_name]) - + for list_name, cards in app.wants.items(): + store.append([list_name, list_name + " (" + str(len(cards)) + ")"]) + if preserve: + tree.set_cursor(path if path else 0) + store.set_sort_column_id(1, Gtk.SortType.ASCENDING)