diff options
Diffstat (limited to 'shell/main.c')
-rw-r--r-- | shell/main.c | 180 |
1 files changed, 12 insertions, 168 deletions
diff --git a/shell/main.c b/shell/main.c index 7e824ba990..766d6e6d7d 100644 --- a/shell/main.c +++ b/shell/main.c @@ -23,9 +23,7 @@ #include <config.h> #include <fcntl.h> #include <glib.h> -#include <stdio.h> -#include <gtk/gtkalignment.h> #include <gtk/gtkframe.h> #include <gtk/gtklabel.h> #include <gtk/gtkmain.h> @@ -55,7 +53,6 @@ #include "e-util/e-gtk-utils.h" #include "e-shell-constants.h" -#include "e-shell-config.h" #include "e-setup.h" #include "e-shell.h" @@ -63,11 +60,7 @@ static EShell *shell = NULL; static char *evolution_directory = NULL; - -/* Command-line options. */ static gboolean no_splash = FALSE; -static gboolean start_online = FALSE; -static gboolean start_offline = FALSE; extern char *evolution_debug_log; @@ -79,7 +72,6 @@ quit_box_new (void) GtkWidget *frame; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_policy (GTK_WINDOW (window), FALSE, FALSE, FALSE); gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_CENTER); /* (Just to prevent smart-ass window managers like Sawfish from setting @@ -181,119 +173,6 @@ destroy_cb (GtkObject *object, gpointer data) } -/* Warning dialog to scare people off a little bit. */ - -static void -warning_dialog_clicked_callback (GnomeDialog *dialog, - int button_number, - void *data) -{ - GtkCheckButton *dont_bother_me_again_checkbox; - Bonobo_ConfigDatabase config_db; - - dont_bother_me_again_checkbox = GTK_CHECK_BUTTON (data); - config_db = e_shell_get_config_db (shell); - - bonobo_config_set_boolean (config_db, "/Shell/skip_warning_dialog_1_1", - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (dont_bother_me_again_checkbox)), - NULL); - - gtk_widget_destroy (GTK_WIDGET (dialog)); -} - -static void -show_development_warning (GtkWindow *parent) -{ - GtkWidget *label; - GtkWidget *warning_dialog; - GtkWidget *dont_bother_me_again_checkbox; - GtkWidget *alignment; - Bonobo_ConfigDatabase config_db; - - config_db = e_shell_get_config_db (shell); - if (bonobo_config_get_boolean_with_default (config_db, "/Shell/skip_warning_dialog_1_1", FALSE, NULL)) - return; - - warning_dialog = gnome_dialog_new ("Ximian Evolution " VERSION, GNOME_STOCK_BUTTON_OK, NULL); - gtk_window_set_transient_for (GTK_WINDOW (warning_dialog), parent); - - label = gtk_label_new ( - /* xgettext:no-c-format */ - _("Hi. Thanks for taking the time to download this preview release\n" - "of the Ximian Evolution groupware suite.\n" - "\n" - "This version of Ximian Evolution is not yet complete. It's getting close,\n" - "but some features are either unfinished or don't work properly.\n" - "\n" - "If you want a stable version of Evolution, we urge you to uninstall,\n" - "this version, and install a 1.0.x version instead (1.0.5 recommended).\n" - "\n" - "If you find bugs, please report them to us at bugzilla.ximian.com.\n" - "This product comes with no warranty and is not intended for\n" - "individuals prone to violent fits of anger.\n" - "\n" - "We hope that you enjoy the results of our hard work, and we\n" - "eagerly await your contributions!\n" - )); - gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT); - - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (warning_dialog)->vbox), - label, TRUE, TRUE, 4); - - label = gtk_label_new ( - _( - "Thanks\n" - "The Ximian Evolution Team\n" - )); - gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_RIGHT); - gtk_misc_set_alignment(GTK_MISC(label), 1, .5); - - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (warning_dialog)->vbox), - label, TRUE, TRUE, 0); - - dont_bother_me_again_checkbox = gtk_check_button_new_with_label (_("Don't tell me again")); - - /* GTK sucks. (Just so you know.) */ - alignment = gtk_alignment_new (0.0, 0.0, 0.0, 0.0); - - gtk_container_add (GTK_CONTAINER (alignment), dont_bother_me_again_checkbox); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (warning_dialog)->vbox), - alignment, FALSE, FALSE, 0); - - gtk_widget_show_all (warning_dialog); - - gtk_signal_connect (GTK_OBJECT (warning_dialog), "clicked", - GTK_SIGNAL_FUNC (warning_dialog_clicked_callback), - dont_bother_me_again_checkbox); -} - -/* The following signal handlers are used to display the development warning as - soon as the first view is created. */ - -static void -view_map_callback (GtkWidget *widget, - void *data) -{ - gtk_signal_disconnect_by_func (GTK_OBJECT (widget), - GTK_SIGNAL_FUNC (view_map_callback), - data); - - show_development_warning (GTK_WINDOW (widget)); -} - -static void -new_view_created_callback (EShell *shell, - EShellView *view, - void *data) -{ - gtk_signal_disconnect_by_func (GTK_OBJECT (shell), - GTK_SIGNAL_FUNC (new_view_created_callback), - data); - - gtk_signal_connect (GTK_OBJECT (view), "map", view_map_callback, NULL); -} - - /* This is for doing stuff that requires the GTK+ loop to be running already. */ static gint @@ -303,39 +182,23 @@ idle_cb (void *data) GNOME_Evolution_Shell corba_shell; CORBA_Environment ev; EShellConstructResult result; - EShellStartupLineMode startup_line_mode; GSList *p; gboolean have_evolution_uri; gboolean display_default; - gboolean displayed_any; CORBA_exception_init (&ev); uri_list = (GSList *) data; - if (! start_online && ! start_offline) - startup_line_mode = E_SHELL_STARTUP_LINE_MODE_CONFIG; - else if (start_online) - startup_line_mode = E_SHELL_STARTUP_LINE_MODE_ONLINE; - else - startup_line_mode = E_SHELL_STARTUP_LINE_MODE_OFFLINE; - - shell = e_shell_new (evolution_directory, ! no_splash, startup_line_mode, &result); + shell = e_shell_new (evolution_directory, ! no_splash, &result); g_free (evolution_directory); switch (result) { case E_SHELL_CONSTRUCT_RESULT_OK: - e_shell_config_factory_register (shell); - gtk_signal_connect (GTK_OBJECT (shell), "no_views_left", GTK_SIGNAL_FUNC (no_views_left_cb), NULL); gtk_signal_connect (GTK_OBJECT (shell), "destroy", GTK_SIGNAL_FUNC (destroy_cb), NULL); - - if (!getenv ("EVOLVE_ME_HARDER")) - gtk_signal_connect (GTK_OBJECT (shell), "new_view_created", - GTK_SIGNAL_FUNC (new_view_created_callback), NULL); - corba_shell = bonobo_object_corba_objref (BONOBO_OBJECT (shell)); corba_shell = CORBA_Object_duplicate (corba_shell, &ev); break; @@ -366,25 +229,16 @@ idle_cb (void *data) const char *uri; uri = (const char *) p->data; - if (strncmp (uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) == 0 || - strncmp (uri, E_SHELL_DEFAULTURI_PREFIX, E_SHELL_DEFAULTURI_PREFIX_LEN) == 0) + if (strncmp (uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) == 0) have_evolution_uri = TRUE; } if (shell == NULL) { - /* We're talking to a remote shell. If the user didn't - * ask us to open any particular URI, then open another - * view of the default URI - */ if (uri_list == NULL) display_default = TRUE; else display_default = FALSE; } else { - /* We're starting a new shell. If the user didn't specify - * any evolution: URIs to view, AND we can't load the - * user's previous settings, then show the default URI. - */ if (! have_evolution_uri) { if (! e_shell_restore_from_settings (shell)) display_default = TRUE; @@ -395,31 +249,29 @@ idle_cb (void *data) } } - displayed_any = FALSE; - for (p = uri_list; p != NULL; p = p->next) { + if (display_default) { const char *uri; - uri = (const char *) p->data; + uri = E_SHELL_VIEW_DEFAULT_URI; GNOME_Evolution_Shell_handleURI (corba_shell, uri, &ev); - if (ev._major == CORBA_NO_EXCEPTION) - displayed_any = TRUE; - else { + if (ev._major != CORBA_NO_EXCEPTION) g_warning ("CORBA exception %s when requesting URI -- %s", ev._repo_id, uri); - CORBA_exception_free (&ev); - } } - g_slist_free (uri_list); - - if (display_default && ! displayed_any) { + for (p = uri_list; p != NULL; p = p->next) { const char *uri; - uri = E_SHELL_VIEW_DEFAULT_URI; + uri = (const char *) p->data; GNOME_Evolution_Shell_handleURI (corba_shell, uri, &ev); if (ev._major != CORBA_NO_EXCEPTION) g_warning ("CORBA exception %s when requesting URI -- %s", ev._repo_id, uri); + + if (strncmp (uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) == 0) + have_evolution_uri = TRUE; } + g_slist_free (uri_list); + CORBA_Object_release (corba_shell, &ev); CORBA_exception_free (&ev); @@ -435,8 +287,6 @@ main (int argc, char **argv) { struct poptOption options[] = { { "no-splash", '\0', POPT_ARG_NONE, &no_splash, 0, N_("Disable splash screen"), NULL }, - { "offline", '\0', POPT_ARG_NONE, &start_offline, 0, N_("Start in offline mode"), NULL }, - { "online", '\0', POPT_ARG_NONE, &start_online, 0, N_("Start in online mode"), NULL }, { "debug", '\0', POPT_ARG_STRING, &evolution_debug_log, 0, N_("Send the debugging output of all components to a file."), NULL }, { NULL, '\0', POPT_ARG_INCLUDE_TABLE, &oaf_popt_options, 0, NULL, NULL }, POPT_AUTOHELP @@ -454,12 +304,6 @@ main (int argc, char **argv) gnome_init_with_popt_table ("Evolution", VERSION " [" SUB_VERSION "]", argc, argv, options, 0, &popt_context); - if (start_online && start_offline) { - fprintf (stderr, _("%s: --online and --offline cannot be used together.\n Use %s --help for more information.\n"), - argv[0], argv[0]); - exit (1); - } - if (evolution_debug_log) { int fd; |