aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-rw-r--r--shell/ChangeLog16
-rw-r--r--shell/Evolution-ShellComponent.idl4
-rw-r--r--shell/evolution-shell-component.c68
-rw-r--r--shell/evolution-shell-component.h33
4 files changed, 90 insertions, 31 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 2d78fd8f5a..1af4a5002f 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,5 +1,21 @@
2000-07-20 Ettore Perazzoli <ettore@helixcode.com>
+ * evolution-shell-component.c: New member
+ `populate_folder_context_menu' in
+ `EvolutionShellComponentPrivate'.
+ (impl_ShellComponent_populate_folder_context_menu): New,
+ implementation for
+ `Evolution::ShellComponent::populate_folder_context_menu'.
+ (corba_class_init): Install it.
+ (evolution_shell_component_new): New arg
+ @populate_folder_context_menu.
+ (evolution_shell_component_construct): Likewise.
+
+ * Evolution-ShellComponent.idl: New method
+ `::populate_folder_context_menu'.
+
+2000-07-20 Ettore Perazzoli <ettore@helixcode.com>
+
* e-shell-view.c (e_shell_view_save_settings): Save the paned
positions.
(e_shell_view_load_settings): Restore them.
diff --git a/shell/Evolution-ShellComponent.idl b/shell/Evolution-ShellComponent.idl
index 7c95489889..90b72fea26 100644
--- a/shell/Evolution-ShellComponent.idl
+++ b/shell/Evolution-ShellComponent.idl
@@ -54,6 +54,10 @@ module Evolution {
void async_remove_folder (in ShellComponentListener listener,
in string physical_uri)
raises (Busy);
+
+ void populate_folder_context_menu (in Bonobo::UIHandler uih,
+ in string physical_uri,
+ in string type);
};
interface ShellComponentListener {
diff --git a/shell/evolution-shell-component.c b/shell/evolution-shell-component.c
index 4069086c85..c3560b2776 100644
--- a/shell/evolution-shell-component.c
+++ b/shell/evolution-shell-component.c
@@ -40,9 +40,10 @@ static BonoboObjectClass *parent_class = NULL;
struct _EvolutionShellComponentPrivate {
GList *folder_types; /* EvolutionShellComponentFolderType */
- EvolutionShellComponentCreateViewFn create_view_fn;
- EvolutionShellComponentCreateFolderFn create_folder_fn;
- EvolutionShellComponentRemoveFolderFn remove_folder_fn;
+ EvolutionShellComponentCreateViewFn create_view_fn;
+ EvolutionShellComponentCreateFolderFn create_folder_fn;
+ EvolutionShellComponentRemoveFolderFn remove_folder_fn;
+ EvolutionShellComponentPopulateFolderContextMenu populate_folder_context_menu_fn;
EvolutionShellClient *owner_client;
@@ -263,6 +264,30 @@ impl_ShellComponent_async_remove_folder (PortableServer_Servant servant,
(* priv->remove_folder_fn) (shell_component, physical_uri, listener, priv->closure);
}
+static void
+impl_ShellComponent_populate_folder_context_menu (PortableServer_Servant servant,
+ const Bonobo_UIHandler corba_uih,
+ const CORBA_char *physical_uri,
+ const CORBA_char *type,
+ CORBA_Environment *ev)
+{
+ BonoboObject *bonobo_object;
+ EvolutionShellComponent *shell_component;
+ EvolutionShellComponentPrivate *priv;
+ BonoboUIHandler *uih;
+
+ bonobo_object = bonobo_object_from_servant (servant);
+ shell_component = EVOLUTION_SHELL_COMPONENT (bonobo_object);
+ priv = shell_component->priv;
+
+ uih = bonobo_ui_handler_new ();
+ bonobo_ui_handler_set_container (uih, corba_uih);
+
+ (* priv->populate_folder_context_menu_fn) (shell_component, uih, physical_uri, type, priv->closure);
+
+ bonobo_object_unref (BONOBO_OBJECT (uih));
+}
+
/* GtkObject methods. */
@@ -315,12 +340,13 @@ corba_class_init (void)
base_epv->default_POA = NULL;
epv = g_new0 (POA_Evolution_ShellComponent__epv, 1);
- epv->_get_supported_types = impl_ShellComponent__get_supported_types;
- epv->set_owner = impl_ShellComponent_set_owner;
- epv->unset_owner = impl_ShellComponent_unset_owner;
- epv->create_view = impl_ShellComponent_create_view;
- epv->async_create_folder = impl_ShellComponent_async_create_folder;
- epv->async_remove_folder = impl_ShellComponent_async_remove_folder;
+ epv->_get_supported_types = impl_ShellComponent__get_supported_types;
+ epv->set_owner = impl_ShellComponent_set_owner;
+ epv->unset_owner = impl_ShellComponent_unset_owner;
+ epv->create_view = impl_ShellComponent_create_view;
+ epv->async_create_folder = impl_ShellComponent_async_create_folder;
+ epv->async_remove_folder = impl_ShellComponent_async_remove_folder;
+ epv->populate_folder_context_menu = impl_ShellComponent_populate_folder_context_menu;
vepv = &ShellComponent_vepv;
vepv->_base_epv = base_epv;
@@ -367,12 +393,14 @@ init (EvolutionShellComponent *shell_component)
priv = g_new (EvolutionShellComponentPrivate, 1);
- priv->folder_types = NULL;
- priv->create_view_fn = NULL;
- priv->create_folder_fn = NULL;
- priv->remove_folder_fn = NULL;
- priv->owner_client = NULL;
- priv->closure = NULL;
+ priv->folder_types = NULL;
+ priv->create_view_fn = NULL;
+ priv->create_folder_fn = NULL;
+ priv->remove_folder_fn = NULL;
+ priv->populate_folder_context_menu_fn = NULL;
+
+ priv->owner_client = NULL;
+ priv->closure = NULL;
shell_component->priv = priv;
}
@@ -385,6 +413,7 @@ evolution_shell_component_construct (EvolutionShellComponent *shell_component,
EvolutionShellComponentCreateViewFn create_view_fn,
EvolutionShellComponentCreateFolderFn create_folder_fn,
EvolutionShellComponentRemoveFolderFn remove_folder_fn,
+ EvolutionShellComponentPopulateFolderContextMenu populate_folder_context_menu_fn,
void *closure)
{
EvolutionShellComponentPrivate *priv;
@@ -397,9 +426,10 @@ evolution_shell_component_construct (EvolutionShellComponent *shell_component,
priv = shell_component->priv;
- priv->create_view_fn = create_view_fn;
- priv->create_folder_fn = create_folder_fn;
- priv->remove_folder_fn = remove_folder_fn;
+ priv->create_view_fn = create_view_fn;
+ priv->create_folder_fn = create_folder_fn;
+ priv->remove_folder_fn = remove_folder_fn;
+ priv->populate_folder_context_menu_fn = populate_folder_context_menu_fn;
priv->closure = closure;
@@ -427,6 +457,7 @@ evolution_shell_component_new (const EvolutionShellComponentFolderType folder_ty
EvolutionShellComponentCreateViewFn create_view_fn,
EvolutionShellComponentCreateFolderFn create_folder_fn,
EvolutionShellComponentRemoveFolderFn remove_folder_fn,
+ EvolutionShellComponentPopulateFolderContextMenu populate_folder_context_menu_fn,
void *closure)
{
EvolutionShellComponent *new;
@@ -442,6 +473,7 @@ evolution_shell_component_new (const EvolutionShellComponentFolderType folder_ty
corba_object = bonobo_object_activate_servant (BONOBO_OBJECT (new), servant);
evolution_shell_component_construct (new, folder_types, corba_object,
create_view_fn, create_folder_fn, remove_folder_fn,
+ populate_folder_context_menu_fn,
closure);
return new;
diff --git a/shell/evolution-shell-component.h b/shell/evolution-shell-component.h
index c91d4bec97..095177b56d 100644
--- a/shell/evolution-shell-component.h
+++ b/shell/evolution-shell-component.h
@@ -87,6 +87,11 @@ typedef void (* EvolutionShellComponentRemoveFolderFn) (EvolutionShellComponent
const char *physical_uri,
const Evolution_ShellComponentListener listener,
void *closure);
+typedef void (* EvolutionShellComponentPopulateFolderContextMenu) (EvolutionShellComponent *shell_component,
+ BonoboUIHandler *uih,
+ const char *physical_uri,
+ const char *type,
+ void *closure);
struct _EvolutionShellComponentFolderType {
char *name;
@@ -112,19 +117,21 @@ struct _EvolutionShellComponentClass {
GtkType evolution_shell_component_get_type (void);
-void evolution_shell_component_construct (EvolutionShellComponent *shell_component,
- const EvolutionShellComponentFolderType folder_types[],
- Evolution_ShellComponent corba_object,
- EvolutionShellComponentCreateViewFn create_view_fn,
- EvolutionShellComponentCreateFolderFn create_folder_fn,
- EvolutionShellComponentRemoveFolderFn remove_folder_fn,
- void *closure);
-EvolutionShellComponent *evolution_shell_component_new (const EvolutionShellComponentFolderType folder_types[],
- EvolutionShellComponentCreateViewFn create_view_fn,
- EvolutionShellComponentCreateFolderFn create_folder_fn,
- EvolutionShellComponentRemoveFolderFn remove_folder_fn,
- void *closure);
-EvolutionShellClient *evolution_shell_component_get_owner (EvolutionShellComponent *shell_component);
+void evolution_shell_component_construct (EvolutionShellComponent *shell_component,
+ const EvolutionShellComponentFolderType folder_types[],
+ Evolution_ShellComponent corba_object,
+ EvolutionShellComponentCreateViewFn create_view_fn,
+ EvolutionShellComponentCreateFolderFn create_folder_fn,
+ EvolutionShellComponentRemoveFolderFn remove_folder_fn,
+ EvolutionShellComponentPopulateFolderContextMenu populate_folder_context_menu_fn,
+ void *closure);
+EvolutionShellComponent *evolution_shell_component_new (const EvolutionShellComponentFolderType folder_types[],
+ EvolutionShellComponentCreateViewFn create_view_fn,
+ EvolutionShellComponentCreateFolderFn create_folder_fn,
+ EvolutionShellComponentRemoveFolderFn remove_folder_fn,
+ EvolutionShellComponentPopulateFolderContextMenu populate_folder_context_menu_fn,
+ void *closure);
+EvolutionShellClient *evolution_shell_component_get_owner (EvolutionShellComponent *shell_component);
#ifdef cplusplus
}