Re: [evolution-patches] calendar properties window plugin hooks



Ok, here's an updated version, that ought to address your concerns.

-David

On Fri, 2004-10-15 at 09:07 +0800, Not Zed wrote:
> 
> The ESource in the target should be modified instantly as the widgets
> change.  This is required for a couple of reasons:
> 1. Communicate the changed state to any other interested widgets,
> which may be supplied by plugins
> 2. Lets the gui know when things have changed, so it can only enable
> the "ok" button if the data validates.
> 
> It also simplifies 'commit' since you just copy/install that source.
> Obviously the ESource in the target should be a working-copy and not
> the actual ESource.  And clearly point 1 is the vital one.
> 
> For the plugin it needs to ref the source and keep it around for the
> widget modified callbacks.  Also note that this should mean you don't
> need to keep any globals to access them since the data will just be on
> the source already.  It doesn't need a commit method really since all
> of its state is stored in the source which will be committed by the
> master programme.
> 
> I suspect as the calendar naming conventions seem to be e_cal, that
> would make sense more than ec_, esp since the filename was changed to
> e-cal-.
> 
> You should probably also do page_check(xx, NULL) since you want all
> values checked - there might be more pages.
> 
> But those are minor points apart from the instant-change-to-source
> thing.
> 
> I'm not sure who needs to own the copyrights if the code is going to
> be in the main tree, Novell may want to, even for plugins.
> 
> On Thu, 2004-10-14 at 15:27 -0600, David Trowbridge wrote: 
> > Here is my first attempt at adding config hooks for the calendar
> > properties window.
> > 
> > Note that at this time, field verification isn't enabled, since I wasn't
> > sure what people wanted for it.
> > 
> > It requires a plugin to be installed for webcal properties to function
> > correctly - i've added a plugins/ directory to the evolution root (as
> > per some discussion on irc a week or so back). This will probably mean
> > changing EPlugin to load plugins from both the system directory and the
> > user EVOLUTION_PLUGIN_PATH, rather than just one or the other.
> > 
> > -David
> -- 
> 
> Michael Zucchi <notzed ximian com>
> "born to die, live to work, it's
> all downhill from here"
> Novell's Evolution and Free
> Software Developer
? plugins
? calendar/gui/e-cal-config.c
? calendar/gui/e-cal-config.h
? calendar/gui/dialogs/cal-properties.c
? calendar/gui/dialogs/cal-properties.h
Index: configure.in
===================================================================
RCS file: /cvs/gnome/evolution/configure.in,v
retrieving revision 1.727
diff -u -r1.727 configure.in
--- configure.in	20 Oct 2004 08:18:12 -0000	1.727
+++ configure.in	21 Oct 2004 03:27:01 -0000
@@ -1338,21 +1338,27 @@
 EVO_PLUGIN_RULE=$srcdir/plugin.mk
 AC_SUBST_FILE(EVO_PLUGIN_RULE)
 
-AC_ARG_ENABLE(plugins, [  --enable-plugins=[no/all/list]      Enable plugins.],enable_plugins="$enableval",enable_plugins=no)
+AC_ARG_ENABLE(plugins, [  --enable-plugins=[base/no/all/list]      Enable plugins.],enable_plugins="$enableval",enable_plugins=base)
 
 dnl Add any new plugins here
-plugins_all="subject-thread save-attachments prefer-plain"
+plugins_base="calendar-http"
+plugins_all="calendar-http subject-thread save-attachments prefer-plain"
 
 if test x"$enable_plugins" = "xno"; then
 	plugins_enabled=""
 	msg_plugins="no"
 else
-	if test x"$enable_plugins" = "xall"; then
-		plugins_enabled="$plugins_all"
+	if test x"$enable_plugins" = "xbase"; then
+		plugins_enabled="$plugins_base"
+		msg_plugins="$plugins_base"
 	else
-		plugins_enabled="$enable_plugins"
-	fi	
-	msg_plugins="$enable_plugins"
+		if test x"$enable_plugins" = "xall"; then
+			plugins_enabled="$plugins_all"
+		else
+			plugins_enabled="$enable_plugins"
+		fi
+		msg_plugins="$enable_plugins"
+	fi
 fi
 AC_SUBST(plugins_enabled)
 AC_SUBST(plugins_all)
@@ -1533,6 +1539,7 @@
 mail/default/C/Makefile
 mail/importers/Makefile
 plugins/Makefile
+plugins/calendar-http/Makefile
 plugins/subject-thread/Makefile
 plugins/save-attachments/Makefile
 plugins/prefer-plain/Makefile
Index: calendar/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/calendar/ChangeLog,v
retrieving revision 1.2550
diff -u -r1.2550 ChangeLog
--- calendar/ChangeLog	20 Oct 2004 03:03:30 -0000	1.2550
+++ calendar/ChangeLog	21 Oct 2004 03:27:06 -0000
@@ -1,3 +1,11 @@
+2004-10-20  David Trowbridge  <trowbrds cs colorado edu>
+
+	* gui/e-cal-config.c: added EConfig subclass for calendars
+	* gui/calendar-component.c: initialize plugin hooks on
+	  component startup.
+	* gui/dialogs/cal-properties.c: added EConfig-based dialog
+	  for the calendar properties window.
+
 2004-10-19  JP Rosevear  <jpr novell com>
 
 	* gui/calendar-component.c, gui/e-cal-menu.c, gui/e-cal-popup.c,
Index: calendar/gui/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/Makefile.am,v
retrieving revision 1.299
diff -u -r1.299 Makefile.am
--- calendar/gui/Makefile.am	18 Oct 2004 04:08:47 -0000	1.299
+++ calendar/gui/Makefile.am	21 Oct 2004 03:27:06 -0000
@@ -59,6 +59,11 @@
 
 component_LTLIBRARIES = libevolution-calendar.la
 
+ecalendarincludedir = $(privincludedir)/calendar/gui
+
+ecalendarinclude_HEADERS =	\
+	e-cal-config.h
+
 INCLUDES =						\
 	-DG_LOG_DOMAIN=\"calendar-gui\"			\
 	-I$(top_builddir)/shell				\
@@ -115,6 +120,8 @@
 	e-alarm-list.h				\
 	e-cal-component-preview.c		\
 	e-cal-component-preview.h		\
+	e-cal-config.c				\
+	e-cal-config.h				\
 	e-cal-menu.c				\
 	e-cal-menu.h				\
 	e-cal-model-calendar.h			\
Index: calendar/gui/calendar-component.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/calendar-component.c,v
retrieving revision 1.188
diff -u -r1.188 calendar-component.c
--- calendar/gui/calendar-component.c	20 Oct 2004 03:03:30 -0000	1.188
+++ calendar/gui/calendar-component.c	21 Oct 2004 03:27:07 -0000
@@ -47,6 +47,7 @@
 #include "comp-util.h"
 #include "common/authentication.h"
 #include "dialogs/calendar-setup.h"
+#include "dialogs/cal-properties.h"
 #include "dialogs/comp-editor.h"
 #include "dialogs/copy-source-dialog.h"
 #include "dialogs/event-editor.h"
@@ -54,6 +55,7 @@
 #include "widgets/misc/e-error.h"
 #include "e-util/e-icon-factory.h"
 #include "e-cal-popup.h"
+#include "e-cal-config.h"
 
 /* IDs for user creatable items */
 #define CREATE_EVENT_ID        "event"
@@ -375,7 +377,7 @@
 	if (!selected_source)
 		return;
 
-	calendar_setup_edit_calendar (GTK_WINDOW (gtk_widget_get_toplevel(ep->target->widget)), selected_source);
+	e_calendar_properties_show (GTK_WINDOW (gtk_widget_get_toplevel (ep->target->widget)), selected_source);
 }
 
 static EPopupItem ecc_source_popups[] = {
@@ -1182,6 +1184,17 @@
 }
 
 static void
+cc_startup (CalendarComponent *cc)
+{
+	static int started = 0;
+	if (started)
+		return;
+	started = 1;
+
+	e_plugin_hook_register_type (e_cal_config_hook_get_type ());
+}
+
+static void
 impl_createControls (PortableServer_Servant servant,
 		     Bonobo_Control *corba_sidebar_control,
 		     Bonobo_Control *corba_view_control,
@@ -1191,7 +1204,9 @@
 	CalendarComponent *calendar_component = CALENDAR_COMPONENT (bonobo_object_from_servant (servant));
 	CalendarComponentPrivate *priv;
 	CalendarComponentView *component_view;
-	
+
+	cc_startup (calendar_component);
+
 	priv = calendar_component->priv;
 
 	/* Create the calendar component view */
Index: calendar/gui/dialogs/Makefile.am
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/dialogs/Makefile.am,v
retrieving revision 1.64
diff -u -r1.64 Makefile.am
--- calendar/gui/dialogs/Makefile.am	24 Jun 2004 21:02:09 -0000	1.64
+++ calendar/gui/dialogs/Makefile.am	21 Oct 2004 03:27:08 -0000
@@ -38,6 +38,8 @@
 	alarm-list-dialog.h	\
 	cal-prefs-dialog.c	\
 	cal-prefs-dialog.h	\
+	cal-properties.c	\
+	cal-properties.h	\
 	calendar-setup.c	\
 	calendar-setup.h	\
 	cancel-comp.c		\

Attachment: newfiles.tar.gz
Description: application/compressed-tar



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]