Change window layout from notebook to different views
This commit is contained in:
@@ -106,9 +106,10 @@ class CardList(Gtk.ScrolledWindow):
|
||||
self.list.append_column(col_cmc)
|
||||
|
||||
def update(self, library, progressbar=None):
|
||||
self.store.clear()
|
||||
progress_step = 1 / len(library)
|
||||
progress = 0.0
|
||||
|
||||
self.store.clear()
|
||||
if progressbar is not None:
|
||||
progressbar.set_fraction(progress)
|
||||
for multiverse_id, card in library.items():
|
||||
@@ -127,7 +128,6 @@ class CardList(Gtk.ScrolledWindow):
|
||||
util.create_mana_icons(card.mana_cost),
|
||||
card.cmc,
|
||||
card.set_name])
|
||||
|
||||
progress += progress_step
|
||||
if progressbar is not None:
|
||||
progressbar.set_fraction(progress)
|
||||
|
||||
@@ -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
|
||||
show_from_all_sets = True
|
||||
|
||||
start_view="search"
|
||||
|
||||
@@ -29,20 +29,36 @@ class MainWindow(Gtk.Window):
|
||||
util.load_sets()
|
||||
util.load_library()
|
||||
|
||||
self.notebook = Gtk.Notebook()
|
||||
|
||||
# region Menu Bar
|
||||
|
||||
mb_main = Gtk.Menu()
|
||||
mb_view = Gtk.Menu()
|
||||
mb_search = Gtk.Menu()
|
||||
mb_lib = Gtk.Menu()
|
||||
|
||||
self.menu_import = Gtk.MenuItem("Import Library")
|
||||
self.menu_import.connect("activate", self.mb_import_lib)
|
||||
self.menu_export = Gtk.MenuItem("Export Library")
|
||||
self.menu_export.connect("activate", self.mb_export_lib)
|
||||
self.menu_quit = Gtk.ImageMenuItem('Quit', Gtk.Image.new_from_icon_name(Gtk.STOCK_QUIT, 0))
|
||||
self.menu_quit.connect("activate", Gtk.main_quit)
|
||||
root_main = Gtk.MenuItem("Main")
|
||||
root_main.set_submenu(mb_main)
|
||||
|
||||
root_view = Gtk.MenuItem("View")
|
||||
root_view.set_submenu(mb_view)
|
||||
|
||||
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.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.connect("activate", self.mb_save_lib)
|
||||
|
||||
mb_main.append(self.menu_import)
|
||||
mb_main.append(self.menu_export)
|
||||
mb_main.append(self.main_import)
|
||||
mb_main.append(self.main_export)
|
||||
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_show_all)
|
||||
|
||||
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.append(root_menu_main)
|
||||
mb.append(root_menu_search)
|
||||
mb.append(root_menu_lib)
|
||||
mb.append(root_main)
|
||||
mb.append(root_view)
|
||||
mb.append(root_search)
|
||||
mb.append(root_lib)
|
||||
|
||||
# endregion
|
||||
|
||||
@@ -85,7 +96,11 @@ class MainWindow(Gtk.Window):
|
||||
accelgrp = Gtk.AccelGroup()
|
||||
|
||||
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")
|
||||
self.lib_save.add_accelerator("activate", accelgrp, key, mod, Gtk.AccelFlags.VISIBLE)
|
||||
key, mod = Gtk.accelerator_parse("<Control>A")
|
||||
@@ -95,42 +110,70 @@ class MainWindow(Gtk.Window):
|
||||
|
||||
# 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.add(library.LibraryView())
|
||||
|
||||
self.search = search.SearchView()
|
||||
|
||||
self.decks = Gtk.Box()
|
||||
self.decks.add(Gtk.Label("View and organize your Decklists!"))
|
||||
self.view_dict = {
|
||||
"library": self.library,
|
||||
"search": self.search
|
||||
}
|
||||
|
||||
self.notebook.append_page(self.search, Gtk.Label("Search"))
|
||||
self.notebook.append_page(self.library, Gtk.Label("Library"))
|
||||
self.notebook.append_page(self.decks, Gtk.Label("Decks"))
|
||||
self.view_buttons = {
|
||||
"library": self.view_library,
|
||||
"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()
|
||||
|
||||
def mb_import_lib(self, menu_item):
|
||||
@staticmethod
|
||||
def mb_import_lib(menu_item):
|
||||
util.import_library()
|
||||
self.library.fill_lib_list()
|
||||
|
||||
def mb_search_add_card(self, menu_item):
|
||||
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()
|
||||
|
||||
def mb_save_lib(self, menu_item):
|
||||
@staticmethod
|
||||
def mb_save_lib(menu_item):
|
||||
util.save_library()
|
||||
|
||||
def do_delete_event(self, event):
|
||||
@staticmethod
|
||||
def do_delete_event(event):
|
||||
if util.unsaved_changes:
|
||||
response = util.show_question_dialog("Unsaved Changes", "You have unsaved changes in your library. "
|
||||
"Save before exiting?")
|
||||
|
||||
@@ -82,14 +82,14 @@ class LibraryView(Gtk.Grid):
|
||||
|
||||
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.activate()
|
||||
|
||||
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):
|
||||
if self.search_entry.get_text() is None or self.search_entry.get_text() == "":
|
||||
|
||||
@@ -241,6 +241,9 @@ class SearchView(Gtk.Grid):
|
||||
|
||||
# region Public Functions
|
||||
|
||||
def reload(self):
|
||||
pass
|
||||
|
||||
def load_cards(self):
|
||||
# Get search term
|
||||
term = self.searchEntry.get_text()
|
||||
|
||||
@@ -223,7 +223,7 @@ def load_card_image(card, sizex, sizey):
|
||||
|
||||
def create_mana_icons(mana_string):
|
||||
# Convert the string to a List
|
||||
list = re.findall("\{(.*?)\}", str(mana_string))
|
||||
list = re.findall("{(.*?)}", str(mana_string))
|
||||
if len(list) == 0:
|
||||
return
|
||||
# Compute horizontal size for the final image
|
||||
|
||||
Reference in New Issue
Block a user