ishcherb / rpms / ibus

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