Updating branch refs/heads/master to 60a96b9d8b1d69d1979c9e290ab019549ef3493f (commit) from c848b24733635ffcaba80bb887ea5e116bc049fb (commit)
commit 60a96b9d8b1d69d1979c9e290ab019549ef3493f Author: Christian Dywan <christ...@twotoasts.de> Date: Wed Sep 30 23:02:10 2009 +0200 Implement 'Open last session' menu item midori/main.c | 37 ++++++++++++++++++++++++++++++++++++- midori/midori-browser.c | 9 +++++++++ 2 files changed, 45 insertions(+), 1 deletions(-) diff --git a/midori/main.c b/midori/main.c index 2111c31..738e7f9 100644 --- a/midori/main.c +++ b/midori/main.c @@ -1350,6 +1350,32 @@ midori_load_extensions (gpointer data) return FALSE; } +static void +midori_browser_action_last_session_activate_cb (GtkAction* action, + MidoriBrowser* browser) +{ + KatzeArray* old_session = katze_array_new (KATZE_TYPE_ITEM); + gchar* config_file = build_config_filename ("session.old.xbel"); + GError* error = NULL; + if (midori_array_from_file (old_session, config_file, "xbel", &error)) + { + guint i = 0; + KatzeItem* item; + while ((item = katze_array_get_nth_item (old_session, i++))) + midori_browser_add_item (browser, item); + } + else + { + g_warning (_("The session couldn't be loaded: %s\n"), error->message); + /* FIXME: Show a graphical dialog */ + g_error_free (error); + } + g_free (config_file); + gtk_action_set_sensitive (action, FALSE); + g_signal_handlers_disconnect_by_func (action, + midori_browser_action_last_session_activate_cb, browser); +} + static gboolean midori_load_session (gpointer data) { @@ -1364,10 +1390,19 @@ midori_load_session (gpointer data) gchar** command = g_object_get_data (G_OBJECT (app), "execute-command"); browser = midori_app_create_browser (app); + config_file = build_config_filename ("session.old.xbel"); + if (g_file_test (config_file, G_FILE_TEST_EXISTS)) + { + GtkActionGroup* action_group = midori_browser_get_action_group (browser); + GtkAction* action = gtk_action_group_get_action (action_group, "LastSession"); + g_signal_connect (action, "activate", + G_CALLBACK (midori_browser_action_last_session_activate_cb), browser); + gtk_action_set_sensitive (action, TRUE); + } midori_app_add_browser (app, browser); gtk_widget_show (GTK_WIDGET (browser)); - config_file = build_config_filename ("accels"); + katze_assign (config_file, build_config_filename ("accels")); if (is_writable (config_file)) g_signal_connect_after (gtk_accel_map_get (), "changed", G_CALLBACK (accel_map_changed_cb), NULL); diff --git a/midori/midori-browser.c b/midori/midori-browser.c index 0297525..ca88013 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -2695,6 +2695,10 @@ _action_window_populate_popup (GtkAction* action, gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show (menuitem); menuitem = gtk_action_create_menu_item ( + _action_by_name (browser, "LastSession")); + gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem); + gtk_widget_show (menuitem); + menuitem = gtk_action_create_menu_item ( _action_by_name (browser, "TabCurrent")); gtk_menu_shell_prepend (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show (menuitem); @@ -4495,6 +4499,9 @@ static const GtkActionEntry entries[] = { { "TabCurrent", NULL, N_("Focus _Current Tab"), "<Ctrl>Home", N_("Focus the current tab"), G_CALLBACK (_action_tab_current_activate) }, + { "LastSession", NULL, + N_("Open last _session"), NULL, + N_("Open the tabs saved in the last session"), NULL }, { "Help", NULL, N_("_Help") }, { "HelpContents", GTK_STOCK_HELP, @@ -4761,6 +4768,7 @@ static const gchar* ui_markup = "<menuitem action='TabPrevious'/>" "<menuitem action='TabNext'/>" "<menuitem action='TabCurrent'/>" + "<menuitem action='LastSession'/>" "<menuitem action='UndoTabClose'/>" "<menuitem action='TrashEmpty'/>" "<menuitem action='Preferences'/>" @@ -5219,6 +5227,7 @@ midori_browser_init (MidoriBrowser* browser) #endif _action_set_sensitive (browser, "EncodingCustom", FALSE); _action_set_sensitive (browser, "SelectionSourceView", FALSE); + _action_set_sensitive (browser, "LastSession", FALSE); /* Create the navigationbar */ browser->navigationbar = gtk_ui_manager_get_widget ( _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits