diff options
author | JP Rosevear <jpr@ximian.com> | 2001-03-13 06:40:55 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2001-03-13 06:40:55 +0800 |
commit | 07ea88fad1f4f99caa4d11cb6ac3fe189588e89d (patch) | |
tree | 78c47da3c016e40867b51748d10182b179517669 | |
parent | 8d0a0392cdab12f05ae60e780e63f621ac9a3641 (diff) | |
download | gsoc2013-evolution-07ea88fad1f4f99caa4d11cb6ac3fe189588e89d.tar gsoc2013-evolution-07ea88fad1f4f99caa4d11cb6ac3fe189588e89d.tar.gz gsoc2013-evolution-07ea88fad1f4f99caa4d11cb6ac3fe189588e89d.tar.bz2 gsoc2013-evolution-07ea88fad1f4f99caa4d11cb6ac3fe189588e89d.tar.lz gsoc2013-evolution-07ea88fad1f4f99caa4d11cb6ac3fe189588e89d.tar.xz gsoc2013-evolution-07ea88fad1f4f99caa4d11cb6ac3fe189588e89d.tar.zst gsoc2013-evolution-07ea88fad1f4f99caa4d11cb6ac3fe189588e89d.zip |
PISOCK_INCLUDEDIR has become PISOCK_CFLAGS in gnome-pilot.m4 and remove
2001-03-09 JP Rosevear <jpr@ximian.com>
* conduits/todo/Makefile.am: PISOCK_INCLUDEDIR has become
PISOCK_CFLAGS in gnome-pilot.m4 and remove capplet foo
* conduits/calendar/Makefile.am: ditto
svn path=/trunk/; revision=8651
-rw-r--r-- | calendar/ChangeLog | 7 | ||||
-rw-r--r-- | calendar/conduits/calendar/Makefile.am | 32 | ||||
-rw-r--r-- | calendar/conduits/calendar/calendar-conduit-control-applet.c | 342 | ||||
-rw-r--r-- | calendar/conduits/calendar/e-calendar-conduit-control-applet.desktop.in | 7 | ||||
-rw-r--r-- | calendar/conduits/calendar/e-calendar.conduit.in | 2 | ||||
-rw-r--r-- | calendar/conduits/todo/Makefile.am | 33 | ||||
-rw-r--r-- | calendar/conduits/todo/e-todo-conduit-control-applet.desktop.in | 6 | ||||
-rw-r--r-- | calendar/conduits/todo/todo-conduit-control-applet.c | 341 |
8 files changed, 12 insertions, 758 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 3e720f8077..f114a406ce 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,10 @@ +2001-03-09 JP Rosevear <jpr@ximian.com> + + * conduits/todo/Makefile.am: PISOCK_INCLUDEDIR has become + PISOCK_CFLAGS in gnome-pilot.m4 and remove capplet foo + + * conduits/calendar/Makefile.am: ditto + 2001-03-08 Ettore Perazzoli <ettore@ximian.com> * gui/component-factory.c (factory_fn): Specify a NULL diff --git a/calendar/conduits/calendar/Makefile.am b/calendar/conduits/calendar/Makefile.am index 18f578cfc3..8d8b81a9ee 100644 --- a/calendar/conduits/calendar/Makefile.am +++ b/calendar/conduits/calendar/Makefile.am @@ -5,25 +5,9 @@ INCLUDES = \ -I$(top_builddir)/libical/src/libical \ -I$(top_builddir)/e-util \ $(BONOBO_GNOME_CFLAGS) \ - $(PISOCK_INCLUDEDIR) \ + $(PISOCK_CFLAGS) \ $(GNOME_PILOT_CFLAGS) -# Calendar Capplet -bin_PROGRAMS = e-calendar-conduit-control-applet - -e_calendar_conduit_control_applet_SOURCES = calendar-conduit-control-applet.c - -e_calendar_conduit_control_applet_LDADD = \ - $(CAPPLET_LIBS) \ - $(GNOME_LIBDIR) \ - $(GNOME_PILOT_LIBS) \ - $(PISOCK_LIBS) \ - $(GNOME_CAPPLET_LIBS) \ - $(BONOBO_GNOME_LIBS) \ - $(GNOME_XML_LIB) \ - $(GNOMEUI_LIBS) \ - $(INTLLIBS) - # Calendar Conduit e_calendar_conduitsdir=$(libdir)/gnome-pilot/conduits e_calendar_conduits_LTLIBRARIES = libecalendar_conduit.la @@ -51,23 +35,11 @@ e-calendar.conduit: e-calendar.conduit.in Makefile < $(srcdir)/e-calendar.conduit.in > e-calendar.conduit.tmp \ && mv e-calendar.conduit.tmp e-calendar.conduit -ccenterdir = $(datadir)/control-center -ccenterPalmPilotdir = $(ccenterdir)/Peripherals -ccenterConduitsdir = $(ccenterPalmPilotdir)/Conduits -ccenterConduits_in_files = e-calendar-conduit-control-applet.desktop.in -ccenterConduits_DATA = $(ccenterConduits_in_files:.desktop.in=.desktop) -@XML_I18N_MERGE_DESKTOP_RULE@ - -panelConduitsdir = $(datadir)/gnome/apps/Settings/Peripherals/Conduits -panelConduits_DATA = $(ccenterConduits_DATA) - Conduitdir = $(datadir)/gnome-pilot/conduits/ Conduit_DATA = e-calendar.conduit EXTRA_DIST = \ - e-calendar.conduit.in \ - $(ccenterConduits_in_files) + e-calendar.conduit.in install-data-local: - $(mkinstalldirs) $(ccenterConduitsdir) $(mkinstalldirs) $(Conduitdir) diff --git a/calendar/conduits/calendar/calendar-conduit-control-applet.c b/calendar/conduits/calendar/calendar-conduit-control-applet.c deleted file mode 100644 index ecd8d84e65..0000000000 --- a/calendar/conduits/calendar/calendar-conduit-control-applet.c +++ /dev/null @@ -1,342 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* Evolution calendar - Calendar Conduit Capplet - * - * Copyright (C) 1998 Free Software Foundation - * Copyright (C) 2000 Helix Code, Inc. - * - * Authors: Eskil Heyn Olsen <deity@eskil.dk> - * JP Rosevear <jpr@helixcode.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - */ - -#include <pwd.h> -#include <sys/types.h> -#include <signal.h> -#include <gnome.h> - -#include <config.h> -#include <capplet-widget.h> - -#include <gpilotd/gnome-pilot-client.h> - -#define CAL_CONFIG_LOAD 1 -#define CAL_CONFIG_SAVE 1 -#define CAL_CONFIG_DUPE 1 -#define CAL_CONFIG_DESTROY 1 -#include <calendar-conduit-config.h> -#undef CAL_CONFIG_LOAD -#undef CAL_CONFIG_SAVE -#undef CAL_CONFIG_DUPE -#undef CAL_CONFIG_DESTROY - -/* tell changes callbacks to ignore changes or not */ -static gboolean ignore_changes=FALSE; - -/* capplet widget */ -static GtkWidget *capplet=NULL; - -/* host/device/pilot configuration windows */ -GtkWidget *cfgOptionsWindow=NULL; -GtkWidget *cfgStateWindow=NULL; -GtkWidget *dialogWindow=NULL; - -gboolean activated,org_activation_state; -GnomePilotConduitManagement *conduit; -GnomePilotConduitConfig *conduit_config; -ECalConduitCfg *origState = NULL; -ECalConduitCfg *curState = NULL; - -static void doTrySettings(GtkWidget *widget, ECalConduitCfg *c); -static void doRevertSettings(GtkWidget *widget, ECalConduitCfg *c); -static void doSaveSettings(GtkWidget *widget, ECalConduitCfg *c); - -static void setStateCfg (GtkWidget *w, ECalConduitCfg *c); - -gint pilotId; -static GnomePilotClient *gpc; - - - -/* This array must be in the same order as enumerations - in GnomePilotConduitSyncType as they are used as index. - Custom type implies Disabled state. -*/ -static gchar* sync_options[] ={ N_("Disabled"), - N_("Synchronize"), - N_("Copy From Pilot"), - N_("Copy To Pilot"), - N_("Merge From Pilot"), - N_("Merge To Pilot")}; -#define SYNC_OPTIONS_COUNT 6 - -static void -doTrySettings (GtkWidget *widget, ECalConduitCfg *c) -{ - if (c->sync_type != GnomePilotConduitSyncTypeCustom) - gnome_pilot_conduit_config_enable_with_first_sync (conduit_config, - c->sync_type, - c->sync_type, - TRUE); - else - gnome_pilot_conduit_config_disable (conduit_config); - - calconduit_save_configuration (c); -} - -static void -doRevertSettings (GtkWidget *widget, ECalConduitCfg *c) -{ - activated = org_activation_state; - *c = *origState; - setStateCfg (cfgStateWindow, c); - doTrySettings (widget, c); -} - -static void -doSaveSettings (GtkWidget *widget, ECalConduitCfg *c) -{ - *origState = *c; - doTrySettings (widget, c); -} - - -static void -doHelp (GtkWidget *widget, gpointer data) -{ - GtkWidget *about; - const gchar *authors[] = { - _("JP Rosevear <jpr@helixcode.com>"), - "", _("Original Author:"), - _("Eskil Heyn Olsen <deity@eskil.dk>"), - NULL}; - - about = gnome_about_new ( - _("Evolution Calendar Conduit"), VERSION, - _("(C) 1998-2000 the Free Software Foundation and Helix Code"), - authors, - _("Configuration utility for the evolution calendar conduit.\n"), - _("gnome-unknown.xpm")); - gtk_widget_show (about); - - return; -} - - -/* called by the sync_type GtkOptionMenu */ -static void -activate_sync_type (GtkMenuItem *widget, gpointer data) -{ - curState->sync_type = GPOINTER_TO_INT (data); - if (!ignore_changes) - capplet_widget_state_changed (CAPPLET_WIDGET (capplet), TRUE); -} - - -static GtkWidget * -createStateCfgWindow(void) -{ - GtkWidget *vbox, *table; - GtkWidget *label; - GtkWidget *optionMenu,*menuItem; - GtkMenu *menu; - gint i; - - vbox = gtk_vbox_new(FALSE, GNOME_PAD); - - table = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, GNOME_PAD); - - label = gtk_label_new(_("Synchronize Action")); - gtk_box_pack_start(GTK_BOX(table), label, FALSE, FALSE, GNOME_PAD); - - optionMenu=gtk_option_menu_new(); - gtk_object_set_data(GTK_OBJECT(vbox), "conduit_state", optionMenu); - menu = GTK_MENU(gtk_menu_new()); - - for (i=0; i<SYNC_OPTIONS_COUNT;i++) { - sync_options[i]=_(sync_options[i]); - menuItem = gtk_menu_item_new_with_label(sync_options[i]); - gtk_widget_show(menuItem); - gtk_signal_connect(GTK_OBJECT(menuItem),"activate", - GTK_SIGNAL_FUNC(activate_sync_type), - GINT_TO_POINTER(i)); - gtk_menu_append(menu,menuItem); - } - - gtk_option_menu_set_menu(GTK_OPTION_MENU(optionMenu),GTK_WIDGET(menu)); - gtk_box_pack_start(GTK_BOX(table), optionMenu, FALSE, FALSE, 0); - - return vbox; -} - - -static void -setStateCfg (GtkWidget *w, ECalConduitCfg *c) -{ - GtkOptionMenu *optionMenu; - GtkMenu *menu; - - optionMenu = gtk_object_get_data (GTK_OBJECT(w), "conduit_state"); - g_assert (optionMenu != NULL); - menu = GTK_MENU (gtk_option_menu_get_menu (optionMenu)); - - ignore_changes = TRUE; - /* Here were are relying on the items in menu being the same - order as in GnomePilotConduitSyncType. */ - gtk_option_menu_set_history (optionMenu, (int) c->sync_type); - ignore_changes = FALSE; -} - - -static void -pilot_capplet_setup(void) -{ - GtkWidget *frame, *table; - - capplet = capplet_widget_new(); - - table = gtk_table_new(1, 2, FALSE); - gtk_container_border_width(GTK_CONTAINER(table), GNOME_PAD); - gtk_container_add(GTK_CONTAINER(capplet), table); - - frame = gtk_frame_new(_("Conduit state")); - gtk_container_border_width(GTK_CONTAINER(frame), GNOME_PAD_SMALL); - gtk_table_attach_defaults(GTK_TABLE(table), frame, 0, 1, 0, 1); - cfgStateWindow = createStateCfgWindow(); - gtk_container_add(GTK_CONTAINER(frame), cfgStateWindow); - - gtk_signal_connect(GTK_OBJECT(capplet), "try", - GTK_SIGNAL_FUNC(doTrySettings), curState); - gtk_signal_connect(GTK_OBJECT(capplet), "revert", - GTK_SIGNAL_FUNC(doRevertSettings), curState); - gtk_signal_connect(GTK_OBJECT(capplet), "ok", - GTK_SIGNAL_FUNC(doSaveSettings), curState); - gtk_signal_connect(GTK_OBJECT(capplet), "help", - GTK_SIGNAL_FUNC(doHelp), NULL); - - - setStateCfg (cfgStateWindow, curState); - - gtk_widget_show_all (capplet); -} - - -static void -run_error_dialog(gchar *mesg,...) -{ - char tmp[80]; - va_list ap; - - va_start(ap,mesg); - vsnprintf(tmp,79,mesg,ap); - dialogWindow = gnome_message_box_new(mesg,GNOME_MESSAGE_BOX_ERROR,GNOME_STOCK_BUTTON_OK,NULL); - gnome_dialog_run_and_close(GNOME_DIALOG(dialogWindow)); - va_end(ap); -} - - -static gint -get_pilot_id_from_gpilotd() -{ - GList *pilots=NULL; - gint pilot; - int i,err; - - i=0; - /* we don't worry about leaking here, so pilots isn't freed */ - switch(err = gnome_pilot_client_get_pilots(gpc,&pilots)) { - case GPILOTD_OK: { - if(pilots) { - for(i=0;i<g_list_length(pilots);i++) { - g_message("pilot %d = \"%s\"",i,(gchar*)g_list_nth(pilots,i)->data); - } - if(i==0) { - run_error_dialog(_("No pilot configured, please choose the\n'Pilot Link Properties' capplet first.")); - return -1; - } else { - gnome_pilot_client_get_pilot_id_by_name(gpc, - pilots->data, /* this is the first pilot */ - &pilot); - if(i>1) { - g_message("too many pilots..."); - /* need a choose here */ - } - return pilot; - } - } else { - run_error_dialog(_("No pilot configured, please choose the\n'Pilot Link Properties' capplet first.")); - return -1; - } - break; - } - case GPILOTD_ERR_NOT_CONNECTED: - run_error_dialog(_("Not connected to the gnome-pilot daemon")); - return -1; - break; - default: - g_warning("gnome_pilot_client_get_pilot_ids(...) = %d",err); - run_error_dialog(_("An error occured when trying to fetch\npilot list from the gnome-pilot daemon")); - return -1; - break; - } -} - - -int -main (int argc, char *argv[]) -{ - g_log_set_always_fatal (G_LOG_LEVEL_ERROR | - G_LOG_LEVEL_CRITICAL | - G_LOG_LEVEL_WARNING); - - /* Init capplet */ - gnome_capplet_init ("Evolution Calendar conduit control applet", - NULL, argc, argv, - NULL, 0, NULL); - - /* Setup Client */ - gpc = gnome_pilot_client_new (); - gnome_pilot_client_connect_to_daemon (gpc); - pilotId = get_pilot_id_from_gpilotd (); - if (!pilotId) - return -1; - - - /* Put all code to set things up in here */ - conduit = gnome_pilot_conduit_management_new ("e_calendar_conduit", GNOME_PILOT_CONDUIT_MGMT_ID); - if (conduit == NULL) - return -1; - - calconduit_load_configuration (&origState, pilotId); - conduit_config = gnome_pilot_conduit_config_new (conduit, pilotId); - org_activation_state = activated = - gnome_pilot_conduit_config_is_enabled (conduit_config, - &origState->sync_type); - - curState = calconduit_dupe_configuration (origState); - - pilot_capplet_setup (); - - /* Done setting up, now run main loop */ - capplet_gtk_main(); - - /* Clean up */ - gnome_pilot_conduit_management_destroy (conduit); - calconduit_destroy_configuration (&origState); - calconduit_destroy_configuration (&curState); - - return 0; -} diff --git a/calendar/conduits/calendar/e-calendar-conduit-control-applet.desktop.in b/calendar/conduits/calendar/e-calendar-conduit-control-applet.desktop.in deleted file mode 100644 index 322e63c802..0000000000 --- a/calendar/conduits/calendar/e-calendar-conduit-control-applet.desktop.in +++ /dev/null @@ -1,7 +0,0 @@ -[Desktop Entry] -_Name=Evolution Calendar conduit -_Comment=Configure the GnomeCal conduit -Exec=e-calendar-conduit-control-applet --cap-id=1 -Terminal=0 -Type=Application -Icon=gnome-calendar-conduit.png diff --git a/calendar/conduits/calendar/e-calendar.conduit.in b/calendar/conduits/calendar/e-calendar.conduit.in index 86cfbeecba..336901f581 100644 --- a/calendar/conduits/calendar/e-calendar.conduit.in +++ b/calendar/conduits/calendar/e-calendar.conduit.in @@ -1,7 +1,7 @@ <gnome-pilot-conduit version="1.0"> <conduit id="e_calendar_conduit" type="shlib" location="@prefix@/lib/gnome-pilot/conduits/libecalendar_conduit.so"/> <name value="ECalendar"/> - <conduit-attribute name="description" value="Synchronizes Calendar with Evolution"/> + <conduit-attribute name="description" _value="Synchronizes Calendar with Evolution"/> <conduit-attribute name="default-synctype" value="synchronize"/> <conduit-attribute name="valid-synctypes" value="synchronize copy_from_pilot copy_to_pilot merge_from_pilot merge_to_pilot"/> <conduit-attribute name="settings" value="FALSE"/> diff --git a/calendar/conduits/todo/Makefile.am b/calendar/conduits/todo/Makefile.am index 496680e0ea..df97d306a4 100644 --- a/calendar/conduits/todo/Makefile.am +++ b/calendar/conduits/todo/Makefile.am @@ -5,25 +5,9 @@ INCLUDES = \ -I$(top_builddir)/libical/src/libical \ -I$(top_builddir)/e-util \ $(BONOBO_GNOME_CFLAGS) \ - $(PISOCK_INCLUDEDIR) \ + $(PISOCK_CFLAGS) \ $(GNOME_PILOT_CFLAGS) -# ToDo Capplet -bin_PROGRAMS = e-todo-conduit-control-applet - -e_todo_conduit_control_applet_SOURCES = todo-conduit-control-applet.c - -e_todo_conduit_control_applet_LDADD = \ - $(CAPPLET_LIBS) \ - $(GNOME_LIBDIR) \ - $(GNOME_PILOT_LIBS) \ - $(PISOCK_LIBS) \ - $(GNOME_CAPPLET_LIBS) \ - $(BONOBO_GNOME_LIBS) \ - $(GNOME_XML_LIB) \ - $(GNOMEUI_LIBS) \ - $(INTLLIBS) - # ToDo Conduit e_todo_conduitsdir=$(libdir)/gnome-pilot/conduits e_todo_conduits_LTLIBRARIES = libetodo_conduit.la @@ -52,24 +36,11 @@ e-todo.conduit: e-todo.conduit.in Makefile < $(srcdir)/e-todo.conduit.in > e-todo.conduit.tmp \ && mv e-todo.conduit.tmp e-todo.conduit - -ccenterdir = $(datadir)/control-center -ccenterPalmPilotdir = $(ccenterdir)/Peripherals -ccenterConduitsdir = $(ccenterPalmPilotdir)/Conduits -ccenterConduits_in_files = e-todo-conduit-control-applet.desktop.in -ccenterConduits_DATA = $(ccenterConduits_in_files:.desktop.in=.desktop) -@XML_I18N_MERGE_DESKTOP_RULE@ - -panelConduitsdir = $(datadir)/gnome/apps/Settings/Peripherals/Conduits -panelConduits_DATA = $(ccenterConduits_DATA) - Conduitdir = $(datadir)/gnome-pilot/conduits/ Conduit_DATA = e-todo.conduit EXTRA_DIST = \ - e-todo.conduit.in \ - $(ccenterConduits_in_files) + e-todo.conduit.in install-data-local: - $(mkinstalldirs) $(ccenterConduitsdir) $(mkinstalldirs) $(Conduitdir) diff --git a/calendar/conduits/todo/e-todo-conduit-control-applet.desktop.in b/calendar/conduits/todo/e-todo-conduit-control-applet.desktop.in deleted file mode 100644 index 216c07afd5..0000000000 --- a/calendar/conduits/todo/e-todo-conduit-control-applet.desktop.in +++ /dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -_Name=Evolution ToDo conduit -_Comment=Configure the todo conduit -Exec=e-todo-conduit-control-applet --cap-id=1 -Terminal=0 -Type=Application diff --git a/calendar/conduits/todo/todo-conduit-control-applet.c b/calendar/conduits/todo/todo-conduit-control-applet.c deleted file mode 100644 index 7140522b55..0000000000 --- a/calendar/conduits/todo/todo-conduit-control-applet.c +++ /dev/null @@ -1,341 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ -/* Evolution calendar - ToDo Conduit Capplet - * - * Copyright (C) 1998 Free Software Foundation - * Copyright (C) 2000 Helix Code, Inc. - * - * Authors: Eskil Heyn Olsen <deity@eskil.dk> - * JP Rosevear <jpr@helixcode.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - */ - -#include <pwd.h> -#include <sys/types.h> -#include <signal.h> -#include <gnome.h> - -#include <config.h> -#include <capplet-widget.h> - -#include <gpilotd/gnome-pilot-client.h> - -#define TODO_CONFIG_LOAD 1 -#define TODO_CONFIG_SAVE 1 -#define TODO_CONFIG_DUPE 1 -#define TODO_CONFIG_DESTROY 1 -#include <todo-conduit-config.h> -#undef TODO_CONFIG_LOAD -#undef TODO_CONFIG_SAVE -#undef TODO_CONFIG_DUPE -#undef TODO_CONFIG_DESTROY - -/* tell changes callbacks to ignore changes or not */ -static gboolean ignore_changes=FALSE; - -/* capplet widget */ -static GtkWidget *capplet=NULL; - -/* host/device/pilot configuration windows */ -GtkWidget *cfgOptionsWindow=NULL; -GtkWidget *cfgStateWindow=NULL; -GtkWidget *dialogWindow=NULL; - -gboolean activated,org_activation_state; -GnomePilotConduitManagement *conduit; -GnomePilotConduitConfig *conduit_config; -EToDoConduitCfg *origState = NULL; -EToDoConduitCfg *curState = NULL; - -static void doTrySettings(GtkWidget *widget, EToDoConduitCfg *c); -static void doRevertSettings(GtkWidget *widget, EToDoConduitCfg *c); -static void doSaveSettings(GtkWidget *widget, EToDoConduitCfg *c); - -static void setStateCfg (GtkWidget *w, EToDoConduitCfg *c); - -gint pilotId; -static GnomePilotClient *gpc; - - - -/* This array must be in the same order as enumerations - in GnomePilotConduitSyncType as they are used as index. - Custom type implies Disabled state. -*/ -static gchar* sync_options[] ={ N_("Disabled"), - N_("Synchronize"), - N_("Copy From Pilot"), - N_("Copy To Pilot"), - N_("Merge From Pilot"), - N_("Merge To Pilot")}; -#define SYNC_OPTIONS_COUNT 6 - -static void -doTrySettings (GtkWidget *widget, EToDoConduitCfg *c) -{ - if (c->sync_type != GnomePilotConduitSyncTypeCustom) - gnome_pilot_conduit_config_enable_with_first_sync (conduit_config, - c->sync_type, - c->sync_type, - TRUE); - else - gnome_pilot_conduit_config_disable (conduit_config); - - todoconduit_save_configuration (c); -} - -static void -doRevertSettings (GtkWidget *widget, EToDoConduitCfg *c) -{ - activated = org_activation_state; - *c = *origState; - setStateCfg (cfgStateWindow, c); - doTrySettings (widget, c); -} - -static void -doSaveSettings (GtkWidget *widget, EToDoConduitCfg *c) -{ - *origState = *c; - doTrySettings (widget, c); -} - - -static void -doHelp (GtkWidget *widget, gpointer data) -{ - GtkWidget *about; - const gchar *authors[] = { - _("JP Rosevear <jpr@helixcode.com>"), - "", _("Original Author:"), - _("Eskil Heyn Olsen <deity@eskil.dk>"), - NULL}; - - about = gnome_about_new ( - _("Evolution ToDo Conduit"), VERSION, - _("(C) 1998-2000 the Free Software Foundation and Helix Code"), - authors, - _("Configuration utility for the evolution todo conduit.\n"), - _("gnome-unknown.xpm")); - gtk_widget_show (about); - - return; -} - - -/* called by the sync_type GtkOptionMenu */ -static void -activate_sync_type (GtkMenuItem *widget, gpointer data) -{ - curState->sync_type = GPOINTER_TO_INT (data); - if (!ignore_changes) - capplet_widget_state_changed (CAPPLET_WIDGET (capplet), TRUE); -} - - -static GtkWidget * -createStateCfgWindow(void) -{ - GtkWidget *vbox, *table; - GtkWidget *label; - GtkWidget *optionMenu,*menuItem; - GtkMenu *menu; - gint i; - - vbox = gtk_vbox_new(FALSE, GNOME_PAD); - - table = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, GNOME_PAD); - - label = gtk_label_new(_("Synchronize Action")); - gtk_box_pack_start(GTK_BOX(table), label, FALSE, FALSE, GNOME_PAD); - - optionMenu=gtk_option_menu_new(); - gtk_object_set_data(GTK_OBJECT(vbox), "conduit_state", optionMenu); - menu = GTK_MENU(gtk_menu_new()); - - for (i=0; i<SYNC_OPTIONS_COUNT;i++) { - sync_options[i]=_(sync_options[i]); - menuItem = gtk_menu_item_new_with_label(sync_options[i]); - gtk_widget_show(menuItem); - gtk_signal_connect(GTK_OBJECT(menuItem),"activate", - GTK_SIGNAL_FUNC(activate_sync_type), - GINT_TO_POINTER(i)); - gtk_menu_append(menu,menuItem); - } - - gtk_option_menu_set_menu(GTK_OPTION_MENU(optionMenu),GTK_WIDGET(menu)); - gtk_box_pack_start(GTK_BOX(table), optionMenu, FALSE, FALSE, 0); - - return vbox; -} - - -static void -setStateCfg (GtkWidget *w, EToDoConduitCfg *c) -{ - GtkOptionMenu *optionMenu; - GtkMenu *menu; - - optionMenu = gtk_object_get_data (GTK_OBJECT(w), "conduit_state"); - g_assert (optionMenu != NULL); - menu = GTK_MENU (gtk_option_menu_get_menu (optionMenu)); - - ignore_changes = TRUE; - /* Here were are relying on the items in menu being the same - order as in GnomePilotConduitSyncType. */ - gtk_option_menu_set_history (optionMenu, (int) c->sync_type); - ignore_changes = FALSE; -} - -static void -pilot_capplet_setup(void) -{ - GtkWidget *frame, *table; - - capplet = capplet_widget_new(); - - table = gtk_table_new(1, 2, FALSE); - gtk_container_border_width(GTK_CONTAINER(table), GNOME_PAD); - gtk_container_add(GTK_CONTAINER(capplet), table); - - frame = gtk_frame_new(_("Conduit state")); - gtk_container_border_width(GTK_CONTAINER(frame), GNOME_PAD_SMALL); - gtk_table_attach_defaults(GTK_TABLE(table), frame, 0, 1, 0, 1); - cfgStateWindow = createStateCfgWindow(); - gtk_container_add(GTK_CONTAINER(frame), cfgStateWindow); - - gtk_signal_connect(GTK_OBJECT(capplet), "try", - GTK_SIGNAL_FUNC(doTrySettings), curState); - gtk_signal_connect(GTK_OBJECT(capplet), "revert", - GTK_SIGNAL_FUNC(doRevertSettings), curState); - gtk_signal_connect(GTK_OBJECT(capplet), "ok", - GTK_SIGNAL_FUNC(doSaveSettings), curState); - gtk_signal_connect(GTK_OBJECT(capplet), "help", - GTK_SIGNAL_FUNC(doHelp), NULL); - - - setStateCfg (cfgStateWindow, curState); - - gtk_widget_show_all (capplet); -} - - -static void -run_error_dialog(gchar *mesg,...) -{ - char tmp[80]; - va_list ap; - - va_start(ap,mesg); - vsnprintf(tmp,79,mesg,ap); - dialogWindow = gnome_message_box_new(mesg,GNOME_MESSAGE_BOX_ERROR,GNOME_STOCK_BUTTON_OK,NULL); - gnome_dialog_run_and_close(GNOME_DIALOG(dialogWindow)); - va_end(ap); -} - - -static gint -get_pilot_id_from_gpilotd() -{ - GList *pilots=NULL; - gint pilot; - int i,err; - - i=0; - /* we don't worry about leaking here, so pilots isn't freed */ - switch(err = gnome_pilot_client_get_pilots(gpc,&pilots)) { - case GPILOTD_OK: { - if(pilots) { - for(i=0;i<g_list_length(pilots);i++) { - g_message("pilot %d = \"%s\"",i,(gchar*)g_list_nth(pilots,i)->data); - } - if(i==0) { - run_error_dialog(_("No pilot configured, please choose the\n'Pilot Link Properties' capplet first.")); - return -1; - } else { - gnome_pilot_client_get_pilot_id_by_name(gpc, - pilots->data, /* this is the first pilot */ - &pilot); - if(i>1) { - g_message("too many pilots..."); - /* need a choose here */ - } - return pilot; - } - } else { - run_error_dialog(_("No pilot configured, please choose the\n'Pilot Link Properties' capplet first.")); - return -1; - } - break; - } - case GPILOTD_ERR_NOT_CONNECTED: - run_error_dialog(_("Not connected to the gnome-pilot daemon")); - return -1; - break; - default: - g_warning("gnome_pilot_client_get_pilot_ids(...) = %d",err); - run_error_dialog(_("An error occured when trying to fetch\npilot list from the gnome-pilot daemon")); - return -1; - break; - } -} - - -int -main (int argc, char *argv[]) -{ - g_log_set_always_fatal (G_LOG_LEVEL_ERROR | - G_LOG_LEVEL_CRITICAL | - G_LOG_LEVEL_WARNING); - - /* Init capplet */ - gnome_capplet_init ("Evolution ToDo conduit control applet", - NULL, argc, argv, - NULL, 0, NULL); - - /* Setup Client */ - gpc = gnome_pilot_client_new (); - gnome_pilot_client_connect_to_daemon (gpc); - pilotId = get_pilot_id_from_gpilotd (); - if (!pilotId) - return -1; - - - /* Put all code to set things up in here */ - conduit = gnome_pilot_conduit_management_new ("e_todo_conduit", GNOME_PILOT_CONDUIT_MGMT_ID); - if (conduit == NULL) - return -1; - - todoconduit_load_configuration (&origState, pilotId); - conduit_config = gnome_pilot_conduit_config_new (conduit, pilotId); - org_activation_state = activated = - gnome_pilot_conduit_config_is_enabled (conduit_config, - &origState->sync_type); - - curState = todoconduit_dupe_configuration (origState); - - pilot_capplet_setup (); - - /* Done setting up, now run main loop */ - capplet_gtk_main(); - - /* Clean up */ - gnome_pilot_conduit_management_destroy (conduit); - todoconduit_destroy_configuration (&origState); - todoconduit_destroy_configuration (&curState); - - return 0; -} |