diff options
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);  }  | 
