Add ability to search for games

This commit is contained in:
kramo
2023-04-10 18:56:49 +02:00
parent 0fb7c859d2
commit 7b4513913e
2 changed files with 66 additions and 3 deletions

View File

@@ -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";
}
}
}

View File

@@ -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)