diff options
| author | Rubén Beltrán del Río <jj@r.bdr.sh> | 2026-01-17 00:36:49 +0100 |
|---|---|---|
| committer | Rubén Beltrán del Río <jj@r.bdr.sh> | 2026-01-17 02:43:21 +0100 |
| commit | 17898fbabde35ab346c133114e78614e707c0eca (patch) | |
| tree | 90f0fd36211c036a507a0af092aac3c5fb8e7ac8 /src/preferences/pages/templates.rs | |
| parent | 90b12c34debaa4aa816d4e6862cdb4e39c7181e4 (diff) | |
Add localization
Diffstat (limited to 'src/preferences/pages/templates.rs')
| -rw-r--r-- | src/preferences/pages/templates.rs | 77 |
1 files changed, 23 insertions, 54 deletions
diff --git a/src/preferences/pages/templates.rs b/src/preferences/pages/templates.rs index da3cafc..acc679f 100644 --- a/src/preferences/pages/templates.rs +++ b/src/preferences/pages/templates.rs @@ -22,6 +22,8 @@ use relm4::gtk; use sourceview5::prelude::*; use uuid::Uuid; +use crate::tr; + use super::super::models::{Template, UserPreferences}; use super::super::window::PreferencesInput; @@ -49,7 +51,7 @@ impl TemplatesPage { let sidebar = gtk::Box::new(gtk::Orientation::Vertical, 5); sidebar.set_width_request(200); - let sidebar_label = gtk::Label::new(Some("Templates")); + let sidebar_label = gtk::Label::new(Some(&tr!("preferences.templates.title"))); sidebar_label.add_css_class("heading"); sidebar_label.set_halign(gtk::Align::Start); sidebar_label.set_margin_start(5); @@ -72,18 +74,19 @@ impl TemplatesPage { button_box.set_margin_top(5); let add_button = gtk::Button::from_icon_name("list-add-symbolic"); - add_button.set_tooltip_text(Some("Add template")); + add_button.set_tooltip_text(Some(&tr!("preferences.templates.help.add"))); { let sender = sender.clone(); add_button.connect_clicked(move |_| { - // Show a simple dialog to get the template name - show_add_template_dialog(sender.clone()); + sender.emit(PreferencesInput::AddTemplate( + tr!("dialog.template.default_label"), + )); }); } button_box.append(&add_button); let remove_button = gtk::Button::from_icon_name("list-remove-symbolic"); - remove_button.set_tooltip_text(Some("Remove template")); + remove_button.set_tooltip_text(Some(&tr!("preferences.templates.help.remove"))); { let sender = sender.clone(); let selected_id = selected_id.clone(); @@ -108,7 +111,7 @@ impl TemplatesPage { let editor_box = gtk::Box::new(gtk::Orientation::Vertical, 5); editor_box.set_hexpand(true); - let editor_label = gtk::Label::new(Some("Template Content")); + let editor_label = gtk::Label::new(Some(&tr!("preferences.templates.content"))); editor_label.add_css_class("heading"); editor_label.set_halign(gtk::Align::Start); editor_box.append(&editor_label); @@ -245,10 +248,10 @@ impl TemplatesPage { let default_button = gtk::Button::new(); if template.is_default { default_button.set_icon_name("emblem-default-symbolic"); - default_button.set_tooltip_text(Some("Default template")); + default_button.set_tooltip_text(Some(&tr!("preferences.templates.help.default"))); } else { default_button.set_icon_name("radio-symbolic"); - default_button.set_tooltip_text(Some("Set as default")); + default_button.set_tooltip_text(Some(&tr!("preferences.templates.help.set_as_default"))); } default_button.add_css_class("flat"); { @@ -260,54 +263,20 @@ impl TemplatesPage { } hbox.append(&default_button); - // Template name - let name_label = gtk::Label::new(Some(&template.name)); - name_label.set_hexpand(true); - name_label.set_xalign(0.0); - hbox.append(&name_label); + // Template name (editable) + let name_entry = gtk::Entry::new(); + name_entry.set_text(&template.name); + name_entry.set_hexpand(true); + { + let sender = self.sender.clone(); + let id = template.id; + name_entry.connect_changed(move |entry| { + sender.emit(PreferencesInput::SetTemplateName(id, entry.text().to_string())); + }); + } + hbox.append(&name_entry); row.set_child(Some(&hbox)); row } } - -fn show_add_template_dialog(sender: Sender<PreferencesInput>) { - let dialog = gtk::Dialog::with_buttons( - Some("New Template"), - None::<>k::Window>, - gtk::DialogFlags::MODAL | gtk::DialogFlags::DESTROY_WITH_PARENT, - &[ - ("Cancel", gtk::ResponseType::Cancel), - ("Add", gtk::ResponseType::Accept), - ], - ); - dialog.set_default_response(gtk::ResponseType::Accept); - - let content = dialog.content_area(); - content.set_margin_top(10); - content.set_margin_bottom(10); - content.set_margin_start(10); - content.set_margin_end(10); - content.set_spacing(10); - - let label = gtk::Label::new(Some("Template name:")); - label.set_halign(gtk::Align::Start); - content.append(&label); - - let entry = gtk::Entry::new(); - entry.set_placeholder_text(Some("My Template")); - entry.set_activates_default(true); - content.append(&entry); - - dialog.connect_response(move |dialog, response| { - if response == gtk::ResponseType::Accept { - let name = entry.text().to_string(); - if !name.is_empty() { - sender.emit(PreferencesInput::AddTemplate(name)); - } - } - dialog.close(); - }); - - dialog.present(); -} |