diff --git a/cardvault/application.py b/cardvault/application.py
index 05f91e4..a6db8cf 100644
--- a/cardvault/application.py
+++ b/cardvault/application.py
@@ -18,9 +18,6 @@ from typing import Type, Dict, List
from cardvault import handlers
from cardvault import util
-from cardvault import wants_funct
-
-
class Application:
diff --git a/cardvault/cardlist.py b/cardvault/cardlist.py
index 7787270..a41432c 100644
--- a/cardvault/cardlist.py
+++ b/cardvault/cardlist.py
@@ -1,3 +1,5 @@
+import copy
+
import gi
from cardvault import util
from cardvault import application
@@ -14,7 +16,7 @@ gi.require_version('Gdk', '3.0')
class CardList(Gtk.ScrolledWindow):
def __init__(self, filtered, app: 'application.Application', row_colors: Dict[str, str]):
Gtk.ScrolledWindow.__init__(self)
- self.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
+ self.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC)
self.set_hexpand(True)
self.set_vexpand(True)
@@ -23,100 +25,20 @@ class CardList(Gtk.ScrolledWindow):
self.app = app
self.row_colors = row_colors
- # Columns are these:
- # 0 Multiverse ID
- # 1 Card Name
- # 2 Card Supertypes (Legendary,..)
- # 3 Card types (Creature, etc)
- # 4 Rarity
- # 5 Power
- # 6 Toughness
- # 7 Printings (Sets with this card in it)
- # 8 Mana Cost(Form: {G}{2})
- # 9 CMC
- # 10 Edition
- # 11 Color indicating if the card is owned or wanted
- self.store = Gtk.ListStore(int, str, str, str, str, str, str, str, GdkPixbuf.Pixbuf, int, str, str)
- if self.filtered:
- self.filter = self.store.filter_new()
- self.filter_and_sort = Gtk.TreeModelSort(self.filter)
- self.filter_and_sort.set_sort_func(4, self.compare_rarity, None)
- self.list = Gtk.TreeView(self.filter_and_sort)
- else:
- self.store.set_sort_func(4, self.compare_rarity, None)
- self.list = Gtk.TreeView(self.store)
- self.add(self.list)
+ builder = Gtk.Builder()
+ builder.add_from_file(util.get_ui_filename("cardtree.glade"))
- self.list.set_rules_hint(True)
- self.selection = self.list.get_selection()
- self.selection.set_mode(Gtk.SelectionMode.MULTIPLE)
+ self.filter = builder.get_object("cardStoreFiltered")
- bold_renderer = Gtk.CellRendererText(xalign=0.5, yalign=0.5)
- bold_renderer.set_property("weight", 800)
+ self.store = builder.get_object("cardStore")
- text_renderer = Gtk.CellRendererText(xalign=0.5, yalign=0.5)
- text_renderer.set_property("weight", 500)
- image_renderer = Gtk.CellRendererPixbuf()
+ self.tree = builder.get_object("cardTree")
- col_id = Gtk.TreeViewColumn(title="Multiverse ID", cell_renderer=text_renderer, text=0, foreground=11)
- col_id.set_visible(False)
+ self.store.set_sort_func(4, self.compare_rarity, None)
- col_title = Gtk.TreeViewColumn(title="Name", cell_renderer=bold_renderer, text=1, foreground=11)
- col_title.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
- col_title.set_expand(True)
- col_title.set_sort_column_id(1)
+ self.add(self.tree)
- col_supertypes = Gtk.TreeViewColumn(title="Supertypes", cell_renderer=text_renderer, text=2, foreground=11)
- col_supertypes.set_sort_column_id(2)
- col_supertypes.set_visible(False)
-
- col_types = Gtk.TreeViewColumn(title="Types", cell_renderer=text_renderer, text=3, foreground=11)
- col_types.set_sort_column_id(3)
-
- col_rarity = Gtk.TreeViewColumn(title="Rarity", cell_renderer=text_renderer, text=4, foreground=11)
- col_rarity.set_sort_column_id(4)
-
- col_power = Gtk.TreeViewColumn(title="Power", cell_renderer=text_renderer, text=5, foreground=11)
- col_power.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
- col_power.set_fixed_width(50)
- col_power.set_sort_column_id(5)
- col_power.set_visible(False)
-
- col_thoughness = Gtk.TreeViewColumn(title="Toughness", cell_renderer=text_renderer, text=6, foreground=11)
- col_thoughness.set_sizing(Gtk.TreeViewColumnSizing.FIXED)
- col_thoughness.set_fixed_width(50)
- col_thoughness.set_sort_column_id(6)
- col_thoughness.set_visible(False)
-
- col_printings = Gtk.TreeViewColumn(title="Printings", cell_renderer=text_renderer, text=7, foreground=11)
- col_printings.set_sort_column_id(7)
- col_printings.set_visible(False)
-
- col_mana = Gtk.TreeViewColumn(title="Mana Cost", cell_renderer=image_renderer, pixbuf=8)
- col_mana.set_expand(False)
- col_mana.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
- col_mana.set_sort_column_id(9)
-
- col_cmc = Gtk.TreeViewColumn(title="CMC", cell_renderer=text_renderer, text=9, foreground=11)
- col_cmc.set_visible(False)
-
- col_set_name = Gtk.TreeViewColumn(title="Edition", cell_renderer=text_renderer, text=10, foreground=11)
- col_set_name.set_expand(False)
- col_set_name.set_sort_column_id(10)
-
- self.list.append_column(col_id)
- self.list.append_column(col_title)
- self.list.append_column(col_supertypes)
- self.list.append_column(col_types)
- self.list.append_column(col_rarity)
- self.list.append_column(col_set_name)
- self.list.append_column(col_power)
- self.list.append_column(col_thoughness)
- self.list.append_column(col_printings)
- self.list.append_column(col_mana)
- self.list.append_column(col_cmc)
-
- self.store.set_sort_column_id(1, Gtk.SortType.ASCENDING)
+ self.selection = self.tree.get_selection()
def get_selected_cards(self) -> dict:
(model, pathlist) = self.selection.get_selected_rows()
@@ -135,8 +57,7 @@ class CardList(Gtk.ScrolledWindow):
self.lib = library
# Disable update if tree is filtered (performance)
if self.filtered:
- self.list.freeze_child_notify()
- self.list.set_model(None)
+ self.tree.freeze_child_notify()
util.log("Updating tree view", util.LogLevel.Info)
start = time.time()
@@ -165,8 +86,7 @@ class CardList(Gtk.ScrolledWindow):
# Reactivate update for filtered trees
if self.filtered:
- self.list.set_model(self.filter_and_sort)
- self.list.thaw_child_notify()
+ self.tree.thaw_child_notify()
@staticmethod
def compare_rarity(model, row1, row2, user_data):
diff --git a/cardvault/gui/cardtree.glade b/cardvault/gui/cardtree.glade
index a14b5b4..f5aae41 100644
--- a/cardvault/gui/cardtree.glade
+++ b/cardvault/gui/cardtree.glade
@@ -30,23 +30,33 @@
+
+