aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArturo Espinosa <unammx@src.gnome.org>2000-01-07 08:25:56 +0800
committerArturo Espinosa <unammx@src.gnome.org>2000-01-07 08:25:56 +0800
commitc80c14ffd0ace81afa80c82a137494900fcc0f14 (patch)
treee95ceb5354d6f6a96cd0bcd184710e657f1b2990
parent8e431aec558b7bdab46ff5c7519dd3776f816338 (diff)
downloadgsoc2013-evolution-c80c14ffd0ace81afa80c82a137494900fcc0f14.tar.gz
gsoc2013-evolution-c80c14ffd0ace81afa80c82a137494900fcc0f14.tar.zst
gsoc2013-evolution-c80c14ffd0ace81afa80c82a137494900fcc0f14.zip
More framework work -miguel
svn path=/trunk/; revision=1539
-rw-r--r--ChangeLog5
-rw-r--r--configure.in29
-rw-r--r--e-util/Makefile.am2
-rw-r--r--shell/Makefile.am14
-rw-r--r--shell/Shell.idl19
-rw-r--r--shell/e-init.c34
-rw-r--r--shell/e-init.h8
-rw-r--r--shell/e-shell.c106
-rw-r--r--shell/e-shell.h32
-rw-r--r--shell/main.c59
10 files changed, 296 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 452a8f44d0..b7c67a0e8e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2000-01-06 Miguel de Icaza <miguel@gnu.org>
+
+ * configure.in: Add Bonobo detection, Bonobo flags for compilation
+ for the components and the shell.
+
2000-01-06 Elliot Lee <sopwith@redhat.com>
* composer/Makefile.am, widgets/e-table/Makefile.am: Work with
builddir != srcdir
diff --git a/configure.in b/configure.in
index 6869e4c746..f3d635a58c 100644
--- a/configure.in
+++ b/configure.in
@@ -63,15 +63,23 @@ dnl AC_SUBST(GNOMEGNORBA_LIBS)
dnl ******************************
dnl Check for Bonobo
dnl ******************************
-dnl AM_PATH_BONOBO(0.1.0, [
-dnl AC_DEFINE(HAVE_BONOBO)
-dnl have_bonobo=true
-dnl ],[
-dnl have_bonobo=false
-dnl ])
-dnl AM_CONDITIONAL(BONOBO, $have_bonobo)
-
+AC_MSG_CHECKING(for Bonobo > 0.4)
+if gnome-config --libs bonobo > /dev/null 2>&1; then
+ vers=`gnome-config --modversion bonobo`
+ case $vers
+ in
+ bonobo-0.[[01234]]) bonobo_ok=false ;;
+ *) bonobo_ok=true ;;
+ esac
+else
+ bonobo_ok=false
+fi
+if $bonobo_ok; then
+ AC_MSG_RESULT(found)
+else
+ AC_MSG_ERROR(Bonobo 0.5 is required to compile Evolution)
+fi
dnl ******************************
@@ -89,6 +97,11 @@ EXTRA_GNOME_CFLAGS="`gnome-config --cflags gnomeui libglade `"
AC_SUBST(EXTRA_GNOME_LIBS)
AC_SUBST(EXTRA_GNOME_CFLAGS)
+BONOBO_GNOME_LIBS="`gnome-config --libs gnomeui bonobo libglade `"
+BONOBO_GNOME_CFLAGS="`gnome-config --cflags gnomeui bonobo libglade `"
+AC_SUBST(BONOBO_GNOME_LIBS)
+AC_SUBST(BONOBO_GNOME_CFLAGS)
+
EXTRA_GNOME_LIBS_THREADS="`gnome-config --libs gnomeui libglade ` `glib-config --libs gthread`"
EXTRA_GNOME_CFLAGS_THREADS="`gnome-config --cflags gnomeui libglade ` `glib-config --cflags gthread`"
AC_SUBST(EXTRA_GNOME_LIBS_THREADS)
diff --git a/e-util/Makefile.am b/e-util/Makefile.am
index 88bc5d142a..d920da1fd4 100644
--- a/e-util/Makefile.am
+++ b/e-util/Makefile.am
@@ -6,4 +6,6 @@ noinst_LIBRARIES = libeutil.a
libeutil_a_SOURCES = \
e-cursors.c \
e-cursors.h \
+ e-gui-utils.c \
+ e-gui-utils.h \
e-util.h \ No newline at end of file
diff --git a/shell/Makefile.am b/shell/Makefile.am
index 03f4e49c1a..ad231b6352 100644
--- a/shell/Makefile.am
+++ b/shell/Makefile.am
@@ -7,13 +7,19 @@ INCLUDES = \
-DEVOLUTION_ICONSDIR=\""$(iconsdir)"\" \
-DEVOLUTION_LOCALEDIR=\""$(datadir)/locale"\" \
-I$(srcdir)/../widgets \
- $(EXTRA_GNOME_CFLAGS)
+ $(BONOBO_GNOME_CFLAGS)
evolution_SOURCES = \
- main.c
+ main.c \
+ e-init.c \
+ e-init.h \
+ e-shell.c \
+ e-shell.h
+
evolution_LDADD = \
- -L../widgets/shortcut-bar/libshortcut-bar.a \
- $(EXTRA_GNOME_LIBS)
+ ../widgets/shortcut-bar/libshortcut-bar.a \
+ ../e-util/libeutil.a \
+ $(BONOBO_GNOME_LIBS)
diff --git a/shell/Shell.idl b/shell/Shell.idl
new file mode 100644
index 0000000000..0d615b6b3b
--- /dev/null
+++ b/shell/Shell.idl
@@ -0,0 +1,19 @@
+/*
+ * CORBA interface for the Evolution shell
+ *
+ * Authors:
+ * Miguel de Icaza (miguel@kernel.org)
+ *
+ * (C) 2000 Helix Code, Inc.
+ */
+#include <bonobo.idl>
+
+module GNOME {
+
+ module Evolution {
+
+ interface Shell : GNOME::Unknown {
+
+ };
+ };
+};
diff --git a/shell/e-init.c b/shell/e-init.c
new file mode 100644
index 0000000000..34ccdbcfc3
--- /dev/null
+++ b/shell/e-init.c
@@ -0,0 +1,34 @@
+/*
+ * e-init.c: Initializes Evolution for first time users
+ *
+ */
+#include <config.h>
+#include <gnome.h>
+#include "e-init.h"
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include "e-util/e-gui-utils.h"
+
+char *evolution_base_dir;
+
+static void
+e_init_local (void)
+{
+ evolution_base_dir = g_concat_dir_and_file (g_get_home_dir (), "Evolution");
+
+ if (g_file_exists (evolution_base_dir))
+ return;
+
+ if (-1 == mkdir (evolution_base_dir, 0755)){
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR, _("Evolution can not create its local folders"));
+ exit (0);
+ }
+}
+
+void
+e_init (void)
+{
+ e_init_local ();
+}
diff --git a/shell/e-init.h b/shell/e-init.h
new file mode 100644
index 0000000000..5684f87b44
--- /dev/null
+++ b/shell/e-init.h
@@ -0,0 +1,8 @@
+#ifndef E_INIT_H
+#define E_INIT_H
+
+extern char *evolution_base_dir;
+
+void e_init (void);
+
+#endif /* E_INIT_H */
diff --git a/shell/e-shell.c b/shell/e-shell.c
new file mode 100644
index 0000000000..ef03135102
--- /dev/null
+++ b/shell/e-shell.c
@@ -0,0 +1,106 @@
+/*
+ * E-shell.c: Shell object for Evolution
+ *
+ * Authors:
+ * Miguel de Icaza (miguel@helixcode.com)
+ *
+ * (C) 1999 Miguel de Icaza
+ * (C) 2000 Helix Code, Inc.
+ */
+#include <config.h>
+#include "Shell.h"
+#include "e-util/e-util.h"
+#include "e-shell.h"
+
+#define PARENT_TYPE (gnome_object_get_type ())
+
+static GnomeObjectClass *e_shell_parent_class;
+POA_GNOME_Evolution_Shell__vepv eshell_vepv;
+
+GtkType e_shell_get_type (void);
+
+static POA_GNOME_Evolution_Shell__epv *
+e_shell_get_epv (void)
+{
+ POA_GNOME_Evolution_Shell__epv *epv;
+
+ epv = g_new0 (POA_GNOME_Evolution_Shell__epv, 1);
+
+ return epv;
+}
+
+static void
+init_e_shell_corba_class (void)
+{
+ eshell_vepv.GNOME_Unknown_epv = gnome_object_get_epv ();
+ eshell_vepv.GNOME_Evolution_Shell_epv = e_shell_get_epv ();
+}
+
+static void
+e_shell_destroy (GtkObject *object)
+{
+ EShell *eshell = E_SHELL (object);
+
+ if (eshell->base_uri)
+ g_free (eshell->base_uri);
+
+ GTK_OBJECT_CLASS (e_shell_parent_class)->destroy (object);
+}
+
+static void
+e_shell_class_init (GtkObjectClass *object_class)
+{
+ e_shell_parent_class = gtk_type_class (PARENT_TYPE);
+ init_e_shell_corba_class ();
+
+ object_class->destroy = e_shell_destroy;
+}
+
+static void
+e_shell_init (GtkObject *object)
+{
+ EShell *eshell = E_SHELL (object);
+
+ eshell->gnome_app = gnome_app_new ("Evolution", "Evolution");
+}
+
+void
+e_shell_set_base_uri (EShell *eshell, const char *base_uri)
+{
+ g_return_if_fail (eshell != NULL);
+ g_return_if_fail (!E_IS_SHELL (eshell));
+ g_return_if_fail (base_uri != NULL);
+
+ if (eshell->base_uri)
+ g_free (eshell->base_uri);
+
+ eshell->base_uri = g_strdup (base_uri);
+}
+
+const char *
+e_shell_get_base_uri (EShell *eshell)
+{
+ g_return_val_if_fail (eshell != NULL, NULL);
+ g_return_val_if_fail (!E_IS_SHELL (eshell), NULL);
+
+ return eshell->base_uri;
+}
+
+EShell *
+e_shell_new (const char *base_uri)
+{
+ EShell *eshell;
+
+ g_return_val_if_fail (base_uri != NULL, NULL);
+
+ eshell = gtk_type_new (e_shell_get_type ());
+ e_shell_set_base_uri (eshell, base_uri);
+
+ return eshell;
+}
+
+E_MAKE_TYPE (e_shell, "EShell", EShell, e_shell_class_init, e_shell_init, PARENT_TYPE);
+
+
+
+
diff --git a/shell/e-shell.h b/shell/e-shell.h
new file mode 100644
index 0000000000..6574e1a6d0
--- /dev/null
+++ b/shell/e-shell.h
@@ -0,0 +1,32 @@
+#ifndef E_SHELL_H
+#define E_SHELL_H
+
+#include <gnome.h>
+#include <bonobo/gnome-object.h>
+
+#define E_SHELL_GOAD_ID "GOADID:GNOME:Evolution:Shell:1.0"
+#define E_SHELL_FACTORY_GOAD_ID "GOADID:GNOME:Evolution:ShellFactory:1.0"
+
+#define E_SHELL_TYPE (e_shell_get_type ())
+#define E_SHELL(o) (GTK_CHECK_CAST ((o), E_SHELL_TYPE, EShell))
+#define E_SHELL_CLASS(k) (GTK_CHECK_CLASS_CAST((k), E_SHELL_TYPE, EShellClass))
+#define E_IS_SHELL(o) (GTK_CHECK_TYPE ((o), E_SHELL_TYPE))
+#define E_IS_SHELL_CLASS(k) (GTK_CHECK_CLASS_TYPE ((k), E_SHELL_TYPE))
+
+typedef struct {
+ GnomeObject base_object;
+
+ GtkWidget *gnome_app;
+
+ char *base_uri;
+} EShell;
+
+typedef struct {
+ GnomeObjectClass *parent_class;
+} EShellClass;
+
+EShell *e_shell_new (const char *base_uri);
+void e_shell_set_base_uri (EShell *eshell, const char *base_uri);
+const char *e_shell_get_base_uri (EShell *eshell);
+
+#endif /* EVOLUTION_SHELL_H */
diff --git a/shell/main.c b/shell/main.c
new file mode 100644
index 0000000000..76375375dd
--- /dev/null
+++ b/shell/main.c
@@ -0,0 +1,59 @@
+/*
+ * Main evolution shell application
+ *
+ * Authors:
+ * Miguel de Icaza (miguel@helixcode.com)
+ *
+ */
+#include <config.h>
+#include <gnome.h>
+#include <libgnorba/gnorba.h>
+#include <bonobo/gnome-bonobo.h>
+#include <e-util/e-gui-utils.h>
+#include <e-util/e-cursors.h>
+#include <glade/glade.h>
+#include <glade/glade-xml.h>
+
+int shell_debugging = 0;
+
+poptContext ctx;
+
+const struct poptOption shell_popt_options [] = {
+ { "debug", '\0', POPT_ARG_INT, &shell_debugging, 0,
+ N_("Enables some debugging functions"), N_("LEVEL") },
+ { NULL, '\0', 0, NULL, 0 }
+};
+
+int
+main (int argc, char *argv [])
+{
+ CORBA_Environment ev;
+
+ bindtextdomain (PACKAGE, EVOLUTION_LOCALEDIR);
+ textdomain (PACKAGE);
+
+ CORBA_exception_init (&ev);
+ gnome_CORBA_init_with_popt_table (
+ "Evolution", VERSION, &argc, argv,
+ shell_popt_options, 0, &ctx, GNORBA_INIT_SERVER_FUNC, &ev);
+ CORBA_exception_free (&ev);
+
+ if (bonobo_init (gnome_CORBA_ORB (), NULL, NULL) == FALSE){
+ e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
+ _("Failed to initialize the Bonobo component system"));
+ return 0;
+ }
+
+ e_cursors_init ();
+
+ glade_gnome_init ();
+
+ bonobo_activate ();
+
+ gtk_main ();
+
+ /* shutdown */
+ e_cursors_shutdown ();
+
+ return 0;
+}