diff options
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/preference_pages/editor.rs | 1 | ||||
| -rw-r--r-- | src/components/preference_pages/templates.rs | 7 | ||||
| -rw-r--r-- | src/components/preferences_window.rs | 60 |
3 files changed, 48 insertions, 20 deletions
diff --git a/src/components/preference_pages/editor.rs b/src/components/preference_pages/editor.rs index 8fe40f0..0c6bda6 100644 --- a/src/components/preference_pages/editor.rs +++ b/src/components/preference_pages/editor.rs @@ -52,6 +52,7 @@ pub enum EditorAction { ChangeFontDescription(gtk::FontDialogButton), } +#[allow(clippy::cast_possible_truncation)] #[relm4::component(pub)] impl SimpleComponent for Editor { type Init = EditorInit; diff --git a/src/components/preference_pages/templates.rs b/src/components/preference_pages/templates.rs index 0ad4799..4682ab9 100644 --- a/src/components/preference_pages/templates.rs +++ b/src/components/preference_pages/templates.rs @@ -101,6 +101,7 @@ impl SimpleComponent for Templates { add_css_class: "boxed-list", connect_row_selected[sender] => move |_, row| { if let Some(row) = row { + #[allow(clippy::cast_sign_loss)] let index = row.index() as usize; sender.input(TemplatesAction::SelectTemplate(index)); } @@ -433,7 +434,9 @@ impl Templates { guard.drop(); let widget = self.template_rows.widget(); - let potential_row_widget = widget.row_at_index(index as i32); - widget.select_row(potential_row_widget.as_ref()); + if let Ok(gtk_index) = i32::try_from(index) { + let potential_row_widget = widget.row_at_index(gtk_index); + widget.select_row(potential_row_widget.as_ref()); + } } } diff --git a/src/components/preferences_window.rs b/src/components/preferences_window.rs index 0fb7d63..29e42fe 100644 --- a/src/components/preferences_window.rs +++ b/src/components/preferences_window.rs @@ -146,8 +146,8 @@ impl SimpleComponent for PreferencesWindow { } PreferencesAction::ImportFromFile(path) => { if storage::import_from_file(&mut self.preferences, &path).is_ok() { - self.sync_ui_from_preferences(); self.save_and_notify(&sender); + Self::sync_ui_from_preferences(&sender); } } PreferencesAction::ExportToFile(path) => { @@ -155,8 +155,8 @@ impl SimpleComponent for PreferencesWindow { } PreferencesAction::ResetToDefaults => { self.preferences = UserPreferences::default(); - self.sync_ui_from_preferences(); self.save_and_notify(&sender); + Self::sync_ui_from_preferences(&sender); } PreferencesAction::SetShowMapBackground(show_background) => { self.preferences.show_map_background = show_background; @@ -207,24 +207,13 @@ impl SimpleComponent for PreferencesWindow { self.save_and_notify(&sender); } PreferencesAction::SetCustomEditorFontName(font_name) => { - self.preferences - .custom_editor_font_name - .clone_from(&font_name); - self.editor_page - .emit(preference_pages::EditorAction::SetCustomFont(font_name)); - self.save_and_notify(&sender); + self.handle_set_custom_editor_font_name(font_name, &sender); } PreferencesAction::SetEditorFontSize(font_size) => { - self.preferences.editor_font_size = font_size; - self.editor_page - .emit(preference_pages::EditorAction::SetFontSize(font_size)); - self.save_and_notify(&sender); + self.handle_set_editor_font_size(font_size, &sender); } PreferencesAction::SetSoftWrapLines(soft_wrap_lines) => { - self.preferences.soft_wrap_lines = soft_wrap_lines; - self.editor_page - .emit(preference_pages::EditorAction::SetSoftWrap(soft_wrap_lines)); - self.save_and_notify(&sender); + self.handle_set_soft_wrap_lines(soft_wrap_lines, &sender); } PreferencesAction::AddTemplate(name) => self.handle_add_template(name, &sender), PreferencesAction::RemoveTemplate(id) => self.handle_remove_template(id, &sender), @@ -259,8 +248,12 @@ impl PreferencesWindow { .ok(); } - // TODO: Figure out how to best do this with messages. - fn sync_ui_from_preferences(&mut self) {} + // This is a lazy placeholder. I'd love if these values were easy + // to cascade, maybe they can but I don't know how yet. Anyway, + // closing and re-opening the window works just as well. + fn sync_ui_from_preferences(sender: &ComponentSender<Self>) { + sender.output(Action::ReloadPreferencesWindow).ok(); + } fn handle_add_template(&mut self, name: String, sender: &ComponentSender<Self>) { let template = Template::new(name, String::new(), false); @@ -391,6 +384,37 @@ impl PreferencesWindow { } } + fn handle_set_soft_wrap_lines( + &mut self, + soft_wrap_lines: bool, + sender: &ComponentSender<Self>, + ) { + self.preferences.soft_wrap_lines = soft_wrap_lines; + self.editor_page + .emit(preference_pages::EditorAction::SetSoftWrap(soft_wrap_lines)); + self.save_and_notify(sender); + } + + fn handle_set_editor_font_size(&mut self, font_size: f64, sender: &ComponentSender<Self>) { + self.preferences.editor_font_size = font_size; + self.editor_page + .emit(preference_pages::EditorAction::SetFontSize(font_size)); + self.save_and_notify(sender); + } + + fn handle_set_custom_editor_font_name( + &mut self, + font_name: String, + sender: &ComponentSender<Self>, + ) { + self.preferences + .custom_editor_font_name + .clone_from(&font_name); + self.editor_page + .emit(preference_pages::EditorAction::SetCustomFont(font_name)); + self.save_and_notify(sender); + } + // Initializes the breakpoint logic fn init_breakpoints(root: &adw::Window, widgets: &PreferencesWindowWidgets) { let breakpoint = adw::Breakpoint::new(adw::BreakpointCondition::new_length( |