better menu

This commit is contained in:
ALEZ-DEV 2024-12-21 00:51:59 +01:00
parent 1b34ad7642
commit 08364f8624
2 changed files with 71 additions and 13 deletions

View File

@ -18,5 +18,36 @@ pub fn run() {
let display = gdk::Display::default().unwrap(); let display = gdk::Display::default().unwrap();
let theme = gtk::IconTheme::for_display(&display); let theme = gtk::IconTheme::for_display(&display);
theme.add_resource_path(&format!("{APP_RESOURCE_PATH}/icons")); theme.add_resource_path(&format!("{APP_RESOURCE_PATH}/icons"));
relm4::set_global_css(&format!(
"
progressbar > text {{
margin-bottom: 4px;
}}
window.classic-style {{
background-repeat: no-repeat;
background-size: cover;
}}
window.classic-style progressbar {{
background-color: #00000020;
border-radius: 16px;
padding: 8px 16px;
}}
window.classic-style progressbar:hover {{
background-color: #00000060;
color: #ffffff;
transition-duration: 0.5s;
transition-timing-function: linear;
}}
.round-bin {{
border-radius: 24px;
}}
"
));
ui::run(app); ui::run(app);
} }

View File

@ -4,7 +4,11 @@ use crate::manager;
use babylonia_terminal_sdk::game_state::GameState; use babylonia_terminal_sdk::game_state::GameState;
use relm4::{ use relm4::{
adw::{self, ApplicationWindow}, adw::{
self,
prelude::{PreferencesGroupExt, PreferencesPageExt},
ApplicationWindow,
},
gtk::{ gtk::{
self, self,
prelude::{BoxExt, ButtonExt, GtkWindowExt, OrientableExt, WidgetExt}, prelude::{BoxExt, ButtonExt, GtkWindowExt, OrientableExt, WidgetExt},
@ -59,20 +63,43 @@ impl SimpleAsyncComponent for MainWindow {
adw::HeaderBar, adw::HeaderBar,
gtk::Image { gtk::Box {
set_resource: Some(&format!("{APP_RESOURCE_PATH}/icons/hicolor/scalable/apps/icon.png")), set_orientation: gtk::Orientation::Vertical,
set_height_request: 256, set_vexpand: true,
}, set_margin_horizontal: 50,
set_valign: gtk::Align::Center,
#[name(start_button)] adw::PreferencesPage {
gtk::Button { add = &adw::PreferencesGroup {
#[watch] gtk::Picture {
set_sensitive: !model.is_game_running, set_resource: Some(&format!("{APP_RESOURCE_PATH}/icons/hicolor/scalable/apps/icon.png")),
set_label: "Start game", set_vexpand: true,
connect_clicked[sender = model.game_handler.sender().clone()] => move |_| { },
sender.send(manager::HandleGameProcessMsg::RunGame).unwrap();
gtk::Label {
set_label: "Babylonia Terminal",
set_margin_top: 24,
add_css_class: "title-1",
},
},
add = &adw::PreferencesGroup {
gtk::Button {
set_css_classes: &["suggested-action", "pill"],
set_label: "Start game",
set_hexpand: false,
set_width_request: 200,
#[watch]
set_sensitive: !model.is_game_running,
connect_clicked[sender = model.game_handler.sender().clone()] => move |_| {
sender.send(manager::HandleGameProcessMsg::RunGame).unwrap();
},
},
}
}, },
}, }
} }
} }
} }