This commit is contained in:
kramo
2023-03-14 21:20:59 +01:00
parent 434b7a11f1
commit 32d9f9a880
16 changed files with 99 additions and 63 deletions

1
.gitignore vendored
View File

@@ -1,2 +1 @@
/subprojects/blueprint-compiler /subprojects/blueprint-compiler
/src/__pycache__

View File

@@ -21,6 +21,7 @@ from gi.repository import Gtk
from .get_cover import get_cover from .get_cover import get_cover
@Gtk.Template(resource_path='/hu/kramo/Cartridges/gtk/game.ui') @Gtk.Template(resource_path='/hu/kramo/Cartridges/gtk/game.ui')
class game(Gtk.Box): class game(Gtk.Box):
__gtype_name__ = 'game' __gtype_name__ = 'game'

View File

@@ -17,23 +17,27 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import gi, sys, os, time, json import sys
import time
import gi
gi.require_version("Gtk", "4.0") gi.require_version("Gtk", "4.0")
gi.require_version("Adw", "1") gi.require_version("Adw", "1")
from gi.repository import Gtk, Gio, GLib, Adw from gi.repository import Adw, Gio, GLib, Gtk
from .window import CartridgesWindow
from .preferences import PreferencesWindow
from .toggle_hidden import toggle_hidden
from .save_games import save_games
from .get_games import get_games
from .run_command import run_command
from .steam_parser import steam_parser
from .heroic_parser import heroic_parser
from .bottles_parser import bottles_parser from .bottles_parser import bottles_parser
from .create_details_window import create_details_window from .create_details_window import create_details_window
from .get_games import get_games
from .heroic_parser import heroic_parser
from .preferences import PreferencesWindow
from .run_command import run_command
from .save_games import save_games
from .steam_parser import steam_parser
from .toggle_hidden import toggle_hidden
from .window import CartridgesWindow
class CartridgesApplication(Adw.Application): class CartridgesApplication(Adw.Application):
def __init__(self): def __init__(self):

View File

@@ -17,7 +17,8 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
from gi.repository import Adw, Gtk, Gio, GLib from gi.repository import Adw, Gio, GLib, Gtk
@Gtk.Template(resource_path='/hu/kramo/Cartridges/gtk/preferences.ui') @Gtk.Template(resource_path='/hu/kramo/Cartridges/gtk/preferences.ui')
class PreferencesWindow(Adw.PreferencesWindow): class PreferencesWindow(Adw.PreferencesWindow):

View File

@@ -17,14 +17,17 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def bottles_parser(parent_widget, action): import os
import os, yaml, time import time
from gi.repository import Gtk, GLib import yaml
from gi.repository import GLib, Gtk
from .create_dialog import create_dialog from .create_dialog import create_dialog
from .save_cover import save_cover from .save_cover import save_cover
def bottles_parser(parent_widget, action):
schema = parent_widget.schema schema = parent_widget.schema
bottles_dir = os.path.expanduser(schema.get_string("bottles-location")) bottles_dir = os.path.expanduser(schema.get_string("bottles-location"))
@@ -62,7 +65,6 @@ def bottles_parser(parent_widget, action):
bottles_dir = os.path.expanduser(schema.get_string("bottles-location")) bottles_dir = os.path.expanduser(schema.get_string("bottles-location"))
datatypes = ["path", "id", "name", "thumbnail"]
bottles_games = {} bottles_games = {}
current_time = int(time.time()) current_time = int(time.time())

View File

@@ -17,14 +17,19 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def create_details_window(parent_widget, game_id = None): import json
import time, os, json import os
from gi.repository import Adw, Gtk, Gio, GLib, GdkPixbuf import time
from .create_dialog import create_dialog
from .save_games import save_games
from .save_cover import save_cover
from .get_cover import get_cover
from gi.repository import Adw, GdkPixbuf, Gio, GLib, Gtk
from .create_dialog import create_dialog
from .get_cover import get_cover
from .save_cover import save_cover
from .save_games import save_games
def create_details_window(parent_widget, game_id = None):
window = Adw.Window( window = Adw.Window(
modal = True, modal = True,
default_width = 450, default_width = 450,
@@ -150,6 +155,8 @@ def create_details_window(parent_widget, game_id = None):
create_dialog(window, _("Couldn't Add Game"), _("Executable cannot be empty.")) create_dialog(window, _("Couldn't Add Game"), _("Executable cannot be empty."))
return return
# Increment the number after the game id (eg. imported_1, imported_2)
numbers = [0] numbers = [0]
for game in games: for game in games:

View File

@@ -17,9 +17,10 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def create_dialog(parent_widget, heading, body, extra_option=None, extra_label=None):
from gi.repository import Adw, Gtk from gi.repository import Adw, Gtk
def create_dialog(parent_widget, heading, body, extra_option=None, extra_label=None):
dialog = Adw.MessageDialog.new(parent_widget, _(heading), body) dialog = Adw.MessageDialog.new(parent_widget, _(heading), body)
dialog.add_response("dismiss", _("Dismiss")) dialog.add_response("dismiss", _("Dismiss"))

View File

@@ -17,15 +17,17 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def get_cover(game_id, parent_widget):
from gi.repository import GdkPixbuf
import os import os
from gi.repository import GdkPixbuf
def get_cover(game_id, parent_widget):
if game_id in parent_widget.pixbufs.keys(): if game_id in parent_widget.pixbufs.keys():
return parent_widget.pixbufs[game_id] return parent_widget.pixbufs[game_id]
cover_path = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "covers", game_id + ".png") cover_path = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "covers", game_id + ".png")
if os.path.isfile(cover_path) == False: if not os.path.isfile(cover_path):
return parent_widget.placeholder_pixbuf return parent_widget.placeholder_pixbuf
return GdkPixbuf.Pixbuf.new_from_file(cover_path) return GdkPixbuf.Pixbuf.new_from_file(cover_path)

View File

@@ -17,9 +17,11 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def get_games(game_ids=None): import json
import os, json import os
def get_games(game_ids=None):
games_dir = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "games") games_dir = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "games")
games = {} games = {}

View File

@@ -17,14 +17,18 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def heroic_parser(parent_widget, action): import hashlib
import os, json, time, hashlib import json
import os
import time
from gi.repository import Gtk, GLib from gi.repository import GLib, Gtk
from .create_dialog import create_dialog from .create_dialog import create_dialog
from .save_cover import save_cover from .save_cover import save_cover
def heroic_parser(parent_widget, action):
schema = parent_widget.schema schema = parent_widget.schema
heroic_dir = os.path.expanduser(schema.get_string("heroic-location")) heroic_dir = os.path.expanduser(schema.get_string("heroic-location"))

View File

@@ -17,11 +17,13 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def run_command(parent_widget, executable): import subprocess
import subprocess, sys import sys
from gi.repository import Gio from gi.repository import Gio
def run_command(parent_widget, executable):
subprocess.Popen(["flatpak-spawn --host " + executable], shell=True, start_new_session=True) subprocess.Popen(["flatpak-spawn --host " + executable], shell=True, start_new_session=True)
if Gio.Settings.new("hu.kramo.Cartridges").get_boolean("exit-after-launch"): if Gio.Settings.new("hu.kramo.Cartridges").get_boolean("exit-after-launch"):

View File

@@ -17,10 +17,12 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def save_cover(game, parent_widget, file_path, pixbuf = None, game_id = None):
from gi.repository import Gio, GdkPixbuf
import os import os
from gi.repository import GdkPixbuf, Gio
def save_cover(game, parent_widget, file_path, pixbuf = None, game_id = None):
covers_dir = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "covers") covers_dir = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "covers")
if os.path.exists(covers_dir) == False: if os.path.exists(covers_dir) == False:
os.makedirs(covers_dir) os.makedirs(covers_dir)

View File

@@ -17,11 +17,12 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def save_games(games): import json
import os, json import os
def save_games(games):
games_dir = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "games") games_dir = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "games")
existing = []
if os.path.exists(games_dir) == False: if os.path.exists(games_dir) == False:
os.makedirs(games_dir) os.makedirs(games_dir)

View File

@@ -17,14 +17,17 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
def steam_parser(parent_widget, action): import os
import os, re, time import re
import time
from gi.repository import Gtk, GLib from gi.repository import GLib, Gtk
from .create_dialog import create_dialog from .create_dialog import create_dialog
from .save_cover import save_cover from .save_cover import save_cover
def steam_parser(parent_widget, action):
schema = parent_widget.schema schema = parent_widget.schema
steam_dir = os.path.expanduser(schema.get_string("steam-location")) steam_dir = os.path.expanduser(schema.get_string("steam-location"))

View File

@@ -17,8 +17,11 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
import json
import os
def toggle_hidden(game): def toggle_hidden(game):
import os, json
games_dir = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "games") games_dir = os.path.join(os.environ.get("XDG_DATA_HOME"), "cartridges", "games")
if not os.path.exists(games_dir): if not os.path.exists(games_dir):

View File

@@ -17,15 +17,17 @@
# #
# SPDX-License-Identifier: GPL-3.0-or-later # SPDX-License-Identifier: GPL-3.0-or-later
from gi.repository import Gio, GLib, Adw, GdkPixbuf, Gtk import datetime
import os
import os, json, time, datetime from gi.repository import Adw, GdkPixbuf, Gio, GLib, Gtk
from .game import game from .game import game
from .get_cover import get_cover from .get_cover import get_cover
from .get_games import get_games from .get_games import get_games
from .save_games import save_games from .save_games import save_games
@Gtk.Template(resource_path="/hu/kramo/Cartridges/gtk/window.ui") @Gtk.Template(resource_path="/hu/kramo/Cartridges/gtk/window.ui")
class CartridgesWindow(Adw.ApplicationWindow): class CartridgesWindow(Adw.ApplicationWindow):
__gtype_name__ = "CartridgesWindow" __gtype_name__ = "CartridgesWindow"