5a3a556513d17d6ee9c189859d6223a460d0377c
[platform/upstream/ibus-hangul.git] / src / main.c
1 /* vim:set et sts=4: */
2 #ifdef HAVE_CONFIG_H
3 #include <config.h>
4 #endif
5
6 #include <ibus.h>
7 #include <stdlib.h>
8 #include <locale.h>
9 #include <hangul.h>
10
11 #include "i18n.h"
12 #include "engine.h"
13
14
15 static IBusBus *bus = NULL;
16 static IBusFactory *factory = NULL;
17
18 /* options */
19 static gboolean ibus = FALSE;
20 static gboolean verbose = FALSE;
21
22 static const GOptionEntry entries[] =
23 {
24     { "ibus", 'i', 0, G_OPTION_ARG_NONE, &ibus, "component is executed by ibus", NULL },
25     { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "verbose", NULL },
26     { NULL },
27 };
28
29
30 static void
31 ibus_disconnected_cb (IBusBus  *bus,
32                       gpointer  user_data)
33 {
34     g_debug ("bus disconnected");
35     ibus_quit ();
36 }
37
38
39 static void
40 start_component (void)
41 {
42     IBusComponent *component;
43
44     ibus_init ();
45
46     bus = ibus_bus_new ();
47     g_signal_connect (bus, "disconnected", G_CALLBACK (ibus_disconnected_cb), NULL);
48
49     ibus_hangul_init (bus);
50
51     component = ibus_component_new ("org.freedesktop.IBus.Hangul",
52                                     N_("Hangul input method"),
53                                     "0.1.0",
54                                     "GPL",
55                                     "Peng Huang <shawn.p.huang@gmail.com>",
56                                     "http://code.google.com/p/ibus/",
57                                     "",
58                                     "ibus-hangul");
59     ibus_component_add_engine (component,
60                                ibus_engine_desc_new ("hangul",
61                                                      N_("Hangul Input Method"),
62                                                      N_("Hangul Input Method"),
63                                                      "ko",
64                                                      "GPL",
65                                                      "Peng Huang <shawn.p.huang@gmail.com>",
66                                                      PKGDATADIR"/icon/ibus-hangul.svg",
67                                                      "us"));
68
69     factory = ibus_factory_new (ibus_bus_get_connection (bus));
70
71     ibus_factory_add_engine (factory, "hangul", IBUS_TYPE_HANGUL_ENGINE);
72
73     if (ibus) {
74         ibus_bus_request_name (bus, "org.freedesktop.IBus.Hangul", 0);
75     }
76     else {
77         ibus_bus_register_component (bus, component);
78     }
79
80     g_object_unref (component);
81
82     ibus_main ();
83
84     ibus_hangul_exit ();
85 }
86
87 int
88 main (gint argc, gchar **argv)
89 {
90     GError *error = NULL;
91     GOptionContext *context;
92
93     setlocale (LC_ALL, "");
94
95     bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
96     bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
97     textdomain(GETTEXT_PACKAGE);
98
99     context = g_option_context_new ("- ibus hangul engine component");
100
101     g_option_context_add_main_entries (context, entries, "ibus-hangul");
102
103     if (!g_option_context_parse (context, &argc, &argv, &error)) {
104         g_print ("Option parsing failed: %s\n", error->message);
105         exit (-1);
106     }
107
108     start_component ();
109     return 0;
110 }