From c974678df02bd4f5ff7f6137ad338612451ef720 Mon Sep 17 00:00:00 2001 From: luxick Date: Mon, 6 Feb 2017 18:14:18 +0100 Subject: [PATCH] Add UI for card search view --- gui.py | 3 ++- search.py | 65 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 search.py diff --git a/gui.py b/gui.py index fd8b1c1..6acdf69 100644 --- a/gui.py +++ b/gui.py @@ -1,5 +1,6 @@ import gi import collection +import search gi.require_version('Gtk', '3.0') from gi.repository import Gtk @@ -18,7 +19,7 @@ class MainWindow(Gtk.Window): self.collectionView.add(collection.CollectionView()) self.searchView = Gtk.Box() - self.searchView.add(Gtk.Label("Search the whole Magic Card Library!")) + self.searchView.add(search.SearchView()) self.deckView = Gtk.Box() self.deckView.add(Gtk.Label("View and organize your Decklists!")) diff --git a/search.py b/search.py new file mode 100644 index 0000000..664c26c --- /dev/null +++ b/search.py @@ -0,0 +1,65 @@ +import gi +from psutil._compat import xrange + +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk, GdkPixbuf + + +class SearchView(Gtk.Grid): + def __init__(self): + Gtk.Grid.__init__(self) + + # Search Box + self.searchbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=2) + self.searchEntry = Gtk.Entry() + self.searchEntryLabel = Gtk.Label("Search for Cards:", xalign=0) + self.searchbox.add(self.searchEntryLabel) + self.searchbox.add(self.searchEntry) + + # Filters + self.filterBox = Gtk.ListBox() + self.filterBox.set_selection_mode(Gtk.SelectionMode.NONE) + + self.testRow = Gtk.ListBoxRow() + hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL, spacing=50) + hbox.add(Gtk.Label("Filters will go here", xalign=0)) + self.testRow.add(hbox) + + self.filterBox.add(self.testRow) + + + #Card List + self.searchresults = Gtk.ScrolledWindow(hexpand=True, vexpand=True) + self.searchresults.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) + + self.store = Gtk.ListStore(GdkPixbuf.Pixbuf, str, str) + self.list = Gtk.TreeView(self.store) + self.searchresults.add(self.list) + + image = Gtk.CellRendererPixbuf() + name = Gtk.CellRendererText() + info = Gtk.CellRendererText() + self.column1 = Gtk.TreeViewColumn(title="Image", cell_renderer=image, pixbuf=0) + self.column2 = Gtk.TreeViewColumn(title="Card Name", cell_renderer=name, text=1) + self.column3 = Gtk.TreeViewColumn(title="Additional Info", cell_renderer=info, text=2) + self.column1.pack_start(image, True) + self.column2.pack_start(name, True) + self.column3.pack_start(info, True) + + self.list.append_column(self.column1) + self.list.append_column(self.column2) + self.list.append_column(self.column3) + + self.fill_test_data(self.store) + + # Bring it all together + self.attach(self.searchbox, 0, 0, 1, 1) + self.attach(self.filterBox, 0, 1, 1, 1) + self.attach(self.searchresults, 1, 0, 1, 2) + + def fill_test_data(self, treestore): + for nr in xrange(0, 100): + treestore.append([self.add_test_image(), "Card Title", "More Info..."]) + + def add_test_image(self): + return GdkPixbuf.Pixbuf.new_from_file_at_size('./resources/images/demo.jpg', 63*2, 88*2)