51dfd7f1d111ee43f19386b8e3da73f1be752f78
[platform/upstream/ibus.git] / memconf / main.c
1 /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
2 /* vim:set et sts=4: */
3 /* ibus - The Input Bus
4  * Copyright (c) 2010, Google Inc. All rights reserved.
5  * Copyright (C) 2010 Peng Huang <shawn.p.huang@gmail.com>
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the
19  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20  * Boston, MA 02111-1307, USA.
21  */
22 #include <ibus.h>
23 #include <stdlib.h>
24 #include <locale.h>
25 #include "config.h"
26
27 static IBusBus *bus = NULL;
28 static IBusConfigMemconf *config = NULL;
29
30 /* options */
31 static gboolean ibus = FALSE;
32 static gboolean verbose = FALSE;
33
34 static const GOptionEntry entries[] =
35 {
36     { "ibus", 'i', 0, G_OPTION_ARG_NONE, &ibus, "component is executed by ibus", NULL },
37     { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "verbose", NULL },
38     { NULL },
39 };
40
41
42 static void
43 ibus_disconnected_cb (IBusBus  *bus,
44                       gpointer  user_data)
45 {
46     ibus_quit ();
47 }
48
49 static void
50 ibus_memconf_start (void)
51 {
52     ibus_init ();
53     bus = ibus_bus_new ();
54     if (!ibus_bus_is_connected (bus)) {
55         exit (-1);
56     }
57     g_signal_connect (bus, "disconnected", G_CALLBACK (ibus_disconnected_cb), NULL);
58     config = ibus_config_memconf_new (ibus_bus_get_connection (bus));
59     ibus_bus_request_name (bus, IBUS_SERVICE_CONFIG, 0);
60     ibus_main ();
61 }
62
63 gint
64 main (gint argc, gchar **argv)
65 {
66     GError *error = NULL;
67     GOptionContext *context;
68
69     setlocale (LC_ALL, "");
70
71     context = g_option_context_new ("- ibus memconf component");
72
73     g_option_context_add_main_entries (context, entries, "ibus-memconf");
74
75     if (!g_option_context_parse (context, &argc, &argv, &error)) {
76         g_print ("Option parsing failed: %s\n", error->message);
77         exit (-1);
78     }
79
80     ibus_memconf_start ();
81
82     return 0;
83 }