diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2020-08-08 21:37:21 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2020-08-08 21:37:21 (GMT) |
commit | 4370d2d77d623f560c7df94a3bc15b1395e4878b (patch) | |
tree | 57cc6268f504c19aaac3b1adda4295ed3b1ddc7f /src/gui/status.c | |
parent | 34d28c7418342d3c67be4747b13cdcb124edda32 (diff) |
Updated all the code relative to GUI items.
Diffstat (limited to 'src/gui/status.c')
-rw-r--r-- | src/gui/status.c | 96 |
1 files changed, 72 insertions, 24 deletions
diff --git a/src/gui/status.c b/src/gui/status.c index 15a296f..79f47ea 100644 --- a/src/gui/status.c +++ b/src/gui/status.c @@ -33,7 +33,7 @@ #include <i18n.h> -#include "editem-int.h" +#include "item-int.h" #include "core/global.h" #include "../common/extstr.h" #include "../gtkext/gtkbufferdisplay.h" @@ -46,6 +46,8 @@ struct _GStatusInfo { GEditorItem parent; /* A laisser en premier */ + GtkStatusStack *stack; /* Composant GTK associé */ + }; @@ -69,6 +71,12 @@ static void g_status_info_dispose(GStatusInfo *); /* Procède à la libération totale de la mémoire. */ static void g_status_info_finalize(GStatusInfo *); +/* Fournit le nom interne attribué à l'élément réactif. */ +static char *g_status_info_get_key(const GStatusInfo *); + +/* Fournit le composant GTK associé à l'élément réactif. */ +static GtkWidget *g_status_info_get_widget(const GStatusInfo *); + /* Imprime la position du parcours courant dans le statut. */ static void track_cursor_for_status_info(GStatusInfo *, GLoadedPanel *, const GLineCursor *); @@ -96,24 +104,27 @@ G_DEFINE_TYPE(GStatusInfo, g_status_info, G_TYPE_EDITOR_ITEM); static void g_status_info_class_init(GStatusInfoClass *klass) { GObjectClass *object; /* Autre version de la classe */ - GEditorItemClass *editem; /* Encore une autre vision... */ + GEditorItemClass *item; /* Encore une autre vision... */ object = G_OBJECT_CLASS(klass); object->dispose = (GObjectFinalizeFunc/* ! */)g_status_info_dispose; object->finalize = (GObjectFinalizeFunc)g_status_info_finalize; - editem = G_EDITOR_ITEM_CLASS(klass); + item = G_EDITOR_ITEM_CLASS(klass); - editem->track_cursor = (track_cursor_in_view_fc)track_cursor_for_status_info; - editem->focus_cursor = (focus_cursor_fc)focus_cursor_in_status_info; + item->get_key = (get_item_key_fc)g_status_info_get_key; + item->get_widget = (get_item_widget_fc)g_status_info_get_widget; + + item->track_cursor = (track_cursor_in_view_fc)track_cursor_for_status_info; + item->focus_cursor = (focus_cursor_fc)focus_cursor_in_status_info; } /****************************************************************************** * * -* Paramètres : bar = instance à initialiser. * +* Paramètres : info = instance à initialiser. * * * * Description : Initialise une instance de la barre de statut pour l'éditeur.* * * @@ -123,16 +134,10 @@ static void g_status_info_class_init(GStatusInfoClass *klass) * * ******************************************************************************/ -static void g_status_info_init(GStatusInfo *bar) +static void g_status_info_init(GStatusInfo *info) { - GEditorItem *item; /* Autre version de l'élément */ - - item = G_EDITOR_ITEM(bar); - - item->name = "status"; - - item->widget = gtk_status_stack_new(); - gtk_widget_show(item->widget); + info->stack = gtk_status_stack_new(); + gtk_widget_show(GTK_WIDGET(info->stack)); } @@ -151,6 +156,8 @@ static void g_status_info_init(GStatusInfo *bar) static void g_status_info_dispose(GStatusInfo *info) { + g_clear_object(&info->stack); + G_OBJECT_CLASS(g_status_info_parent_class)->dispose(G_OBJECT(info)); } @@ -190,13 +197,10 @@ static void g_status_info_finalize(GStatusInfo *info) GEditorItem *g_status_info_new(void) { GStatusInfo *result; /* Structure à retourner */ - GEditorItem *item; /* Autre version de l'élément */ result = g_object_new(G_TYPE_STATUS_INFO, NULL); - item = G_EDITOR_ITEM(result); - - set_global_status(GTK_STATUS_STACK(item->widget)); + set_global_status(result->stack); return G_EDITOR_ITEM(result); @@ -205,6 +209,54 @@ GEditorItem *g_status_info_new(void) /****************************************************************************** * * +* Paramètres : info = 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_status_info_get_key(const GStatusInfo *info) +{ + char *result; /* Description à renvoyer */ + + result = strdup(STATUS_INFO_ID); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : info = instance à consulter. * +* * +* Description : Fournit le composant GTK associé à l'élément réactif. * +* * +* Retour : Instance de composant graphique chargé. * +* * +* Remarques : - * +* * +******************************************************************************/ + +static GtkWidget *g_status_info_get_widget(const GStatusInfo *info) +{ + GtkWidget *result; /* Composant à retourner */ + + result = GTK_WIDGET(info->stack); + + g_object_ref(G_OBJECT(result)); + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : info = barre de statut présentant les informations. * * panel = composant d'affichage parcouru. * * cursor = nouvel emplacement du curseur courant. * @@ -246,10 +298,6 @@ static void track_cursor_for_status_info(GStatusInfo *info, GLoadedPanel *panel, static void focus_cursor_in_status_info(GStatusInfo *info, GLoadedContent *content, const GLineCursor *cursor) { - GEditorItem *item; /* Autre version de l'élément */ - - item = G_EDITOR_ITEM(info); - - g_line_cursor_show_status(cursor, GTK_STATUS_STACK(item->widget), content); + g_line_cursor_show_status(cursor, info->stack, content); } |