diff --git a/bin/cardvault b/bin/cardvault deleted file mode 100644 index 0e47180..0000000 --- a/bin/cardvault +++ /dev/null @@ -1,2 +0,0 @@ -from cardvault import application -application.main() \ No newline at end of file diff --git a/build.py b/build.py new file mode 100644 index 0000000..44d7c55 --- /dev/null +++ b/build.py @@ -0,0 +1,17 @@ +""" +Package cardvault using zipapp into an executable zip archive +""" +import os +import zipapp + +INTERPRETER = '/usr/bin/env python3' +TARGET_FILENAME = 'cardvault' + +# The bundled file should be placed into the build directory +target_path = os.path.join(os.path.dirname(__file__), 'build') +# Make sure it exists +if not os.path.isdir(target_path): + os.mkdir(target_path) +target = os.path.join(target_path, TARGET_FILENAME) +# Create archive +zipapp.create_archive(source='cardvault', target=target, interpreter=INTERPRETER) diff --git a/cardvault/__init__.py b/cardvault/__init__.py deleted file mode 100644 index 5315975..0000000 --- a/cardvault/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from cardvault import application \ No newline at end of file diff --git a/cardvault/__main__.py b/cardvault/__main__.py new file mode 100644 index 0000000..95c7f99 --- /dev/null +++ b/cardvault/__main__.py @@ -0,0 +1,10 @@ +import sys + +import os.path +path = os.path.realpath(os.path.abspath(__file__)) +sys.path.insert(0, os.path.dirname(path)) + +from cv_gtk3 import gtk_ui + +if __name__ == '__main__': + gtk_ui.main() \ No newline at end of file diff --git a/cv_engine/__init__.py b/cardvault/cv_engine/__init__.py similarity index 100% rename from cv_engine/__init__.py rename to cardvault/cv_engine/__init__.py diff --git a/cv_engine/database.py b/cardvault/cv_engine/database.py similarity index 100% rename from cv_engine/database.py rename to cardvault/cv_engine/database.py diff --git a/cv_engine/engine.py b/cardvault/cv_engine/engine.py similarity index 59% rename from cv_engine/engine.py rename to cardvault/cv_engine/engine.py index bb99f97..e79824a 100644 --- a/cv_engine/engine.py +++ b/cardvault/cv_engine/engine.py @@ -1,4 +1,3 @@ -import json import os import itertools @@ -8,8 +7,7 @@ from cv_engine.util import EngineConfig, EngineConstants, Utilities class CardvaultEngine: def __init__(self, config_file=False): - """ - Create a new cv_engine instance + """ Create a new cv_engine instance :param config_file: File path of the configuration file """ if config_file: @@ -18,23 +16,20 @@ class CardvaultEngine: self.database = CardvaultDB(db_file_path) def get_card(self, card_id): - """ - Load a card object from database + """ Load a card object from database :param card_id: multiverse id of a card :return: an cv_engine.model.Card object """ return self.database.card_load(card_id) def get_library(self) -> list: - """ - Get the complete library of cards + """ Get the complete library of cards :return: Alphabetically ordered list of all cards in library """ return self.database.lib_get_all() def get_all_categories(self) -> dict: - """ - Get all categories an the cards that are contained within them + """ Get all categories an the cards that are contained within them :return: A dict with the category names and cv_engine.models.Card objects as values """ categories = self.database.category_get_all() @@ -54,25 +49,5 @@ class CardvaultEngine: if __name__ == "__main__": + # Test code engine = CardvaultEngine() - - # Insert Data into Datasbase - # print("Database insert test:") - # engine.database.db_clear_data_card() - # cards = Utilities.parse_mtgjson_cards(json.load(open("/home/luxick/Downloads/AllSets-x.json"))) - # engine.database.card_insert_many(cards) - - # Compare JSON Data to Data in Database - # for card in Utilities.parse_mtgjson_cards(json.load(open("/home/luxick/Downloads/AllSets-x.json"))): - # if card.multiverse_id: - # print('From JSON: {}'.format(card.names)) - # print('From DB: {}\n'.format(engine.database.card_load(card.multiverse_id).names)) - - # Search test - # term = 'fire' - # for result in engine.database.card_search_by_name(term): - # print(str(result), end='\n\n') - # Fast load test - # engine.database.card_fast_load() - # all_ids = engine.database.db_all_multiverse_ids() - # print('Loaded IDs: {}'.format(len(all_ids))) diff --git a/cv_engine/models.py b/cardvault/cv_engine/models.py similarity index 100% rename from cv_engine/models.py rename to cardvault/cv_engine/models.py diff --git a/cv_engine/util.py b/cardvault/cv_engine/util.py similarity index 84% rename from cv_engine/util.py rename to cardvault/cv_engine/util.py index 0a17f50..99219f6 100644 --- a/cv_engine/util.py +++ b/cardvault/cv_engine/util.py @@ -35,14 +35,6 @@ class EngineConstants: config_path = os.path.join(os.path.expanduser('~'), '.config', 'cardvault') -class GTKConstants: - """ - Constants for the GTK Ui - """ - # Directory in witch glade ui files are stored - glade_files = '/gui' - - class MTGConstants: """ This class contains constants that can be used within the whole program @@ -98,13 +90,3 @@ class Utilities: cards.append(c) output = output + cards return output - - @staticmethod - def expand_file_path(base_file, sub_dirs) -> str: - """ - Get absolute file path relative to another file - :param base_file: Current file from witch to expand - :param sub_dirs: List of sub directories to desired file - :return: Full file path of chosen file - """ - return os.path.join(os.path.dirname(base_file), *sub_dirs) \ No newline at end of file diff --git a/cv_gtk3/__init__.py b/cardvault/cv_gtk3/__init__.py similarity index 100% rename from cv_gtk3/__init__.py rename to cardvault/cv_gtk3/__init__.py diff --git a/cv_gtk3/card_view.py b/cardvault/cv_gtk3/card_view.py similarity index 94% rename from cv_gtk3/card_view.py rename to cardvault/cv_gtk3/card_view.py index b9e36d6..985f980 100644 --- a/cv_gtk3/card_view.py +++ b/cardvault/cv_gtk3/card_view.py @@ -8,9 +8,8 @@ from cv_engine.util import MTGConstants class CardView(Gtk.ScrolledWindow): """ Class for displaying a list of cards in an GTKTreeView """ - def __init__(self, ui_file, filtered): + def __init__(self, filtered): """ Constructor for a card list display - :param ui_file: Full path to an CardView glade file :param filtered: Should the card list be filterable """ self.filtered = filtered @@ -21,12 +20,13 @@ class CardView(Gtk.ScrolledWindow): self.set_vexpand(True) # Build UI self.ui = Gtk.Builder() - self.ui.add_from_file(ui_file) + self.ui.add_from_string(GTKUtilities.load_ui_resource('cardtree.glade')) self.tree = self.ui.get_object('cardTree') self.store = self.ui.get_object('cardStore') self.store.set_sort_func(4, self.compare_rarity, None) # Add the TreeView self.add(self.tree) + #self.tree.connect("row-activated", self.on_row_double_click) def get_selected_cards(self): """ Get the currently selected cards in the TreeView diff --git a/cv_gtk3/signal_handlers/__init__.py b/cardvault/cv_gtk3/dialogs.py similarity index 100% rename from cv_gtk3/signal_handlers/__init__.py rename to cardvault/cv_gtk3/dialogs.py diff --git a/cv_gtk3/gtkui.py b/cardvault/cv_gtk3/gtk_ui.py similarity index 84% rename from cv_gtk3/gtkui.py rename to cardvault/cv_gtk3/gtk_ui.py index a429ed7..ba22d7c 100644 --- a/cv_gtk3/gtkui.py +++ b/cardvault/cv_gtk3/gtk_ui.py @@ -1,6 +1,7 @@ -import gi import os +import gi + gi.require_version('Gtk', '3.0') from gi.repository import Gtk @@ -17,13 +18,11 @@ class CardvaultGTK(MainWindowFunctions): def __init__(self): # Start engine (without config file) self.engine = engine.CardvaultEngine() - # Set Glade file location - GUISettings.glade_file_path = os.path.join(os.path.dirname(__file__), 'gui') # Load Glade files glade_files = ['mainwindow.glade', 'search.glade', 'overlays.glade'] self.ui = Gtk.Builder() for file in glade_files: - self.ui.add_from_file(os.path.join(GUISettings.glade_file_path, file)) + self.ui.add_from_string(GTKUtilities.load_ui_resource(file)) # Set pages for the ui to use GUISettings.pages = { "search": self.ui.get_object("searchView"), @@ -34,8 +33,7 @@ class CardvaultGTK(MainWindowFunctions): if not os.path.isdir(util.EngineConfig.icon_cache_path): os.mkdir(util.EngineConfig.icon_cache_path) # Load single mana icons - GTKUtilities.mana_icons = GTKUtilities.load_icon_cache(os.path.join(os.path.dirname(__file__), 'resources', - 'mana')) + GTKUtilities.mana_icons = GTKUtilities.load_icon_cache(os.path.join(GTKUtilities.resources_path, 'mana')) # Load the the pre constructed icon cache GTKUtilities.precon_icon_cache = GTKUtilities.load_icon_cache(util.EngineConfig.icon_cache_path) # Call constructor of superclasses @@ -48,7 +46,12 @@ class CardvaultGTK(MainWindowFunctions): self.hide_initial_widgets() self.switch_page('search') -if __name__ == '__main__': + +def main(): CardvaultGTK() Gtk.main() +if __name__ == '__main__': + main() + + diff --git a/cardvault/cv_gtk3/gtk_util.py b/cardvault/cv_gtk3/gtk_util.py new file mode 100644 index 0000000..730912c --- /dev/null +++ b/cardvault/cv_gtk3/gtk_util.py @@ -0,0 +1,176 @@ +import os +import re + +from gi.repository import GdkPixbuf +from zipfile import ZipFile + +try: + from PIL import Image +except ImportError as err: + print('PIL imaging library is not installed') + +from cv_engine.util import EngineConfig + + +class GTKUtilities: + """ Access to image caches and utilities for use in the GTK application """ + # Loaded mana symbols Format: {'B': GDKPixbuf, '3': GDKPixbuf} + mana_icons = {} + # Cache for combined mana cost icons + precon_icon_cache = {} + # Path of Gtk resources relative to cardvault base package + resources_path = os.path.join('cv_gtk3', 'resources') + + @staticmethod + def get_path_from_base_dir(*dirs): + return os.path.join(os.path.dirname(os.path.dirname(__file__)), *dirs) + + @staticmethod + def get_mana_icons(mana_string): + """ Return the combined mana symbols for a mana string + :param mana_string: String in the format '{3}{U}{B}' + :return: GdkPixbuf containing the combined symbols + """ + if not mana_string: + return + icon_list = re.findall("{(.*?)}", mana_string.replace("/", "-")) + icon_name = "_".join(icon_list) + try: + icon = GTKUtilities.precon_icon_cache[icon_name] + except KeyError: + icon = GTKUtilities.create_mana_icons(mana_string) + GTKUtilities.precon_icon_cache[icon_name] = icon + # Scale icon for display + if icon: + icon = icon.scale_simple(icon.get_width() / 5, icon.get_height() / 5, GdkPixbuf.InterpType.HYPER) + return icon + + @staticmethod + def create_mana_icons(mana_string): + # Convert the string to a List + glyphs = re.findall("{(.*?)}", mana_string) + if len(glyphs) == 0: + return + # Compute horizontal size for the final image + size = len(glyphs) * 105 + image = Image.new("RGBA", (size, 105)) + for index, icon in enumerate(glyphs): + x_pos = index * 105 + try: + # Try loading mana icon and converting to PIL.Image for combining + loaded = GTKUtilities.pixbuf_to_image(GTKUtilities.mana_icons[icon]) + except KeyError: + print('Mana icon "{}" is not loaded.'.format(icon)) + return + image.paste(loaded, (x_pos, 0)) + # Save pre build icon file + path = os.path.join(EngineConfig.icon_cache_path, "_".join(glyphs) + ".png") + image.save(path) + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file(path) + except Exception as ex: + print(ex) + return + return pixbuf + + @staticmethod + def pixbuf_to_image(pix): + """Convert gdkpixbuf to PIL image""" + data = pix.get_pixels() + w = pix.props.width + h = pix.props.height + stride = pix.props.rowstride + mode = "RGB" + if pix.props.has_alpha: + mode = "RGBA" + im = Image.frombytes(mode, (w, h), data, "raw", mode, stride) + + return im + + @staticmethod + def load_ui_resource(resource_name): + """ Load GUI resource depending on the execution mode (from a directory or from a zip file) + :param resource_name: Name of the glade file + :return: String content of the resource file + """ + if os.path.isdir(os.path.dirname(__file__)): + return GTKUtilities.load_ui_resource_file(os.path.join(GTKUtilities.resources_path, 'gui', resource_name)) + else: + zip_path = os.path.dirname(os.path.dirname(__file__)) + return GTKUtilities.load_ui_resource_zip(zip_path, + os.path.join(GTKUtilities.resources_path, 'gui', resource_name)) + + @staticmethod + def load_ui_resource_file(resource_path): + """ LOad GUI resource from file path + :param resource_path: Relative path of the resource based on the cardvault base package + :return: String content of the resource file + """ + full_path = GTKUtilities.get_path_from_base_dir(resource_path) + with open(full_path, 'r') as file: + return file.read() + + @staticmethod + def load_ui_resource_zip(archive_file, resource_path): + """ Load GUI resource from a zip archive (for usage in release mode) + :param archive_file: Full path of the archive file + :param resource_path: Path of the resources within the archive + :return: String representation of the file content + """ + with ZipFile(archive_file, 'r') as archive: + return archive.read(resource_path).decode('utf-8') + + @staticmethod + def load_icon_cache(icon_path): + """ Get a dictionary with all available mana icons + :param icon_path: Relative path of icon resource files + :return: Dict with icon names and Gdkpixbuf objects + """ + if os.path.isdir(GTKUtilities.get_path_from_base_dir(icon_path)): + return GTKUtilities.load_icon_cache_file(GTKUtilities.get_path_from_base_dir(icon_path)) + else: + zip_path = os.path.dirname(os.path.dirname(__file__)) + return GTKUtilities.load_icon_cache_zip(zip_path) + + @staticmethod + def load_icon_cache_file(icon_path): + """ Load icon cache from absolute paths at file system + :param icon_path: Relative path of icon resource files + :return: Dict with icon names and Gdkpixbuf object + """ + icons = {} + files = os.listdir(icon_path) + for file in files: + try: + pixbuf = GdkPixbuf.Pixbuf.new_from_file(os.path.join(icon_path, file)) + # Strip filename extension + icon_name = os.path.splitext(file)[0] + icons[icon_name] = pixbuf + except Exception as ex: + print('Error while loading icon file "{}"'.format(ex)) + return icons + + @staticmethod + def load_icon_cache_zip(zip_path): + """ Load icon cache from zipped archive + :param zip_path: Full path of the zip archive + :return: Dict with icon names and Gdkpixbuf object + """ + with ZipFile(zip_path, 'r') as archive: + icon_path = os.path.join('cv_gtk3', 'resources', 'mana') + files = [path for path in archive.namelist() if os.path.isfile(path.startswith(icon_path))] + icons = {} + for file in files: + with archive.open(file) as data: + try: + loader = GdkPixbuf.PixbufLoader() + loader.write(data.read()) + pixbuf = loader.get_pixbuf() + loader.close() + # Strip filename extension + icon_name = os.path.splitext(file)[0] + icons[icon_name] = pixbuf + except Exception as ex: + print('Error while loading icon file "{0}"\n{1}'.format(file, ex)) + return icons + diff --git a/cv_gtk3/main_window.py b/cardvault/cv_gtk3/main_window.py similarity index 100% rename from cv_gtk3/main_window.py rename to cardvault/cv_gtk3/main_window.py diff --git a/cardvault/gui/cardtree.glade b/cardvault/cv_gtk3/resources/gui/cardtree.glade similarity index 100% rename from cardvault/gui/cardtree.glade rename to cardvault/cv_gtk3/resources/gui/cardtree.glade diff --git a/cardvault/gui/detailswindow.glade b/cardvault/cv_gtk3/resources/gui/detailswindow.glade similarity index 100% rename from cardvault/gui/detailswindow.glade rename to cardvault/cv_gtk3/resources/gui/detailswindow.glade diff --git a/cardvault/gui/dialogs.glade b/cardvault/cv_gtk3/resources/gui/dialogs.glade similarity index 100% rename from cardvault/gui/dialogs.glade rename to cardvault/cv_gtk3/resources/gui/dialogs.glade diff --git a/cardvault/gui/library.glade b/cardvault/cv_gtk3/resources/gui/library.glade similarity index 100% rename from cardvault/gui/library.glade rename to cardvault/cv_gtk3/resources/gui/library.glade diff --git a/cv_gtk3/gui/mainwindow.glade b/cardvault/cv_gtk3/resources/gui/mainwindow.glade similarity index 99% rename from cv_gtk3/gui/mainwindow.glade rename to cardvault/cv_gtk3/resources/gui/mainwindow.glade index e44902d..3d44db3 100644 --- a/cv_gtk3/gui/mainwindow.glade +++ b/cardvault/cv_gtk3/resources/gui/mainwindow.glade @@ -6,7 +6,7 @@ Card Vault False Card Vault - 900 + 1200 700 cardvault diff --git a/cardvault/gui/overlays.glade b/cardvault/cv_gtk3/resources/gui/overlays.glade similarity index 100% rename from cardvault/gui/overlays.glade rename to cardvault/cv_gtk3/resources/gui/overlays.glade diff --git a/cv_gtk3/gui/search.glade b/cardvault/cv_gtk3/resources/gui/search.glade similarity index 100% rename from cv_gtk3/gui/search.glade rename to cardvault/cv_gtk3/resources/gui/search.glade diff --git a/cardvault/gui/wants.glade b/cardvault/cv_gtk3/resources/gui/wants.glade similarity index 100% rename from cardvault/gui/wants.glade rename to cardvault/cv_gtk3/resources/gui/wants.glade diff --git a/cardvault/resources/images/demo.jpg b/cardvault/cv_gtk3/resources/images/demo.jpg similarity index 100% rename from cardvault/resources/images/demo.jpg rename to cardvault/cv_gtk3/resources/images/demo.jpg diff --git a/cardvault/resources/images/dummy.jpg b/cardvault/cv_gtk3/resources/images/dummy.jpg similarity index 100% rename from cardvault/resources/images/dummy.jpg rename to cardvault/cv_gtk3/resources/images/dummy.jpg diff --git a/cardvault/resources/images/dummy_315x450.png b/cardvault/cv_gtk3/resources/images/dummy_315x450.png similarity index 100% rename from cardvault/resources/images/dummy_315x450.png rename to cardvault/cv_gtk3/resources/images/dummy_315x450.png diff --git a/cardvault/resources/mana/0.png b/cardvault/cv_gtk3/resources/mana/0.png similarity index 100% rename from cardvault/resources/mana/0.png rename to cardvault/cv_gtk3/resources/mana/0.png diff --git a/cardvault/resources/mana/1.png b/cardvault/cv_gtk3/resources/mana/1.png similarity index 100% rename from cardvault/resources/mana/1.png rename to cardvault/cv_gtk3/resources/mana/1.png diff --git a/cardvault/resources/mana/10.png b/cardvault/cv_gtk3/resources/mana/10.png similarity index 100% rename from cardvault/resources/mana/10.png rename to cardvault/cv_gtk3/resources/mana/10.png diff --git a/cardvault/resources/mana/11.png b/cardvault/cv_gtk3/resources/mana/11.png similarity index 100% rename from cardvault/resources/mana/11.png rename to cardvault/cv_gtk3/resources/mana/11.png diff --git a/cardvault/resources/mana/12.png b/cardvault/cv_gtk3/resources/mana/12.png similarity index 100% rename from cardvault/resources/mana/12.png rename to cardvault/cv_gtk3/resources/mana/12.png diff --git a/cardvault/resources/mana/13.png b/cardvault/cv_gtk3/resources/mana/13.png similarity index 100% rename from cardvault/resources/mana/13.png rename to cardvault/cv_gtk3/resources/mana/13.png diff --git a/cardvault/resources/mana/14.png b/cardvault/cv_gtk3/resources/mana/14.png similarity index 100% rename from cardvault/resources/mana/14.png rename to cardvault/cv_gtk3/resources/mana/14.png diff --git a/cardvault/resources/mana/15.png b/cardvault/cv_gtk3/resources/mana/15.png similarity index 100% rename from cardvault/resources/mana/15.png rename to cardvault/cv_gtk3/resources/mana/15.png diff --git a/cardvault/resources/mana/16.png b/cardvault/cv_gtk3/resources/mana/16.png similarity index 100% rename from cardvault/resources/mana/16.png rename to cardvault/cv_gtk3/resources/mana/16.png diff --git a/cardvault/resources/mana/17.png b/cardvault/cv_gtk3/resources/mana/17.png similarity index 100% rename from cardvault/resources/mana/17.png rename to cardvault/cv_gtk3/resources/mana/17.png diff --git a/cardvault/resources/mana/18.png b/cardvault/cv_gtk3/resources/mana/18.png similarity index 100% rename from cardvault/resources/mana/18.png rename to cardvault/cv_gtk3/resources/mana/18.png diff --git a/cardvault/resources/mana/19.png b/cardvault/cv_gtk3/resources/mana/19.png similarity index 100% rename from cardvault/resources/mana/19.png rename to cardvault/cv_gtk3/resources/mana/19.png diff --git a/cardvault/resources/mana/2.png b/cardvault/cv_gtk3/resources/mana/2.png similarity index 100% rename from cardvault/resources/mana/2.png rename to cardvault/cv_gtk3/resources/mana/2.png diff --git a/cardvault/resources/mana/20.png b/cardvault/cv_gtk3/resources/mana/20.png similarity index 100% rename from cardvault/resources/mana/20.png rename to cardvault/cv_gtk3/resources/mana/20.png diff --git a/cardvault/resources/mana/2b.png b/cardvault/cv_gtk3/resources/mana/2b.png similarity index 100% rename from cardvault/resources/mana/2b.png rename to cardvault/cv_gtk3/resources/mana/2b.png diff --git a/cardvault/resources/mana/2g.png b/cardvault/cv_gtk3/resources/mana/2g.png similarity index 100% rename from cardvault/resources/mana/2g.png rename to cardvault/cv_gtk3/resources/mana/2g.png diff --git a/cardvault/resources/mana/2r.png b/cardvault/cv_gtk3/resources/mana/2r.png similarity index 100% rename from cardvault/resources/mana/2r.png rename to cardvault/cv_gtk3/resources/mana/2r.png diff --git a/cardvault/resources/mana/2u.png b/cardvault/cv_gtk3/resources/mana/2u.png similarity index 100% rename from cardvault/resources/mana/2u.png rename to cardvault/cv_gtk3/resources/mana/2u.png diff --git a/cardvault/resources/mana/2w.png b/cardvault/cv_gtk3/resources/mana/2w.png similarity index 100% rename from cardvault/resources/mana/2w.png rename to cardvault/cv_gtk3/resources/mana/2w.png diff --git a/cardvault/resources/mana/3.png b/cardvault/cv_gtk3/resources/mana/3.png similarity index 100% rename from cardvault/resources/mana/3.png rename to cardvault/cv_gtk3/resources/mana/3.png diff --git a/cardvault/resources/mana/4.png b/cardvault/cv_gtk3/resources/mana/4.png similarity index 100% rename from cardvault/resources/mana/4.png rename to cardvault/cv_gtk3/resources/mana/4.png diff --git a/cardvault/resources/mana/5.png b/cardvault/cv_gtk3/resources/mana/5.png similarity index 100% rename from cardvault/resources/mana/5.png rename to cardvault/cv_gtk3/resources/mana/5.png diff --git a/cardvault/resources/mana/6.png b/cardvault/cv_gtk3/resources/mana/6.png similarity index 100% rename from cardvault/resources/mana/6.png rename to cardvault/cv_gtk3/resources/mana/6.png diff --git a/cardvault/resources/mana/7.png b/cardvault/cv_gtk3/resources/mana/7.png similarity index 100% rename from cardvault/resources/mana/7.png rename to cardvault/cv_gtk3/resources/mana/7.png diff --git a/cardvault/resources/mana/8.png b/cardvault/cv_gtk3/resources/mana/8.png similarity index 100% rename from cardvault/resources/mana/8.png rename to cardvault/cv_gtk3/resources/mana/8.png diff --git a/cardvault/resources/mana/9.png b/cardvault/cv_gtk3/resources/mana/9.png similarity index 100% rename from cardvault/resources/mana/9.png rename to cardvault/cv_gtk3/resources/mana/9.png diff --git a/cardvault/resources/mana/B-G.png b/cardvault/cv_gtk3/resources/mana/B-G.png similarity index 100% rename from cardvault/resources/mana/B-G.png rename to cardvault/cv_gtk3/resources/mana/B-G.png diff --git a/cardvault/resources/mana/B-P.png b/cardvault/cv_gtk3/resources/mana/B-P.png similarity index 100% rename from cardvault/resources/mana/B-P.png rename to cardvault/cv_gtk3/resources/mana/B-P.png diff --git a/cardvault/resources/mana/B-R.png b/cardvault/cv_gtk3/resources/mana/B-R.png similarity index 100% rename from cardvault/resources/mana/B-R.png rename to cardvault/cv_gtk3/resources/mana/B-R.png diff --git a/cardvault/resources/mana/B.png b/cardvault/cv_gtk3/resources/mana/B.png similarity index 100% rename from cardvault/resources/mana/B.png rename to cardvault/cv_gtk3/resources/mana/B.png diff --git a/cardvault/resources/mana/B_alt.png b/cardvault/cv_gtk3/resources/mana/B_alt.png similarity index 100% rename from cardvault/resources/mana/B_alt.png rename to cardvault/cv_gtk3/resources/mana/B_alt.png diff --git a/cardvault/resources/mana/C.png b/cardvault/cv_gtk3/resources/mana/C.png similarity index 100% rename from cardvault/resources/mana/C.png rename to cardvault/cv_gtk3/resources/mana/C.png diff --git a/cardvault/resources/mana/C_alt.png b/cardvault/cv_gtk3/resources/mana/C_alt.png similarity index 100% rename from cardvault/resources/mana/C_alt.png rename to cardvault/cv_gtk3/resources/mana/C_alt.png diff --git a/cardvault/resources/mana/G-P.png b/cardvault/cv_gtk3/resources/mana/G-P.png similarity index 100% rename from cardvault/resources/mana/G-P.png rename to cardvault/cv_gtk3/resources/mana/G-P.png diff --git a/cardvault/resources/mana/G-U.png b/cardvault/cv_gtk3/resources/mana/G-U.png similarity index 100% rename from cardvault/resources/mana/G-U.png rename to cardvault/cv_gtk3/resources/mana/G-U.png diff --git a/cardvault/resources/mana/G-W.png b/cardvault/cv_gtk3/resources/mana/G-W.png similarity index 100% rename from cardvault/resources/mana/G-W.png rename to cardvault/cv_gtk3/resources/mana/G-W.png diff --git a/cardvault/resources/mana/G.png b/cardvault/cv_gtk3/resources/mana/G.png similarity index 100% rename from cardvault/resources/mana/G.png rename to cardvault/cv_gtk3/resources/mana/G.png diff --git a/cardvault/resources/mana/G_alt.png b/cardvault/cv_gtk3/resources/mana/G_alt.png similarity index 100% rename from cardvault/resources/mana/G_alt.png rename to cardvault/cv_gtk3/resources/mana/G_alt.png diff --git a/cardvault/resources/mana/R-G.png b/cardvault/cv_gtk3/resources/mana/R-G.png similarity index 100% rename from cardvault/resources/mana/R-G.png rename to cardvault/cv_gtk3/resources/mana/R-G.png diff --git a/cardvault/resources/mana/R-P.png b/cardvault/cv_gtk3/resources/mana/R-P.png similarity index 100% rename from cardvault/resources/mana/R-P.png rename to cardvault/cv_gtk3/resources/mana/R-P.png diff --git a/cardvault/resources/mana/R-W.png b/cardvault/cv_gtk3/resources/mana/R-W.png similarity index 100% rename from cardvault/resources/mana/R-W.png rename to cardvault/cv_gtk3/resources/mana/R-W.png diff --git a/cardvault/resources/mana/R.png b/cardvault/cv_gtk3/resources/mana/R.png similarity index 100% rename from cardvault/resources/mana/R.png rename to cardvault/cv_gtk3/resources/mana/R.png diff --git a/cardvault/resources/mana/R_alt.png b/cardvault/cv_gtk3/resources/mana/R_alt.png similarity index 100% rename from cardvault/resources/mana/R_alt.png rename to cardvault/cv_gtk3/resources/mana/R_alt.png diff --git a/cardvault/resources/mana/S.png b/cardvault/cv_gtk3/resources/mana/S.png similarity index 100% rename from cardvault/resources/mana/S.png rename to cardvault/cv_gtk3/resources/mana/S.png diff --git a/cardvault/resources/mana/T.png b/cardvault/cv_gtk3/resources/mana/T.png similarity index 100% rename from cardvault/resources/mana/T.png rename to cardvault/cv_gtk3/resources/mana/T.png diff --git a/cardvault/resources/mana/U-B.png b/cardvault/cv_gtk3/resources/mana/U-B.png similarity index 100% rename from cardvault/resources/mana/U-B.png rename to cardvault/cv_gtk3/resources/mana/U-B.png diff --git a/cardvault/resources/mana/U-P.png b/cardvault/cv_gtk3/resources/mana/U-P.png similarity index 100% rename from cardvault/resources/mana/U-P.png rename to cardvault/cv_gtk3/resources/mana/U-P.png diff --git a/cardvault/resources/mana/U-R.png b/cardvault/cv_gtk3/resources/mana/U-R.png similarity index 100% rename from cardvault/resources/mana/U-R.png rename to cardvault/cv_gtk3/resources/mana/U-R.png diff --git a/cardvault/resources/mana/U.png b/cardvault/cv_gtk3/resources/mana/U.png similarity index 100% rename from cardvault/resources/mana/U.png rename to cardvault/cv_gtk3/resources/mana/U.png diff --git a/cardvault/resources/mana/U_alt.png b/cardvault/cv_gtk3/resources/mana/U_alt.png similarity index 100% rename from cardvault/resources/mana/U_alt.png rename to cardvault/cv_gtk3/resources/mana/U_alt.png diff --git a/cardvault/resources/mana/W-B.png b/cardvault/cv_gtk3/resources/mana/W-B.png similarity index 100% rename from cardvault/resources/mana/W-B.png rename to cardvault/cv_gtk3/resources/mana/W-B.png diff --git a/cardvault/resources/mana/W-P.png b/cardvault/cv_gtk3/resources/mana/W-P.png similarity index 100% rename from cardvault/resources/mana/W-P.png rename to cardvault/cv_gtk3/resources/mana/W-P.png diff --git a/cardvault/resources/mana/W-U.png b/cardvault/cv_gtk3/resources/mana/W-U.png similarity index 100% rename from cardvault/resources/mana/W-U.png rename to cardvault/cv_gtk3/resources/mana/W-U.png diff --git a/cardvault/resources/mana/W.png b/cardvault/cv_gtk3/resources/mana/W.png similarity index 100% rename from cardvault/resources/mana/W.png rename to cardvault/cv_gtk3/resources/mana/W.png diff --git a/cardvault/resources/mana/W_alt.png b/cardvault/cv_gtk3/resources/mana/W_alt.png similarity index 100% rename from cardvault/resources/mana/W_alt.png rename to cardvault/cv_gtk3/resources/mana/W_alt.png diff --git a/cardvault/resources/mana/X.png b/cardvault/cv_gtk3/resources/mana/X.png similarity index 100% rename from cardvault/resources/mana/X.png rename to cardvault/cv_gtk3/resources/mana/X.png diff --git a/cardvault/resources/mana/Y.png b/cardvault/cv_gtk3/resources/mana/Y.png similarity index 100% rename from cardvault/resources/mana/Y.png rename to cardvault/cv_gtk3/resources/mana/Y.png diff --git a/cardvault/resources/mana/Z.png b/cardvault/cv_gtk3/resources/mana/Z.png similarity index 100% rename from cardvault/resources/mana/Z.png rename to cardvault/cv_gtk3/resources/mana/Z.png diff --git a/cardvault/resources/mana/flip.png b/cardvault/cv_gtk3/resources/mana/flip.png similarity index 100% rename from cardvault/resources/mana/flip.png rename to cardvault/cv_gtk3/resources/mana/flip.png diff --git a/cardvault/resources/mana/half.png b/cardvault/cv_gtk3/resources/mana/half.png similarity index 100% rename from cardvault/resources/mana/half.png rename to cardvault/cv_gtk3/resources/mana/half.png diff --git a/cardvault/resources/mana/infinite.png b/cardvault/cv_gtk3/resources/mana/infinite.png similarity index 100% rename from cardvault/resources/mana/infinite.png rename to cardvault/cv_gtk3/resources/mana/infinite.png diff --git a/cardvault/resources/mana/tap_old.png b/cardvault/cv_gtk3/resources/mana/tap_old.png similarity index 100% rename from cardvault/resources/mana/tap_old.png rename to cardvault/cv_gtk3/resources/mana/tap_old.png diff --git a/cardvault/resources/mana/untap.png b/cardvault/cv_gtk3/resources/mana/untap.png similarity index 100% rename from cardvault/resources/mana/untap.png rename to cardvault/cv_gtk3/resources/mana/untap.png diff --git a/cv_gtk3/setting.py b/cardvault/cv_gtk3/setting.py similarity index 100% rename from cv_gtk3/setting.py rename to cardvault/cv_gtk3/setting.py diff --git a/cardvault/cv_gtk3/signal_handlers/__init__.py b/cardvault/cv_gtk3/signal_handlers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/cv_gtk3/signal_handlers/handlers.py b/cardvault/cv_gtk3/signal_handlers/handlers.py similarity index 100% rename from cv_gtk3/signal_handlers/handlers.py rename to cardvault/cv_gtk3/signal_handlers/handlers.py diff --git a/cv_gtk3/signal_handlers/menu_bar.py b/cardvault/cv_gtk3/signal_handlers/menu_bar.py similarity index 100% rename from cv_gtk3/signal_handlers/menu_bar.py rename to cardvault/cv_gtk3/signal_handlers/menu_bar.py diff --git a/cv_gtk3/signal_handlers/search.py b/cardvault/cv_gtk3/signal_handlers/search.py similarity index 90% rename from cv_gtk3/signal_handlers/search.py rename to cardvault/cv_gtk3/signal_handlers/search.py index f052abc..88788e1 100644 --- a/cv_gtk3/signal_handlers/search.py +++ b/cardvault/cv_gtk3/signal_handlers/search.py @@ -1,14 +1,12 @@ import os from cv_gtk3.card_view import CardView -from cv_gtk3.setting import GUISettings - -from cv_gtk3.gtkui import CardvaultGTK +from cv_gtk3.gtk_util import GTKUtilities class SearchPageHandlers: """ Class for handling Signals from the search page """ - def __init__(self, app: 'CardvaultGTK'): + def __init__(self, app): """ Constructor :param app: Reference to an CardvaultGTK object """ @@ -16,7 +14,7 @@ class SearchPageHandlers: # Build the card view overlay = self.app.ui.get_object("searchResults") - self.card_list = CardView(ui_file=os.path.join(GUISettings.glade_file_path, 'cardtree.glade'), filtered=False) + self.card_list = CardView(filtered=False) self.card_list.set_name("resultsScroller") # TODO Context menu for card view # card_list.tree.connect("row-activated", self.on_search_card_selected) diff --git a/cardvault/resources/cardvault.desktop b/cardvault/resources/cardvault.desktop deleted file mode 100644 index 3668438..0000000 --- a/cardvault/resources/cardvault.desktop +++ /dev/null @@ -1,8 +0,0 @@ -[Desktop Entry] -Version=0.5 -Type=Application -Name=Card Vault -Comment=Organize and plan your MTG card collection -TryExec=cardvault -Exec=cardvault -Icon=cardvault diff --git a/cardvault/resources/cardvault.png b/cardvault/resources/cardvault.png deleted file mode 100644 index e3f5f70..0000000 Binary files a/cardvault/resources/cardvault.png and /dev/null differ diff --git a/cv_gtk3/gtk_util.py b/cv_gtk3/gtk_util.py deleted file mode 100644 index e76ed4d..0000000 --- a/cv_gtk3/gtk_util.py +++ /dev/null @@ -1,95 +0,0 @@ -import re -import os -from gi.repository import GdkPixbuf -try: - from PIL import Image as PImage -except ImportError as err: - print('PIL imaging library is not installed') - -from cv_engine.util import EngineConfig - - -class GTKUtilities: - """ Access to image caches and utilities for use in the GTK application """ - # Loaded mana symbols Format: {'B': GDKPixbuf, '3': GDKPixbuf} - mana_icons = {} - # Cache for combined mana cost icons - precon_icon_cache = {} - - @staticmethod - def load_icon_cache(path): - icons = {} - if not os.path.isdir(path): - os.mkdir(path) - files = os.listdir(path) - for file in files: - try: - pixbuf = GdkPixbuf.Pixbuf.new_from_file(os.path.join(path, file)) - # Strip filename extension - icon_name = os.path.splitext(file)[0] - icons[icon_name] = pixbuf - except Exception as ex: - print('Error while loading icon file "{}"'.format(ex)) - return icons - - @staticmethod - def get_mana_icons(mana_string): - """ Return the combined mana symbols for a mana string - :param mana_string: String in the format '{3}{U}{B}' - :return: GdkPixbuf containing the combined symbols - """ - if not mana_string: - return - icon_list = re.findall("{(.*?)}", mana_string.replace("/", "-")) - icon_name = "_".join(icon_list) - try: - icon = GTKUtilities.precon_icon_cache[icon_name] - except KeyError: - icon = GTKUtilities.create_mana_icons(mana_string) - GTKUtilities.precon_icon_cache[icon_name] = icon - # Scale icon for display - if icon: - icon = icon.scale_simple(icon.get_width() / 5, icon.get_height() / 5, GdkPixbuf.InterpType.HYPER) - return icon - - @staticmethod - def create_mana_icons(mana_string): - # Convert the string to a List - glyphs = re.findall("{(.*?)}", mana_string) - if len(glyphs) == 0: - return - # Compute horizontal size for the final image - size = len(glyphs) * 105 - image = PImage.new("RGBA", (size, 105)) - for index, icon in enumerate(glyphs): - x_pos = index * 105 - try: - # Try loading mana icon and converting to PIL.Image for combining - loaded = GTKUtilities.pixbuf_to_image(GTKUtilities.mana_icons[icon]) - except KeyError: - print('Mana icon "{}" is not loaded.'.format(icon)) - return - image.paste(loaded, (x_pos, 0)) - # Save pre build icon file - path = os.path.join(EngineConfig.icon_cache_path, "_".join(glyphs) + ".png") - image.save(path) - try: - pixbuf = GdkPixbuf.Pixbuf.new_from_file(path) - except Exception as err: - print(err) - return - return pixbuf - - @staticmethod - def pixbuf_to_image(pix): - """Convert gdkpixbuf to PIL image""" - data = pix.get_pixels() - w = pix.props.width - h = pix.props.height - stride = pix.props.rowstride - mode = "RGB" - if pix.props.has_alpha: - mode = "RGBA" - im = PImage.frombytes(mode, (w, h), data, "raw", mode, stride) - - return im \ No newline at end of file diff --git a/cardvault/application.py b/legacy/application.py similarity index 94% rename from cardvault/application.py rename to legacy/application.py index 4989333..248be88 100644 --- a/cardvault/application.py +++ b/legacy/application.py @@ -1,5 +1,3 @@ -from collections import OrderedDict - import gi import os import copy @@ -56,8 +54,8 @@ class Application: self.wants = Dict[str, List[Type[mtgsdk.Card]]] self.load_user_data() - self.ui.get_object('statusbar_icon').set_from_icon_name( - util.online_icons[self.is_online()], Gtk.IconSize.BUTTON) + self.ui.get_object('statusbar_icon').set_from_icon_name(util.online_icons[self.is_online()], + Gtk.IconSize.BUTTON) self.ui.get_object('statusbar_icon').set_tooltip_text(util.online_tooltips[self.is_online()]) self.handlers = handlers.Handlers(self) @@ -95,35 +93,34 @@ class Application: builder.add_from_file(util.get_ui_filename("detailswindow.glade")) builder.add_from_file(util.get_ui_filename("overlays.glade")) window = builder.get_object("cardDetails") - window.set_title(card.name) + window.set_title(card.get('name')) # Card Image container = builder.get_object("imageContainer") pixbuf = util.load_card_image(card, 63 * 5, 88 * 5, self.image_cache) image = Gtk.Image().new_from_pixbuf(pixbuf) container.add(image) # Name - builder.get_object("cardName").set_text(card.name) + builder.get_object("cardName").set_text(card.get('name')) # Types supertypes = "" - if card.subtypes is not None: - supertypes = " - " + " ".join(card.subtypes) - types = " ".join(card.types) + supertypes + if card.get('subtypes'): + supertypes = " - " + " ".join(card.get('subtypes')) + types = " ".join(card.get('types')) + supertypes builder.get_object("cardTypes").set_text(types) # Rarity - builder.get_object("cardRarity").set_text(card.rarity if card.rarity else "") + builder.get_object("cardRarity").set_text(card.get('rarity') or "") # Release - builder.get_object("cardReleaseDate").set_text(card.release_date if card.release_date else "") + builder.get_object("cardReleaseDate").set_text(card.get('release_date') or "") # Set - builder.get_object("cardSet").set_text(card.set_name) + builder.get_object("cardSet").set_text(card.get('set_name')) # Printings - prints = [] - for set in card.printings: - prints.append(self.get_all_sets()[set].name) + all_sets = self.get_all_sets() + prints = [all_sets[set_name].get('name') for set_name in card.get('printings')] builder.get_object("cardPrintings").set_text(", ".join(prints)) # Legalities grid = builder.get_object("legalitiesGrid") rows = 1 - for legality in card.legalities if card.legalities else {}: + for legality in card.get('legalities') or {}: date_label = Gtk.Label() date_label.set_halign(Gtk.Align.END) text_label = Gtk.Label() @@ -140,9 +137,9 @@ class Application: grid.show_all() # Rulings - if card.rulings: + if card.get('rulings'): store = builder.get_object("rulesStore") - for rule in card.rulings: + for rule in card.get('rulings'): store.append([rule["date"], rule["text"]]) else: builder.get_object("ruleBox").set_visible(False) @@ -330,7 +327,7 @@ class Application: def get_wanted_card_ids(self) -> List[str]: all_ids = [] for cards in self.wants.values(): - next_ids = [card.multiverse_id for card in cards] + next_ids = [card['multiverse_id'] for card in cards] all_ids = list(set(all_ids) | set(next_ids)) return all_ids @@ -442,10 +439,7 @@ class Application: def get_all_sets(self) -> dict: if not self.is_online(): - l = self.db.set_get_all() - out = {} - for s in l: - out[s.code] = s + out = {s['code']: s for s in self.db.set_get_all()} else: out = util.load_sets(util.get_root_filename('sets')) return out diff --git a/cardvault/cardlist.py b/legacy/cardlist.py similarity index 73% rename from cardvault/cardlist.py rename to legacy/cardlist.py index 794d3ed..9a74af9 100644 --- a/cardvault/cardlist.py +++ b/legacy/cardlist.py @@ -6,7 +6,6 @@ from cardvault import application from gi.repository import Gtk, GdkPixbuf, Gdk from typing import Dict, Type -from mtgsdk import Card import time gi.require_version('Gtk', '3.0') @@ -14,7 +13,7 @@ gi.require_version('Gdk', '3.0') class CardList(Gtk.ScrolledWindow): - def __init__(self, filtered, app: 'application.Application', row_colors: Dict[str, str]): + def __init__(self, filtered, app, row_colors: Dict[str, str]): Gtk.ScrolledWindow.__init__(self) self.set_hexpand(True) self.set_vexpand(True) @@ -49,7 +48,7 @@ class CardList(Gtk.ScrolledWindow): output[card_id] = card return output - def update(self, library: Dict[str, Type[Card]]): + def update(self, library: Dict[str, dict]): self.store.clear() if library is None: return @@ -63,22 +62,24 @@ class CardList(Gtk.ScrolledWindow): all_wants = self.app.get_wanted_card_ids() for card in library.values(): - if card.multiverse_id is not None: + if card['multiverse_id'] is not None: color = self.get_row_color(card, self.app.library, all_wants, self.row_colors) - mana_cost = None if card.types.__contains__("Land") else self.app.get_mana_icons(card.mana_cost) - item = [card.multiverse_id, - card.name, - " ".join(card.supertypes if card.supertypes else ""), - " ".join(card.types), - card.rarity, - card.power, - card.toughness, - ", ".join(card.printings), + mana_cost = None + if not card.get('types').__contains__("Land"): + mana_cost = self.app.get_mana_icons(card.get('mana_cost')) + item = [card['multiverse_id'], + card['name'], + " ".join(card.get('supertypes') or ""), + " ".join(card.get('types') or ""), + card.get('rarity'), + card.get('power'), + card.get('toughness'), + ", ".join(card.get('printings') or ""), mana_cost, - card.cmc, - card.set_name, + card.get('cmc'), + card.get('set_name'), color, - card.original_text] + card.get('original_text')] self.store.append(item) end = time.time() util.log("Time to build Table: " + str(round(end - start, 3)) + "s", util.LogLevel.Info) @@ -103,9 +104,9 @@ class CardList(Gtk.ScrolledWindow): @staticmethod def get_row_color(card, lib: dict, wants: dict, colors: dict) -> str: - if lib.__contains__(card.multiverse_id): + if lib.__contains__(card.get('multiverse_id')): return colors["owned"] - elif wants.__contains__(card.multiverse_id): + elif wants.__contains__(card.get('multiverse_id')): return colors["wanted"] else: return colors["unowned"] diff --git a/cardvault/database.py b/legacy/database.py similarity index 100% rename from cardvault/database.py rename to legacy/database.py diff --git a/cv_gtk3/gui/cardtree.glade b/legacy/gui/cardtree.glade similarity index 100% rename from cv_gtk3/gui/cardtree.glade rename to legacy/gui/cardtree.glade diff --git a/cv_gtk3/gui/detailswindow.glade b/legacy/gui/detailswindow.glade similarity index 100% rename from cv_gtk3/gui/detailswindow.glade rename to legacy/gui/detailswindow.glade diff --git a/cv_gtk3/gui/dialogs.glade b/legacy/gui/dialogs.glade similarity index 100% rename from cv_gtk3/gui/dialogs.glade rename to legacy/gui/dialogs.glade diff --git a/cv_gtk3/gui/library.glade b/legacy/gui/library.glade similarity index 100% rename from cv_gtk3/gui/library.glade rename to legacy/gui/library.glade diff --git a/cardvault/gui/mainwindow.glade b/legacy/gui/mainwindow.glade similarity index 100% rename from cardvault/gui/mainwindow.glade rename to legacy/gui/mainwindow.glade diff --git a/cv_gtk3/gui/overlays.glade b/legacy/gui/overlays.glade similarity index 100% rename from cv_gtk3/gui/overlays.glade rename to legacy/gui/overlays.glade diff --git a/cardvault/gui/search.glade b/legacy/gui/search.glade similarity index 100% rename from cardvault/gui/search.glade rename to legacy/gui/search.glade diff --git a/cv_gtk3/gui/wants.glade b/legacy/gui/wants.glade similarity index 100% rename from cv_gtk3/gui/wants.glade rename to legacy/gui/wants.glade diff --git a/cardvault/handlers.py b/legacy/handlers.py similarity index 98% rename from cardvault/handlers.py rename to legacy/handlers.py index 8ffe612..e77a6b1 100644 --- a/cardvault/handlers.py +++ b/legacy/handlers.py @@ -1,7 +1,7 @@ -import gi +import math import sys -import math +import gi gi.require_version('Gtk', '3.0') import time, datetime @@ -10,11 +10,9 @@ import threading from gi.repository import Gtk, GObject from cardvault import util, application -from mtgsdk import Card, MtgException - -from cardvault.search import SearchHandlers -from cardvault.library import LibraryHandlers -from cardvault.wants import WantsHandlers +from legacy.search import SearchHandlers +from legacy.library import LibraryHandlers +from legacy.wants import WantsHandlers class Handlers(SearchHandlers, LibraryHandlers, WantsHandlers): @@ -203,7 +201,7 @@ class Handlers(SearchHandlers, LibraryHandlers, WantsHandlers): self.cancel_token = False util.log("Download thread ended", util.LogLevel.Info) - def download_failed(self, err: MtgException): + def download_failed(self, err): # Delete Dialog self.app.ui.get_object("loadDataDialog").hide() self.app.push_status("Download canceled") diff --git a/cardvault/library.py b/legacy/library.py similarity index 100% rename from cardvault/library.py rename to legacy/library.py diff --git a/cv_gtk3/resources/images/demo.jpg b/legacy/resources/images/demo.jpg similarity index 100% rename from cv_gtk3/resources/images/demo.jpg rename to legacy/resources/images/demo.jpg diff --git a/cv_gtk3/resources/images/dummy.jpg b/legacy/resources/images/dummy.jpg similarity index 100% rename from cv_gtk3/resources/images/dummy.jpg rename to legacy/resources/images/dummy.jpg diff --git a/cv_gtk3/resources/images/dummy_315x450.png b/legacy/resources/images/dummy_315x450.png similarity index 100% rename from cv_gtk3/resources/images/dummy_315x450.png rename to legacy/resources/images/dummy_315x450.png diff --git a/cv_gtk3/resources/mana/0.png b/legacy/resources/mana/0.png similarity index 100% rename from cv_gtk3/resources/mana/0.png rename to legacy/resources/mana/0.png diff --git a/cv_gtk3/resources/mana/1.png b/legacy/resources/mana/1.png similarity index 100% rename from cv_gtk3/resources/mana/1.png rename to legacy/resources/mana/1.png diff --git a/cv_gtk3/resources/mana/10.png b/legacy/resources/mana/10.png similarity index 100% rename from cv_gtk3/resources/mana/10.png rename to legacy/resources/mana/10.png diff --git a/cv_gtk3/resources/mana/11.png b/legacy/resources/mana/11.png similarity index 100% rename from cv_gtk3/resources/mana/11.png rename to legacy/resources/mana/11.png diff --git a/cv_gtk3/resources/mana/12.png b/legacy/resources/mana/12.png similarity index 100% rename from cv_gtk3/resources/mana/12.png rename to legacy/resources/mana/12.png diff --git a/cv_gtk3/resources/mana/13.png b/legacy/resources/mana/13.png similarity index 100% rename from cv_gtk3/resources/mana/13.png rename to legacy/resources/mana/13.png diff --git a/cv_gtk3/resources/mana/14.png b/legacy/resources/mana/14.png similarity index 100% rename from cv_gtk3/resources/mana/14.png rename to legacy/resources/mana/14.png diff --git a/cv_gtk3/resources/mana/15.png b/legacy/resources/mana/15.png similarity index 100% rename from cv_gtk3/resources/mana/15.png rename to legacy/resources/mana/15.png diff --git a/cv_gtk3/resources/mana/16.png b/legacy/resources/mana/16.png similarity index 100% rename from cv_gtk3/resources/mana/16.png rename to legacy/resources/mana/16.png diff --git a/cv_gtk3/resources/mana/17.png b/legacy/resources/mana/17.png similarity index 100% rename from cv_gtk3/resources/mana/17.png rename to legacy/resources/mana/17.png diff --git a/cv_gtk3/resources/mana/18.png b/legacy/resources/mana/18.png similarity index 100% rename from cv_gtk3/resources/mana/18.png rename to legacy/resources/mana/18.png diff --git a/cv_gtk3/resources/mana/19.png b/legacy/resources/mana/19.png similarity index 100% rename from cv_gtk3/resources/mana/19.png rename to legacy/resources/mana/19.png diff --git a/cv_gtk3/resources/mana/2.png b/legacy/resources/mana/2.png similarity index 100% rename from cv_gtk3/resources/mana/2.png rename to legacy/resources/mana/2.png diff --git a/cv_gtk3/resources/mana/20.png b/legacy/resources/mana/20.png similarity index 100% rename from cv_gtk3/resources/mana/20.png rename to legacy/resources/mana/20.png diff --git a/cv_gtk3/resources/mana/2b.png b/legacy/resources/mana/2b.png similarity index 100% rename from cv_gtk3/resources/mana/2b.png rename to legacy/resources/mana/2b.png diff --git a/cv_gtk3/resources/mana/2g.png b/legacy/resources/mana/2g.png similarity index 100% rename from cv_gtk3/resources/mana/2g.png rename to legacy/resources/mana/2g.png diff --git a/cv_gtk3/resources/mana/2r.png b/legacy/resources/mana/2r.png similarity index 100% rename from cv_gtk3/resources/mana/2r.png rename to legacy/resources/mana/2r.png diff --git a/cv_gtk3/resources/mana/2u.png b/legacy/resources/mana/2u.png similarity index 100% rename from cv_gtk3/resources/mana/2u.png rename to legacy/resources/mana/2u.png diff --git a/cv_gtk3/resources/mana/2w.png b/legacy/resources/mana/2w.png similarity index 100% rename from cv_gtk3/resources/mana/2w.png rename to legacy/resources/mana/2w.png diff --git a/cv_gtk3/resources/mana/3.png b/legacy/resources/mana/3.png similarity index 100% rename from cv_gtk3/resources/mana/3.png rename to legacy/resources/mana/3.png diff --git a/cv_gtk3/resources/mana/4.png b/legacy/resources/mana/4.png similarity index 100% rename from cv_gtk3/resources/mana/4.png rename to legacy/resources/mana/4.png diff --git a/cv_gtk3/resources/mana/5.png b/legacy/resources/mana/5.png similarity index 100% rename from cv_gtk3/resources/mana/5.png rename to legacy/resources/mana/5.png diff --git a/cv_gtk3/resources/mana/6.png b/legacy/resources/mana/6.png similarity index 100% rename from cv_gtk3/resources/mana/6.png rename to legacy/resources/mana/6.png diff --git a/cv_gtk3/resources/mana/7.png b/legacy/resources/mana/7.png similarity index 100% rename from cv_gtk3/resources/mana/7.png rename to legacy/resources/mana/7.png diff --git a/cv_gtk3/resources/mana/8.png b/legacy/resources/mana/8.png similarity index 100% rename from cv_gtk3/resources/mana/8.png rename to legacy/resources/mana/8.png diff --git a/cv_gtk3/resources/mana/9.png b/legacy/resources/mana/9.png similarity index 100% rename from cv_gtk3/resources/mana/9.png rename to legacy/resources/mana/9.png diff --git a/cv_gtk3/resources/mana/B-G.png b/legacy/resources/mana/B-G.png similarity index 100% rename from cv_gtk3/resources/mana/B-G.png rename to legacy/resources/mana/B-G.png diff --git a/cv_gtk3/resources/mana/B-P.png b/legacy/resources/mana/B-P.png similarity index 100% rename from cv_gtk3/resources/mana/B-P.png rename to legacy/resources/mana/B-P.png diff --git a/cv_gtk3/resources/mana/B-R.png b/legacy/resources/mana/B-R.png similarity index 100% rename from cv_gtk3/resources/mana/B-R.png rename to legacy/resources/mana/B-R.png diff --git a/cv_gtk3/resources/mana/B.png b/legacy/resources/mana/B.png similarity index 100% rename from cv_gtk3/resources/mana/B.png rename to legacy/resources/mana/B.png diff --git a/cv_gtk3/resources/mana/B_alt.png b/legacy/resources/mana/B_alt.png similarity index 100% rename from cv_gtk3/resources/mana/B_alt.png rename to legacy/resources/mana/B_alt.png diff --git a/cv_gtk3/resources/mana/C.png b/legacy/resources/mana/C.png similarity index 100% rename from cv_gtk3/resources/mana/C.png rename to legacy/resources/mana/C.png diff --git a/cv_gtk3/resources/mana/C_alt.png b/legacy/resources/mana/C_alt.png similarity index 100% rename from cv_gtk3/resources/mana/C_alt.png rename to legacy/resources/mana/C_alt.png diff --git a/cv_gtk3/resources/mana/G-P.png b/legacy/resources/mana/G-P.png similarity index 100% rename from cv_gtk3/resources/mana/G-P.png rename to legacy/resources/mana/G-P.png diff --git a/cv_gtk3/resources/mana/G-U.png b/legacy/resources/mana/G-U.png similarity index 100% rename from cv_gtk3/resources/mana/G-U.png rename to legacy/resources/mana/G-U.png diff --git a/cv_gtk3/resources/mana/G-W.png b/legacy/resources/mana/G-W.png similarity index 100% rename from cv_gtk3/resources/mana/G-W.png rename to legacy/resources/mana/G-W.png diff --git a/cv_gtk3/resources/mana/G.png b/legacy/resources/mana/G.png similarity index 100% rename from cv_gtk3/resources/mana/G.png rename to legacy/resources/mana/G.png diff --git a/cv_gtk3/resources/mana/G_alt.png b/legacy/resources/mana/G_alt.png similarity index 100% rename from cv_gtk3/resources/mana/G_alt.png rename to legacy/resources/mana/G_alt.png diff --git a/cv_gtk3/resources/mana/R-G.png b/legacy/resources/mana/R-G.png similarity index 100% rename from cv_gtk3/resources/mana/R-G.png rename to legacy/resources/mana/R-G.png diff --git a/cv_gtk3/resources/mana/R-P.png b/legacy/resources/mana/R-P.png similarity index 100% rename from cv_gtk3/resources/mana/R-P.png rename to legacy/resources/mana/R-P.png diff --git a/cv_gtk3/resources/mana/R-W.png b/legacy/resources/mana/R-W.png similarity index 100% rename from cv_gtk3/resources/mana/R-W.png rename to legacy/resources/mana/R-W.png diff --git a/cv_gtk3/resources/mana/R.png b/legacy/resources/mana/R.png similarity index 100% rename from cv_gtk3/resources/mana/R.png rename to legacy/resources/mana/R.png diff --git a/cv_gtk3/resources/mana/R_alt.png b/legacy/resources/mana/R_alt.png similarity index 100% rename from cv_gtk3/resources/mana/R_alt.png rename to legacy/resources/mana/R_alt.png diff --git a/cv_gtk3/resources/mana/S.png b/legacy/resources/mana/S.png similarity index 100% rename from cv_gtk3/resources/mana/S.png rename to legacy/resources/mana/S.png diff --git a/cv_gtk3/resources/mana/T.png b/legacy/resources/mana/T.png similarity index 100% rename from cv_gtk3/resources/mana/T.png rename to legacy/resources/mana/T.png diff --git a/cv_gtk3/resources/mana/U-B.png b/legacy/resources/mana/U-B.png similarity index 100% rename from cv_gtk3/resources/mana/U-B.png rename to legacy/resources/mana/U-B.png diff --git a/cv_gtk3/resources/mana/U-P.png b/legacy/resources/mana/U-P.png similarity index 100% rename from cv_gtk3/resources/mana/U-P.png rename to legacy/resources/mana/U-P.png diff --git a/cv_gtk3/resources/mana/U-R.png b/legacy/resources/mana/U-R.png similarity index 100% rename from cv_gtk3/resources/mana/U-R.png rename to legacy/resources/mana/U-R.png diff --git a/cv_gtk3/resources/mana/U.png b/legacy/resources/mana/U.png similarity index 100% rename from cv_gtk3/resources/mana/U.png rename to legacy/resources/mana/U.png diff --git a/cv_gtk3/resources/mana/U_alt.png b/legacy/resources/mana/U_alt.png similarity index 100% rename from cv_gtk3/resources/mana/U_alt.png rename to legacy/resources/mana/U_alt.png diff --git a/cv_gtk3/resources/mana/W-B.png b/legacy/resources/mana/W-B.png similarity index 100% rename from cv_gtk3/resources/mana/W-B.png rename to legacy/resources/mana/W-B.png diff --git a/cv_gtk3/resources/mana/W-P.png b/legacy/resources/mana/W-P.png similarity index 100% rename from cv_gtk3/resources/mana/W-P.png rename to legacy/resources/mana/W-P.png diff --git a/cv_gtk3/resources/mana/W-U.png b/legacy/resources/mana/W-U.png similarity index 100% rename from cv_gtk3/resources/mana/W-U.png rename to legacy/resources/mana/W-U.png diff --git a/cv_gtk3/resources/mana/W.png b/legacy/resources/mana/W.png similarity index 100% rename from cv_gtk3/resources/mana/W.png rename to legacy/resources/mana/W.png diff --git a/cv_gtk3/resources/mana/W_alt.png b/legacy/resources/mana/W_alt.png similarity index 100% rename from cv_gtk3/resources/mana/W_alt.png rename to legacy/resources/mana/W_alt.png diff --git a/cv_gtk3/resources/mana/X.png b/legacy/resources/mana/X.png similarity index 100% rename from cv_gtk3/resources/mana/X.png rename to legacy/resources/mana/X.png diff --git a/cv_gtk3/resources/mana/Y.png b/legacy/resources/mana/Y.png similarity index 100% rename from cv_gtk3/resources/mana/Y.png rename to legacy/resources/mana/Y.png diff --git a/cv_gtk3/resources/mana/Z.png b/legacy/resources/mana/Z.png similarity index 100% rename from cv_gtk3/resources/mana/Z.png rename to legacy/resources/mana/Z.png diff --git a/cv_gtk3/resources/mana/flip.png b/legacy/resources/mana/flip.png similarity index 100% rename from cv_gtk3/resources/mana/flip.png rename to legacy/resources/mana/flip.png diff --git a/cv_gtk3/resources/mana/half.png b/legacy/resources/mana/half.png similarity index 100% rename from cv_gtk3/resources/mana/half.png rename to legacy/resources/mana/half.png diff --git a/cv_gtk3/resources/mana/infinite.png b/legacy/resources/mana/infinite.png similarity index 100% rename from cv_gtk3/resources/mana/infinite.png rename to legacy/resources/mana/infinite.png diff --git a/cv_gtk3/resources/mana/tap_old.png b/legacy/resources/mana/tap_old.png similarity index 100% rename from cv_gtk3/resources/mana/tap_old.png rename to legacy/resources/mana/tap_old.png diff --git a/cv_gtk3/resources/mana/untap.png b/legacy/resources/mana/untap.png similarity index 100% rename from cv_gtk3/resources/mana/untap.png rename to legacy/resources/mana/untap.png diff --git a/cardvault/search.py b/legacy/search.py similarity index 97% rename from cardvault/search.py rename to legacy/search.py index 4830eb5..5d8eb17 100644 --- a/cardvault/search.py +++ b/legacy/search.py @@ -1,8 +1,10 @@ import time from urllib.error import URLError, HTTPError -from mtgsdk import Card from cardvault import application, cardlist, util +# Deprecated +from mtgsdk import Card + import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk @@ -189,8 +191,8 @@ class SearchHandlers: name = self.app.ui.get_object("setEntry").get_text() output["set"] = "" for mtgset in self.app.get_all_sets().values(): - if mtgset.name == name: - output["set"] = mtgset.code + if mtgset['name'] == name: + output["set"] = mtgset['code'] return output def search_cards(self, term: str, filters: dict) -> dict: @@ -220,6 +222,7 @@ class SearchHandlers: .where(rarity=filters["rarity"]) \ .where(pageSize=50) \ .where(page=1).all() + cards = [card.__dict__ for card in cards] end = time.time() util.log("Card info fetched in {}s".format(round(end - start, 3)), util.LogLevel.Info) except (URLError, HTTPError) as err: @@ -235,10 +238,7 @@ class SearchHandlers: return {} util.log("Found " + str(len(cards)) + " cards", util.LogLevel.Info) - output = {} - for card in cards: - output[card.multiverse_id] = card - return output + return {card['multiverse_id']: card for card in cards} # ---------------------------------Search Tree---------------------------------------------- @@ -312,8 +312,8 @@ class SearchHandlers: unique_names = [] # Reverse cardlist so we get the version with the most modern art for card in reversed(cards): - if card.name not in unique_names: - unique_names.append(card.name) + if card['name'] not in unique_names: + unique_names.append(card['name']) unique_cards.append(card) return unique_cards @@ -334,7 +334,7 @@ class SearchHandlers: """ Initialize model for set entry """ set_store = Gtk.ListStore(str, str) for mtgset in self.app.get_all_sets().values(): - set_store.append([mtgset.name, mtgset.code]) + set_store.append([mtgset.get('name'), mtgset.get('code')]) completer = Gtk.EntryCompletion() completer.set_model(set_store) completer.set_text_column(0) diff --git a/cardvault/util.py b/legacy/util.py similarity index 94% rename from cardvault/util.py rename to legacy/util.py index a3bac28..07d3510 100644 --- a/cardvault/util.py +++ b/legacy/util.py @@ -255,7 +255,7 @@ def net_load_set_list() -> dict: except MtgException as err: log(str(err), LogLevel.Error) return {} - return sets + return [set.__dict__ for set in sets] def load_sets(filename: str) -> dict: @@ -272,8 +272,8 @@ def load_sets(filename: str) -> dict: sets = pickle.load(open(filename, 'rb')) # Sort the loaded sets based on the sets name output = {} - for set in sorted(sets, key=lambda x: x.name): - output[set.code] = set + for set in sorted(sets, key=lambda x: x.get('name')): + output[set.get('code')] = set return output @@ -343,23 +343,23 @@ def load_dummy_image(size_x: int, size_y: int) -> GdkPixbuf: + '/resources/images/dummy.jpg', size_x, size_y) -def load_card_image(card: Card, size_x: int, size_y: int, cache: dict) -> GdkPixbuf: +def load_card_image(card: dict, size_x: int, size_y: int, cache: dict) -> GdkPixbuf: """ Retrieve an card image from cache or alternatively load from gatherer""" try: - image = cache[card.multiverse_id] + image = cache[card.get('multiverse_id')] except KeyError: - log("No local image for " + card.name + ". Loading from " + card.image_url, LogLevel.Info) + log("No local image for " + card.get('name') + ". Loading from " + card.get('image_url'), LogLevel.Info) filename, image = net_load_card_image(card, size_x, size_y) - cache[card.multiverse_id] = image + cache[card.get('multiverse_id')] = image return image -def net_load_card_image(card, size_x: int, size_y: int) -> (str, GdkPixbuf): - url = card.image_url +def net_load_card_image(card: dict, size_x: int, size_y: int) -> (str, GdkPixbuf): + url = card.get('image_url') if url is None: - log("No Image URL for " + card.name, LogLevel.Warning) + log("No Image URL for " + card.get('name'), LogLevel.Warning) return load_dummy_image(size_x, size_y) - filename = IMAGE_CACHE_PATH + str(card.multiverse_id) + ".png" + filename = IMAGE_CACHE_PATH + str(card.get('multiverse_id')) + ".png" request.urlretrieve(url, filename) return filename, GdkPixbuf.Pixbuf.new_from_file_at_size(filename, size_x, size_y) diff --git a/cardvault/wants.py b/legacy/wants.py similarity index 100% rename from cardvault/wants.py rename to legacy/wants.py diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 224f8b7..0000000 --- a/setup.cfg +++ /dev/null @@ -1,3 +0,0 @@ -[install] -single-version-externally-managed=1 -record=install.txt \ No newline at end of file diff --git a/setup.py b/setup.py deleted file mode 100755 index 3ffdb81..0000000 --- a/setup.py +++ /dev/null @@ -1,41 +0,0 @@ -from setuptools import setup, find_packages -from cardvault import util - -try: - LONG_DESCRIPTION = open("README.md").read() -except IOError: - LONG_DESCRIPTION = __doc__ - - -setup( - name=util.APPLICATION_TITLE, - version=util.VERSION, - packages=find_packages(), - - package_data={'cardvault': ['resources/images/*', 'resources/mana/*', 'gui/*']}, - - data_files=[ - ('share/icons/hicolor/scalable/apps', ['cardvault/resources/cardvault.png']), - ('share/applications', ['cardvault/resources/cardvault.desktop'])], - - author='luxick', - author_email='cardvoult@luxick.de', - description='Managing MTG card libraries and decks', - long_description=LONG_DESCRIPTION, - url='https://github.com/luxick/cardvault', - keywords='card manager, gtk, MTG, Magic the Gathering', - license="MIT", - entry_points={ - 'gui_scripts': [ - 'cardvault = cardvault.application:main', - ] - }, - classifiers=[ - 'Development Status :: 3 - Alpha', - 'Intended Audience :: End Users/Desktop', - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.4', - 'Programming Language :: Python :: 3.5', - 'License :: OSI Approved :: MIT License', - ], install_requires=['gi', 'pillow', 'six', 'mtgsdk', 'jsonpickle'] -)