From c80c14ffd0ace81afa80c82a137494900fcc0f14 Mon Sep 17 00:00:00 2001 From: Arturo Espinosa Date: Fri, 7 Jan 2000 00:25:56 +0000 Subject: More framework work -miguel svn path=/trunk/; revision=1539 --- ChangeLog | 5 +++ configure.in | 29 +++++++++++---- e-util/Makefile.am | 2 + shell/Makefile.am | 14 +++++-- shell/Shell.idl | 19 ++++++++++ shell/e-init.c | 34 +++++++++++++++++ shell/e-init.h | 8 ++++ shell/e-shell.c | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++ shell/e-shell.h | 32 ++++++++++++++++ shell/main.c | 59 +++++++++++++++++++++++++++++ 10 files changed, 296 insertions(+), 12 deletions(-) create mode 100644 shell/Shell.idl create mode 100644 shell/e-init.c create mode 100644 shell/e-init.h create mode 100644 shell/e-shell.c create mode 100644 shell/e-shell.h create mode 100644 shell/main.c diff --git a/ChangeLog b/ChangeLog index 452a8f44d0..b7c67a0e8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2000-01-06 Miguel de Icaza + + * configure.in: Add Bonobo detection, Bonobo flags for compilation + for the components and the shell. + 2000-01-06 Elliot Lee * 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 + +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 +#include +#include "e-init.h" +#include +#include +#include +#include +#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 +#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 +#include + +#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 +#include +#include +#include +#include +#include +#include +#include + +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; +} -- cgit v1.2.3