summaryrefslogtreecommitdiff
path: root/src/gui/panels/strings.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/panels/strings.c')
-rw-r--r--src/gui/panels/strings.c25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/gui/panels/strings.c b/src/gui/panels/strings.c
index dacd14c..6e9324f 100644
--- a/src/gui/panels/strings.c
+++ b/src/gui/panels/strings.c
@@ -41,6 +41,7 @@
#include "../../format/format.h"
#include "../../format/symiter.h"
#include "../../gtkext/easygtk.h"
+#include "../../gtkext/gtkdisplaypanel.h"
#include "../../gtkext/gtkdockable-int.h"
#include "../../gtkext/tmgt.h"
@@ -121,7 +122,7 @@ static gboolean on_key_pressed_over_strings(GtkTreeView *, GdkEventKey *, GStrin
static void on_string_name_edited(GtkCellRendererText *, gchar *, gchar *, GtkTreeModel *);
/* Réagit à un changement d'affichage principal de contenu. */
-static void change_strings_panel_current_binary(GStringsPanel *, GLoadedBinary *);
+static void change_strings_panel_current_content(GStringsPanel *, GLoadedContent *, GLoadedContent *);
@@ -249,7 +250,7 @@ static void g_strings_panel_class_init(GStringsPanelClass *klass)
editem = G_EDITOR_ITEM_CLASS(klass);
- editem->update_binary = (update_item_binary_fc)change_strings_panel_current_binary;
+ editem->change_content = (change_item_content_fc)change_strings_panel_current_content;
panel = G_PANEL_ITEM_CLASS(klass);
@@ -641,8 +642,9 @@ static void on_string_name_edited(GtkCellRendererText *renderer, gchar *path, gc
/******************************************************************************
* *
-* Paramètres : panel = panneau à mettre à jour. *
-* binary = nouvelle instance de binaire analysé. *
+* Paramètres : panel = panneau à mettre à jour. *
+* old = ancien contenu chargé analysé. *
+* new = nouveau contenu chargé à analyser. *
* *
* Description : Réagit à un changement d'affichage principal de contenu. *
* *
@@ -652,14 +654,20 @@ static void on_string_name_edited(GtkCellRendererText *renderer, gchar *path, gc
* *
******************************************************************************/
-static void change_strings_panel_current_binary(GStringsPanel *panel, GLoadedBinary *binary)
+static void change_strings_panel_current_content(GStringsPanel *panel, GLoadedContent *old, GLoadedContent *new)
{
+ GLoadedBinary *binary; /* Autre version de l'instance */
GtkBuilder *builder; /* Constructeur utilisé */
GtkListStore *store; /* Modèle de gestion */
GtkTreeView *treeview; /* Affichage de la liste */
GtkTreeViewColumn *column; /* Colonne de la liste */
GArchProcessor *proc; /* Architecture du binaire */
+ if (G_IS_LOADED_BINARY(new))
+ binary = G_LOADED_BINARY(new);
+ else
+ binary = NULL;
+
/* Basculement du binaire utilisé */
if (panel->binary != NULL)
@@ -1266,7 +1274,6 @@ static void mcb_strings_panel_find_refs(GtkMenuItem *menuitem, GStringsPanel *pa
{
GBinSymbol *symbol; /* Symbole sélectionné */
const mrange_t *range; /* Couverture en mémoire */
- GLoadedBinary *binary; /* Représentation binaire */
GArchProcessor *proc; /* Processeur de l'architecture*/
GArchInstruction *instr; /* Point de croisements */
GObject *ref; /* Espace de référencements */
@@ -1279,8 +1286,7 @@ static void mcb_strings_panel_find_refs(GtkMenuItem *menuitem, GStringsPanel *pa
range = g_binary_symbol_get_range(symbol);
- binary = get_current_binary();
- proc = g_loaded_binary_get_processor(binary);
+ proc = g_loaded_binary_get_processor(panel->binary);
/**
* Se rapporter aux commentaires de mcb_edition_list_xrefs() pour les questions
@@ -1290,7 +1296,7 @@ static void mcb_strings_panel_find_refs(GtkMenuItem *menuitem, GStringsPanel *pa
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);
+ dialog = create_gotox_dialog_for_cross_references(GTK_WINDOW(ref), panel->binary, instr, true);
if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK)
{
@@ -1313,7 +1319,6 @@ static void mcb_strings_panel_find_refs(GtkMenuItem *menuitem, GStringsPanel *pa
g_object_unref(G_OBJECT(instr));
g_object_unref(G_OBJECT(proc));
- g_object_unref(G_OBJECT(binary));
g_object_unref(G_OBJECT(symbol));