diff options
Diffstat (limited to 'src/gui')
| -rw-r--r-- | src/gui/core/core.c | 6 | ||||
| -rw-r--r-- | src/gui/core/core.h | 2 | ||||
| -rw-r--r-- | src/gui/core/global.c | 41 | ||||
| -rw-r--r-- | src/gui/core/global.h | 6 | ||||
| -rw-r--r-- | src/gui/core/panels.c | 30 | ||||
| -rw-r--r-- | src/gui/core/panels.h | 4 | ||||
| -rw-r--r-- | src/gui/editor.c | 7 | ||||
| -rw-r--r-- | src/gui/menus/file.c | 39 | ||||
| -rw-r--r-- | src/gui/panels/strings.c | 2 | ||||
| -rw-r--r-- | src/gui/panels/welcome.c | 8 | 
10 files changed, 95 insertions, 50 deletions
diff --git a/src/gui/core/core.c b/src/gui/core/core.c index d9fece5..0530953 100644 --- a/src/gui/core/core.c +++ b/src/gui/core/core.c @@ -34,7 +34,7 @@  /******************************************************************************  *                                                                             * -*  Paramètres  : ref = espace de référencement global.                        * +*  Paramètres  : -                                                            *  *                                                                             *  *  Description : Charge les éléments graphiques de l'éditeur.                 *  *                                                                             * @@ -44,11 +44,11 @@  *                                                                             *  ******************************************************************************/ -bool load_all_gui_components(GObject *ref) +bool load_all_gui_components(void)  {      bool result;                            /* Bilan à retourner           */ -    load_main_panels(ref); +    load_main_panels();      load_extra_gtk_theme(); diff --git a/src/gui/core/core.h b/src/gui/core/core.h index 0dc7354..3112c44 100644 --- a/src/gui/core/core.h +++ b/src/gui/core/core.h @@ -34,7 +34,7 @@  /* Charge les éléments graphiques de l'éditeur. */ -bool load_all_gui_components(GObject *); +bool load_all_gui_components(void);  /* Finalise le chargement des éléments graphiques de l'éditeur. */  bool complete_loading_of_all_gui_components(GGenConfig *); diff --git a/src/gui/core/global.c b/src/gui/core/global.c index 1eb8672..b4001c6 100644 --- a/src/gui/core/global.c +++ b/src/gui/core/global.c @@ -25,6 +25,9 @@ +/* Fenêtre principale de l'éditeur */ +static GtkWindow *_editor = NULL; +  /* Barre de statut principale */  static GtkStatusStack *_status = NULL; @@ -47,6 +50,44 @@ G_LOCK_DEFINE_STATIC(_ci_mutex);  /******************************************************************************  *                                                                             * +*  Paramètres  : editor = fenêtre principale à référencer.                    * +*                                                                             * +*  Description : Note l'adresse de la fenêtre principale de l'éditeur.        * +*                                                                             * +*  Retour      : -                                                            * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +void set_editor_window(GtkWindow *editor) +{ +    _editor = editor; + +} + + +/****************************************************************************** +*                                                                             * +*  Paramètres  : -                                                            * +*                                                                             * +*  Description : Fournit l'adresse de la fenêtre principale de l'éditeur.     * +*                                                                             * +*  Retour      : Fenêtre principale référencée.                               * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +GtkWindow *get_editor_window(void) +{ +    return _editor; + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : status  = barre de statut à tenir informée.                  *  *                                                                             *  *  Description : Note l'adresse de la barre de statut principale.             * diff --git a/src/gui/core/global.h b/src/gui/core/global.h index 33225e3..e69f743 100644 --- a/src/gui/core/global.h +++ b/src/gui/core/global.h @@ -31,6 +31,12 @@ +/* Note l'adresse de la fenêtre principale de l'éditeur. */ +void set_editor_window(GtkWindow *); + +/* Fournit l'adresse de la fenêtre principale de l'éditeur. */ +GtkWindow *get_editor_window(void); +  /* Note l'adresse de la barre de statut principale. */  void set_global_status(GtkStatusStack *); diff --git a/src/gui/core/panels.c b/src/gui/core/panels.c index 5a1beb1..9d11e58 100644 --- a/src/gui/core/panels.c +++ b/src/gui/core/panels.c @@ -49,7 +49,7 @@ static GPanelItem *_panels_list = NULL;  /******************************************************************************  *                                                                             * -*  Paramètres  : ref = espace de référencement global.                        * +*  Paramètres  : -                                                            *  *                                                                             *  *  Description : Charge les principaux panneaux de l'éditeur.                 *  *                                                                             * @@ -59,7 +59,7 @@ static GPanelItem *_panels_list = NULL;  *                                                                             *  ******************************************************************************/ -void load_main_panels(GObject *ref) +void load_main_panels(void)  {      GGenConfig *config;                     /* Configuration globale       */      GPanelItem *item;                       /* Panneau de base à charger   */ @@ -67,34 +67,34 @@ void load_main_panels(GObject *ref)      config = get_main_configuration();      item = g_welcome_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_log_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_regedit_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_symbols_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_history_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_strings_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_glance_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_bookmarks_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_bintree_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);      item = g_error_panel_new(); -    register_panel_item(item, ref, config); +    register_panel_item(item, config);  } @@ -102,7 +102,6 @@ void load_main_panels(GObject *ref)  /******************************************************************************  *                                                                             *  *  Paramètres  : item   = composant à présenter à l'affichage.                * -*                ref    = espace de référencement global.                     *  *                config = configuration à compléter.                          *  *                                                                             *  *  Description : Enregistre un panneau comme partie intégrante de l'éditeur.  * @@ -113,15 +112,12 @@ void load_main_panels(GObject *ref)  *                                                                             *  ******************************************************************************/ -void register_panel_item(GPanelItem *item, GObject *ref, GGenConfig *config) +void register_panel_item(GPanelItem *item, GGenConfig *config)  {      GEditorItem *parent;                    /* Autre version de l'élément  */      parent = G_EDITOR_ITEM(item); -    g_object_ref(ref); -    parent->ref = ref; -      /* Enregistre correctement le tout */      register_editor_item(parent);      panels_list_add_tail(item, &_panels_list); diff --git a/src/gui/core/panels.h b/src/gui/core/panels.h index 2b55517..0c55417 100644 --- a/src/gui/core/panels.h +++ b/src/gui/core/panels.h @@ -35,10 +35,10 @@  /* Charge les principaux panneaux de l'éditeur. */ -void load_main_panels(GObject *); +void load_main_panels(void);  /* Enregistre un panneau comme partie intégrante de l'éditeur. */ -void register_panel_item(GPanelItem *, GObject *, GGenConfig *); +void register_panel_item(GPanelItem *, GGenConfig *);  /* Réalise un traitement sur un panneau de l'éditeur. */  typedef bool (* handle_panel_item_fc) (GPanelItem *, void *); diff --git a/src/gui/editor.c b/src/gui/editor.c index a3055c7..d44d2af 100644 --- a/src/gui/editor.c +++ b/src/gui/editor.c @@ -286,6 +286,8 @@ GtkWidget *create_editor(void)      gtk_container_set_border_width(GTK_CONTAINER(result), 4);      gtk_window_set_title(GTK_WINDOW(result), _("Chrysalide")); +    set_editor_window(GTK_WINDOW(result)); +      g_generic_config_get_value(get_main_configuration(), MPK_TITLE_BAR, &hide);      gtk_window_set_hide_titlebar_when_maximized(GTK_WINDOW(result), hide); @@ -345,7 +347,7 @@ GtkWidget *create_editor(void)          //_support = init_panels2(G_CALLBACK(on_dock_item_switch), ref);          gtk_box_pack_start(GTK_BOX(vbox1), _support, TRUE, TRUE, 0); -        /* ... = */load_all_gui_components(ref); +        /* ... = */load_all_gui_components();      } while(0); @@ -1379,7 +1381,8 @@ static void on_dock_item_switch(GtkDockStation *station, GtkWidget *widget, gpoi          else              g_object_unref(G_OBJECT(binary)); -        g_object_unref(G_OBJECT(old_binary)); +        if (old_binary != NULL) +            g_object_unref(G_OBJECT(old_binary));          g_object_ref(G_OBJECT(widget));          change_editor_items_current_view(GTK_DISPLAY_PANEL(widget)); diff --git a/src/gui/menus/file.c b/src/gui/menus/file.c index c3865b6..d83f05b 100644 --- a/src/gui/menus/file.c +++ b/src/gui/menus/file.c @@ -28,16 +28,17 @@  #include <i18n.h> +#include "../core/global.h"  #include "../../analysis/project.h"  #include "../../gtkext/easygtk.h"  /* Réagit au menu "Fichier -> Nouveau projet". */ -static void mcb_file_new_project(GtkMenuItem *, GObject *); +static void mcb_file_new_project(GtkMenuItem *, gpointer);  /* Réagit au menu "Fichier -> Ouvrir un projet". */ -static void mcb_file_open_project(GtkMenuItem *, GObject *); +static void mcb_file_open_project(GtkMenuItem *, gpointer);  /* Réagit au menu "Fichier -> Enregistrer le projet". */  static void mcb_file_save_project(GtkMenuItem *, gpointer); @@ -77,7 +78,7 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)      menubar = qck_create_menu(GTK_MENU_ITEM(result));      submenuitem = qck_create_menu_item(NULL, NULL, _("New project"), -                                       G_CALLBACK(mcb_file_new_project), ref); +                                       G_CALLBACK(mcb_file_new_project), NULL);      add_accelerator_to_menu_item(submenuitem, "<Ctrl>N", accgroup);      gtk_container_add(GTK_CONTAINER(menubar), submenuitem); @@ -85,7 +86,7 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)      gtk_container_add(GTK_CONTAINER(menubar), submenuitem);      submenuitem = qck_create_menu_item(NULL, NULL, _("Open project"), -                                       G_CALLBACK(mcb_file_open_project), ref); +                                       G_CALLBACK(mcb_file_open_project), NULL);      add_accelerator_to_menu_item(submenuitem, "<Ctrl>O", accgroup);      gtk_container_add(GTK_CONTAINER(menubar), submenuitem); @@ -106,12 +107,12 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)      gtk_container_add(GTK_CONTAINER(menubar), submenuitem);      submenuitem = qck_create_menu_item(NULL, NULL, _("Save project"), -                                       G_CALLBACK(mcb_file_save_project), ref); +                                       G_CALLBACK(mcb_file_save_project), NULL);      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); +                                       G_CALLBACK(mcb_file_save_project_as), NULL);      gtk_container_add(GTK_CONTAINER(menubar), submenuitem);      submenuitem = qck_create_menu_separator(); @@ -129,7 +130,7 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)  /******************************************************************************  *                                                                             *  *  Paramètres  : menuitem = élément de menu sélectionné.                      * -*                ref      = adresse de l'espace de référencement global.      * +*                unused   = adresse non utilisée ici.                         *  *                                                                             *  *  Description : Réagit au menu "Fichier -> Nouveau projet".                  *  *                                                                             * @@ -139,11 +140,11 @@ GtkWidget *build_menu_file(GObject *ref, GtkAccelGroup *accgroup)  *                                                                             *  ******************************************************************************/ -static void mcb_file_new_project(GtkMenuItem *menuitem, GObject *ref) +static void mcb_file_new_project(GtkMenuItem *menuitem, gpointer unused)  {      GStudyProject *project;                 /* Nouveau projet courant      */ -    project = g_study_project_new(ref); +    project = g_study_project_new();      set_current_project(project); @@ -155,7 +156,7 @@ static void mcb_file_new_project(GtkMenuItem *menuitem, GObject *ref)  /******************************************************************************  *                                                                             *  *  Paramètres  : menuitem = élément de menu sélectionné.                      * -*                ref      = adresse de l'espace de référencement global.      * +*                unused   = adresse non utilisée ici.                         *  *                                                                             *  *  Description : Réagit au menu "Fichier -> Ouvrir un projet".                *  *                                                                             * @@ -165,13 +166,13 @@ static void mcb_file_new_project(GtkMenuItem *menuitem, GObject *ref)  *                                                                             *  ******************************************************************************/ -static void mcb_file_open_project(GtkMenuItem *menuitem, GObject *ref) +static void mcb_file_open_project(GtkMenuItem *menuitem, gpointer unused)  {      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(ref), +    dialog = gtk_file_chooser_dialog_new(_("Open a project"), get_editor_window(),                                           GTK_FILE_CHOOSER_ACTION_OPEN,                                           _("_Cancel"), GTK_RESPONSE_CANCEL,                                           _("_Open"), GTK_RESPONSE_ACCEPT, @@ -187,7 +188,7 @@ static void mcb_file_open_project(GtkMenuItem *menuitem, GObject *ref)      {          filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); -        project = g_study_project_open(ref, filename); +        project = g_study_project_open(filename);          if (project != NULL)          { @@ -208,7 +209,7 @@ static void mcb_file_open_project(GtkMenuItem *menuitem, GObject *ref)  /******************************************************************************  *                                                                             *  *  Paramètres  : menuitem = élément de menu sélectionné.                      * -*                data     = adresse de l'espace de référencement global.      * +*                unused   = adresse non utilisée ici.                         *  *                                                                             *  *  Description : Réagit au menu "Fichier -> Enregistrer le projet".           *  *                                                                             * @@ -218,7 +219,7 @@ static void mcb_file_open_project(GtkMenuItem *menuitem, GObject *ref)  *                                                                             *  ******************************************************************************/ -static void mcb_file_save_project(GtkMenuItem *menuitem, gpointer data) +static void mcb_file_save_project(GtkMenuItem *menuitem, gpointer unused)  {      GStudyProject *project;                 /* Projet courant              */ @@ -231,7 +232,7 @@ static void mcb_file_save_project(GtkMenuItem *menuitem, gpointer data)      }      else -        mcb_file_save_project_as(menuitem, data); +        mcb_file_save_project_as(menuitem, NULL);  } @@ -239,7 +240,7 @@ static void mcb_file_save_project(GtkMenuItem *menuitem, gpointer data)  /******************************************************************************  *                                                                             *  *  Paramètres  : menuitem = élément de menu sélectionné.                      * -*                data     = adresse de l'espace de référencement global.      * +*                unused   = adresse non utilisée ici.                         *  *                                                                             *  *  Description : Réagit au menu "Fichier -> Enregistrer le projet sous...".   *  *                                                                             * @@ -249,13 +250,13 @@ static void mcb_file_save_project(GtkMenuItem *menuitem, gpointer data)  *                                                                             *  ******************************************************************************/ -static void mcb_file_save_project_as(GtkMenuItem *menuitem, gpointer data) +static void mcb_file_save_project_as(GtkMenuItem *menuitem, gpointer unused)  {      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), +    dialog = gtk_file_chooser_dialog_new(_("Save the project as..."), get_editor_window(),                                           GTK_FILE_CHOOSER_ACTION_SAVE,                                           _("_Cancel"), GTK_RESPONSE_CANCEL,                                           _("_Save"), GTK_RESPONSE_ACCEPT, diff --git a/src/gui/panels/strings.c b/src/gui/panels/strings.c index c9d971e..6ae44b1 100644 --- a/src/gui/panels/strings.c +++ b/src/gui/panels/strings.c @@ -1054,7 +1054,7 @@ static void mcb_strings_panel_find_refs(GtkMenuItem *menuitem, GStringsPanel *pa       */      instr = g_arch_processor_find_instr_by_address(proc, get_mrange_addr(range)); -    ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(panel)); +    ref = G_OBJECT(get_editor_window());//g_editor_item_get_global_ref(G_EDITOR_ITEM(panel));      dialog = create_gotox_dialog_for_cross_references(GTK_WINDOW(ref), binary, instr, true); diff --git a/src/gui/panels/welcome.c b/src/gui/panels/welcome.c index 44ff517..8ae1667 100644 --- a/src/gui/panels/welcome.c +++ b/src/gui/panels/welcome.c @@ -37,6 +37,7 @@  #include "panel-int.h" +#include "../core/global.h"  #include "../../analysis/project.h"  #include "../../common/cpp.h"  #include "../../common/io.h" @@ -468,7 +469,7 @@ static void on_new_binary_clicked(GtkButton *button, GWelcomePanel *panel)      GObject *ref;                           /* Espace de référencements    */      GtkMenuItem *item;                      /* Elément de menu simulé      */ -    ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(panel)); +    ref = G_OBJECT(get_editor_window());//g_editor_item_get_global_ref(G_EDITOR_ITEM(panel));      item = GTK_MENU_ITEM(g_object_get_data(ref, "mnu_project_add_binary")); @@ -594,7 +595,6 @@ static void on_row_activated_for_projects(GtkTreeView *treeview, GtkTreePath *pa      GtkTreeIter iter;                       /* Point de la consultation    */      gboolean valid;                         /* Validité de l'entrée        */      gchar *filename;                        /* Chemin d'accès au projet    */ -    GObject *ref;                           /* Espace de référencements    */      GStudyProject *project;                 /* Nouveau projet à ouvrir     */      model = gtk_tree_view_get_model(treeview); @@ -605,9 +605,7 @@ static void on_row_activated_for_projects(GtkTreeView *treeview, GtkTreePath *pa          if (valid)          { -            ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(panel)); - -            project = g_study_project_open(ref, filename); +            project = g_study_project_open(filename);              if (project != NULL)              {  | 
