aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--shell/ChangeLog11
-rw-r--r--shell/Evolution-Shell.idl6
-rw-r--r--shell/Makefile.am2
-rw-r--r--shell/e-shell.c25
-rw-r--r--shell/evolution-component.c47
-rw-r--r--shell/evolution-component.h45
6 files changed, 136 insertions, 0 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog
index 5e21c59d45..6f7f518807 100644
--- a/shell/ChangeLog
+++ b/shell/ChangeLog
@@ -1,3 +1,14 @@
+2005-06-02 Not Zed <NotZed@Ximian.com>
+
+ * evolution-component.c: BonoboObject wrapper for
+ Evolution::Component interface. Abstract, doesn't implement
+ methods.
+
+ * Evolution-Shell.idl: add a method to find a component by
+ component alias.
+
+ * e-shell.c (impl_Shell_findComponent): & implement it
+
2005-06-01 Not Zed <NotZed@Ximian.com>
* e-shell-window-commands.c: fixed the utf8 in the last patch.
diff --git a/shell/Evolution-Shell.idl b/shell/Evolution-Shell.idl
index ebd3f69719..f5e2d9b32a 100644
--- a/shell/Evolution-Shell.idl
+++ b/shell/Evolution-Shell.idl
@@ -48,6 +48,12 @@ module Evolution {
*/
void setLineStatus (in boolean online)
raises (NotReady);
+
+ /*
+ * Lookup a component by id.
+ */
+ Component findComponent(in string id)
+ raises (NotReady, ComponentNotFound);
};
};
};
diff --git a/shell/Makefile.am b/shell/Makefile.am
index 2b9367fc87..171e33cfa6 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -80,11 +80,13 @@ eshellinclude_HEADERS = \
e-shell-utils.h \
e-user-creatable-items-handler.h \
evolution-config-control.h \
+ evolution-component.h \
evolution-shell-component-utils.h
libeshell_la_SOURCES = \
$(IDL_GENERATED) \
$(MARSHAL_GENERATED) \
+ evolution-component.c \
e-shell-utils.c \
e-user-creatable-items-handler.c \
evolution-config-control.c \
diff --git a/shell/e-shell.c b/shell/e-shell.c
index 44b05d0a2a..3c229f9e11 100644
--- a/shell/e-shell.c
+++ b/shell/e-shell.c
@@ -305,6 +305,30 @@ impl_Shell_setLineStatus (PortableServer_Servant servant,
e_shell_go_offline (shell, NULL);
}
+static GNOME_Evolution_Component
+impl_Shell_findComponent(PortableServer_Servant servant,
+ const CORBA_string id,
+ CORBA_Environment *ev)
+{
+ EShell *shell;
+ EComponentInfo *ci;
+
+ if (raise_exception_if_not_ready (servant, ev))
+ return CORBA_OBJECT_NIL;
+
+ shell = (EShell *)bonobo_object_from_servant (servant);
+ ci = e_component_registry_peek_info(shell->priv->component_registry, ECR_FIELD_ALIAS, id);
+ if (ci == NULL) {
+ CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Shell_ComponentNotFound, NULL);
+ return CORBA_OBJECT_NIL;
+ } else if (ci->iface == NULL) {
+ CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Shell_NotReady, NULL);
+ return CORBA_OBJECT_NIL;
+ } else {
+ return ci->iface;
+ }
+}
+
/* EShellWindow handling and bookkeeping. */
@@ -491,6 +515,7 @@ e_shell_class_init (EShellClass *klass)
epv->createNewWindow = impl_Shell_createNewWindow;
epv->handleURI = impl_Shell_handleURI;
epv->setLineStatus = impl_Shell_setLineStatus;
+ epv->findComponent = impl_Shell_findComponent;
}
static void
diff --git a/shell/evolution-component.c b/shell/evolution-component.c
new file mode 100644
index 0000000000..b9fa313a8c
--- /dev/null
+++ b/shell/evolution-component.c
@@ -0,0 +1,47 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * Copyright (C) 2005 Novell, Inc.
+ *
+ * Authors: Michael Zucchi <notzed@novell.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include "evolution-component.h"
+
+#define PARENT_TYPE bonobo_object_get_type ()
+
+static BonoboObjectClass *parent_class = NULL;
+
+/* Evolution.Component */
+
+/* Initialization */
+
+static void
+evolution_component_class_init (EvolutionComponentClass *klass)
+{
+ parent_class = g_type_class_peek_parent (klass);
+}
+
+static void
+evolution_component_init(EvolutionComponent *emf, EvolutionComponentClass *klass)
+{
+}
+
+BONOBO_TYPE_FUNC_FULL (EvolutionComponent, GNOME_Evolution_Component, PARENT_TYPE, evolution_component)
diff --git a/shell/evolution-component.h b/shell/evolution-component.h
new file mode 100644
index 0000000000..737b28bb57
--- /dev/null
+++ b/shell/evolution-component.h
@@ -0,0 +1,45 @@
+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
+/*
+ * Copyright (C) 2005 Novell, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of version 2 of the GNU General Public
+ * License as published by the Free Software Foundation.
+ *
+ * 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.
+ *
+ * Author: Michael Zucchi <notzed@novell.com>
+ *
+ * Abstract class wrapper for EvolutionComponent
+ */
+
+#ifndef _EVOLUTION_COMPONENT_H_
+#define _EVOLUTION_COMPONENT_H_
+
+#include <bonobo/bonobo-object.h>
+#include "Evolution.h"
+
+typedef struct _EvolutionComponent EvolutionComponent;
+typedef struct _EvolutionComponentClass EvolutionComponentClass;
+
+struct _EvolutionComponent {
+ BonoboObject parent;
+};
+
+struct _EvolutionComponentClass {
+ BonoboObjectClass parent_class;
+
+ POA_GNOME_Evolution_Component__epv epv;
+};
+
+GType evolution_component_get_type(void);
+
+#endif /* _EVOLUTION_COMPONENT_H_ */