summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorPeng Huang <shawn.p.huang@gmail.com>2011-12-15 12:05:49 -0500
committerPeng Huang <shawn.p.huang@gmail.com>2012-02-21 11:51:38 -0500
commitba7496ec4bb4c1ed16e450bf7344addc3dfad24d (patch)
treeb10a1c05d1baad4b6d2f89d5789ee76c52939ac7 /tools
parent3e114c4cbbebbfdf89fd36dc74ed4cdb6f5004c2 (diff)
WIP ibus list-engine command
Diffstat (limited to 'tools')
-rw-r--r--tools/main.vala45
1 files changed, 37 insertions, 8 deletions
diff --git a/tools/main.vala b/tools/main.vala
index bfdee069..7af49eaa 100644
--- a/tools/main.vala
+++ b/tools/main.vala
@@ -20,35 +20,63 @@
* Boston, MA 02111-1307 USA
*/
using GLib;
+using IBus;
+
string opt1 = null;
-int list_engine(string[] argv) throws Error {
- const OptionEntry[] options = {
+class EngineList {
+ public EngineDesc[] data = {};
+}
+
+int list_engine(string[] argv) {
+ const OptionEntry[] options = {
{ "opt1", 0, 0, OptionArg.STRING, out opt1, "opt1 desc", "opt2 short desc" },
{ null }
};
var option = new OptionContext("command [OPTIONS]");
option.add_main_entries(options, "ibus");
- option.parse(ref argv);
- foreach (var v in argv) {
- debug("v = %s", v);
+ try {
+ option.parse(ref argv);
+ } catch (OptionError e) {
+ }
+
+ IBus.init();
+ var bus = new IBus.Bus();
+
+ var engines = bus.list_engines();
+
+ var map = new HashTable<string, EngineList>(GLib.str_hash, GLib.str_equal);
+
+ foreach (var engine in engines) {
+ var list = map.get(engine.get_language());
+ if (list == null) {
+ list = new EngineList();
+ map.insert(engine.get_language(), list);
+ }
+ list.data += engine;
+ }
+
+ foreach (var language in map.get_keys()) {
+ var list = map.get(language);
+ print("language: %s\n", IBus.get_language_name(language));
+ foreach (var engine in list.data) {
+ print(" %s - %s\n", engine.get_name(), engine.get_longname());
+ }
}
return 0;
}
-delegate int EntryFunc(string[] argv) throws Error;
+delegate int EntryFunc(string[] argv);
struct CommandEntry {
string name;
EntryFunc entry;
}
-
-
public int main(string[] argv) {
const CommandEntry commands[] = {
{ "list-engine", list_engine }
@@ -65,3 +93,4 @@ public int main(string[] argv) {
return -1;
}
+