feat: debug actions to open data folder and current prefix in file manager

This commit is contained in:
Gabriele Musco 2023-12-23 07:43:29 +00:00
parent e212c449cf
commit f2011e74e1
3 changed files with 50 additions and 2 deletions

View file

@ -8,6 +8,7 @@ use super::job_worker::job::WorkerJob;
use super::job_worker::JobWorker; use super::job_worker::JobWorker;
use super::libsurvive_setup_window::LibsurviveSetupWindow; use super::libsurvive_setup_window::LibsurviveSetupWindow;
use super::main_view::MainViewMsg; use super::main_view::MainViewMsg;
use super::util::open_with_default_handler;
use crate::builders::build_basalt::get_build_basalt_jobs; use crate::builders::build_basalt::get_build_basalt_jobs;
use crate::builders::build_libsurvive::get_build_libsurvive_jobs; use crate::builders::build_libsurvive::get_build_libsurvive_jobs;
use crate::builders::build_mercury::get_build_mercury_job; use crate::builders::build_mercury::get_build_mercury_job;
@ -34,7 +35,7 @@ use crate::file_builders::openvrpaths_vrpath::{
use crate::file_utils::setcap_cap_sys_nice_eip; use crate::file_utils::setcap_cap_sys_nice_eip;
use crate::linux_distro::get_distro; use crate::linux_distro::get_distro;
use crate::log_parser::MonadoLog; use crate::log_parser::MonadoLog;
use crate::paths::get_ipc_file_path; use crate::paths::{get_data_dir, get_ipc_file_path};
use crate::profile::{Profile, XRServiceType}; use crate::profile::{Profile, XRServiceType};
use crate::profiles::lighthouse::lighthouse_profile; use crate::profiles::lighthouse::lighthouse_profile;
use crate::profiles::openhmd::openhmd_profile; use crate::profiles::openhmd::openhmd_profile;
@ -124,6 +125,8 @@ pub enum Msg {
Quit, Quit,
ParseLog(Vec<String>), ParseLog(Vec<String>),
ConfigFbt, ConfigFbt,
DebugOpenPrefix,
DebugOpenData,
} }
impl App { impl App {
@ -619,6 +622,15 @@ impl SimpleComponent for App {
)); ));
self.application.quit(); self.application.quit();
} }
Msg::DebugOpenData => {
open_with_default_handler(&format!("file://{}", get_data_dir()));
}
Msg::DebugOpenPrefix => {
open_with_default_handler(&format!(
"file://{}",
self.get_selected_profile().prefix
));
}
} }
} }
@ -754,6 +766,18 @@ impl SimpleComponent for App {
sender.input(Msg::Quit); sender.input(Msg::Quit);
}); });
} }
{
withclones![sender];
stateless_action!(actions, DebugOpenDataAction, {
sender.input(Msg::DebugOpenData);
});
}
{
withclones![sender];
stateless_action!(actions, DebugOpenPrefixAction, {
sender.input(Msg::DebugOpenPrefix);
});
}
{ {
withclones![sender]; withclones![sender];
actions.add_action(RelmAction::<DebugViewToggleAction>::new_stateful( actions.add_action(RelmAction::<DebugViewToggleAction>::new_stateful(
@ -803,3 +827,6 @@ new_stateless_action!(pub BuildProfileCleanDebugAction, AppActionGroup, "buildpr
new_stateless_action!(pub ConfigFbtAction, AppActionGroup, "configfbt"); new_stateless_action!(pub ConfigFbtAction, AppActionGroup, "configfbt");
new_stateless_action!(pub QuitAction, AppActionGroup, "quit"); new_stateless_action!(pub QuitAction, AppActionGroup, "quit");
new_stateful_action!(pub DebugViewToggleAction, AppActionGroup, "debugviewtoggle", (), bool); new_stateful_action!(pub DebugViewToggleAction, AppActionGroup, "debugviewtoggle", (), bool);
new_stateless_action!(pub DebugOpenDataAction, AppActionGroup, "debugopendata");
new_stateless_action!(pub DebugOpenPrefixAction, AppActionGroup, "debugopenprefix");

View file

@ -1,5 +1,6 @@
use crate::log_level::LogLevel; use crate::log_level::LogLevel;
use crate::log_parser::MonadoLog; use crate::log_parser::MonadoLog;
use crate::ui::app::{DebugOpenDataAction, DebugOpenPrefixAction};
use crate::withclones; use crate::withclones;
use gtk::prelude::*; use gtk::prelude::*;
use relm4::prelude::*; use relm4::prelude::*;
@ -57,6 +58,15 @@ impl SimpleComponent for DebugView {
type Input = DebugViewMsg; type Input = DebugViewMsg;
type Output = (); type Output = ();
menu! {
debug_menu: {
section! {
"Open Envision _Data Folder" => DebugOpenDataAction,
"Open _Prefix Folder" => DebugOpenPrefixAction,
},
}
}
view! { view! {
gtk::Box { gtk::Box {
set_orientation: gtk::Orientation::Vertical, set_orientation: gtk::Orientation::Vertical,
@ -66,6 +76,11 @@ impl SimpleComponent for DebugView {
set_hexpand: true, set_hexpand: true,
set_vexpand: false, set_vexpand: false,
add_css_class: "flat", add_css_class: "flat",
pack_end: debug_menu_btn = &gtk::MenuButton {
set_icon_name: "view-more-symbolic",
set_tooltip_text: Some("Debug Actions..."),
set_menu_model: Some(&debug_menu),
},
pack_end: search_toggle = &gtk::ToggleButton { pack_end: search_toggle = &gtk::ToggleButton {
set_icon_name: "edit-find-symbolic", set_icon_name: "edit-find-symbolic",
set_tooltip_text: Some("Filter Log"), set_tooltip_text: Some("Filter Log"),

View file

@ -1,4 +1,4 @@
use gtk4::prelude::*; use gtk4::{gio, prelude::*};
pub fn limit_dropdown_width(dd: &gtk4::DropDown, chars: i32) { pub fn limit_dropdown_width(dd: &gtk4::DropDown, chars: i32) {
let mut dd_child = dd let mut dd_child = dd
@ -44,3 +44,9 @@ pub fn warning_heading() -> gtk4::Box {
b b
} }
pub fn open_with_default_handler(uri: &str) {
if let Err(e) = gio::AppInfo::launch_default_for_uri(uri, gio::AppLaunchContext::NONE) {
eprintln!("Error opening uri {}: {}", uri, e)
};
}