Пример #1
0
void
anjuta_shell_session_save (AnjutaShell *shell, const gchar *session_directory,
                           GError **error)
{
    AnjutaSession *session;

    g_return_if_fail (ANJUTA_IS_SHELL (shell));
    g_return_if_fail (session_directory != NULL);

    session = anjuta_session_new (session_directory);
    anjuta_session_clear (session);
    g_signal_emit_by_name (G_OBJECT (shell), "save_session",
                           ANJUTA_SESSION_PHASE_FIRST, session);
    g_signal_emit_by_name (G_OBJECT (shell), "save_session",
                           ANJUTA_SESSION_PHASE_NORMAL, session);
    g_signal_emit_by_name (G_OBJECT (shell), "save_session",
                           ANJUTA_SESSION_PHASE_LAST, session);
    anjuta_session_sync (session);
    g_object_unref (session);
}
Пример #2
0
static void
on_session_load (AnjutaShell *shell, AnjutaSessionPhase phase,
				 AnjutaSession *session, AnjutaWindow *win)
{
	if (phase == ANJUTA_SESSION_PHASE_START)
	{
		AnjutaApplication *app;

		app = ANJUTA_APPLICATION (gtk_window_get_application (GTK_WINDOW (win)));
		if (app != NULL)
		{
			if (anjuta_application_get_no_session (app))
			{
				/* Clear session */
				anjuta_session_clear (session);
			}
			else if (anjuta_application_get_no_files (app))
			{
				/* Clear files from session */
				anjuta_session_set_string_list (session, "File Loader",
				                                "Files", NULL);
			}
			if (anjuta_application_get_geometry (app))
			{
				/* Set new geometry */
				anjuta_session_set_string (session, "Anjuta", "Geometry",
				                           anjuta_application_get_geometry (app));
			}
		}
	}

	/* We load layout at last so that all plugins would have loaded by now */
	if (phase == ANJUTA_SESSION_PHASE_LAST)
	{
		gchar *geometry;
		gchar *layout_file;

		/* Restore geometry */
		geometry = anjuta_session_get_string (session, "Anjuta", "Geometry");
		anjuta_window_set_geometry (win, geometry);
		g_free (geometry);

		/* Restore window state */
		if (anjuta_session_get_int (session, "Anjuta", "Fullscreen"))
		{
			/* bug #304495 */
			AnjutaUI* ui = anjuta_shell_get_ui(shell, NULL);
			GtkAction* action = anjuta_ui_get_action (ui, "ActionGroupToggleView",
								   "ActionViewFullscreen");
			gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action),
								  TRUE);

			gtk_window_fullscreen (GTK_WINDOW (shell));

		}
		else if (anjuta_session_get_int (session, "Anjuta", "Maximized"))
		{
			gtk_window_maximize (GTK_WINDOW (shell));
		}
		else
		{
			gtk_window_unmaximize (GTK_WINDOW (shell));
		}
		gtk_widget_show (GTK_WIDGET (win));

		/* Restore layout */
		layout_file = g_build_filename (anjuta_session_get_session_directory (session),
										"dock-layout.xml", NULL);
		anjuta_window_layout_load (win, layout_file, NULL);
		g_free (layout_file);
	}
}