Include tags in export and import.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import gi
|
||||
import util
|
||||
from logger import *
|
||||
import logger
|
||||
from gi.repository import Gtk, GdkPixbuf, Gdk
|
||||
import time
|
||||
gi.require_version('Gtk', '3.0')
|
||||
@@ -156,10 +156,7 @@ class CardList(Gtk.ScrolledWindow):
|
||||
color]
|
||||
self.store.append(item)
|
||||
end = time.time()
|
||||
log("Time to build Table: " + str(round(end - start, 3)), LogLevel.Info)
|
||||
|
||||
|
||||
|
||||
logger.log("Time to build Table: " + str(round(end - start, 3)), logger.LogLevel.Info)
|
||||
if self.filtered:
|
||||
self.list.set_model(self.filter_and_sort)
|
||||
self.list.thaw_child_notify()
|
||||
|
||||
@@ -102,8 +102,10 @@ class Handlers:
|
||||
card_view = self.app.ui.get_object("libraryContainer").get_child()
|
||||
selected_cards = card_view.get_selected_cards()
|
||||
tag = entry.get_text()
|
||||
lib_funct.tag_cards(selected_cards, tag)
|
||||
lib_funct.reload_library(self.app, tag)
|
||||
if tag != "":
|
||||
lib_funct.tag_cards(selected_cards, tag)
|
||||
lib_funct.reload_library(self.app, tag)
|
||||
entry.set_text("")
|
||||
|
||||
def on_drag_data_received(self, widget, drag_context, x,y, data,info, time):
|
||||
print("drag received")
|
||||
|
||||
@@ -19,7 +19,6 @@ def init_library_view(app):
|
||||
|
||||
|
||||
def reload_library(app, tag=None):
|
||||
lib = {}
|
||||
if tag == "untagged":
|
||||
lib = util.get_untagged_cards()
|
||||
tag = None
|
||||
|
||||
@@ -2,6 +2,7 @@ import gi
|
||||
import util
|
||||
import config
|
||||
import cardlist
|
||||
import logger
|
||||
from gi.repository import Gtk, Gdk
|
||||
from mtgsdk import Card
|
||||
from urllib.error import URLError, HTTPError
|
||||
@@ -32,9 +33,12 @@ def reload_serach_view(app):
|
||||
def add_to_library(card):
|
||||
util.add_card_to_lib(card)
|
||||
|
||||
|
||||
def search_cards(term):
|
||||
logger.log("Starting online search for '" + term + "'", logger.LogLevel.Info)
|
||||
# Load filters from UI
|
||||
filters = _get_filters(util.app)
|
||||
logger.log("Used Filters: " + str(filters), logger.LogLevel.Info)
|
||||
|
||||
# Load card info from internet
|
||||
try:
|
||||
@@ -52,7 +56,7 @@ def search_cards(term):
|
||||
if len(cards) == 0:
|
||||
# TODO UI show no cards found
|
||||
return
|
||||
|
||||
logger.log("Found " + str(len(cards)) + " cards", logger.LogLevel.Info)
|
||||
# Remove duplicate entries
|
||||
if config.show_from_all_sets is False:
|
||||
cards = _remove_duplicates(cards)
|
||||
|
||||
@@ -3,8 +3,9 @@ import datetime
|
||||
import gi
|
||||
import re
|
||||
import config
|
||||
import enum
|
||||
import logger
|
||||
import network
|
||||
import copy
|
||||
from gi.repository import GdkPixbuf, Gtk
|
||||
from PIL import Image as PImage
|
||||
from urllib import request
|
||||
@@ -24,8 +25,6 @@ set_dict = {}
|
||||
library = {}
|
||||
# Dictionary for tagged cards
|
||||
tags = {}
|
||||
# Dictionary of untagged cards
|
||||
untagged_cards = {}
|
||||
|
||||
status_bar = None
|
||||
app = None
|
||||
@@ -62,12 +61,17 @@ def export_library():
|
||||
dialog.set_current_folder(os.path.expanduser("~"))
|
||||
response = dialog.run()
|
||||
if response == Gtk.ResponseType.OK:
|
||||
# prepare export file
|
||||
export = {"library": library, "tags": tags}
|
||||
try:
|
||||
pickle.dump(library, open(dialog.get_filename(), 'wb'))
|
||||
except:
|
||||
show_message("Error", "Error while saving library to disk")
|
||||
app.push_status("Library exported to \"" + dialog.get_filename() + "\"")
|
||||
print("Library exported to \"", dialog.get_filename() + "\"")
|
||||
pickle.dump(export, open(dialog.get_filename(), 'wb'))
|
||||
|
||||
app.push_status("Library exported to \"" + dialog.get_filename() + "\"")
|
||||
logger.log("Library exported to \"" + dialog.get_filename() + "\"", logger.LogLevel.Info)
|
||||
except OSError as err:
|
||||
show_message("Error", err.strerror)
|
||||
logger.log(str(err), logger.LogLevel.Error)
|
||||
|
||||
dialog.destroy()
|
||||
|
||||
|
||||
@@ -83,13 +87,32 @@ def import_library():
|
||||
"Importing a library will override your current library. "
|
||||
"Proceed?")
|
||||
if override_question == Gtk.ResponseType.YES:
|
||||
imported = pickle.load(open(dialog.get_filename(), 'rb'))
|
||||
library.clear()
|
||||
for id, card in imported.items():
|
||||
library[id] = card
|
||||
|
||||
try:
|
||||
imported = pickle.load(open(dialog.get_filename(), 'rb'))
|
||||
except pickle.UnpicklingError as err:
|
||||
show_message("Error", "Imported file is invalid")
|
||||
logger.log(str(err) + " while importing", logger.LogLevel.Error)
|
||||
dialog.destroy()
|
||||
return
|
||||
|
||||
# Check imported file
|
||||
try:
|
||||
global library
|
||||
library = imported["library"]
|
||||
global tags
|
||||
tags = imported["tags"]
|
||||
except KeyError as err:
|
||||
logger.log("Invalid library format " + str(err), logger.LogLevel.Warning)
|
||||
|
||||
# Try fallback method
|
||||
library.clear()
|
||||
for id, card in imported.items():
|
||||
library[id] = card
|
||||
|
||||
save_library()
|
||||
app.push_status("Library imported")
|
||||
print("Library imported")
|
||||
logger.log("Library imported", logger.LogLevel.Info)
|
||||
dialog.destroy()
|
||||
|
||||
|
||||
@@ -103,13 +126,15 @@ def save_library():
|
||||
try:
|
||||
pickle.dump(library, open(lib_path, 'wb'))
|
||||
pickle.dump(tags, open(tag_path, 'wb'))
|
||||
except:
|
||||
show_message("Error", "Error while saving library to disk")
|
||||
except OSError as err:
|
||||
show_message("Error", err.strerror)
|
||||
logger.log(str(err), logger.LogLevel.Error)
|
||||
return
|
||||
|
||||
global unsaved_changes
|
||||
unsaved_changes = False
|
||||
app.push_status("Library saved.")
|
||||
logger.log("library saved", logger.LogLevel.Info)
|
||||
|
||||
|
||||
def load_library():
|
||||
@@ -122,11 +147,12 @@ def load_library():
|
||||
library_loaded = pickle.load(open(lib_path, 'rb'))
|
||||
for id, card in library_loaded.items():
|
||||
library[id] = card
|
||||
except :
|
||||
show_message("Error", "Error while loading library from disk")
|
||||
except OSError as err:
|
||||
show_message("Error", err.strerror)
|
||||
logger.log(str(err), logger.LogLevel.Error)
|
||||
else:
|
||||
save_library()
|
||||
print("No library file found, created new one")
|
||||
logger.log("No Library file found, creating new one", logger.LogLevel.Warning)
|
||||
|
||||
|
||||
def load_tags():
|
||||
@@ -134,13 +160,14 @@ def load_tags():
|
||||
tags.clear()
|
||||
if not os.path.isfile(tag_path):
|
||||
save_library()
|
||||
print("No tags file found, created new one")
|
||||
logger.log("No tags file found, creating new one", logger.LogLevel.Warning)
|
||||
try:
|
||||
tags_loaded = pickle.load(open(tag_path, 'rb'))
|
||||
for tag, ids in tags_loaded.items():
|
||||
tags[tag] = ids
|
||||
except:
|
||||
show_message("Error", "Error while loading library from disk")
|
||||
except OSError as err:
|
||||
show_message("Error", err.strerror)
|
||||
logger.log(str(err), logger.LogLevel.Error)
|
||||
|
||||
|
||||
def load_sets():
|
||||
@@ -208,15 +235,17 @@ def get_library(tag=None):
|
||||
|
||||
|
||||
def get_untagged_cards():
|
||||
lib = {}
|
||||
for card_id in untagged_cards.keys():
|
||||
lib[card_id] = library[card_id]
|
||||
lib = copy.copy(library)
|
||||
for ids in tags.values():
|
||||
for card_id in ids:
|
||||
try:
|
||||
del lib[card_id]
|
||||
except KeyError:
|
||||
pass
|
||||
return lib
|
||||
|
||||
|
||||
def tag_card(card, tag):
|
||||
if untagged_cards.__contains__(card.multiverse_id):
|
||||
del untagged_cards[card.multiverse_id]
|
||||
list = tags[tag]
|
||||
list.append(card.multiverse_id)
|
||||
global unsaved_changes
|
||||
@@ -238,9 +267,7 @@ def remove_tag(tag):
|
||||
|
||||
|
||||
def add_card_to_lib(card, tag=None):
|
||||
if tag is None:
|
||||
untagged_cards[card.multiverse_id] = None
|
||||
else:
|
||||
if tag is not None:
|
||||
tag_card(card, tag)
|
||||
library[card.multiverse_id] = card
|
||||
app.push_status(card.name + " added to library")
|
||||
|
||||
Reference in New Issue
Block a user