Change window layout from notebook to different views

This commit is contained in:
luxick
2017-04-06 21:34:28 +02:00
parent 0e9dba59c0
commit e9bd63d54d
6 changed files with 97 additions and 49 deletions

View File

@@ -106,9 +106,10 @@ class CardList(Gtk.ScrolledWindow):
self.list.append_column(col_cmc) self.list.append_column(col_cmc)
def update(self, library, progressbar=None): def update(self, library, progressbar=None):
self.store.clear()
progress_step = 1 / len(library) progress_step = 1 / len(library)
progress = 0.0 progress = 0.0
self.store.clear()
if progressbar is not None: if progressbar is not None:
progressbar.set_fraction(progress) progressbar.set_fraction(progress)
for multiverse_id, card in library.items(): for multiverse_id, card in library.items():
@@ -127,7 +128,6 @@ class CardList(Gtk.ScrolledWindow):
util.create_mana_icons(card.mana_cost), util.create_mana_icons(card.mana_cost),
card.cmc, card.cmc,
card.set_name]) card.set_name])
progress += progress_step progress += progress_step
if progressbar is not None: if progressbar is not None:
progressbar.set_fraction(progress) progressbar.set_fraction(progress)

View File

@@ -17,3 +17,5 @@ red_color = Gdk.color_parse('#ff6d6d')
# When True Search view will list a card multiple times for each set they appear in # When True Search view will list a card multiple times for each set they appear in
show_from_all_sets = True show_from_all_sets = True
start_view="search"

View File

@@ -29,20 +29,36 @@ class MainWindow(Gtk.Window):
util.load_sets() util.load_sets()
util.load_library() util.load_library()
self.notebook = Gtk.Notebook()
# region Menu Bar # region Menu Bar
mb_main = Gtk.Menu() mb_main = Gtk.Menu()
mb_view = Gtk.Menu()
mb_search = Gtk.Menu() mb_search = Gtk.Menu()
mb_lib = Gtk.Menu() mb_lib = Gtk.Menu()
self.menu_import = Gtk.MenuItem("Import Library") root_main = Gtk.MenuItem("Main")
self.menu_import.connect("activate", self.mb_import_lib) root_main.set_submenu(mb_main)
self.menu_export = Gtk.MenuItem("Export Library")
self.menu_export.connect("activate", self.mb_export_lib) root_view = Gtk.MenuItem("View")
self.menu_quit = Gtk.ImageMenuItem('Quit', Gtk.Image.new_from_icon_name(Gtk.STOCK_QUIT, 0)) root_view.set_submenu(mb_view)
self.menu_quit.connect("activate", Gtk.main_quit)
root_search = Gtk.MenuItem("Search")
root_search.set_submenu(mb_search)
root_lib = Gtk.MenuItem("Library")
root_lib.set_submenu(mb_lib)
self.main_import = Gtk.MenuItem("Import Library")
self.main_import.connect("activate", self.mb_import_lib)
self.main_export = Gtk.MenuItem("Export Library")
self.main_export.connect("activate", self.mb_export_lib)
self.main_quit = Gtk.ImageMenuItem('Quit', Gtk.Image.new_from_icon_name(Gtk.STOCK_QUIT, 0))
self.main_quit.connect("activate", Gtk.main_quit)
self.view_search = Gtk.MenuItem(name="search", label="Search")
self.view_search.connect("activate", self.mb_view_switch)
self.view_library = Gtk.MenuItem(name="library", label="Library")
self.view_library.connect("activate", self.mb_view_switch)
self.search_add = Gtk.MenuItem("Add card") self.search_add = Gtk.MenuItem("Add card")
self.search_add.connect("activate", self.mb_search_add_card) self.search_add.connect("activate", self.mb_search_add_card)
@@ -54,29 +70,24 @@ class MainWindow(Gtk.Window):
self.lib_save = Gtk.ImageMenuItem("Save", Gtk.Image.new_from_icon_name(Gtk.STOCK_SAVE, 0)) self.lib_save = Gtk.ImageMenuItem("Save", Gtk.Image.new_from_icon_name(Gtk.STOCK_SAVE, 0))
self.lib_save.connect("activate", self.mb_save_lib) self.lib_save.connect("activate", self.mb_save_lib)
mb_main.append(self.menu_import) mb_main.append(self.main_import)
mb_main.append(self.menu_export) mb_main.append(self.main_export)
mb_main.append(Gtk.SeparatorMenuItem()) mb_main.append(Gtk.SeparatorMenuItem())
mb_main.append(self.menu_quit) mb_main.append(self.main_quit)
mb_view.append(self.view_search)
mb_view.append(self.view_library)
mb_search.append(self.search_add) mb_search.append(self.search_add)
mb_search.append(self.search_show_all) mb_search.append(self.search_show_all)
mb_lib.append(self.lib_save) mb_lib.append(self.lib_save)
root_menu_main = Gtk.MenuItem("Main")
root_menu_main.set_submenu(mb_main)
root_menu_search = Gtk.MenuItem("Search")
root_menu_search.set_submenu(mb_search)
root_menu_lib = Gtk.MenuItem("Library")
root_menu_lib.set_submenu(mb_lib)
mb = Gtk.MenuBar() mb = Gtk.MenuBar()
mb.append(root_menu_main) mb.append(root_main)
mb.append(root_menu_search) mb.append(root_view)
mb.append(root_menu_lib) mb.append(root_search)
mb.append(root_lib)
# endregion # endregion
@@ -85,7 +96,11 @@ class MainWindow(Gtk.Window):
accelgrp = Gtk.AccelGroup() accelgrp = Gtk.AccelGroup()
key, mod = Gtk.accelerator_parse("<Control>Q") key, mod = Gtk.accelerator_parse("<Control>Q")
self.menu_quit.add_accelerator("activate", accelgrp, key, mod, Gtk.AccelFlags.VISIBLE) self.main_quit.add_accelerator("activate", accelgrp, key, mod, Gtk.AccelFlags.VISIBLE)
key, mod = Gtk.accelerator_parse("<Control>1")
self.view_search.add_accelerator("activate", accelgrp, key, mod, Gtk.AccelFlags.VISIBLE)
key, mod = Gtk.accelerator_parse("<Control>2")
self.view_library.add_accelerator("activate", accelgrp, key, mod, Gtk.AccelFlags.VISIBLE)
key, mod = Gtk.accelerator_parse("<Control>S") key, mod = Gtk.accelerator_parse("<Control>S")
self.lib_save.add_accelerator("activate", accelgrp, key, mod, Gtk.AccelFlags.VISIBLE) self.lib_save.add_accelerator("activate", accelgrp, key, mod, Gtk.AccelFlags.VISIBLE)
key, mod = Gtk.accelerator_parse("<Control>A") key, mod = Gtk.accelerator_parse("<Control>A")
@@ -95,42 +110,70 @@ class MainWindow(Gtk.Window):
# endregion # endregion
vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
vbox.pack_start(mb, False, False, 0)
vbox.pack_start(self.notebook, True, True, 0)
vbox.pack_start(self.status_bar, False, False, 0)
self.library = library.LibraryView() self.library = library.LibraryView()
# self.library.add(library.LibraryView())
self.search = search.SearchView() self.search = search.SearchView()
self.decks = Gtk.Box() self.view_dict = {
self.decks.add(Gtk.Label("View and organize your Decklists!")) "library": self.library,
"search": self.search
}
self.notebook.append_page(self.search, Gtk.Label("Search")) self.view_buttons = {
self.notebook.append_page(self.library, Gtk.Label("Library")) "library": self.view_library,
self.notebook.append_page(self.decks, Gtk.Label("Decks")) "search": self.view_search
}
self.add(vbox) self.view = self.view_dict[config.start_view]
self.view_buttons[config.start_view].set_sensitive(False)
def mb_export_lib(self, menu_item): self.view_container = Gtk.Box()
self.view_container.set_border_width(2)
self.view_container.add(self.view)
self.vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
self.vbox.pack_start(mb, False, False, 0)
self.vbox.pack_start(Gtk.HSeparator(), False, False, 0)
self.vbox.pack_start(self.view_container, True, True, 0)
self.vbox.pack_end(self.status_bar, False, False, 0)
self.add(self.vbox)
def switch_view(self, view):
self.view_container.remove(self.view)
self.view = view
self.view_container.add(view)
self.view_container.show_all()
def mb_view_switch(self, menu_item):
new_view = self.view_dict[menu_item.get_name()]
self.switch_view(new_view)
for item in self.view_buttons.values():
item.set_sensitive(True)
menu_item.set_sensitive(False)
self.view.reload()
@staticmethod
def mb_export_lib(menu_item):
util.export_library() util.export_library()
def mb_import_lib(self, menu_item): @staticmethod
def mb_import_lib(menu_item):
util.import_library() util.import_library()
self.library.fill_lib_list()
def mb_search_add_card(self, menu_item): def mb_search_add_card(self, menu_item):
self.search.on_add_delete(self.search.add_delete_button) self.search.on_add_delete(self.search.add_delete_button)
def mb_search_show_all(self, menu_item): @staticmethod
def mb_search_show_all(menu_item):
config.show_from_all_sets = menu_item.get_active() config.show_from_all_sets = menu_item.get_active()
def mb_save_lib(self, menu_item): @staticmethod
def mb_save_lib(menu_item):
util.save_library() util.save_library()
def do_delete_event(self, event): @staticmethod
def do_delete_event(event):
if util.unsaved_changes: if util.unsaved_changes:
response = util.show_question_dialog("Unsaved Changes", "You have unsaved changes in your library. " response = util.show_question_dialog("Unsaved Changes", "You have unsaved changes in your library. "
"Save before exiting?") "Save before exiting?")

View File

@@ -82,14 +82,14 @@ class LibraryView(Gtk.Grid):
self.refresh_library(self.refresh_button) self.refresh_library(self.refresh_button)
def refresh_library(self, button): def reload(self):
self.refresh_library()
def refresh_library(self, button=None):
self.search_entry.set_text("") self.search_entry.set_text("")
self.search_entry.activate() self.search_entry.activate()
self.fill_lib_list() self.fill_lib_list()
# load_thread = threading.Thread(target=self.fill_lib_list)
# load_thread.setDaemon(True)
# load_thread.start()
def lib_filter_func(self, model, iter, data): def lib_filter_func(self, model, iter, data):
if self.search_entry.get_text() is None or self.search_entry.get_text() == "": if self.search_entry.get_text() is None or self.search_entry.get_text() == "":

View File

@@ -241,6 +241,9 @@ class SearchView(Gtk.Grid):
# region Public Functions # region Public Functions
def reload(self):
pass
def load_cards(self): def load_cards(self):
# Get search term # Get search term
term = self.searchEntry.get_text() term = self.searchEntry.get_text()

View File

@@ -223,7 +223,7 @@ def load_card_image(card, sizex, sizey):
def create_mana_icons(mana_string): def create_mana_icons(mana_string):
# Convert the string to a List # Convert the string to a List
list = re.findall("\{(.*?)\}", str(mana_string)) list = re.findall("{(.*?)}", str(mana_string))
if len(list) == 0: if len(list) == 0:
return return
# Compute horizontal size for the final image # Compute horizontal size for the final image