diff options
Diffstat (limited to 'src/gui/tb')
-rw-r--r-- | src/gui/tb/portions.c | 99 | ||||
-rw-r--r-- | src/gui/tb/portions.h | 5 | ||||
-rw-r--r-- | src/gui/tb/tbitem-int.h | 4 | ||||
-rw-r--r-- | src/gui/tb/tbitem.c | 17 | ||||
-rw-r--r-- | src/gui/tb/tbitem.h | 2 |
5 files changed, 91 insertions, 36 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); } diff --git a/src/gui/tb/portions.h b/src/gui/tb/portions.h index db1d4b4..b7457e7 100644 --- a/src/gui/tb/portions.h +++ b/src/gui/tb/portions.h @@ -30,6 +30,9 @@ +#define PORTIONS_TBITEM_ID "portions" + + #define G_TYPE_PORTIONS_TBITEM g_portions_tbitem_get_type() #define G_PORTIONS_TBITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_portions_tbitem_get_type(), GToolbarItem)) #define G_IS_PORTIONS_TBITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_portions_tbitem_get_type())) @@ -49,7 +52,7 @@ typedef struct _GPortionsTbItemClass GPortionsTbItemClass; GType g_portions_tbitem_get_type(void); /* Crée une sélection de fichier réactive pour barre d'outils. */ -GEditorItem *create_portions_tb_item(GObject *ref); +GEditorItem *g_portions_tbitem_new(GObject *ref); diff --git a/src/gui/tb/tbitem-int.h b/src/gui/tb/tbitem-int.h index 4d519f2..4cc4778 100644 --- a/src/gui/tb/tbitem-int.h +++ b/src/gui/tb/tbitem-int.h @@ -26,7 +26,7 @@ #define _GUI_TBITEM_INT_H -#include "../editem-int.h" +#include "../item-int.h" @@ -48,7 +48,7 @@ struct _GToolbarItemClass /* Termine la préparation d'un élément de barre d'outils. */ -GEditorItem *g_toolbar_item_setup(GToolbarItem *, GObject *, const char *, const char *); +void g_toolbar_item_setup(GToolbarItem *, GObject *); diff --git a/src/gui/tb/tbitem.c b/src/gui/tb/tbitem.c index f7f3ec8..e46702e 100644 --- a/src/gui/tb/tbitem.c +++ b/src/gui/tb/tbitem.c @@ -84,31 +84,26 @@ static void g_toolbar_item_init(GToolbarItem *item) * * * Paramètres : tbitem = élément de barre d'outils à finaliser. * * ref = espace de référencement global. * -* name = nom associé à l'élément. * -* label = étiquette destinée au menu. * * * * Description : Termine la préparation d'un élément de barre d'outils. * * * -* Retour : Adresse de la structure mise en place. * +* Retour : - * * * * Remarques : - * * * ******************************************************************************/ -GEditorItem *g_toolbar_item_setup(GToolbarItem *tbitem, GObject *ref, const char *name, const char *label) +void g_toolbar_item_setup(GToolbarItem *tbitem, GObject *ref) { - GEditorItem *result; /* Structure à retourner */ GtkContainer *toolbar; /* Barre d'outils visée */ - - result = G_EDITOR_ITEM(tbitem); - - result->name = name; + GtkWidget *widget; /* Composant GTK à intégrer */ /* Intégration dans la barre */ toolbar = GTK_CONTAINER(g_object_get_data(ref, "toolbar")); - gtk_container_add(toolbar, result->widget); - return result; + widget = g_editor_item_get_widget(G_EDITOR_ITEM(tbitem)); + + gtk_container_add(toolbar, widget); } diff --git a/src/gui/tb/tbitem.h b/src/gui/tb/tbitem.h index 2a9c61a..260bfc3 100644 --- a/src/gui/tb/tbitem.h +++ b/src/gui/tb/tbitem.h @@ -26,7 +26,7 @@ #define _GUI_TBITEM_H -#include "../editem.h" +#include "../item.h" |