From 41d8c8f2d6bbc04731ee627ad418016b9a814fd4 Mon Sep 17 00:00:00 2001 From: tkashkin Date: Fri, 22 Mar 2019 23:25:20 +0300 Subject: [PATCH] Add option to run games with double click (#213) --- data/com.github.tkashkin.gamehub.gschema.xml | 3 + po/com.github.tkashkin.gamehub.pot | 56 ++++++++++--------- po/de.po | 56 ++++++++++--------- po/fr.po | 56 ++++++++++--------- po/id.po | 56 ++++++++++--------- po/nb_NO.po | 58 +++++++++++--------- po/nl.po | 56 ++++++++++--------- po/pl.po | 56 ++++++++++--------- po/pt_BR.po | 56 ++++++++++--------- po/ru.po | 56 ++++++++++--------- po/tr.po | 56 ++++++++++--------- src/ui/dialogs/SettingsDialog/tabs/UI.vala | 3 + src/ui/views/GamesView/GameCard.vala | 9 ++- src/ui/views/GamesView/GameListRow.vala | 25 ++++++++- src/utils/Settings.vala | 1 + 15 files changed, 339 insertions(+), 264 deletions(-) diff --git a/data/com.github.tkashkin.gamehub.gschema.xml b/data/com.github.tkashkin.gamehub.gschema.xml index e0fde248..e95d88ef 100644 --- a/data/com.github.tkashkin.gamehub.gschema.xml +++ b/data/com.github.tkashkin.gamehub.gschema.xml @@ -55,6 +55,9 @@ true + + false + true diff --git a/po/com.github.tkashkin.gamehub.pot b/po/com.github.tkashkin.gamehub.pot index 773ce5a8..2186b7fb 100644 --- a/po/com.github.tkashkin.gamehub.pot +++ b/po/com.github.tkashkin.gamehub.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: com.github.tkashkin.gamehub\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-05 06:33+0300\n" +"POT-Creation-Date: 2019-03-22 23:20+0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -163,52 +163,52 @@ msgid "" "Please set main executable in game's properties." msgstr "" -#: src/data/Game.vala:456 +#: src/data/Game.vala:459 msgctxt "status" msgid "Running" msgstr "" -#: src/data/Game.vala:459 +#: src/data/Game.vala:462 msgctxt "status" msgid "Installed" msgstr "" -#: src/data/Game.vala:460 +#: src/data/Game.vala:463 msgctxt "status" msgid "Installing" msgstr "" -#: src/data/Game.vala:461 +#: src/data/Game.vala:464 msgctxt "status" msgid "Verifying installer integrity" msgstr "" -#: src/data/Game.vala:462 +#: src/data/Game.vala:465 msgctxt "status" msgid "Download started" msgstr "" -#: src/data/Game.vala:464 +#: src/data/Game.vala:467 msgctxt "status" msgid "Not installed" msgstr "" -#: src/data/Game.vala:474 +#: src/data/Game.vala:477 msgctxt "status_header" msgid "Installed" msgstr "" -#: src/data/Game.vala:475 +#: src/data/Game.vala:478 msgctxt "status_header" msgid "Installing" msgstr "" -#: src/data/Game.vala:477 +#: src/data/Game.vala:480 msgctxt "status_header" msgid "Downloading" msgstr "" -#: src/data/Game.vala:479 +#: src/data/Game.vala:482 msgctxt "status_header" msgid "Not installed" msgstr "" @@ -388,19 +388,19 @@ msgstr "" msgid "Some settings will be applied after application restart" msgstr "" -#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:61 +#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:62 msgid "Games directory contains space. It may cause problems for some games" msgstr "" -#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:76 +#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:78 msgid "Interface" msgstr "" -#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:77 +#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:79 msgid "Collection" msgstr "" -#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:82 +#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:84 msgid "Emulators" msgstr "" @@ -420,19 +420,23 @@ msgstr "" msgid "Show platform icons in grid view" msgstr "" -#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:44 +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:43 +msgid "Run games with double click" +msgstr "" + +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:47 msgid "Merge games from different sources" msgstr "" -#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:48 +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:51 msgid "Show non-native games" msgstr "" -#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:49 +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:52 msgid "Use compatibility layers and consider Windows games compatible" msgstr "" -#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:53 +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:56 msgid "Use imported tags" msgstr "" @@ -552,7 +556,7 @@ msgid "Name" msgstr "" #: src/ui/dialogs/SettingsDialog/tabs/Emulators.vala:228 -#: src/ui/dialogs/GamePropertiesDialog.vala:238 +#: src/ui/dialogs/GamePropertiesDialog.vala:239 #: src/ui/views/GamesView/AddGamePopover.vala:77 msgid "Arguments" msgstr "" @@ -567,7 +571,7 @@ msgid "Select emulator directory" msgstr "" #: src/ui/dialogs/SettingsDialog/tabs/Emulators.vala:277 -#: src/ui/dialogs/GamePropertiesDialog.vala:256 +#: src/ui/dialogs/GamePropertiesDialog.vala:257 msgid "Force compatibility mode" msgstr "" @@ -628,23 +632,23 @@ msgstr "" msgid "Search images:" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:251 +#: src/ui/dialogs/GamePropertiesDialog.vala:252 msgid "Compatibility" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:273 +#: src/ui/dialogs/GamePropertiesDialog.vala:274 msgid "Launch from terminal" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:289 +#: src/ui/dialogs/GamePropertiesDialog.vala:290 msgid "Copy to clipboard" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:291 +#: src/ui/dialogs/GamePropertiesDialog.vala:292 msgid "Add to Steam" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:292 +#: src/ui/dialogs/GamePropertiesDialog.vala:293 msgid "Add to the Steam library" msgstr "" diff --git a/po/de.po b/po/de.po index 8ee96993..ecb426f3 100644 --- a/po/de.po +++ b/po/de.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: com.github.tkashkin.gamehub\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-02-05 06:33+0300\n" +"POT-Creation-Date: 2019-03-22 23:20+0300\n" "PO-Revision-Date: 2019-02-09 14:09+0000\n" "Last-Translator: ssantos \n" "Language-Team: German \n" "Language-Team: French \n" "Language-Team: Indonesian \n" "Language-Team: Norwegian Bokmål \n" "Language-Team: Dutch \n" "Language-Team: Polish \n" "Language-Team: Portuguese (Brazil) \n" "Language-Team: Russian \n" "Language-Team: LANGUAGE \n" @@ -161,52 +161,52 @@ msgid "" "Please set main executable in game's properties." msgstr "" -#: src/data/Game.vala:456 +#: src/data/Game.vala:459 msgctxt "status" msgid "Running" msgstr "" -#: src/data/Game.vala:459 +#: src/data/Game.vala:462 msgctxt "status" msgid "Installed" msgstr "" -#: src/data/Game.vala:460 +#: src/data/Game.vala:463 msgctxt "status" msgid "Installing" msgstr "" -#: src/data/Game.vala:461 +#: src/data/Game.vala:464 msgctxt "status" msgid "Verifying installer integrity" msgstr "" -#: src/data/Game.vala:462 +#: src/data/Game.vala:465 msgctxt "status" msgid "Download started" msgstr "" -#: src/data/Game.vala:464 +#: src/data/Game.vala:467 msgctxt "status" msgid "Not installed" msgstr "" -#: src/data/Game.vala:474 +#: src/data/Game.vala:477 msgctxt "status_header" msgid "Installed" msgstr "" -#: src/data/Game.vala:475 +#: src/data/Game.vala:478 msgctxt "status_header" msgid "Installing" msgstr "" -#: src/data/Game.vala:477 +#: src/data/Game.vala:480 msgctxt "status_header" msgid "Downloading" msgstr "" -#: src/data/Game.vala:479 +#: src/data/Game.vala:482 msgctxt "status_header" msgid "Not installed" msgstr "" @@ -386,19 +386,19 @@ msgstr "" msgid "Some settings will be applied after application restart" msgstr "" -#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:61 +#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:62 msgid "Games directory contains space. It may cause problems for some games" msgstr "" -#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:76 +#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:78 msgid "Interface" msgstr "" -#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:77 +#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:79 msgid "Collection" msgstr "" -#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:82 +#: src/ui/dialogs/SettingsDialog/SettingsDialog.vala:84 msgid "Emulators" msgstr "" @@ -418,19 +418,23 @@ msgstr "" msgid "Show platform icons in grid view" msgstr "" -#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:44 +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:43 +msgid "Run games with double click" +msgstr "" + +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:47 msgid "Merge games from different sources" msgstr "" -#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:48 +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:51 msgid "Show non-native games" msgstr "" -#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:49 +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:52 msgid "Use compatibility layers and consider Windows games compatible" msgstr "" -#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:53 +#: src/ui/dialogs/SettingsDialog/tabs/UI.vala:56 msgid "Use imported tags" msgstr "" @@ -550,7 +554,7 @@ msgid "Name" msgstr "" #: src/ui/dialogs/SettingsDialog/tabs/Emulators.vala:228 -#: src/ui/dialogs/GamePropertiesDialog.vala:238 +#: src/ui/dialogs/GamePropertiesDialog.vala:239 #: src/ui/views/GamesView/AddGamePopover.vala:77 msgid "Arguments" msgstr "" @@ -565,7 +569,7 @@ msgid "Select emulator directory" msgstr "" #: src/ui/dialogs/SettingsDialog/tabs/Emulators.vala:277 -#: src/ui/dialogs/GamePropertiesDialog.vala:256 +#: src/ui/dialogs/GamePropertiesDialog.vala:257 msgid "Force compatibility mode" msgstr "" @@ -626,23 +630,23 @@ msgstr "" msgid "Search images:" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:251 +#: src/ui/dialogs/GamePropertiesDialog.vala:252 msgid "Compatibility" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:273 +#: src/ui/dialogs/GamePropertiesDialog.vala:274 msgid "Launch from terminal" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:289 +#: src/ui/dialogs/GamePropertiesDialog.vala:290 msgid "Copy to clipboard" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:291 +#: src/ui/dialogs/GamePropertiesDialog.vala:292 msgid "Add to Steam" msgstr "" -#: src/ui/dialogs/GamePropertiesDialog.vala:292 +#: src/ui/dialogs/GamePropertiesDialog.vala:293 msgid "Add to the Steam library" msgstr "" diff --git a/src/ui/dialogs/SettingsDialog/tabs/UI.vala b/src/ui/dialogs/SettingsDialog/tabs/UI.vala index ac0abe5a..93c23027 100644 --- a/src/ui/dialogs/SettingsDialog/tabs/UI.vala +++ b/src/ui/dialogs/SettingsDialog/tabs/UI.vala @@ -40,6 +40,9 @@ namespace GameHub.UI.Dialogs.SettingsDialog.Tabs add_switch(_("Compact list"), ui.compact_list, v => { ui.compact_list = v; }); add_switch(_("Show platform icons in grid view"), ui.show_grid_icons, v => { ui.show_grid_icons = v; }); + add_switch(_("Run games with double click"), ui.grid_doubleclick, v => { ui.grid_doubleclick = v; }); + + add_separator(); add_switch(_("Merge games from different sources"), ui.merge_games, v => { ui.merge_games = v; dialog.show_restart_message(); }); diff --git a/src/ui/views/GamesView/GameCard.vala b/src/ui/views/GamesView/GameCard.vala index 0ccb4d6e..b5b40f99 100644 --- a/src/ui/views/GamesView/GameCard.vala +++ b/src/ui/views/GamesView/GameCard.vala @@ -154,17 +154,22 @@ namespace GameHub.UI.Views.GamesView content.add_events(EventMask.ALL_EVENTS_MASK); content.enter_notify_event.connect(e => { card.get_style_context().add_class("hover"); }); content.leave_notify_event.connect(e => { card.get_style_context().remove_class("hover"); }); - content.button_release_event.connect(e => { + content.button_press_event.connect(e => { switch(e.button) { case 1: - run_game(); + if(!Settings.UI.get_instance().grid_doubleclick || (Settings.UI.get_instance().grid_doubleclick && e.type == EventType.2BUTTON_PRESS)) + { + run_game(); + } break; case 3: open_context_menu(e, true); break; } + ((FlowBox) parent).select_child(this); + grab_focus(); return true; }); key_release_event.connect(e => { diff --git a/src/ui/views/GamesView/GameListRow.vala b/src/ui/views/GamesView/GameListRow.vala index 449449ef..a830850c 100644 --- a/src/ui/views/GamesView/GameListRow.vala +++ b/src/ui/views/GamesView/GameListRow.vala @@ -99,11 +99,15 @@ namespace GameHub.UI.Views.GamesView child = ebox; ebox.add_events(EventMask.ALL_EVENTS_MASK); - ebox.button_release_event.connect(e => { + ebox.button_press_event.connect(e => { switch(e.button) { case 1: activate(); + if(e.type == EventType.2BUTTON_PRESS) + { + run_game(); + } break; case 3: @@ -151,5 +155,24 @@ namespace GameHub.UI.Views.GamesView old_icon = game.icon; Utils.load_image.begin(image, game.icon, "icon"); } + + private void run_game() + { + if(game.status.state == Game.State.INSTALLED) + { + if(game.use_compat) + { + game.run_with_compat.begin(false); + } + else + { + game.run.begin(); + } + } + else if(game.status.state == Game.State.UNINSTALLED) + { + game.install.begin(); + } + } } } diff --git a/src/utils/Settings.vala b/src/utils/Settings.vala index 0e256646..5deb0c3f 100644 --- a/src/utils/Settings.vala +++ b/src/utils/Settings.vala @@ -94,6 +94,7 @@ namespace GameHub.Settings public bool compact_list { get; set; } public bool show_grid_icons { get; set; } + public bool grid_doubleclick { get; set; } public bool merge_games { get; set; }