diff options
Diffstat (limited to 'src/gui')
| -rw-r--r-- | src/gui/menus/file.c | 199 | ||||
| -rw-r--r-- | src/gui/panels/panel.c | 24 | ||||
| -rw-r--r-- | src/gui/panels/panel.h | 3 | 
3 files changed, 226 insertions, 0 deletions
| diff --git a/src/gui/menus/file.c b/src/gui/menus/file.c index 95b50cb..8d218c1 100644 --- a/src/gui/menus/file.c +++ b/src/gui/menus/file.c @@ -33,6 +33,18 @@ +/* Réagit au menu "Fichier -> Nouveau projet". */ +static void mcb_file_new_project(GtkMenuItem *, gpointer); + +/* Réagit au menu "Fichier -> Ouvrir un projet". */ +static void mcb_file_open_project(GtkMenuItem *, gpointer); + +/* Réagit au menu "Fichier -> Enregistrer le projet". */ +static void mcb_file_save_project(GtkMenuItem *, gpointer); + +/* Réagit au menu "Fichier -> Enregistrer le projet sous...". */ +static void mcb_file_save_project_as(GtkMenuItem *, gpointer); +  /* Réagit avec le menu "Fichier -> Quitter". */  static void mcb_file_quit(GtkMenuItem *, GObject *); @@ -57,6 +69,7 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)      GtkWidget *menubar;                     /* Support pour éléments       */      GtkWidget *submenuitem;                 /* Sous-élément de menu #1     */      GtkWidget *deepmenuitem;                /* Sous-élément de menu #2     */ +    GtkRecentFilter *filter;                /* Filtre gardant les projets  */      result = gtk_menu_item_new_with_mnemonic(_("_File"));      gtk_widget_show(result); @@ -64,6 +77,19 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)      menubar = gtk_menu_new();      gtk_menu_item_set_submenu(GTK_MENU_ITEM(result), menubar); +    submenuitem = qck_create_menu_item(NULL, NULL, _("New project"), +                                       G_CALLBACK(mcb_file_new_project), ref); +    add_accelerator_to_menu_item(submenuitem, "<Ctrl>N", accgroup); +    gtk_container_add(GTK_CONTAINER(menubar), submenuitem); + +    submenuitem = qck_create_menu_separator(); +    gtk_container_add(GTK_CONTAINER(menubar), submenuitem); + +    submenuitem = qck_create_menu_item(NULL, NULL, _("Open project"), +                                       G_CALLBACK(mcb_file_open_project), ref); +    add_accelerator_to_menu_item(submenuitem, "<Ctrl>O", accgroup); +    gtk_container_add(GTK_CONTAINER(menubar), submenuitem); +      submenuitem = qck_create_menu_item(NULL, NULL, _("Recent projects..."), NULL, NULL);      gtk_container_add(GTK_CONTAINER(menubar), submenuitem); @@ -73,6 +99,22 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)      gtk_recent_chooser_set_show_icons(GTK_RECENT_CHOOSER(deepmenuitem), FALSE);      gtk_menu_item_set_submenu(GTK_MENU_ITEM(submenuitem), deepmenuitem); +    filter = gtk_recent_filter_new(); +    gtk_recent_filter_add_mime_type(filter, "application/chrysalide.project"); +    gtk_recent_chooser_add_filter(GTK_RECENT_CHOOSER(deepmenuitem), filter); + +    submenuitem = qck_create_menu_separator(); +    gtk_container_add(GTK_CONTAINER(menubar), submenuitem); + +    submenuitem = qck_create_menu_item(NULL, NULL, _("Save project"), +                                       G_CALLBACK(mcb_file_save_project), ref); +    add_accelerator_to_menu_item(submenuitem, "<Ctrl>S", accgroup); +    gtk_container_add(GTK_CONTAINER(menubar), submenuitem); + +    submenuitem = qck_create_menu_item(NULL, NULL, _("Save project as..."), +                                       G_CALLBACK(mcb_file_save_project_as), ref); +    gtk_container_add(GTK_CONTAINER(menubar), submenuitem); +      submenuitem = qck_create_menu_separator();      gtk_container_add(GTK_CONTAINER(menubar), submenuitem); @@ -88,6 +130,163 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)  /******************************************************************************  *                                                                             *  *  Paramètres  : menuitem = élément de menu sélectionné.                      * +*                data     = adresse de l'espace de référencement global.      * +*                                                                             * +*  Description : Réagit au menu "Fichier -> Nouveau projet".                  * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static void mcb_file_new_project(GtkMenuItem *menuitem, gpointer data) +{ +    GStudyProject *project;                 /* Nouveau projet courant      */ + +    project = g_study_project_new(); + +    set_current_project(project); + +    g_study_project_display(project); + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : menuitem = élément de menu sélectionné.                      * +*                data     = adresse de l'espace de référencement global.      * +*                                                                             * +*  Description : Réagit au menu "Fichier -> Ouvrir un projet".                * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static void mcb_file_open_project(GtkMenuItem *menuitem, gpointer data) +{ +    GtkWidget *dialog;                      /* Boîte à afficher            */ +    GStudyProject *project;                 /* Projet chargé               */ +    gchar *filename;                        /* Nom du fichier à intégrer   */ + +    dialog = gtk_file_chooser_dialog_new(_("Open a project"), GTK_WINDOW(data), +                                         GTK_FILE_CHOOSER_ACTION_OPEN, +                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, +                                         GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, +                                         NULL); + +    project = get_current_project(); + +    if (g_study_project_get_filename(project) != NULL) +        gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), +                                      g_study_project_get_filename(project)); + +    if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) +    { +        filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + +        project = g_study_project_open(filename); + +        if (project != NULL) +        { +            set_current_project(project); +            g_study_project_display(project); +            push_project_into_recent_list(project); +        } + +        g_free(filename); + +    } + +    gtk_widget_destroy(dialog); + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : menuitem = élément de menu sélectionné.                      * +*                data     = adresse de l'espace de référencement global.      * +*                                                                             * +*  Description : Réagit au menu "Fichier -> Enregistrer le projet".           * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static void mcb_file_save_project(GtkMenuItem *menuitem, gpointer data) +{ +    GStudyProject *project;                 /* Projet courant              */ + +    project = get_current_project(); + +    if (g_study_project_get_filename(project) != NULL) +    { +        if (g_study_project_save(project, NULL)) +            push_project_into_recent_list(project); +    } + +    else +        mcb_file_save_project_as(menuitem, data); + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : menuitem = élément de menu sélectionné.                      * +*                data     = adresse de l'espace de référencement global.      * +*                                                                             * +*  Description : Réagit au menu "Fichier -> Enregistrer le projet sous...".   * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static void mcb_file_save_project_as(GtkMenuItem *menuitem, gpointer data) +{ +    GtkWidget *dialog;                      /* Boîte à afficher            */ +    GStudyProject *project;                 /* Projet courant              */ +    gchar *filename;                        /* Nom du fichier à intégrer   */ + +    dialog = gtk_file_chooser_dialog_new(_("Save the project as..."), GTK_WINDOW(data), +                                         GTK_FILE_CHOOSER_ACTION_SAVE, +                                         GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, +                                         GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, +                                         NULL); + +    project = get_current_project(); + +    if (g_study_project_get_filename(project) != NULL) +        gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(dialog), +                                      g_study_project_get_filename(project)); + +    if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) +    { +        filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); + +        if (g_study_project_save(project, filename)) +            push_project_into_recent_list(project); + +        g_free(filename); + +    } + +    gtk_widget_destroy(dialog); + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : menuitem = élément de menu sélectionné.                      *  *                ref      = adresse de l'espace de référencement global.      *  *                                                                             *  *  Description : Réagit avec le menu "Fichier -> Quitter".                    * diff --git a/src/gui/panels/panel.c b/src/gui/panels/panel.c index a12c675..b13c074 100644 --- a/src/gui/panels/panel.c +++ b/src/gui/panels/panel.c @@ -285,6 +285,30 @@ void g_panel_item_dock(GPanelItem *item)  /******************************************************************************  *                                                                             * +*  Paramètres  : item = composant à retirer de l'affichage.                   * +*                                                                             * +*  Description : Supprime un panneau de l'ensemble affiché.                   * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +void g_panel_item_undock(GPanelItem *item) +{ +    GtkWidget *station;                     /* Base du remplacement        */ + +    station = gtk_widget_get_parent(G_EDITOR_ITEM(item)->widget);   /* NoteBook */ +    station = gtk_widget_get_parent(station);   /* DockStation */ + +    gtk_dock_panel_remove_widget(GTK_DOCK_STATION(station), G_EDITOR_ITEM(item)->widget); + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : base   = support sujet à analyse.                            *  *                pos    = position de la tête de lecture dans le chemin.      *  *                target = indentifiant de positionnement recherché.           * diff --git a/src/gui/panels/panel.h b/src/gui/panels/panel.h index 9c6fa89..893c48b 100644 --- a/src/gui/panels/panel.h +++ b/src/gui/panels/panel.h @@ -57,6 +57,9 @@ GPanelItem *g_panel_item_get(const char *);  /* Place un panneau dans l'ensemble affiché. */  void g_panel_item_dock(GPanelItem *); +/* Supprime un panneau de l'ensemble affiché. */ +void g_panel_item_undock(GPanelItem *); +  /* ----------------------- PLACEMENTS DES DIFFERENTS PANNEAUX ----------------------- */ | 
