static void on_session_save (AnjutaShell *shell, AnjutaSessionPhase phase, AnjutaSession *session, DmaStart *self) { if (phase != ANJUTA_SESSION_PHASE_NORMAL) return; anjuta_session_set_string_list (session, "Debugger", "Source directories", self->source_dirs); anjuta_session_set_int (session, "Debugger", "Stop at beginning", self->stop_at_beginning + 1); anjuta_session_set_string (session, "Debugger", "Remote target", self->remote_debugger); }
static void on_session_save (AnjutaShell *shell, AnjutaSessionPhase phase, AnjutaSession *session, AnjutaWindow *win) { gchar *geometry, *layout_file; GdkWindowState state; if (phase != ANJUTA_SESSION_PHASE_NORMAL) return; /* Save geometry */ state = gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (win))); if (state & GDK_WINDOW_STATE_MAXIMIZED) { anjuta_session_set_int (session, "Anjuta", "Maximized", 1); } if (state & GDK_WINDOW_STATE_FULLSCREEN) { anjuta_session_set_int (session, "Anjuta", "Fullscreen", 1); } /* Save geometry only if window is not maximized or fullscreened */ if (!(state & GDK_WINDOW_STATE_MAXIMIZED) || !(state & GDK_WINDOW_STATE_FULLSCREEN)) { geometry = anjuta_window_get_geometry (win); if (geometry) anjuta_session_set_string (session, "Anjuta", "Geometry", geometry); g_free (geometry); } /* Save layout */ layout_file = g_build_filename (anjuta_session_get_session_directory (session), "dock-layout.xml", NULL); anjuta_window_layout_save (win, layout_file, NULL); g_free (layout_file); }
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); } }