diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/menus/project.c | 12 | ||||
-rw-r--r-- | src/main.c | 2 | ||||
-rw-r--r-- | src/params.h | 16 | ||||
-rw-r--r-- | src/project.c | 7 |
4 files changed, 22 insertions, 15 deletions
diff --git a/src/gui/menus/project.c b/src/gui/menus/project.c index 52a2fbb..7e9fc3f 100644 --- a/src/gui/menus/project.c +++ b/src/gui/menus/project.c @@ -26,6 +26,9 @@ #include <i18n.h> +#include <libgen.h> +#include <malloc.h> +#include <string.h> #include "../editem-int.h" @@ -170,6 +173,7 @@ void update_menu_project_for_project(GtkWidget *widget, GStudyProject *project, static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar) { GtkWidget *dialog; /* Boîte à afficher */ + char *dir; /* Répertoire courant */ gchar *filename; /* Nom du fichier à intégrer */ GOpenidaBinary *binary; /* Représentation chargée */ @@ -180,6 +184,14 @@ static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar) GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL); + if (g_study_project_get_filename(get_current_project()) != NULL) + { + dir = strdup(g_study_project_get_filename(get_current_project())); + dir = dirname(dir); + gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog), dir); + free(dir); + } + if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); @@ -147,7 +147,7 @@ int main(int argc, char **argv) /* Charge le dernier projet */ - filename = get_string_config_value(config, MPT_RECENT_PROJECT_1); + filename = get_string_config_value(config, MPT_LAST_PROJECT); if (filename == NULL) project = g_study_project_new(); else project = g_study_project_open(filename); diff --git a/src/params.h b/src/params.h index 11985b6..49e2fd4 100644 --- a/src/params.h +++ b/src/params.h @@ -38,13 +38,7 @@ typedef enum _MainParamType { - MPT_RECENT_PROJECT_1, /* Projet récent numéro 1 */ - MPT_RECENT_PROJECT_2, /* Projet récent numéro 2 */ - MPT_RECENT_PROJECT_3, /* Projet récent numéro 3 */ - MPT_RECENT_PROJECT_4, /* Projet récent numéro 4 */ - MPT_RECENT_PROJECT_5, /* Projet récent numéro 5 */ - MPT_RECENT_PROJECT_6, /* Projet récent numéro 6 */ - MPT_RECENT_PROJECT_7, /* Projet récent numéro 7 */ + MPT_LAST_PROJECT, /* Dernier projet ouvert */ MPT_AUTO_SAVE, /* Sauvegarde automatique ? */ @@ -54,13 +48,7 @@ typedef enum _MainParamType static config_param main_params[MPT_COUNT] = { - [MPT_RECENT_PROJECT_1] = { "/OpenIDA/Recents/Project1", CVT_STRING, false, NULL, NULL }, - [MPT_RECENT_PROJECT_2] = { "/OpenIDA/Recents/Project2", CVT_STRING, false, NULL, NULL }, - [MPT_RECENT_PROJECT_3] = { "/OpenIDA/Recents/Project3", CVT_STRING, false, NULL, NULL }, - [MPT_RECENT_PROJECT_4] = { "/OpenIDA/Recents/Project4", CVT_STRING, false, NULL, NULL }, - [MPT_RECENT_PROJECT_5] = { "/OpenIDA/Recents/Project5", CVT_STRING, false, NULL, NULL }, - [MPT_RECENT_PROJECT_6] = { "/OpenIDA/Recents/Project6", CVT_STRING, false, NULL, NULL }, - [MPT_RECENT_PROJECT_7] = { "/OpenIDA/Recents/Project7", CVT_STRING, false, NULL, NULL }, + [MPT_LAST_PROJECT] = { "/OpenIDA/Editor/LastProject", CVT_STRING, false, NULL, NULL }, [MPT_AUTO_SAVE] = { "/OpenIDA/Project/Autosave", CVT_BOOLEAN, false, true, NULL }, diff --git a/src/project.c b/src/project.c index 245bac4..9763e2d 100644 --- a/src/project.c +++ b/src/project.c @@ -29,6 +29,7 @@ #include <string.h> +#include "params.h" #include "common/xml.h" #include "gtkext/easygtk.h" #include "gtkext/gtkblockview.h" @@ -661,6 +662,8 @@ void push_project_into_recent_list(const GStudyProject *project) if (project->filename == NULL) return; + /* Constitution de la liste des projets récents */ + manager = get_projects_manager(); qualified = (char *)calloc(strlen("file://") + strlen(project->filename) + 1, sizeof(char)); @@ -678,4 +681,8 @@ void push_project_into_recent_list(const GStudyProject *project) free(qualified); + /* Pour la prochaine ouverture du programme... */ + + set_string_config_value(get_main_configuration(), MPT_LAST_PROJECT, project->filename); + } |