From baf66a4e1397ac2514604ebb64836eb6397b31be Mon Sep 17 00:00:00 2001 From: ALEZ-DEV Date: Mon, 27 Jan 2025 20:47:13 +0100 Subject: [PATCH] can now choose release --- babylonia-terminal-gui/src/ui/mod.rs | 23 +++----- .../src/ui/pages/steps/download_components.rs | 56 +++++++++++++++++-- 2 files changed, 58 insertions(+), 21 deletions(-) diff --git a/babylonia-terminal-gui/src/ui/mod.rs b/babylonia-terminal-gui/src/ui/mod.rs index e55bdb3..9e09ef6 100644 --- a/babylonia-terminal-gui/src/ui/mod.rs +++ b/babylonia-terminal-gui/src/ui/mod.rs @@ -5,24 +5,15 @@ use babylonia_terminal_sdk::game_state::GameState; use log::debug; use relm4::{ - adw::{ - self, - prelude::{PreferencesGroupExt, PreferencesPageExt}, - ApplicationWindow, - }, - gtk::{ - self, - prelude::{BoxExt, ButtonExt, GtkWindowExt, OrientableExt, WidgetExt}, - }, + self, + gtk::{self, prelude::*}, loading_widgets::LoadingWidgets, - prelude::{ - AsyncComponent, AsyncComponentController, AsyncComponentParts, AsyncController, - SimpleAsyncComponent, - }, - view, Component, ComponentController, Controller, RelmApp, RelmWidgetExt, WorkerController, + prelude::*, + *, }; -use libadwaita::OverlaySplitView; +use adw::prelude::*; +use libadwaita as adw; use crate::APP_RESOURCE_PATH; @@ -85,7 +76,7 @@ impl SimpleAsyncComponent for MainWindow { gtk::Box { set_orientation: gtk::Orientation::Vertical, - OverlaySplitView { + adw::OverlaySplitView { #[watch] set_show_sidebar: model.is_menu_visible, set_collapsed: true, diff --git a/babylonia-terminal-gui/src/ui/pages/steps/download_components.rs b/babylonia-terminal-gui/src/ui/pages/steps/download_components.rs index da7efd9..09e82bb 100644 --- a/babylonia-terminal-gui/src/ui/pages/steps/download_components.rs +++ b/babylonia-terminal-gui/src/ui/pages/steps/download_components.rs @@ -1,6 +1,19 @@ -use libadwaita::prelude::{ButtonExt, PreferencesPageExt, PreferencesRowExt, WidgetExt}; -use relm4::prelude::{AsyncComponentParts, SimpleAsyncComponent}; -use relm4::{adw, gtk, AsyncComponentSender, RelmWidgetExt}; +use babylonia_terminal_sdk::{ + components::{ + dxvk_component::{self, DXVKComponent}, + proton_component::{self, ProtonComponent}, + }, + utils::github_requester::{GithubRelease, GithubRequester}, +}; +use relm4::{ + self, + gtk::{self, prelude::*}, + prelude::*, + *, +}; + +use adw::prelude::*; +use libadwaita as adw; use crate::ui::MainWindowMsg; @@ -11,7 +24,10 @@ pub enum DownloadComponentsMsg { Next, } -pub struct DownloadComponentsPage; +pub struct DownloadComponentsPage { + proton_versions: Vec, + dxvk_versions: Vec, +} #[relm4::component(async, pub)] impl SimpleAsyncComponent for DownloadComponentsPage { @@ -42,10 +58,24 @@ impl SimpleAsyncComponent for DownloadComponentsPage { adw::ComboRow { set_title: "Proton version", + + set_model: Some(>k::StringList::new(model + .proton_versions + .iter() + .map(|r| r.tag_name.as_str()) + .collect::>() + .as_slice())), }, adw::ComboRow { set_title: "DXVK version", + + set_model: Some(>k::StringList::new(model + .dxvk_versions + .iter() + .map(|r| r.tag_name.as_str()) + .collect::>() + .as_slice())), }, }, @@ -70,7 +100,23 @@ impl SimpleAsyncComponent for DownloadComponentsPage { root: Self::Root, sender: AsyncComponentSender, ) -> AsyncComponentParts { - let model = DownloadComponentsPage; + let proton_releases = ProtonComponent::get_github_releases( + proton_component::PROTON_DEV, + proton_component::PROTON_REPO, + ) + .await + .unwrap(); //TODO: remove unwrap() + + let dxvk_releases = + DXVKComponent::get_github_releases(dxvk_component::DXVK_DEV, dxvk_component::DXVK_REPO) + .await + .unwrap(); //TODO: remove unwrap() + + let model = DownloadComponentsPage { + proton_versions: proton_releases, + dxvk_versions: dxvk_releases, + }; + let widgets = view_output!(); AsyncComponentParts { widgets, model }