From 018b3c3d775e7e832be8b84f77b15421ad7a0704 Mon Sep 17 00:00:00 2001 From: Observer KRypt0n_ Date: Thu, 17 Aug 2023 16:02:29 +0200 Subject: [PATCH] feat: added feature to map wine drives --- CHANGELOG.md | 4 ++ Cargo.lock | 4 +- Cargo.toml | 2 +- assets/locales/de/enhancements.ftl | 6 ++ assets/locales/en/enhancements.ftl | 6 ++ assets/locales/es/enhancements.ftl | 6 ++ assets/locales/fr/enhancements.ftl | 6 ++ assets/locales/hu/enhancements.ftl | 6 ++ assets/locales/id/enhancements.ftl | 6 ++ assets/locales/it/enhancements.ftl | 6 ++ assets/locales/ja/enhancements.ftl | 6 ++ assets/locales/ru/enhancements.ftl | 6 ++ assets/locales/sv/enhancements.ftl | 6 ++ assets/locales/tr/enhancements.ftl | 6 ++ assets/locales/zh-cn/enhancements.ftl | 6 ++ src/ui/preferences/enhancements/mod.rs | 77 +++++++++++++++++++++++++- 16 files changed, 155 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29d7351..98e82ed 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- Added feature to map wine drives + ### Changed - Updated Turkish diff --git a/Cargo.lock b/Cargo.lock index b7cf259..cc7d851 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -88,8 +88,8 @@ dependencies = [ [[package]] name = "anime-launcher-sdk" -version = "1.10.0" -source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.10.0#916d4b56e0de0b3ed7720603da2090cbd9a11210" +version = "1.11.0" +source = "git+https://github.com/an-anime-team/anime-launcher-sdk?tag=1.11.0#b858205ca74d3ce930d0d6cd36eb0b9dc749a7a7" dependencies = [ "anime-game-core", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 86ad659..bfcd898 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ glib-build-tools = "0.18" [dependencies.anime-launcher-sdk] git = "https://github.com/an-anime-team/anime-launcher-sdk" -tag = "1.10.0" +tag = "1.11.0" features = ["all", "genshin"] # path = "../anime-launcher-sdk" # ! for dev purposes only diff --git a/assets/locales/de/enhancements.ftl b/assets/locales/de/enhancements.ftl index d299c42..ebbd43f 100644 --- a/assets/locales/de/enhancements.ftl +++ b/assets/locales/de/enhancements.ftl @@ -14,6 +14,12 @@ system = System borderless-window = Randloses Fenster virtual-desktop = Virtueller Desktop +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Spiel hud = HUD diff --git a/assets/locales/en/enhancements.ftl b/assets/locales/en/enhancements.ftl index fff531c..e489fbc 100644 --- a/assets/locales/en/enhancements.ftl +++ b/assets/locales/en/enhancements.ftl @@ -14,6 +14,12 @@ system = System borderless-window = Borderless window virtual-desktop = Virtual desktop +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Game hud = HUD diff --git a/assets/locales/es/enhancements.ftl b/assets/locales/es/enhancements.ftl index 8652d57..fecf578 100644 --- a/assets/locales/es/enhancements.ftl +++ b/assets/locales/es/enhancements.ftl @@ -14,6 +14,12 @@ system = Sistema borderless-window = Ventana sin bordes virtual-desktop = Escritorio virtual +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Juego hud = HUD diff --git a/assets/locales/fr/enhancements.ftl b/assets/locales/fr/enhancements.ftl index 3754582..ff0f7c5 100644 --- a/assets/locales/fr/enhancements.ftl +++ b/assets/locales/fr/enhancements.ftl @@ -14,6 +14,12 @@ system = Système borderless-window = Utiliser une fenêtre sans bordure virtual-desktop = Bureau virtuel +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Jeu hud = HUD diff --git a/assets/locales/hu/enhancements.ftl b/assets/locales/hu/enhancements.ftl index 60484a6..cbf98c2 100644 --- a/assets/locales/hu/enhancements.ftl +++ b/assets/locales/hu/enhancements.ftl @@ -14,6 +14,12 @@ system = Rendszer borderless-window = Kerettelen ablak(borderless) virtual-desktop = Virtuális asztal +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Játék hud = HUD diff --git a/assets/locales/id/enhancements.ftl b/assets/locales/id/enhancements.ftl index 4165c0b..7ee7563 100644 --- a/assets/locales/id/enhancements.ftl +++ b/assets/locales/id/enhancements.ftl @@ -14,6 +14,12 @@ system = Sistem borderless-window = window tanpa border virtual-desktop = Desktop virtual +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Game hud = HUD diff --git a/assets/locales/it/enhancements.ftl b/assets/locales/it/enhancements.ftl index 6fb8dc6..073a011 100644 --- a/assets/locales/it/enhancements.ftl +++ b/assets/locales/it/enhancements.ftl @@ -14,6 +14,12 @@ system = Sistema borderless-window = Finestra senza bordi virtual-desktop = Desktop virtuale +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Gioco hud = HUD diff --git a/assets/locales/ja/enhancements.ftl b/assets/locales/ja/enhancements.ftl index d09bc4f..0d38a65 100644 --- a/assets/locales/ja/enhancements.ftl +++ b/assets/locales/ja/enhancements.ftl @@ -14,6 +14,12 @@ system = システム borderless-window = ボーダーレスウィンドウ virtual-desktop = 仮想デスクトップ +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = ゲーム hud = HUD diff --git a/assets/locales/ru/enhancements.ftl b/assets/locales/ru/enhancements.ftl index ade18e2..511b9b4 100644 --- a/assets/locales/ru/enhancements.ftl +++ b/assets/locales/ru/enhancements.ftl @@ -14,6 +14,12 @@ system = Системный borderless-window = Окно без рамок virtual-desktop = Виртуальный рабочий стол +map-drive-c = Создавать диск C: +map-drive-c-description = Автоматически создавать ссылку на папку drive_c из префикса Wine в dosdevices + +map-game-folder = Создавать диск с папкой игры +map-game-folder-description = Автоматически создавать ссылку на папку с игрой в dosdevices + game = Игра hud = HUD diff --git a/assets/locales/sv/enhancements.ftl b/assets/locales/sv/enhancements.ftl index 55a6489..3b374a7 100644 --- a/assets/locales/sv/enhancements.ftl +++ b/assets/locales/sv/enhancements.ftl @@ -14,6 +14,12 @@ system = System borderless-window = Kantlöst fönster virtual-desktop = Virtuellt skrivbord +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Spel hud = HUD diff --git a/assets/locales/tr/enhancements.ftl b/assets/locales/tr/enhancements.ftl index 2b7604a..9e15366 100644 --- a/assets/locales/tr/enhancements.ftl +++ b/assets/locales/tr/enhancements.ftl @@ -14,6 +14,12 @@ system = Sistem borderless-window = Köşesiz Pencere virtual-desktop = Sanal Masaüstü +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = Oyun hud = HUD diff --git a/assets/locales/zh-cn/enhancements.ftl b/assets/locales/zh-cn/enhancements.ftl index 7a97ac8..23952ec 100644 --- a/assets/locales/zh-cn/enhancements.ftl +++ b/assets/locales/zh-cn/enhancements.ftl @@ -14,6 +14,12 @@ system = 系统 borderless-window = 无边框窗口 virtual-desktop = 虚拟桌面 +map-drive-c = Map drive C: +map-drive-c-description = Automatically symlink drive_c folder from the wine prefix to the dosdevices + +map-game-folder = Map game folder +map-game-folder-description = Automatically symlink game folder to the dosdevices + game = 游戏 hud = HUD diff --git a/src/ui/preferences/enhancements/mod.rs b/src/ui/preferences/enhancements/mod.rs index 6f5414a..40f214e 100644 --- a/src/ui/preferences/enhancements/mod.rs +++ b/src/ui/preferences/enhancements/mod.rs @@ -1,6 +1,11 @@ use relm4::prelude::*; use relm4::component::*; -use relm4::factory::*; + +use relm4::factory::{ + AsyncFactoryComponent, + AsyncFactorySender, + AsyncFactoryVecDeque +}; use adw::prelude::*; @@ -285,6 +290,76 @@ impl SimpleAsyncComponent for EnhancementsApp { if let Ok(mut config) = Config::get() { config.game.wine.virtual_desktop.enabled = switch.state(); + Config::update(config); + } + } + } + } + }, + + adw::ActionRow { + set_title: &tr!("map-drive-c"), + set_subtitle: &tr!("map-drive-c-description"), + + add_suffix = >k::Switch { + set_valign: gtk::Align::Center, + + set_state: CONFIG.game.wine.drives.drive_c, + + connect_state_notify => |switch| { + if is_ready() { + if let Ok(mut config) = Config::get() { + config.game.wine.drives.drive_c = switch.state(); + + Config::update(config); + } + } + } + } + }, + + #[name = "map_game_folder_row"] + adw::ComboRow { + set_title: &tr!("map-game-folder"), + set_subtitle: &tr!("map-game-folder-description"), + + #[wrap(Some)] + set_model = >k::StringList::new(&AllowedDrives::list().iter() + .map(|drive| drive.to_drive()) + .collect::>()), + + set_selected: match CONFIG.game.wine.drives.game_folder { + Some(drive) => AllowedDrives::list().iter() + .position(|allowed| *allowed == drive) + .unwrap_or(8) as u32, + + None => 8 // G: + }, + + connect_selected_notify => |row| { + if is_ready() { + if let Ok(mut config) = Config::get() { + config.game.wine.drives.game_folder = Some(AllowedDrives::list()[row.selected() as usize]); + + Config::update(config); + } + } + }, + + add_suffix = >k::Switch { + set_valign: gtk::Align::Center, + + set_state: CONFIG.game.wine.drives.game_folder.is_some(), + + connect_state_notify[map_game_folder_row] => move |switch| { + if is_ready() { + if let Ok(mut config) = Config::get() { + if switch.state() { + config.game.wine.drives.game_folder = Some(AllowedDrives::list()[map_game_folder_row.selected() as usize]); + } else { + config.game.wine.drives.game_folder = None; + } + Config::update(config); } }