diff --git a/src/bin/gui/build_ui/mod.rs b/src/bin/gui/build_ui/mod.rs index 1244cc1..0acae13 100644 --- a/src/bin/gui/build_ui/mod.rs +++ b/src/bin/gui/build_ui/mod.rs @@ -90,9 +90,10 @@ pub fn build_ui(app: &Application) { .margin_bottom(20) .margin_start(5) .margin_end(5) + .hexpand(true) .build(); - window_adw_view_switcher_sidebar_control_box.append(&WindowControls::builder().build()); - window_adw_view_switcher_sidebar_control_box.append(&WindowTitle::builder().title(t!("application_name")).build()); + window_adw_view_switcher_sidebar_control_box.append(&WindowControls::builder().halign(gtk::Align::Start).valign(gtk::Align::Center).build()); + window_adw_view_switcher_sidebar_control_box.append(&WindowTitle::builder().halign(gtk::Align::Center).margin_top(10).margin_bottom(20).valign(gtk::Align::Center).hexpand(true).title(t!("application_name")).build()); let window_adw_view_switcher_sidebar_box = gtk::Box::new(gtk::Orientation::Vertical, 0); window_adw_view_switcher_sidebar_box.append(&window_adw_view_switcher_sidebar_control_box); @@ -102,26 +103,6 @@ pub fn build_ui(app: &Application) { let window_adw_stack_clone0 = window_adw_stack.clone(); let window_adw_view_switcher_sidebar_box_clone0 = window_adw_view_switcher_sidebar_box.clone(); - let add_content_button = |active: bool, name: String, title: String| { - let toggle_button = gtk::ToggleButton::builder() - .group(&null_toggle_button) - .label(&title) - .active(active) - .margin_top(5) - .margin_bottom(5) - .margin_start(10) - .margin_end(10) - .valign(gtk::Align::Start) - .build(); - toggle_button.add_css_class("flat"); - toggle_button.connect_clicked(move |toggle_button| { - if toggle_button.is_active() { - window_adw_stack_clone0.set_visible_child_name(&name); - } - }); - window_adw_view_switcher_sidebar_box_clone0.append(&toggle_button); - }; - let sidebar_toggle_button = gtk::ToggleButton::builder() .icon_name("view-right-pane-symbolic") .visible(false) @@ -296,9 +277,8 @@ pub fn build_ui(app: &Application) { &t!("apt_update_page_title"), ); - { - add_content_button.clone()(true, "apt_update_page".to_string(), t!("apt_update_page_title").to_string()); - } + let apt_update_page_toggle_button = add_content_button(&window_adw_stack, true, "apt_update_page".to_string(), t!("apt_update_page_title").to_string(), &null_toggle_button); + window_adw_view_switcher_sidebar_box.append(&apt_update_page_toggle_button); window_adw_stack.add_titled( &flatpak_update_view_stack_bin, @@ -306,9 +286,8 @@ pub fn build_ui(app: &Application) { &t!("flatpak_update_page_title"), ); - { - add_content_button.clone()(false, "flatpak_update_page".to_string(), t!("flatpak_update_page_title").to_string()); - } + let flatpak_update_page_toggle_button = add_content_button(&window_adw_stack, false, "flatpak_update_page".to_string(), t!("flatpak_update_page_title").to_string(), &null_toggle_button); + window_adw_view_switcher_sidebar_box.append(&flatpak_update_page_toggle_button); window_adw_stack.add_titled( &apt_manage_page(window.clone(), &apt_retry_signal_action), @@ -316,9 +295,8 @@ pub fn build_ui(app: &Application) { &t!("apt_manage_page_title"), ); - { - add_content_button.clone()(false, "apt_manage_page".to_string(), t!("apt_manage_page_title").to_string()); - } + let apt_manage_page_toggle_button = add_content_button(&window_adw_stack, false, "apt_manage_page".to_string(), t!("apt_manage_page_title").to_string(), &null_toggle_button); + window_adw_view_switcher_sidebar_box.append(&apt_manage_page_toggle_button); window_adw_stack.add_titled( &flatpak_manage_page(window, &flatpak_retry_signal_action), @@ -326,9 +304,37 @@ pub fn build_ui(app: &Application) { &t!("flatpak_manage_page_title"), ); - { - add_content_button.clone()(false, "flatpak_manage_page".to_string(), t!("flatpak_manage_page_title").to_string()); - } + let flatpak_manage_page_toggle_button = add_content_button(&window_adw_stack, false, "flatpak_manage_page".to_string(), t!("flatpak_manage_page_title").to_string(), &null_toggle_button); + window_adw_view_switcher_sidebar_box.append(&flatpak_manage_page_toggle_button); + + app.connect_command_line(clone!( + #[strong] + apt_manage_page_toggle_button, + #[strong] + flatpak_manage_page_toggle_button, + move |_, cmdline| { + // Create Vec from cmdline + let mut gtk_application_args = Vec::new(); + for arg in cmdline.arguments() { + match arg.to_str() { + Some(a) => gtk_application_args.push(a.to_string()), + None => {} + } + } + + // Check for cmd lines + + if gtk_application_args.contains(&"--software-properties".to_string()) { + apt_manage_page_toggle_button.set_active(true); + apt_manage_page_toggle_button.emit_clicked(); + } + if gtk_application_args.contains(&"--flatpak-settings".to_string()) { + flatpak_manage_page_toggle_button.set_active(true); + flatpak_manage_page_toggle_button.emit_clicked(); + } + + 0 + })); // Refresh button @@ -350,4 +356,24 @@ pub fn build_ui(app: &Application) { } } )); +} + +fn add_content_button(window_adw_stack: >k::Stack, active: bool, name: String, title: String, null_toggle_button: >k::ToggleButton) -> gtk::ToggleButton { + let toggle_button = gtk::ToggleButton::builder() + .group(null_toggle_button) + .label(&title) + .active(active) + .margin_top(5) + .margin_bottom(5) + .margin_start(10) + .margin_end(10) + .valign(gtk::Align::Start) + .build(); + toggle_button.add_css_class("flat"); + toggle_button.connect_clicked(clone!(#[weak] window_adw_stack,move |toggle_button| { + if toggle_button.is_active() { + window_adw_stack.set_visible_child_name(&name); + } + })); + toggle_button } \ No newline at end of file diff --git a/src/bin/gui/main.rs b/src/bin/gui/main.rs index 78e91f5..84d583c 100644 --- a/src/bin/gui/main.rs +++ b/src/bin/gui/main.rs @@ -33,7 +33,7 @@ fn main() { None => panic!("$LANG is not set"), }; rust_i18n::set_locale(¤t_locale); - let application = adw::Application::new(Some(APP_ID), Default::default()); + let application = adw::Application::new(Some(APP_ID), gio::ApplicationFlags::HANDLES_COMMAND_LINE); application.connect_startup(|app| { // The CSS "magic" happens here. let provider = CssProvider::new(); @@ -45,7 +45,7 @@ fn main() { &provider, STYLE_PROVIDER_PRIORITY_APPLICATION, ); - app.connect_activate(build_ui); + build_ui(&app); }); //if get_current_username().unwrap() == "pikaos" {