From 7b4513913e0930e29495f033564121f4179f49d3 Mon Sep 17 00:00:00 2001 From: kramo <93832451+kra-mo@users.noreply.github.com> Date: Mon, 10 Apr 2023 18:56:49 +0200 Subject: [PATCH] Add ability to search for games --- data/gtk/window.blp | 44 +++++++++++++++++++++++++++++++++++++++++--- src/main.py | 25 +++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/data/gtk/window.blp b/data/gtk/window.blp index b9df1aa..f937bee 100644 --- a/data/gtk/window.blp +++ b/data/gtk/window.blp @@ -159,9 +159,7 @@ template CartridgesWindow : Adw.ApplicationWindow { } Box { - hexpand: true; halign: start; - vexpand: true; valign: center; margin-top: 24; margin-start: 12; @@ -191,11 +189,25 @@ template CartridgesWindow : Adw.ApplicationWindow { "circular", ] } - + styles [ "linked", ] } + + MenuButton { + halign: start; + valign: center; + margin-top: 24; + margin-start: 12; + icon-name: "system-search-symbolic"; + menu-model: search; + tooltip-text: _("Search"); + + styles [ + "circular", + ] + } } } } @@ -417,3 +429,29 @@ menu add_games { } } } + +menu search { + section { + label: "Search on…"; + item { + label: "IGDB"; + action: "app.igdb_search"; + } + item { + label: "SteamGridDB"; + action: "app.sgdb_search"; + } + item { + label: "ProtonDB"; + action: "app.protondb_search"; + } + item { + label: "Lutris"; + action: "app.lutris_search"; + } + item { + label: "HowLongToBeat"; + action: "app.hltb_search"; + } + } +} \ No newline at end of file diff --git a/src/main.py b/src/main.py index 85903d3..ef37448 100644 --- a/src/main.py +++ b/src/main.py @@ -60,6 +60,11 @@ class CartridgesApplication(Adw.Application): "remove_game_overview", self.on_remove_game_overview_action, ["Delete"] ) self.create_action("remove_game", self.on_remove_game_action) + self.create_action("igdb_search", self.on_igdb_search_action) + self.create_action("sgdb_search", self.on_sgdb_search_action) + self.create_action("protondb_search", self.on_protondb_search_action) + self.create_action("lutris_search", self.on_lutris_search_action) + self.create_action("hltb_search", self.on_hltb_search_action) self.win = None @@ -243,6 +248,26 @@ class CartridgesApplication(Adw.Application): def on_quit_action(self, _widget, _callback=None): self.quit() + def search(self, uri): + Gio.AppInfo.launch_default_for_uri( + f"{uri}{self.win.games[self.win.active_game_id].name}" + ) + + def on_igdb_search_action(self, _widget, _callback=None): + self.search("https://www.igdb.com/search?type=1&q=") + + def on_sgdb_search_action(self, _widget, _callback=None): + self.search("https://www.steamgriddb.com/search/grids?term=") + + def on_protondb_search_action(self, _widget, _callback=None): + self.search("https://www.protondb.com/search?q=") + + def on_lutris_search_action(self, _widget, _callback=None): + self.search("https://lutris.net/games?q=") + + def on_hltb_search_action(self, _widget, _callback=None): + self.search("https://howlongtobeat.com/?q=") + def create_action(self, name, callback, shortcuts=None, win=None): action = Gio.SimpleAction.new(name, None) action.connect("activate", callback)