Support dconf 0.13.4
[platform/upstream/ibus.git] / conf / dconf / 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) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
5  * Copyright (C) 2008-2010 Red Hat, Inc.
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
23 #include <ibus.h>
24 #include <stdlib.h>
25 #include <locale.h>
26 #include "config-private.h"
27
28 static IBusBus *bus = NULL;
29 static IBusConfigDConf *config = NULL;
30
31 /* options */
32 static gboolean ibus = FALSE;
33 static gboolean verbose = FALSE;
34
35 static const GOptionEntry entries[] =
36 {
37     { "ibus", 'i', 0, G_OPTION_ARG_NONE, &ibus, "component is executed by ibus",
38       NULL },
39     { "verbose", 'v', 0, G_OPTION_ARG_NONE, &verbose, "verbose", NULL },
40     { NULL },
41 };
42
43
44 static void
45 ibus_disconnected_cb (IBusBus  *bus,
46                       gpointer  user_data)
47 {
48     ibus_quit ();
49 }
50
51 static void
52 ibus_dconf_start (void)
53 {
54     ibus_init ();
55     bus = ibus_bus_new ();
56     if (!ibus_bus_is_connected (bus)) {
57         exit (1);
58     }
59     g_signal_connect (bus, "disconnected", G_CALLBACK (ibus_disconnected_cb),
60                       NULL);
61     config = ibus_config_dconf_new (ibus_bus_get_connection (bus));
62     ibus_bus_request_name (bus, IBUS_SERVICE_CONFIG, 0);
63     ibus_main ();
64 }
65
66 gint
67 main (gint argc, gchar **argv)
68 {
69     GError *error = NULL;
70     GOptionContext *context;
71
72     setlocale (LC_ALL, "");
73
74     context = g_option_context_new ("- ibus dconf component");
75
76     g_option_context_add_main_entries (context, entries, "ibus-dconf");
77
78     if (!g_option_context_parse (context, &argc, &argv, &error)) {
79         g_print ("Option parsing failed: %s\n", error->message);
80         exit (-1);
81     }
82
83     ibus_set_log_handler (verbose);
84     ibus_dconf_start ();
85
86     return 0;
87 }