Cleanups
This commit is contained in:
44
src/game.py
44
src/game.py
@@ -60,6 +60,10 @@ class Game(Gtk.Box):
|
|||||||
self.win = win
|
self.win = win
|
||||||
self.app = win.get_application()
|
self.app = win.get_application()
|
||||||
|
|
||||||
|
self.update_values(data)
|
||||||
|
|
||||||
|
self.win.games[self.game_id] = self
|
||||||
|
|
||||||
self.set_play_label()
|
self.set_play_label()
|
||||||
self.overlay.set_measure_overlay(self.play_revealer, True)
|
self.overlay.set_measure_overlay(self.play_revealer, True)
|
||||||
|
|
||||||
@@ -73,25 +77,12 @@ class Game(Gtk.Box):
|
|||||||
|
|
||||||
self.win.schema.connect("changed", self.schema_changed)
|
self.win.schema.connect("changed", self.schema_changed)
|
||||||
|
|
||||||
self.update_values(data)
|
|
||||||
|
|
||||||
def update(self):
|
def update(self):
|
||||||
if self.win.stack.get_visible_child() == self.win.details_view:
|
|
||||||
self.win.show_details_view(None, self.game_id)
|
|
||||||
|
|
||||||
self.win.games[self.game_id] = self
|
|
||||||
|
|
||||||
if self.get_parent():
|
if self.get_parent():
|
||||||
self.get_parent().get_parent().remove(self)
|
self.get_parent().get_parent().remove(self)
|
||||||
if self.get_parent():
|
if self.get_parent():
|
||||||
self.get_parent().set_child()
|
self.get_parent().set_child()
|
||||||
|
|
||||||
if self.game_id in self.win.game_covers:
|
|
||||||
self.win.game_covers[self.game_id].add_picture(self.cover)
|
|
||||||
else:
|
|
||||||
game_cover = GameCover({self.cover}, self.get_cover_path())
|
|
||||||
self.win.game_covers[self.game_id] = game_cover
|
|
||||||
|
|
||||||
self.menu_button.set_menu_model(
|
self.menu_button.set_menu_model(
|
||||||
self.hidden_game_options if self.hidden else self.game_options
|
self.hidden_game_options if self.hidden else self.game_options
|
||||||
)
|
)
|
||||||
@@ -103,19 +94,28 @@ class Game(Gtk.Box):
|
|||||||
"notify::visible", self.win.set_active_game, self.game_id
|
"notify::visible", self.win.set_active_game, self.game_id
|
||||||
)
|
)
|
||||||
|
|
||||||
if not self.removed or self.blacklisted:
|
if self.game_id in self.win.game_covers:
|
||||||
|
self.win.game_covers[self.game_id].add_picture(self.cover)
|
||||||
|
else:
|
||||||
|
game_cover = GameCover({self.cover}, self.get_cover_path())
|
||||||
|
self.win.game_covers[self.game_id] = game_cover
|
||||||
|
|
||||||
|
if self.win.stack.get_visible_child() == self.win.details_view:
|
||||||
|
self.win.show_details_view(None, self.game_id)
|
||||||
|
|
||||||
|
if not self.removed and not self.blacklisted:
|
||||||
if self.hidden:
|
if self.hidden:
|
||||||
self.win.hidden_library.append(self)
|
self.win.hidden_library.append(self)
|
||||||
else:
|
else:
|
||||||
self.win.library.append(self)
|
self.win.library.append(self)
|
||||||
self.get_parent().set_focusable(False)
|
self.get_parent().set_focusable(False)
|
||||||
|
|
||||||
|
self.win.set_library_child()
|
||||||
|
|
||||||
def update_values(self, data):
|
def update_values(self, data):
|
||||||
for key, value in data.items():
|
for key, value in data.items():
|
||||||
setattr(self, key, value)
|
setattr(self, key, value)
|
||||||
|
|
||||||
self.save()
|
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
self.win.games_dir.mkdir(parents=True, exist_ok=True)
|
self.win.games_dir.mkdir(parents=True, exist_ok=True)
|
||||||
|
|
||||||
@@ -140,18 +140,6 @@ class Game(Gtk.Box):
|
|||||||
|
|
||||||
self.update()
|
self.update()
|
||||||
|
|
||||||
self.win.library_bin.set_child(
|
|
||||||
self.win.scrolledwindow
|
|
||||||
if any(not game.hidden for game in self.win.games.values())
|
|
||||||
else self.win.notice_empty
|
|
||||||
)
|
|
||||||
|
|
||||||
self.win.hidden_library_bin.set_child(
|
|
||||||
self.win.hidden_scrolledwindow
|
|
||||||
if any(game.hidden for game in self.win.games.values())
|
|
||||||
else self.win.hidden_notice_empty
|
|
||||||
)
|
|
||||||
|
|
||||||
def launch(self):
|
def launch(self):
|
||||||
# Generate launch arguments, either list (no shell) or a string (for shell).
|
# Generate launch arguments, either list (no shell) or a string (for shell).
|
||||||
argv = (
|
argv = (
|
||||||
|
|||||||
@@ -340,7 +340,7 @@ class PreferencesWindow(Adw.PreferencesWindow):
|
|||||||
self.toast.dismiss()
|
self.toast.dismiss()
|
||||||
|
|
||||||
def remove_all_games(self, _widget):
|
def remove_all_games(self, _widget):
|
||||||
for game in self.win.games:
|
for game in self.win.games.values():
|
||||||
if not game.removed:
|
if not game.removed:
|
||||||
self.removed_games.add(game.game_id)
|
self.removed_games.add(game.game_id)
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@
|
|||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
import json
|
|
||||||
import os
|
import os
|
||||||
import shlex
|
import shlex
|
||||||
import time
|
import time
|
||||||
@@ -90,7 +89,7 @@ def create_details_window(win, game_id=None):
|
|||||||
apply_button = Gtk.Button.new_with_label(_("Apply"))
|
apply_button = Gtk.Button.new_with_label(_("Apply"))
|
||||||
|
|
||||||
game_cover.new_cover(win.games[game_id].get_cover_path())
|
game_cover.new_cover(win.games[game_id].get_cover_path())
|
||||||
if game_cover.get_pixbuf():
|
if game_cover.pixbuf:
|
||||||
cover_button_delete_revealer.set_reveal_child(True)
|
cover_button_delete_revealer.set_reveal_child(True)
|
||||||
else:
|
else:
|
||||||
window.set_title(_("Add New Game"))
|
window.set_title(_("Add New Game"))
|
||||||
@@ -328,7 +327,7 @@ def create_details_window(win, game_id=None):
|
|||||||
else:
|
else:
|
||||||
Game(win, values).save()
|
Game(win, values).save()
|
||||||
|
|
||||||
if not game_cover.get_pixbuf():
|
if not game_cover.pixbuf:
|
||||||
SGDBSave(win, {(game_id, values["name"])})
|
SGDBSave(win, {(game_id, values["name"])})
|
||||||
|
|
||||||
win.game_covers[game_id].pictures.remove(cover)
|
win.game_covers[game_id].pictures.remove(cover)
|
||||||
|
|||||||
@@ -23,9 +23,11 @@ import json
|
|||||||
def get_games(win):
|
def get_games(win):
|
||||||
games = {}
|
games = {}
|
||||||
|
|
||||||
|
if not win.games_dir.exists():
|
||||||
|
return games
|
||||||
|
|
||||||
for open_file in win.games_dir.iterdir():
|
for open_file in win.games_dir.iterdir():
|
||||||
if open_file.exists():
|
data = json.load(open_file.open())
|
||||||
data = json.load(open_file.open())
|
games[data["game_id"]] = data
|
||||||
games[data["game_id"]] = data
|
|
||||||
|
|
||||||
return games
|
return games
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class Importer:
|
|||||||
|
|
||||||
def save_game(self, values=None, cover_path=None):
|
def save_game(self, values=None, cover_path=None):
|
||||||
if values:
|
if values:
|
||||||
Game(self.win, values).save()
|
Game(self.win, values)
|
||||||
|
|
||||||
if cover_path:
|
if cover_path:
|
||||||
save_cover(
|
save_cover(
|
||||||
|
|||||||
@@ -111,10 +111,14 @@ class SGDBSave:
|
|||||||
_("Preferences"),
|
_("Preferences"),
|
||||||
).connect("response", self.response)
|
).connect("response", self.response)
|
||||||
|
|
||||||
if not self.importer:
|
game = self.win.games.get(result.propagate_value()[1])
|
||||||
game = self.win.games[result.propagate_value()[1]]
|
game.set_loading(-1)
|
||||||
game.set_loading(-1)
|
|
||||||
game.update()
|
if game:
|
||||||
|
if self.importer:
|
||||||
|
game.save()
|
||||||
|
else:
|
||||||
|
game.update()
|
||||||
|
|
||||||
def response(self, _widget, response):
|
def response(self, _widget, response):
|
||||||
if response == "open_preferences":
|
if response == "open_preferences":
|
||||||
|
|||||||
@@ -115,8 +115,8 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
self.details_view.set_measure_overlay(self.details_view_box, True)
|
self.details_view.set_measure_overlay(self.details_view_box, True)
|
||||||
self.details_view.set_clip_overlay(self.details_view_box, False)
|
self.details_view.set_clip_overlay(self.details_view_box, False)
|
||||||
|
|
||||||
self.library.set_filter_func(self.search_filter)
|
self.library.set_filter_func(self.filter_func)
|
||||||
self.hidden_library.set_filter_func(self.search_filter)
|
self.hidden_library.set_filter_func(self.filter_func)
|
||||||
|
|
||||||
self.library.set_sort_func(self.sort_func)
|
self.library.set_sort_func(self.sort_func)
|
||||||
self.hidden_library.set_sort_func(self.sort_func)
|
self.hidden_library.set_sort_func(self.sort_func)
|
||||||
@@ -124,6 +124,8 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
for game in get_games(self).values():
|
for game in get_games(self).values():
|
||||||
Game(self, game).update()
|
Game(self, game).update()
|
||||||
|
|
||||||
|
self.set_library_child()
|
||||||
|
|
||||||
# Connect signals
|
# Connect signals
|
||||||
self.search_entry.connect("search-changed", self.search_changed, False)
|
self.search_entry.connect("search-changed", self.search_changed, False)
|
||||||
self.hidden_search_entry.connect("search-changed", self.search_changed, True)
|
self.hidden_search_entry.connect("search-changed", self.search_changed, True)
|
||||||
@@ -146,7 +148,27 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
else:
|
else:
|
||||||
self.library.invalidate_filter()
|
self.library.invalidate_filter()
|
||||||
|
|
||||||
def search_filter(self, child):
|
def set_library_child(self):
|
||||||
|
child, hidden_child = self.notice_empty, self.hidden_notice_empty
|
||||||
|
|
||||||
|
for game in self.games.values():
|
||||||
|
if game.removed or game.blacklisted:
|
||||||
|
continue
|
||||||
|
if game.hidden:
|
||||||
|
if game.filtered and hidden_child != self.hidden_scrolledwindow:
|
||||||
|
hidden_child = self.notice_no_results
|
||||||
|
continue
|
||||||
|
hidden_child = self.hidden_scrolledwindow
|
||||||
|
else:
|
||||||
|
if game.filtered and child != self.scrolledwindow:
|
||||||
|
child = self.notice_no_results
|
||||||
|
continue
|
||||||
|
child = self.scrolledwindow
|
||||||
|
|
||||||
|
self.library_bin.set_child(child)
|
||||||
|
self.hidden_library_bin.set_child(hidden_child)
|
||||||
|
|
||||||
|
def filter_func(self, child):
|
||||||
hidden = self.stack.get_visible_child() == self.hidden_library_view
|
hidden = self.stack.get_visible_child() == self.hidden_library_view
|
||||||
text = (
|
text = (
|
||||||
(self.hidden_search_entry if hidden else self.search_entry)
|
(self.hidden_search_entry if hidden else self.search_entry)
|
||||||
@@ -164,19 +186,7 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
|
|
||||||
game.filtered = filtered
|
game.filtered = filtered
|
||||||
|
|
||||||
(self.hidden_library_bin if hidden else self.library_bin).set_child(
|
self.set_library_child()
|
||||||
(self.hidden_scrolledwindow if hidden else self.scrolledwindow)
|
|
||||||
if any(
|
|
||||||
not game.filtered
|
|
||||||
for game in self.games.values()
|
|
||||||
if not (
|
|
||||||
game.removed
|
|
||||||
or game.blacklisted
|
|
||||||
or (not game.hidden if hidden else game.hidden)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
else self.notice_no_results
|
|
||||||
)
|
|
||||||
|
|
||||||
return not filtered
|
return not filtered
|
||||||
|
|
||||||
@@ -223,7 +233,7 @@ class CartridgesWindow(Adw.ApplicationWindow):
|
|||||||
self.details_view_game_cover.add_picture(self.details_view_cover)
|
self.details_view_game_cover.add_picture(self.details_view_cover)
|
||||||
|
|
||||||
self.scaled_pixbuf = (
|
self.scaled_pixbuf = (
|
||||||
self.details_view_game_cover.get_pixbuf()
|
self.details_view_game_cover.pixbuf
|
||||||
or self.details_view_game_cover.placeholder_pixbuf
|
or self.details_view_game_cover.placeholder_pixbuf
|
||||||
).scale_simple(2, 3, GdkPixbuf.InterpType.BILINEAR)
|
).scale_simple(2, 3, GdkPixbuf.InterpType.BILINEAR)
|
||||||
self.details_view_blurred_cover.set_pixbuf(self.scaled_pixbuf)
|
self.details_view_blurred_cover.set_pixbuf(self.scaled_pixbuf)
|
||||||
|
|||||||
Reference in New Issue
Block a user