summaryrefslogtreecommitdiff
path: root/src/gui/tb/portions.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/tb/portions.c')
-rw-r--r--src/gui/tb/portions.c99
1 files changed, 78 insertions, 21 deletions
diff --git a/src/gui/tb/portions.c b/src/gui/tb/portions.c
index 1823bda..f8b2b92 100644
--- a/src/gui/tb/portions.c
+++ b/src/gui/tb/portions.c
@@ -43,6 +43,8 @@ struct _GPortionsTbItem
{
GToolbarItem parent; /* A laisser en premier */
+ GtkWidget *support; /* Composant GTK de support */
+
};
@@ -67,8 +69,14 @@ static void g_portions_tbitem_dispose(GPortionsTbItem *);
/* Procède à la libération totale de la mémoire. */
static void g_portions_tbitem_finalize(GPortionsTbItem *);
+/* Fournit le nom interne attribué à l'élément réactif. */
+static char *g_portions_tbitem_get_key(const GPortionsTbItem *);
+
+/* Fournit le composant GTK associé à l'élément réactif. */
+static GtkWidget *g_portions_tbitem_get_widget(const GPortionsTbItem *);
+
/* Réagit à un changement du binaire courant. */
-static void change_portions_tbitem_current_content(GEditorItem *, GLoadedContent *, GLoadedContent *);
+static void change_portions_tbitem_current_content(GPortionsTbItem *, GLoadedContent *, GLoadedContent *);
/* Fait suivre un changement d'adresse dans la barre. */
static void track_address_on_binary_strip(GtkBinaryStrip *, GEditorItem *);
@@ -97,12 +105,16 @@ static void g_portions_tbitem_class_init(GPortionsTbItemClass *klass)
GEditorItemClass *item; /* Encore une autre vision */
object = G_OBJECT_CLASS(klass);
- item = G_EDITOR_ITEM_CLASS(klass);
object->dispose = (GObjectFinalizeFunc/* ! */)g_portions_tbitem_dispose;
object->finalize = (GObjectFinalizeFunc)g_portions_tbitem_finalize;
- item->change_content = change_portions_tbitem_current_content;
+ item = G_EDITOR_ITEM_CLASS(klass);
+
+ item->get_key = (get_item_key_fc)g_portions_tbitem_get_key;
+ item->get_widget = (get_item_widget_fc)g_portions_tbitem_get_widget;
+
+ item->change_content = (change_item_content_fc)change_portions_tbitem_current_content;
}
@@ -121,20 +133,18 @@ static void g_portions_tbitem_class_init(GPortionsTbItemClass *klass)
static void g_portions_tbitem_init(GPortionsTbItem *item)
{
- GtkWidget *widget; /* Composant principal */
GtkWidget *strip; /* Bande pour binaire */
- widget = GTK_WIDGET(gtk_tool_item_new());
- gtk_tool_item_set_expand(GTK_TOOL_ITEM(widget), TRUE);
- gtk_widget_show(widget);
+ item->support = GTK_WIDGET(gtk_tool_item_new());
- G_EDITOR_ITEM(item)->widget = widget;
+ gtk_tool_item_set_expand(GTK_TOOL_ITEM(item->support), TRUE);
+ gtk_widget_show(item->support);
strip = gtk_binary_strip_new();
gtk_widget_show(strip);
- gtk_container_add(GTK_CONTAINER(widget), strip);
+ gtk_container_add(GTK_CONTAINER(item->support), strip);
- g_object_set_data(G_OBJECT(widget), "strip", strip);
+ g_object_set_data(G_OBJECT(item->support), "strip", strip);
g_signal_connect(strip, "select-address",
G_CALLBACK(track_address_on_binary_strip),
@@ -157,6 +167,8 @@ static void g_portions_tbitem_init(GPortionsTbItem *item)
static void g_portions_tbitem_dispose(GPortionsTbItem *item)
{
+ g_clear_object(&item->support);
+
G_OBJECT_CLASS(g_portions_tbitem_parent_class)->dispose(G_OBJECT(item));
}
@@ -193,13 +205,63 @@ static void g_portions_tbitem_finalize(GPortionsTbItem *item)
* *
******************************************************************************/
-GEditorItem *create_portions_tb_item(GObject *ref)
+GEditorItem *g_portions_tbitem_new(GObject *ref)
{
GPortionsTbItem *result; /* Structure à retourner */
result = g_object_new(G_TYPE_PORTIONS_TBITEM, NULL);
- return g_toolbar_item_setup(G_TOOLBAR_ITEM(result), ref, "portions", _("Portions"));
+ g_toolbar_item_setup(G_TOOLBAR_ITEM(result), ref);
+
+ return G_EDITOR_ITEM(result);
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : item = instance à consulter. *
+* *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
+* *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_portions_tbitem_get_key(const GPortionsTbItem *item)
+{
+ char *result; /* Description à renvoyer */
+
+ result = strdup(PORTIONS_TBITEM_ID);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : item = instance à consulter. *
+* *
+* Description : Fournit le composant GTK associé à l'élément réactif. *
+* *
+* Retour : Instance de composant graphique chargé. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static GtkWidget *g_portions_tbitem_get_widget(const GPortionsTbItem *item)
+{
+ GtkWidget *result; /* Composant à retourner */
+
+ result = item->support;
+
+ g_object_ref(G_OBJECT(result));
+
+ return result;
}
@@ -218,10 +280,9 @@ GEditorItem *create_portions_tb_item(GObject *ref)
* *
******************************************************************************/
-static void change_portions_tbitem_current_content(GEditorItem *item, GLoadedContent *old, GLoadedContent *new)
+static void change_portions_tbitem_current_content(GPortionsTbItem *item, GLoadedContent *old, GLoadedContent *new)
{
GLoadedBinary *binary; /* Autre version de l'instance */
- GtkWidget *widget; /* Elément graphique principal */
GtkBinaryStrip *strip; /* Bande pour binaire */
if (G_IS_LOADED_BINARY(new))
@@ -229,19 +290,15 @@ static void change_portions_tbitem_current_content(GEditorItem *item, GLoadedCon
else
binary = NULL;
- widget = g_editor_item_get_widget(item);
-
- strip = GTK_BINARY_STRIP(g_object_get_data(G_OBJECT(widget), "strip"));
+ strip = GTK_BINARY_STRIP(g_object_get_data(G_OBJECT(item->support), "strip"));
if (binary != NULL)
{
gtk_binary_strip_attach(strip, binary);
- gtk_widget_show(GTK_WIDGET(widget));
+ gtk_widget_show(item->support);
}
else
- gtk_widget_hide(GTK_WIDGET(widget));
-
- g_object_unref(G_OBJECT(widget));
+ gtk_widget_hide(item->support);
}