summaryrefslogtreecommitdiff
path: root/src/gui/status.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/status.c')
-rw-r--r--src/gui/status.c96
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);
}