From 4aa154345da4c2f601e83f20811b769900602a9f Mon Sep 17 00:00:00 2001 From: teamcons Date: Tue, 10 Mar 2026 22:21:49 +0100 Subject: [PATCH 1/4] draft for a heatmap --- data/inscriptions.gschema.xml.in | 5 +++++ data/meson.build | 1 + src/Constants.vala | 1 + src/Objects/DDModel.vala | 14 +++++++++++++- 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/data/inscriptions.gschema.xml.in b/data/inscriptions.gschema.xml.in index aeed32f..bfe98d9 100644 --- a/data/inscriptions.gschema.xml.in +++ b/data/inscriptions.gschema.xml.in @@ -69,5 +69,10 @@ Whether to highlight both source and target Highlights alternating colours on both source and target in the TextView + + ["", "", "", "", ""] + Five last selected language code + A list of recent selected language codes to make obvious in the UI + \ No newline at end of file diff --git a/data/meson.build b/data/meson.build index 334999f..65eb1ab 100644 --- a/data/meson.build +++ b/data/meson.build @@ -73,6 +73,7 @@ if not windows_build # Inject some variables into the metainfo file before merging in the translations appstream_conf = configuration_data() appstream_conf.set('APP_ID', app_id) + appstream_conf.set('APP_NAME', app_name) appstream_conf.set('GETTEXT_PACKAGE', meson.project_name()) appstream_file_in = configure_file( input: 'inscriptions.metainfo.xml.in.in', diff --git a/src/Constants.vala b/src/Constants.vala index 868a376..f1bb2fd 100644 --- a/src/Constants.vala +++ b/src/Constants.vala @@ -42,6 +42,7 @@ namespace Inscriptions { public const string KEY_VERTICAL_LAYOUT = "vertical-layout"; public const string KEY_AUTO_TRANSLATE = "auto-translate"; public const string KEY_HIGHLIGHT = "highlight"; + public const string KEY_HEATMAP = "language-heatmap"; // Backend public const string KEY_SOURCE_LANGUAGE = "source-language"; diff --git a/src/Objects/DDModel.vala b/src/Objects/DDModel.vala index 668c691..2d17a39 100644 --- a/src/Objects/DDModel.vala +++ b/src/Objects/DDModel.vala @@ -10,7 +10,7 @@ */ public class Inscriptions.DDModel : Object { - static string[] heatmap {get; set;} + static string[] heatmap; public GLib.ListStore model {get; set;} public Gtk.SignalListItemFactory factory_header {get; set;} @@ -20,6 +20,8 @@ public class Inscriptions.DDModel : Object { public signal void selection_changed (string language_code_selected); public DDModel () { + //heatmap = Application.settings.get_strv (KEY_HEATMAP); + // The Langs will populate this thing model = new GLib.ListStore(typeof(Lang)); @@ -49,7 +51,17 @@ public class Inscriptions.DDModel : Object { var item = list_item.get_child () as Gtk.Label; item.label = item_language.name; + // We save up a heatmap + heatmap = {item_language.code, heatmap[0], heatmap[1], heatmap[2], heatmap[3]}; + //Application.settings.set_strv (KEY_HEATMAP, heatmap); + + print ("\n"); + foreach (var element in heatmap) { + print (element + "\n"); + } + // Tell everyone language changed + // Items are connected to this and get their shit together out of it selection_changed (item_language.code); //print ("switched to: %s %s\n".printf (item_language.name, item_language.code)); } From aff1b781a57bb842e086bb712fbc0b8eabd7f8e3 Mon Sep 17 00:00:00 2001 From: teamcons Date: Wed, 11 Mar 2026 00:07:53 +0100 Subject: [PATCH 2/4] working nonredundant list --- src/Objects/DDModel.vala | 17 ++++++++++++----- src/Widgets/LanguageDropDown.vala | 2 +- src/Widgets/LanguageItem.vala | 4 +++- src/Widgets/LanguageSelectionBox.vala | 2 +- 4 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/Objects/DDModel.vala b/src/Objects/DDModel.vala index 2d17a39..ab97fa9 100644 --- a/src/Objects/DDModel.vala +++ b/src/Objects/DDModel.vala @@ -10,7 +10,7 @@ */ public class Inscriptions.DDModel : Object { - static string[] heatmap; + static string[] heatmap = {"", "", "", "", ""}; public GLib.ListStore model {get; set;} public Gtk.SignalListItemFactory factory_header {get; set;} @@ -51,13 +51,20 @@ public class Inscriptions.DDModel : Object { var item = list_item.get_child () as Gtk.Label; item.label = item_language.name; - // We save up a heatmap - heatmap = {item_language.code, heatmap[0], heatmap[1], heatmap[2], heatmap[3]}; - //Application.settings.set_strv (KEY_HEATMAP, heatmap); + // We save up a heatmap. It is rebuilt from scratch to avoid redundant language codes + // We could check beforehand and gate this but it would affect lisibility + string[] temp_heatmap = {item_language.code}; + foreach (var recent_language_code in heatmap) { + if (recent_language_code != item_language.code) { + temp_heatmap += recent_language_code; + } + } + heatmap = temp_heatmap; + //Application.settings.set_strv (KEY_HEATMAP, heatmap); print ("\n"); foreach (var element in heatmap) { - print (element + "\n"); + print (element + " "); } // Tell everyone language changed diff --git a/src/Widgets/LanguageDropDown.vala b/src/Widgets/LanguageDropDown.vala index 5206cb8..5c5fd38 100644 --- a/src/Widgets/LanguageDropDown.vala +++ b/src/Widgets/LanguageDropDown.vala @@ -44,7 +44,7 @@ public class Inscriptions.LanguageDropDown : Granite.Bin { private void on_selected_language () { var selected_lang = dropdown.get_selected_item () as Lang; - print ("\nSELECTED %s\n".printf (selected_lang.code)); + //print ("\nSELECTED %s\n".printf (selected_lang.code)); language_changed (selected_lang.code); } diff --git a/src/Widgets/LanguageItem.vala b/src/Widgets/LanguageItem.vala index caa9cc3..b67be20 100644 --- a/src/Widgets/LanguageItem.vala +++ b/src/Widgets/LanguageItem.vala @@ -28,7 +28,8 @@ public class Inscriptions.LanguageItem : Gtk.Box { construct { selected_emblem = new Gtk.Image.from_icon_name ("emblem-default-symbolic") { visible = false, - halign = Gtk.Align.END + halign = Gtk.Align.END, + margin_end = 15 }; selected_emblem.add_css_class (Granite.STYLE_CLASS_FLAT); @@ -51,6 +52,7 @@ public class Inscriptions.LanguageItem : Gtk.Box { } public void on_position_changed (string language_code_selected) { + print ("ADJUST! "); if (language_code_selected == language_code) { label_widget.add_css_class ("bold"); diff --git a/src/Widgets/LanguageSelectionBox.vala b/src/Widgets/LanguageSelectionBox.vala index 19069b7..eb3f713 100644 --- a/src/Widgets/LanguageSelectionBox.vala +++ b/src/Widgets/LanguageSelectionBox.vala @@ -74,7 +74,7 @@ public class Inscriptions.LanguageSelectionBox : Gtk.Box { dropdown_target.selected = code; } - print ("Set " + code + " Source?" + is_source.to_string () + "\n"); + //print ("Set " + code + " Source?" + is_source.to_string () + "\n"); } private string get_selected_language (bool is_source) { From 358079da0377ea3f9162a5bf3f2f1b527479aeca Mon Sep 17 00:00:00 2001 From: teamcons Date: Wed, 11 Mar 2026 00:23:19 +0100 Subject: [PATCH 3/4] working persistency --- src/Objects/DDModel.vala | 7 ++++++- src/Widgets/LanguageItem.vala | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/Objects/DDModel.vala b/src/Objects/DDModel.vala index ab97fa9..f8bb94c 100644 --- a/src/Objects/DDModel.vala +++ b/src/Objects/DDModel.vala @@ -10,7 +10,7 @@ */ public class Inscriptions.DDModel : Object { - static string[] heatmap = {"", "", "", "", ""}; + static string[] heatmap = Application.settings.get_strv (KEY_HEATMAP); public GLib.ListStore model {get; set;} public Gtk.SignalListItemFactory factory_header {get; set;} @@ -58,8 +58,13 @@ public class Inscriptions.DDModel : Object { if (recent_language_code != item_language.code) { temp_heatmap += recent_language_code; } + + if (temp_heatmap.length == 5) { + break; + } } heatmap = temp_heatmap; + Application.settings.set_strv (KEY_HEATMAP, heatmap); //Application.settings.set_strv (KEY_HEATMAP, heatmap); print ("\n"); diff --git a/src/Widgets/LanguageItem.vala b/src/Widgets/LanguageItem.vala index b67be20..2ac3c30 100644 --- a/src/Widgets/LanguageItem.vala +++ b/src/Widgets/LanguageItem.vala @@ -52,7 +52,7 @@ public class Inscriptions.LanguageItem : Gtk.Box { } public void on_position_changed (string language_code_selected) { - print ("ADJUST! "); + //print ("ADJUST! "); if (language_code_selected == language_code) { label_widget.add_css_class ("bold"); From 8dba948ac31414ea1d4abf315b55591dcbfc2bf2 Mon Sep 17 00:00:00 2001 From: teamcons Date: Wed, 11 Mar 2026 21:31:57 +0100 Subject: [PATCH 4/4] wording --- src/Widgets/Panes/TargetPane.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Widgets/Panes/TargetPane.vala b/src/Widgets/Panes/TargetPane.vala index 142b585..8b1a12c 100644 --- a/src/Widgets/Panes/TargetPane.vala +++ b/src/Widgets/Panes/TargetPane.vala @@ -24,7 +24,7 @@ public class Inscriptions.TargetPane : Inscriptions.Pane { margin_end = MARGIN_MENU_HALF }; - var placeholder = new Gtk.Label (_("Ready!")) { + var placeholder = new Gtk.Label (_("Ready to translate")) { wrap = true }; placeholder.add_css_class (Granite.STYLE_CLASS_H2_LABEL);