** along with Sigil. If not, see <http://www.gnu.org/licenses/>.
**
*************************************************************************/
+#include <dbus/dbus.h>
+#include <dbus/dbus-glib.h>
+#include <glib.h>
+#include <gconf/gconf-client.h>
+
+#include "dbus-callback.h"
+#include "gconf-change-cb.h"
+
+static DBusHandlerResult
+dbus_filter (DBusConnection *connection, DBusMessage *message, void *user_data)
+{
+ const gchar *sig_mumber;
+ sig_mumber = dbus_message_get_member(message);
+#ifdef SWITCH
+ switch()
+ {
+ case "init_string":
+ get_ui_string(message, connection);
+ break;
+ case "user_select":
+ user_select_cb(message);
+ break;
+ case "click_backspace":
+ backspace_key_cb();
+ break;
+ case "click_priv":
+ priv_click_cb();
+ break;
+ case "click_next":
+ next_click_cb();
+ break;
+ case "click_space":
+ space_key_cb();
+ break;
+ case "click_enter":
+ enter_key_cb();
+ break;
+ default:
+ printf("Message quit received\n");
+ GMainLoop *loop = (GMainLoop*) user_data;
+ g_main_loop_quit(loop);
+ break;
+ }
+#endif
+ g_print("recived message mumber: %s\n", sig_mumber);
+
+ if(sig_mumber == NULL)
+ g_printf("recived NULL signal\n");
+
+ else if (!strcmp(sig_mumber,"init_string"))
+ {
+ get_ui_string(message,connection);
+ g_printf("signal init string");
+ }
+
+ else if (!strcmp(sig_mumber, "user_select"))
+ user_select_cb(message);
+
+ else if (!strcmp(sig_mumber,"click_backspace"))
+ backspace_key_cb();
+
+ else if (!strcmp(sig_mumber, "click_priv"))
+ {
+ priv_click_cb();
+ g_printf("signal click priv");
+ }
+
+ else if (!strcmp(sig_mumber,"click_next"))
+ next_click_cb();
+
+ else if (!strcmp(sig_mumber,"click_space"))
+ space_key_cb();
+
+ else if (!strcmp(sig_mumber,"click_enter"))
+ enter_key_cb();
+
+ else
+ g_printf("signal cannot resolve\n");
+
+ return DBUS_HANDLER_RESULT_HANDLED;
+}
+
+int main()
+{
+ DBusConnection *connection;
+ DBusError error;
+ GConfClient *client;
+
+ /* glib main loop */
+ GMainLoop *loop;
+ loop = g_main_loop_new(NULL,FALSE);
+
+ dbus_error_init(&error);
+ connection = dbus_bus_get(DBUS_BUS_SESSION, &error);
+ if ( dbus_error_is_set(&error) )
+ {
+ g_printf("Error connecting to the daemon bus: %s",error.message);
+ dbus_error_free(&error);
+ return 1;
+ }
+ dbus_bus_add_match (connection,
+ "type='signal',interface='org.ifanr.mim.mainui'",NULL);
+ dbus_connection_add_filter (connection, dbus_filter, loop, NULL);
+ /* dbus-glib call */
+ dbus_connection_setup_with_g_main(connection,NULL);
+
+ client = gconf_client_get_default ();
+ /* Add our directory to the list of directories the GConfClient will
+ * watch.
+ */
+ gconf_client_add_dir (client,
+ PATH,
+ GCONF_CLIENT_PRELOAD_NONE,
+ NULL);
+
+ /* Listen to changes to our key. */
+ gconf_client_notify_add (client,
+ KEY,
+ gconf_notify_func,
+ NULL,/*user data*/
+ NULL,
+ NULL);
+
+ /* run glib main loop */
+ g_main_loop_run(loop);
+ return 0;
+}
+
+