diff --git a/Cargo.lock b/Cargo.lock index 57f6162..85be20d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1130,10 +1130,12 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libadwaita" -version = "0.1.1" +version = "0.2.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ae453d28e3b91f03749f02b1531e8cfe315a1d0762b77a61797d2ab80bb87d" +checksum = "73815fa30ca62d1db2713fe87cfd1cea41cad076ccdece6bb8328032db152f47" dependencies = [ + "bitflags", + "futures-channel", "gdk-pixbuf", "gdk4", "gio", @@ -1147,9 +1149,9 @@ dependencies = [ [[package]] name = "libadwaita-sys" -version = "0.1.0" +version = "0.2.0-alpha.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f18b6ac4cadd252a89f5cba0a5a4e99836131795d6fad37b859ac79e8cb7d2c8" +checksum = "b91960ec236b6fecdace0491ae1e4aac938d1c6adffd5939f811f3ed6592a59e" dependencies = [ "gdk4-sys", "gio-sys", @@ -1157,6 +1159,7 @@ dependencies = [ "gobject-sys", "gtk4-sys", "libc", + "pango-sys", "system-deps", ] diff --git a/Cargo.toml b/Cargo.toml index f6664f1..04c4ae8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,11 +13,11 @@ lto = true opt-level = 3 [build-dependencies] -gtk4 = "0.4" +gtk = { package = "gtk4", version = "0.4", features = ["v4_8"] } [dependencies] -gtk4 = "0.4" -libadwaita = "0.1" +gtk = { package = "gtk4", version = "0.4", features = ["v4_8"] } +adw = { package = "libadwaita", version = "0.2.0-alpha.3", features = ["v1_2"] } rfd = { version = "0.10", features = ["xdg-portal"], default-features = false } anime-game-core = { path = "anime-game-core", features = ["all", "static", "genshin"] } diff --git a/assets/ui/main.blp b/assets/ui/main.blp index 80cc4da..ad49abe 100644 --- a/assets/ui/main.blp +++ b/assets/ui/main.blp @@ -108,11 +108,12 @@ Adw.ApplicationWindow window { }; } -Gtk.AboutDialog about { - program-name: "An Anime Game Launcher"; +Adw.AboutWindow about { + application-name: "An Anime Game Launcher"; + application-icon: "moe.launcher.an-anime-game-launcher-gtk"; - logo: "resource:///org/app/assets/images/icon.png"; website: "https://github.com/an-anime-team/an-anime-game-launcher-gtk"; + issue-url: "https://github.com/an-anime-team/an-anime-game-launcher-gtk/issues"; modal: true; transient-for: window; diff --git a/assets/ui/preferences/gamescope.blp b/assets/ui/preferences/gamescope.blp index 7f6b2ab..f5e86b2 100644 --- a/assets/ui/preferences/gamescope.blp +++ b/assets/ui/preferences/gamescope.blp @@ -11,72 +11,48 @@ Adw.PreferencesWindow window { Adw.PreferencesGroup { title: "Game resolution"; - Adw.ActionRow { + Adw.EntryRow game_width { title: "Width"; - Gtk.Entry game_width { - placeholder-text: "0"; - valign: center; - input-purpose: digits; - } + input-purpose: digits; } - Adw.ActionRow { + Adw.EntryRow game_height { title: "Height"; - Gtk.Entry game_height { - placeholder-text: "0"; - valign: center; - input-purpose: digits; - } + input-purpose: digits; } } Adw.PreferencesGroup { title: "Gamescope resolution"; - Adw.ActionRow { + Adw.EntryRow gamescope_width { title: "Width"; - Gtk.Entry gamescope_width { - placeholder-text: "0"; - valign: center; - input-purpose: digits; - } + input-purpose: digits; } - Adw.ActionRow { + Adw.EntryRow gamescope_height { title: "Height"; - Gtk.Entry gamescope_height { - placeholder-text: "0"; - valign: center; - input-purpose: digits; - } + input-purpose: digits; } } Adw.PreferencesGroup { title: "Other settings"; - Adw.ActionRow { + Adw.EntryRow framerate_limit { title: "Framerate limit"; - Gtk.Entry framerate_limit { - placeholder-text: "0"; - valign: center; - input-purpose: digits; - } + input-purpose: digits; } - Adw.ActionRow { + Adw.EntryRow framerate_unfocused_limit { title: "Unfocused framerate limit"; - Gtk.Entry framerate_unfocused_limit { - placeholder-text: "0"; - valign: center; - input-purpose: digits; - } + input-purpose: digits; } Adw.ActionRow { diff --git a/build.rs b/build.rs index d6ffb90..a8f77f7 100644 --- a/build.rs +++ b/build.rs @@ -77,7 +77,7 @@ fn main() { blp_process_dir(String::new()); if let Ok(_) = read_to_string("assets/resources.xml") { - gtk4::gio::compile_resources( + gtk::gio::compile_resources( "assets", "assets/resources.xml", ".assets.gresource", diff --git a/src/lib/config/game/enhancements/fps_unlocker/config/fps.rs b/src/lib/config/game/enhancements/fps_unlocker/config/fps.rs index 34b83e1..04076a9 100644 --- a/src/lib/config/game/enhancements/fps_unlocker/config/fps.rs +++ b/src/lib/config/game/enhancements/fps_unlocker/config/fps.rs @@ -1,5 +1,3 @@ -use gtk4 as gtk; - #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub enum Fps { /// 90 diff --git a/src/lib/config/game/wine/wine_lang.rs b/src/lib/config/game/wine/wine_lang.rs index 7a9e38b..26c4b54 100644 --- a/src/lib/config/game/wine/wine_lang.rs +++ b/src/lib/config/game/wine/wine_lang.rs @@ -1,5 +1,3 @@ -use gtk4 as gtk; - use std::collections::HashMap; use serde::{Serialize, Deserialize}; diff --git a/src/lib/config/resolution.rs b/src/lib/config/resolution.rs index 8d97d58..95dd82f 100644 --- a/src/lib/config/resolution.rs +++ b/src/lib/config/resolution.rs @@ -1,5 +1,3 @@ -use gtk4 as gtk; - #[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)] pub enum Resolution { // qHD; 960x540 diff --git a/src/main.rs b/src/main.rs index 4d76286..9c65572 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,4 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita as adw; +use gtk::prelude::*; use gtk::{CssProvider, StyleContext, STYLE_PROVIDER_PRIORITY_APPLICATION}; use gtk::gdk::Display; @@ -19,8 +18,7 @@ pub const APP_VERSION: &str = env!("CARGO_PKG_VERSION"); pub const APP_DEBUG: bool = cfg!(debug_assertions); fn main() { - gtk::init().expect("GTK initialization failed"); - adw::init(); + adw::init().expect("Libadwaita initialization failed"); // Register and include resources gtk::gio::resources_register_include!(".assets.gresource") diff --git a/src/ui/components/dxvk_group.rs b/src/ui/components/dxvk_group.rs index 62deac6..ee7ce05 100644 --- a/src/ui/components/dxvk_group.rs +++ b/src/ui/components/dxvk_group.rs @@ -1,4 +1,4 @@ -use libadwaita::{self as adw, prelude::*}; +use adw::prelude::*; use crate::lib::dxvk::Group; use super::dxvk_row::DxvkRow; diff --git a/src/ui/components/dxvk_row.rs b/src/ui/components/dxvk_row.rs index 1206a86..658db33 100644 --- a/src/ui/components/dxvk_row.rs +++ b/src/ui/components/dxvk_row.rs @@ -1,5 +1,5 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita::{self as adw, prelude::*}; +use gtk::prelude::*; +use adw::prelude::*; use crate::lib::dxvk::Version; use crate::ui::traits::download_component::*; diff --git a/src/ui/components/progress_bar.rs b/src/ui/components/progress_bar.rs index 60aa679..f905c0f 100644 --- a/src/ui/components/progress_bar.rs +++ b/src/ui/components/progress_bar.rs @@ -1,5 +1,4 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita as adw; +use gtk::prelude::*; use gtk::glib; diff --git a/src/ui/components/voiceover_row.rs b/src/ui/components/voiceover_row.rs index 886a85a..e9517d1 100644 --- a/src/ui/components/voiceover_row.rs +++ b/src/ui/components/voiceover_row.rs @@ -1,5 +1,5 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita::{self as adw, prelude::*}; +use gtk::prelude::*; +use adw::prelude::*; use std::path::PathBuf; diff --git a/src/ui/components/wine_group.rs b/src/ui/components/wine_group.rs index f855d40..164e649 100644 --- a/src/ui/components/wine_group.rs +++ b/src/ui/components/wine_group.rs @@ -1,4 +1,4 @@ -use libadwaita::{self as adw, prelude::*}; +use adw::prelude::*; use crate::lib::wine::Group; use super::wine_row::WineRow; diff --git a/src/ui/components/wine_row.rs b/src/ui/components/wine_row.rs index eb186f4..4b816e2 100644 --- a/src/ui/components/wine_row.rs +++ b/src/ui/components/wine_row.rs @@ -1,5 +1,5 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita::{self as adw, prelude::*}; +use gtk::prelude::*; +use adw::prelude::*; use crate::lib::wine::Version; use crate::ui::traits::download_component::*; diff --git a/src/ui/first_run/default_paths.rs b/src/ui/first_run/default_paths.rs index 8923949..ec6487e 100644 --- a/src/ui/first_run/default_paths.rs +++ b/src/ui/first_run/default_paths.rs @@ -1,5 +1,4 @@ -use gtk4 as gtk; -use libadwaita::{self as adw, prelude::*}; +use adw::prelude::*; use gtk::glib; use gtk::glib::clone; diff --git a/src/ui/first_run/dependencies.rs b/src/ui/first_run/dependencies.rs index 4c4c8c0..be91f2a 100644 --- a/src/ui/first_run/dependencies.rs +++ b/src/ui/first_run/dependencies.rs @@ -1,5 +1,3 @@ -use gtk4 as gtk; - use std::process::{Command, Stdio}; use crate::ui::*; diff --git a/src/ui/first_run/download_components.rs b/src/ui/first_run/download_components.rs index 35d55a9..27145c5 100644 --- a/src/ui/first_run/download_components.rs +++ b/src/ui/first_run/download_components.rs @@ -1,5 +1,4 @@ -use gtk4 as gtk; -use libadwaita::{self as adw, prelude::*}; +use adw::prelude::*; use crate::lib::wine::{Version as WineVersion, List as WineList}; use crate::lib::dxvk::{Version as DxvkVersion, List as DxvkList}; diff --git a/src/ui/first_run/finish.rs b/src/ui/first_run/finish.rs index 6a49cf0..c8013c6 100644 --- a/src/ui/first_run/finish.rs +++ b/src/ui/first_run/finish.rs @@ -1,5 +1,3 @@ -use gtk4 as gtk; - use crate::ui::*; #[derive(Clone)] diff --git a/src/ui/first_run/mod.rs b/src/ui/first_run/mod.rs index 03e965b..bb58fdf 100644 --- a/src/ui/first_run/mod.rs +++ b/src/ui/first_run/mod.rs @@ -1,5 +1,4 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita as adw; +use gtk::prelude::*; use gtk::glib; use gtk::glib::clone; diff --git a/src/ui/first_run/tos_warning.rs b/src/ui/first_run/tos_warning.rs index bc34428..1e67763 100644 --- a/src/ui/first_run/tos_warning.rs +++ b/src/ui/first_run/tos_warning.rs @@ -1,5 +1,3 @@ -use gtk4 as gtk; - use crate::ui::*; #[derive(Clone)] diff --git a/src/ui/first_run/voice_packages.rs b/src/ui/first_run/voice_packages.rs index 94440e8..865cd03 100644 --- a/src/ui/first_run/voice_packages.rs +++ b/src/ui/first_run/voice_packages.rs @@ -1,5 +1,5 @@ -use gtk4 as gtk; -use libadwaita::{self as adw, prelude::*}; +use gtk::prelude::*; +use adw::prelude::*; use anime_game_core::genshin::voice_data::prelude::*; diff --git a/src/ui/first_run/welcome.rs b/src/ui/first_run/welcome.rs index b61d2f3..51f2850 100644 --- a/src/ui/first_run/welcome.rs +++ b/src/ui/first_run/welcome.rs @@ -1,5 +1,3 @@ -use gtk4 as gtk; - use crate::ui::*; #[derive(Clone)] diff --git a/src/ui/main.rs b/src/ui/main.rs index 03dbffb..a98ac84 100644 --- a/src/ui/main.rs +++ b/src/ui/main.rs @@ -1,8 +1,7 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita as adw; +use gtk::prelude::*; -use gtk4::glib; -use gtk4::glib::clone; +use gtk::glib; +use gtk::glib::clone; use std::rc::Rc; use std::cell::Cell; @@ -42,7 +41,7 @@ pub struct AppWidgets { pub toast_overlay: adw::ToastOverlay, pub menu: gtk::MenuButton, - pub about: gtk::AboutDialog, + pub about: adw::AboutWindow, pub leaflet: adw::Leaflet, pub status_page: adw::StatusPage, @@ -100,40 +99,40 @@ impl AppWidgets { // Set default About Dialog values if crate::APP_DEBUG { - result.about.set_version(Some(format!("{} (development)", crate::APP_VERSION).as_str())); + result.about.set_version(&format!("{}-dev", crate::APP_VERSION)); } else { - result.about.set_version(Some(crate::APP_VERSION)); + result.about.set_version(crate::APP_VERSION); } result.about.set_license_type(gtk::License::Gpl30); - result.about.set_authors(&[ + result.about.set_developers(&[ "Nikita Podvirnyy https://github.com/krypt0nn" ]); - result.about.add_credit_section("Logo", &[ + result.about.add_credit_section(Some("Logo"), &[ "@nightany https://pinterest.com/pin/356206651788051017" ]); - result.about.add_credit_section("An Anime Team", &[ + result.about.add_credit_section(Some("An Anime Team"), &[ "@Marie https://github.com/Mar0xy", "@lane https://github.com/laurinneff" ]); let curl_info = anime_game_core::curl_sys::Version::get(); - result.about.set_system_information(Some(&[ - format!("Anime Game core library version: {}", anime_game_core::VERSION), - format!(" Curl version: {}", curl_info.version()), - format!(" SSL version: {}", curl_info.ssl_version().unwrap_or("?")), + result.about.set_debug_info(&[ + format!("Anime Game core library version: {}", anime_game_core::VERSION), + format!("Curl version: {}", curl_info.version()), + format!("SSL version: {}", curl_info.ssl_version().unwrap_or("?")), String::new(), - format!("GTK version: {}.{}.{}", gtk::major_version(), gtk::minor_version(), gtk::micro_version()), - format!("Libadwaita version: {}.{}.{}", adw::major_version(), adw::minor_version(), adw::micro_version()), - format!("Pango version: {}", gtk::pango::version_string().unwrap_or("?".into())), - format!("Cairo version: {}", gtk::cairo::version_string()), - ].join("\n"))); + format!("GTK version: {}.{}.{}", gtk::major_version(), gtk::minor_version(), gtk::micro_version()), + format!("Libadwaita version: {}.{}.{}", adw::major_version(), adw::minor_version(), adw::micro_version()), + format!("Pango version: {}", gtk::pango::version_string().unwrap_or("?".into())), + format!("Cairo version: {}", gtk::cairo::version_string()), + ].join("\n")); // Add preferences page to the leaflet result.leaflet.append(&result.preferences_stack.preferences).set_name(Some("preferences_page")); diff --git a/src/ui/mod.rs b/src/ui/mod.rs index d71bc54..0b0c967 100644 --- a/src/ui/mod.rs +++ b/src/ui/mod.rs @@ -1,5 +1,4 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita as adw; +use gtk::prelude::*; pub mod first_run; pub mod main; diff --git a/src/ui/preferences/enhancements.rs b/src/ui/preferences/enhancements.rs index d577955..dd8f34f 100644 --- a/src/ui/preferences/enhancements.rs +++ b/src/ui/preferences/enhancements.rs @@ -1,5 +1,5 @@ -use gtk4 as gtk; -use libadwaita::{self as adw, prelude::*}; +use gtk::prelude::*; +use adw::prelude::*; use gtk::glib; use gtk::glib::clone; diff --git a/src/ui/preferences/environment.rs b/src/ui/preferences/environment.rs index 828c287..1d97eb0 100644 --- a/src/ui/preferences/environment.rs +++ b/src/ui/preferences/environment.rs @@ -1,8 +1,8 @@ -use gtk4 as gtk; -use libadwaita::{self as adw, prelude::*}; +use gtk::prelude::*; +use adw::prelude::*; -use gtk4::glib; -use gtk4::glib::clone; +use gtk::glib; +use gtk::glib::clone; use std::collections::HashMap; use std::rc::Rc; diff --git a/src/ui/preferences/gamescope.rs b/src/ui/preferences/gamescope.rs index 73bfeed..0569d50 100644 --- a/src/ui/preferences/gamescope.rs +++ b/src/ui/preferences/gamescope.rs @@ -1,5 +1,4 @@ -use gtk4 as gtk; -use libadwaita::{self as adw, prelude::*}; +use gtk::prelude::*; use gtk::glib; @@ -17,14 +16,14 @@ use crate::ui::*; pub struct AppWidgets { pub window: adw::PreferencesWindow, - pub game_width: gtk::Entry, - pub game_height: gtk::Entry, + pub game_width: adw::EntryRow, + pub game_height: adw::EntryRow, - pub gamescope_width: gtk::Entry, - pub gamescope_height: gtk::Entry, + pub gamescope_width: adw::EntryRow, + pub gamescope_height: adw::EntryRow, - pub framerate_limit: gtk::Entry, - pub framerate_unfocused_limit: gtk::Entry, + pub framerate_limit: adw::EntryRow, + pub framerate_unfocused_limit: adw::EntryRow, pub integer_scaling: gtk::Switch, pub fsr: gtk::Switch, pub nis: gtk::Switch, @@ -227,7 +226,7 @@ impl App { status_page.set_description(Some("Loading gamescope...")); - fn set_text(widget: >k::Entry, value: u64) { + fn set_text(widget: &adw::EntryRow, value: u64) { widget.set_text(&if value == 0 { String::new() } else { value.to_string() }); } diff --git a/src/ui/preferences/general.rs b/src/ui/preferences/general.rs index 700abfa..95473b5 100644 --- a/src/ui/preferences/general.rs +++ b/src/ui/preferences/general.rs @@ -1,5 +1,5 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita::{self as adw, prelude::*}; +use gtk::prelude::*; +use adw::prelude::*; use gtk::glib; use gtk::glib::clone; diff --git a/src/ui/preferences/mod.rs b/src/ui/preferences/mod.rs index f25fc61..87e8842 100644 --- a/src/ui/preferences/mod.rs +++ b/src/ui/preferences/mod.rs @@ -1,5 +1,4 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita as adw; +use gtk::prelude::*; use gtk::glib; diff --git a/src/ui/traits/download_component.rs b/src/ui/traits/download_component.rs index 61df6f2..d2fb3d4 100644 --- a/src/ui/traits/download_component.rs +++ b/src/ui/traits/download_component.rs @@ -1,4 +1,4 @@ -use gtk4::{self as gtk, prelude::*}; +use gtk::prelude::*; use gtk::glib; diff --git a/src/ui/traits/toast.rs b/src/ui/traits/toast.rs index b42eb87..787bc8b 100644 --- a/src/ui/traits/toast.rs +++ b/src/ui/traits/toast.rs @@ -1,5 +1,4 @@ -use gtk4::{self as gtk, prelude::*}; -use libadwaita as adw; +use gtk::prelude::*; use crate::ui::add_action;