aboutsummaryrefslogtreecommitdiff
path: root/src/preferences/pages/templates.rs
diff options
context:
space:
mode:
authorRubén Beltrán del Río <jj@r.bdr.sh>2026-01-17 00:36:49 +0100
committerRubén Beltrán del Río <jj@r.bdr.sh>2026-01-17 02:43:21 +0100
commit17898fbabde35ab346c133114e78614e707c0eca (patch)
tree90f0fd36211c036a507a0af092aac3c5fb8e7ac8 /src/preferences/pages/templates.rs
parent90b12c34debaa4aa816d4e6862cdb4e39c7181e4 (diff)
Add localization
Diffstat (limited to 'src/preferences/pages/templates.rs')
-rw-r--r--src/preferences/pages/templates.rs77
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::<&gtk::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();
-}