static void on_profile_scoped(AnjutaProfileManager *profile_manager, AnjutaProfile *profile, AnjutaApp *app) { gchar *session_dir; static gboolean first_time = TRUE; if (strcmp(anjuta_profile_get_name(profile), USER_PROFILE_NAME) != 0) return; /* If profile scoped to "user", restore user session */ if (system_restore_session) { session_dir = system_restore_session; system_restore_session = NULL; } else { session_dir = get_user_session_dir(); } if (first_time) { first_time = FALSE; } else { AnjutaSession *session; session = anjuta_session_new(session_dir); anjuta_session_sync(session); g_object_unref(session); } /* Restore session */ anjuta_shell_session_load(ANJUTA_SHELL (app), session_dir, NULL); g_free(session_dir); }
static void on_profile_descoped (AnjutaProfileManager *profile_manager, AnjutaProfile *profile, AnjutaApp *app) { gchar *session_dir; DEBUG_PRINT ("Profile descoped: %s", anjuta_profile_get_name (profile)); if (strcmp (anjuta_profile_get_name (profile), USER_PROFILE_NAME) != 0) return; DEBUG_PRINT ("%s", "User profile descoped; Saving user session"); /* If profile descoped from is "user", save user session */ session_dir = USER_SESSION_PATH_NEW; /* Save current session */ anjuta_shell_session_save (ANJUTA_SHELL (app), session_dir, NULL); g_free (session_dir); }
static void on_profile_scoped (AnjutaProfileManager *profile_manager, AnjutaProfile *profile, AnjutaApp *app) { gchar *session_dir; static gboolean first_time = TRUE; DEBUG_PRINT ("Profile scoped: %s", anjuta_profile_get_name (profile)); if (strcmp (anjuta_profile_get_name (profile), USER_PROFILE_NAME) != 0) return; DEBUG_PRINT ("%s", "User profile loaded; Restoring user session"); /* If profile scoped to "user", restore user session */ if (system_restore_session) { session_dir = system_restore_session; system_restore_session = NULL; } else { session_dir = USER_SESSION_PATH_NEW; } if (first_time) { first_time = FALSE; } else { /* Clear the files list since we don't want to load them later */ AnjutaSession *session; session = anjuta_session_new (session_dir); anjuta_session_set_string_list (session, "File Loader", "Files", NULL); anjuta_session_sync (session); g_object_unref (session); } /* Restore session */ anjuta_shell_session_load (ANJUTA_SHELL (app), session_dir, NULL); g_free (session_dir); }
static void on_profile_descoped(AnjutaProfileManager *profile_manager, AnjutaProfile *profile, AnjutaApp *app) { gchar *session_dir; if (strcmp(anjuta_profile_get_name(profile), USER_PROFILE_NAME) != 0) return; /* If profile descoped from is "user", save user session */ session_dir = get_user_session_dir(); /* Save current session */ anjuta_shell_session_save(ANJUTA_SHELL (app), session_dir, NULL); g_free(session_dir); }
static gboolean on_anjuta_delete_event (AnjutaApp *app, GdkEvent *event, gpointer data) { AnjutaPluginManager *plugin_manager; AnjutaProfileManager *profile_manager; AnjutaProfile *current_profile; AnjutaSavePrompt *save_prompt; gchar *remembered_plugins; DEBUG_PRINT ("%s", "AnjutaApp delete event"); plugin_manager = anjuta_shell_get_plugin_manager (ANJUTA_SHELL (app), NULL); profile_manager = anjuta_shell_get_profile_manager (ANJUTA_SHELL (app), NULL); /* Save remembered plugins */ remembered_plugins = anjuta_plugin_manager_get_remembered_plugins (plugin_manager); g_settings_set_string (app->settings, ANJUTA_REMEMBERED_PLUGINS, remembered_plugins); g_free (remembered_plugins); /* Check for unsaved data */ save_prompt = anjuta_save_prompt_new (GTK_WINDOW (app)); anjuta_shell_save_prompt (ANJUTA_SHELL (app), save_prompt, NULL); if (anjuta_save_prompt_get_items_count (save_prompt) > 0) { switch (gtk_dialog_run (GTK_DIALOG (save_prompt))) { case GTK_RESPONSE_DELETE_EVENT: case ANJUTA_SAVE_PROMPT_RESPONSE_CANCEL: gtk_widget_destroy (GTK_WIDGET (save_prompt)); /* Do not exit now */ return TRUE; case ANJUTA_SAVE_PROMPT_RESPONSE_DISCARD: case ANJUTA_SAVE_PROMPT_RESPONSE_SAVE_CLOSE: /* exit now */ break; } } /* Wait for files to be really saved (asyncronous operation) */ if (app->save_count > 0) { g_message ("Waiting for %d file(s) to be saved!", app->save_count); while (app->save_count > 0) { g_main_context_iteration (NULL, TRUE); } } /* If current active profile is "user", save current session as * default session */ current_profile = anjuta_profile_manager_get_current (profile_manager); if (strcmp (anjuta_profile_get_name (current_profile), "user") == 0) { gchar *session_dir; session_dir = USER_SESSION_PATH_NEW; anjuta_shell_session_save (ANJUTA_SHELL (app), session_dir, NULL); g_free (session_dir); } anjuta_shell_notify_exit (ANJUTA_SHELL (app), NULL); gtk_widget_destroy (GTK_WIDGET (save_prompt)); /* Shutdown */ if (g_object_get_data (G_OBJECT (app), "__proper_shutdown")) { gtk_widget_hide (GTK_WIDGET (app)); anjuta_plugin_manager_unload_all_plugins (anjuta_shell_get_plugin_manager (ANJUTA_SHELL (app), NULL)); } return FALSE; }