diff --git a/mtg-collector/details.py b/mtg-collector/details.py
index 171fc97..1f4a38a 100644
--- a/mtg-collector/details.py
+++ b/mtg-collector/details.py
@@ -1,26 +1,73 @@
import gi
gi.require_version('Gtk', '3.0')
-from gi.repository import Gtk, GdkPixbuf
+from gi.repository import Gtk, Pango
import util
-class DetailBar(Gtk.Grid):
+class DetailBar(Gtk.ScrolledWindow):
def __init__(self):
- Gtk.Grid.__init__(self)
+ Gtk.ScrolledWindow.__init__(self)
+ self.grid = Gtk.Grid()
+ self.grid.set_row_spacing(10)
+ self.add(self.grid)
+ self.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
- self.image_area = Gtk.Box()
- image = Gtk.Image()
- pixbuf = util.add_test_image(63 * 5, 88 * 5)
- image.set_from_pixbuf(pixbuf)
- self.image_area.add(image)
+ # Create area for big card an fill it with a dummy image
+ self.image_area = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=10)
+ self.bigcard = Gtk.Image()
+ pixbuf = util.load_dummy_image(63 * 5, 88 * 5)
+ self.bigcard.set_from_pixbuf(pixbuf)
+ self.image_area.add(self.bigcard)
+ self.image_area.add(Gtk.HSeparator())
- self.carddetails = Gtk.ListBox()
- self.carddetails.set_selection_mode(Gtk.SelectionMode.NONE)
+ # Build the additional info pane
+ self.carddetails = Gtk.Grid()
+ self.carddetails.set_row_spacing(5)
+ self.carddetails.set_column_spacing(5)
- self.rulings = Gtk.ListBoxRow()
- self.rulings.add(Gtk.Label("Test"))
+ # Card rules
+ self.rulingslabel = Gtk.Label(xalign=0, yalign=0)
+ self.rulingslabel.set_markup("Rules:")
+ self.rulingslabel.set_no_show_all(True)
- self.carddetails.add(self.rulings)
+ self.rulesstore = Gtk.ListStore(str, str)
+ self.rulings = Gtk.TreeView(self.rulesstore)
+ self.rulings.set_rules_hint(True)
- self.attach(self.image_area, 0, 0, 1, 1)
- self.attach(self.carddetails, 0, 1, 1, 1)
+ self.renderer = Gtk.CellRendererText(xalign=0, yalign=0)
+ self.renderer.set_padding(5, 5)
+ self.renderer.set_property("wrap-mode", Pango.WrapMode.WORD)
+ # Ugly. Cannot set wrap width dynamically
+ self.renderer.set_property("wrap-width", 220)
+
+ self.date_column = Gtk.TreeViewColumn(title="Date", cell_renderer=self.renderer, text=0)
+ self.rule_column = Gtk.TreeViewColumn(title="Rule", cell_renderer=self.renderer, text=1)
+ self.date_column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
+ self.rule_column.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
+ self.rule_column.set_expand(True)
+
+ self.rulings.append_column(self.date_column)
+ self.rulings.append_column(self.rule_column)
+
+ # Build info pane under big card
+ self.carddetails.attach(self.rulingslabel, 0, 0, 1, 1)
+ self.carddetails.attach(self.rulings, 0, 1, 1, 1)
+
+ self.grid.attach(self.image_area, 0, 0, 1, 1)
+ self.grid.attach(self.carddetails, 0, 1, 1, 1)
+
+ def update_big_card(self, card):
+ pixbuf = util.load_card_image(card, 63 * 5, 88 * 5)
+ self.bigcard.set_from_pixbuf(pixbuf)
+
+ def set_card_detail(self, card):
+ print("Loading infos for \"" + card.name + "\"")
+
+ self.update_big_card(card)
+ self.rulesstore.clear()
+ self.rulingslabel.set_visible(False)
+
+ if card.rulings is not None:
+ self.rulingslabel.set_visible(True)
+ for rule in card.rulings:
+ self.rulesstore.append([rule.get('date'), rule.get('text')])
\ No newline at end of file
diff --git a/mtg-collector/gui.py b/mtg-collector/gui.py
index 67946d1..406c0af 100644
--- a/mtg-collector/gui.py
+++ b/mtg-collector/gui.py
@@ -33,6 +33,7 @@ class MainWindow(Gtk.Window):
self.notebook.append_page(self.collectionView, Gtk.Label("Collection"))
self.notebook.append_page(self.deckView, Gtk.Label("Decks"))
+
win = MainWindow()
win.connect('delete-event', Gtk.main_quit)
win.show_all()
diff --git a/mtg-collector/mtg-collector b/mtg-collector/mtg-collector
deleted file mode 100644
index 8dd3de3..0000000
--- a/mtg-collector/mtg-collector
+++ /dev/null
@@ -1,3 +0,0 @@
-#! /usr/bin/env python
-import os
-os.s.path.dirname(__file__) + "/mtg-collector/gui.py"
\ No newline at end of file
diff --git a/mtg-collector/resources/mana_icons/w.png b/mtg-collector/resources/mana_icons/W.png
similarity index 100%
rename from mtg-collector/resources/mana_icons/w.png
rename to mtg-collector/resources/mana_icons/W.png
diff --git a/mtg-collector/search.py b/mtg-collector/search.py
index 80d96dc..6c99769 100644
--- a/mtg-collector/search.py
+++ b/mtg-collector/search.py
@@ -10,14 +10,17 @@ from mtgsdk import Card
class SearchView(Gtk.Grid):
def __init__(self):
Gtk.Grid.__init__(self)
+ self.set_column_spacing(5)
# Search Box
- self.searchbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=2)
+ self.searchbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5,
+ margin_end=5, margin_start=5, margin_top=5, margin_bottom=5)
self.searchEntry = Gtk.Entry()
self.searchEntry.connect("activate", self.online_search_clicked)
self.searchbutton = Gtk.Button("Search Online")
self.searchbutton.connect("clicked", self.online_search_clicked)
- self.searchEntryLabel = Gtk.Label("Search for Cards:", xalign=0)
+ self.searchEntryLabel = Gtk.Label(xalign=0, yalign=0)
+ self.searchEntryLabel.set_markup("Search for Cards:")
self.searchbox.add(self.searchEntryLabel)
self.searchbox.add(self.searchEntry)
self.searchbox.add(self.searchbutton)
@@ -46,12 +49,12 @@ class SearchView(Gtk.Grid):
image = Gtk.CellRendererPixbuf()
title = Gtk.CellRendererText(xalign=0.5)
- title.set_padding = 2
+ title.set_padding(5, 5)
info = Gtk.CellRendererText()
info.set_property("wrap-mode", Pango.WrapMode.WORD)
info.set_property("wrap-width", 100)
- info.set_padding = 2
+ info.set_padding(5, 5)
index = Gtk.CellRendererText()
self.indexcolumn = Gtk.TreeViewColumn(title=index, cell_renderer=index, text=0)
@@ -73,18 +76,25 @@ class SearchView(Gtk.Grid):
self.list.append_column(self.column4)
# Detail View for selected Card
- self.details = Gtk.Box()
- self.details.add(details.DetailBar())
-
+ self.details = details.DetailBar()
# 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)
- self.attach(self.details, 2, 0, 1, 2)
+ self.attach(self.searchresults, 2, 0, 1, 2)
+ self.attach(self.details, 4, 0, 1, 2)
+
+ # Vertical Separators
+ self.attach(Gtk.VSeparator(), 1, 0, 1, 2)
+ self.attach(Gtk.VSeparator(), 3, 0, 1, 2)
+
+
self.selection = self.list.get_selection()
self.selection.connect("changed", self.on_card_selected)
+ def on_appering(self):
+ self.details.rulings.set_visible(False)
+
def online_search_clicked(self, button):
term = self.searchEntry.get_text()
if not term == "":
@@ -115,8 +125,8 @@ class SearchView(Gtk.Grid):
for card in self.cards:
if card.multiverse_id == card_id:
selected_card = card
-
- print(selected_card.name + " selected \n")
+ if selected_card is not None:
+ self.details.set_card_detail(selected_card)
diff --git a/mtg-collector/util.py b/mtg-collector/util.py
index cadedbe..6e4674f 100644
--- a/mtg-collector/util.py
+++ b/mtg-collector/util.py
@@ -36,16 +36,14 @@ def reload_image_cache():
imagecache.append(img)
-def add_test_image(sizex, sizey):
+def load_dummy_image(sizex, sizey):
return GdkPixbuf.Pixbuf.new_from_file_at_size(os.path.dirname(__file__) +
- '/resources/images/demo.jpg', sizex, sizey)
-
-
+ '/resources/images/dummy.jpg', sizex, sizey)
def load_card_image_online(card):
url = card.image_url
if url is None:
print("No Image URL provided")
- return add_test_image()
+ return load_dummy_image()
filename = config.cachepath + card.multiverse_id.__str__() + ".PNG"
print("Loading image from: " + url)
response = request.urlretrieve(url, filename)