From fe1ec8a1b6f56ceda1f3f4bbb931cce29d946ed9 Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Fri, 16 Mar 2012 21:00:28 +0900 Subject: [PATCH] Set the custom font in ui.gtk3.CandidatePanel. --- ui/gtk3/candidatearea.vala | 23 +++++++++++++++++++++++ ui/gtk3/candidatepanel.vala | 19 +++++++++++++++++++ ui/gtk3/panel.vala | 41 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+), 0 deletions(-) diff --git a/ui/gtk3/candidatearea.vala b/ui/gtk3/candidatearea.vala index 85a830d..5d0e8f7 100644 --- a/ui/gtk3/candidatearea.vala +++ b/ui/gtk3/candidatearea.vala @@ -33,6 +33,7 @@ class CandidateArea : Gtk.Box { private IBus.Text[] m_ibus_candidates; private uint m_focus_candidate; private bool m_show_cursor; + private Pango.FontDescription m_font_desc; private const string LABELS[] = { "1.", "2.", "3.", "4.", "5.", "6.", "7.", "8.", @@ -240,6 +241,28 @@ class CandidateArea : Gtk.Box { hbox.pack_start(prev_button, false, false, 0); hbox.pack_start(next_button, false, false, 0); } + + udpate_label_font (); + } + + private void udpate_label_font () { + for (int i = 0; i < m_labels.length; i++) { + m_labels[i].override_font(m_font_desc); + } + + for (int i = 0; i < m_candidates.length; i++) { + m_candidates[i].override_font(m_font_desc); + } + } + + public void set_custom_font(string? font_name) { + if (font_name == null) { + m_font_desc = null; + } else { + m_font_desc = Pango.FontDescription.from_string (font_name); + } + + udpate_label_font (); } } diff --git a/ui/gtk3/candidatepanel.vala b/ui/gtk3/candidatepanel.vala index a029e8f..721db18 100644 --- a/ui/gtk3/candidatepanel.vala +++ b/ui/gtk3/candidatepanel.vala @@ -32,6 +32,7 @@ public class CandidatePanel : Gtk.HBox{ private Gtk.Label m_aux_label; private CandidateArea m_candidate_area; private HSeparator m_hseparator; + private Pango.FontDescription m_font_desc; private Gdk.Rectangle m_cursor_location; @@ -268,4 +269,22 @@ public class CandidatePanel : Gtk.HBox{ move(x, y); } + + public void set_custom_font(string? font_name) { + if (font_name == null) { + m_font_desc = null; + } else { + m_font_desc = Pango.FontDescription.from_string (font_name); + } + + if (m_preedit_label != null) { + m_preedit_label.override_font(m_font_desc); + } + + if (m_aux_label != null) { + m_aux_label.override_font(m_font_desc); + } + + m_candidate_area.set_custom_font(font_name); + } } diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala index 53789d2..d927491 100644 --- a/ui/gtk3/panel.vala +++ b/ui/gtk3/panel.vala @@ -86,6 +86,36 @@ class Panel : IBus.PanelService { keybinding_manager.unbind(ACCELERATOR_SWITCH_IME_BACKWARD); } + private void set_custom_font() { + bool use_custom_font = false; + GLib.Variant var_use_custom_font = m_config.get_value("panel", + "use_custom_font"); + + if (var_use_custom_font != null) { + use_custom_font = var_use_custom_font.get_boolean(); + } + + if (use_custom_font == false) { + m_candidate_panel.set_custom_font(null); + return; + } + + string font_name = null; + GLib.Variant var_custom_font = m_config.get_value("panel", + "custom_font"); + if (var_custom_font != null) { + font_name = var_custom_font.dup_string(); + } + + if (font_name == null) { + GLib.Value value = GLib.Value(typeof(string)); + Gtk.Settings.get_default().get_property("gtk-font-name", ref value); + font_name = value.dup_string(); + } + + m_candidate_panel.set_custom_font(font_name); + } + public void set_config(IBus.Config config) { if (m_config != null) { m_config.value_changed.disconnect(config_value_changed_cb); @@ -98,11 +128,15 @@ class Panel : IBus.PanelService { m_config.value_changed.connect(config_value_changed_cb); m_config.watch("general", "preload_engines"); m_config.watch("general", "engines_order"); + m_config.watch("panel", "custom_font"); + m_config.watch("panel", "use_custom_font"); update_engines(m_config.get_value("general", "preload_engines"), m_config.get_value("general", "engines_order")); } else { update_engines(null, null); } + + set_custom_font(); } private void switch_engine(int i, bool force = false) { @@ -150,6 +184,13 @@ class Panel : IBus.PanelService { Variant variant) { if (section == "general" && name == "preload_engines") { update_engines(variant, null); + return; + } + + if (section == "panel" && (name == "custom_font" || + name == "use_custom_font")) { + set_custom_font(); + return; } } -- 1.7.9.1 From 2ce9e82bd492d6addbd629955f9c0399753e8fa2 Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Sun, 18 Mar 2012 18:14:06 +0900 Subject: [PATCH] Show language id on ibus-ui-gtk3.switcher window. --- ui/gtk3/switcher.vala | 15 ++++++++++++++- 1 files changed, 14 insertions(+), 1 deletions(-) diff --git a/ui/gtk3/switcher.vala b/ui/gtk3/switcher.vala index 131cad5..73b58d2 100644 --- a/ui/gtk3/switcher.vala +++ b/ui/gtk3/switcher.vala @@ -155,9 +155,22 @@ class Switcher : Gtk.Window { for (int i = 0; i < m_engines.length; i++) { var index = i; var engine = m_engines[i]; - var button = new Gtk.Button.with_label(engine.get_longname()); + var longname = engine.get_longname(); + var language = engine.get_language(); + var symbol = engine.get_symbol(); + var id = language; + + if (id.length > 2) { + id = id[0:2]; + } + if (symbol.length != 0) { + id = symbol; + } + var label = "%-15s %s".printf(longname, id); + var button = new Gtk.Button.with_label(label); button.set_image(new IconWidget(engine.get_icon(), width)); button.set_relief(Gtk.ReliefStyle.NONE); + button.set_alignment(1.0f, 0.0f); button.show(); button.enter_notify_event.connect((e) => { -- 1.7.9.1