aboutsummaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
Diffstat (limited to 'shell')
-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
7 files changed, 268 insertions, 4 deletions
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;
+}