feat: make env var description selectable
Some checks failed
/ cargo-fmtcheck (push) Has been cancelled
/ cargo-clippy (push) Has been cancelled
/ cargo-test (push) Has been cancelled
/ appimage (push) Has been cancelled

This commit is contained in:
Gabriele Musco 2024-12-21 11:35:38 +01:00
commit e69a7a9bd6

View file

@ -12,6 +12,7 @@ use adw::prelude::*;
use gtk::glib::{self, clone}; use gtk::glib::{self, clone};
use relm4::{factory::AsyncFactoryVecDeque, prelude::*}; use relm4::{factory::AsyncFactoryVecDeque, prelude::*};
use std::{cell::RefCell, path::PathBuf, rc::Rc}; use std::{cell::RefCell, path::PathBuf, rc::Rc};
use tracing::warn;
#[tracker::track] #[tracker::track]
pub struct ProfileEditor { pub struct ProfileEditor {
@ -546,17 +547,30 @@ impl SimpleComponent for ProfileEditor {
let profile = Rc::new(RefCell::new(init.profile)); let profile = Rc::new(RefCell::new(init.profile));
let prof = profile.clone(); let prof = profile.clone();
let env_var_prefs_group = {
let pg = adw::PreferencesGroup::builder()
.title("Environment Variables")
.description(ENV_VAR_DESCRIPTIONS_AS_PARAGRAPH.as_str())
.header_suffix(&add_env_var_btn)
.build();
if let Some(desc) = pg
.first_child()
.and_then(|c| c.first_child())
.and_then(|c| c.first_child())
.and_then(|c| c.last_child())
.and_downcast::<gtk::Label>()
{
desc.set_selectable(true);
} else {
warn!("failed to make env var preference group description selectable, please open a bug report");
}
pg
};
let mut model = Self { let mut model = Self {
profile, profile,
win: None, win: None,
env_rows: AsyncFactoryVecDeque::builder() env_rows: AsyncFactoryVecDeque::builder()
.launch( .launch(env_var_prefs_group)
adw::PreferencesGroup::builder()
.title("Environment Variables")
.description(ENV_VAR_DESCRIPTIONS_AS_PARAGRAPH.as_str())
.header_suffix(&add_env_var_btn)
.build(),
)
.forward(sender.input_sender(), |msg| match msg { .forward(sender.input_sender(), |msg| match msg {
EnvVarModelOutMsg::Changed(name, value) => { EnvVarModelOutMsg::Changed(name, value) => {
ProfileEditorMsg::EnvVarChanged(name, value) ProfileEditorMsg::EnvVarChanged(name, value)