#include #include #include #include #include static GtkWidget *window, *button, *progress, *scrollview, *textview, *vbox; static void finished_cb (SyncGroup *group) { gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress), "Success"); gtk_widget_set_sensitive (button, TRUE); } static void failed_cb (SyncGroup *group, const gchar *error) { finished_cb (group); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress), "Failed"); gtk_text_buffer_set_text (gtk_text_view_get_buffer ( GTK_TEXT_VIEW (textview)), error, -1); gtk_widget_show (scrollview); } static void clicked_cb (GtkButton *button, SyncGroup *group) { gtk_widget_set_sensitive (GTK_WIDGET (button), FALSE); gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress), "Preparing..."); gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress), 0); sync_group_start (group); gtk_widget_hide (scrollview); } static void started_cb (SyncGroup *group) { gtk_progress_bar_set_text (GTK_PROGRESS_BAR (progress), "Synchronising..."); } static void progress_cb (SyncGroup *group, gdouble fraction) { gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (progress), fraction); } int main (int argc, char **argv) { SyncItem *item1, *item2; SyncGroup *group; GOptionContext *context; static gchar *user = NULL; static gchar *pass = NULL; static GOptionEntry entries[] = { { "user", 'u', 0, G_OPTION_ARG_STRING, &user, "GMail user-name", NULL }, { "password", 'p', 0, G_OPTION_ARG_STRING, &pass, "GMail password", NULL }, { NULL } }; context = g_option_context_new ( " - A Google calendar synchronisation tool"); g_option_context_add_main_entries (context, entries, NULL); g_option_context_add_group (context, gtk_get_option_group (TRUE)); g_option_context_parse (context, &argc, &argv, NULL); if ((!user) || (!pass)) { g_error ("No username or password specified"); return 1; } window = gtk_window_new (GTK_WINDOW_TOPLEVEL); vbox = gtk_vbox_new (FALSE, 6); button = gtk_button_new_with_label ("Synchronise"); gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, TRUE, 0); progress = gtk_progress_bar_new (); gtk_box_pack_start (GTK_BOX (vbox), progress, FALSE, TRUE, 0); scrollview = gtk_scrolled_window_new (NULL, NULL); textview = gtk_text_view_new (); gtk_container_add (GTK_CONTAINER (scrollview), textview); gtk_box_pack_start (GTK_BOX (vbox), scrollview, TRUE, TRUE, 0); gtk_container_add (GTK_CONTAINER (window), vbox); item1 = sync_evo2_item_new ("Local", NULL, NULL, NULL); item2 = sync_gcal_item_new ("GCal", user, pass); group = sync_group_new_with_items (item1, item2); gtk_widget_show_all (window); gtk_widget_hide (scrollview); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (clicked_cb), group); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (gtk_main_quit), NULL); g_signal_connect (G_OBJECT (group), "started", G_CALLBACK (started_cb), NULL); g_signal_connect (G_OBJECT (group), "progress", G_CALLBACK (progress_cb), NULL); g_signal_connect (G_OBJECT (group), "finished", G_CALLBACK (finished_cb), NULL); g_signal_connect (G_OBJECT (group), "failed", G_CALLBACK (failed_cb), NULL); gtk_main (); return 0; }