summaryrefslogtreecommitdiff
path: root/src/gui/panels/log.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/panels/log.c')
-rw-r--r--src/gui/panels/log.c170
1 files changed, 146 insertions, 24 deletions
diff --git a/src/gui/panels/log.c b/src/gui/panels/log.c
index 3e56519..ab815e4 100644
--- a/src/gui/panels/log.c
+++ b/src/gui/panels/log.c
@@ -32,6 +32,9 @@
#include <gtk/gtk.h>
+#include "panel-int.h"
+
+
/* Colonnes de la liste des messages */
typedef enum _LogColumn
@@ -62,8 +65,33 @@ typedef struct _scroll_data
} scroll_data;
-/* Construit le panneau d'affichage des messages système. */
-static GtkWidget *build_log_panel(void);
+/* Panneau d'accueil (instance) */
+struct _GLogPanel
+{
+ GPanelItem parent; /* A laisser en premier */
+
+};
+
+
+/* Panneau d'accueil (classe) */
+struct _GLogPanelClass
+{
+ GPanelItemClass parent; /* A laisser en premier */
+
+};
+
+
+/* Initialise la classe des panneaux d'affichage des messages. */
+static void g_log_panel_class_init(GLogPanelClass *);
+
+/* Initialise une instance de panneau d'affichage des messages. */
+static void g_log_panel_init(GLogPanel *);
+
+/* Supprime toutes les références externes. */
+static void g_log_panel_dispose(GLogPanel *);
+
+/* Procède à la libération totale de la mémoire. */
+static void g_log_panel_finalize(GLogPanel *);
/* Affiche un message dans le journal des messages système. */
static void _log_simple_message(LogMessageType, char *);
@@ -73,66 +101,69 @@ static gboolean log_message(log_data *);
+/* Indique le type définit pour un panneau d'affichage de messages. */
+G_DEFINE_TYPE(GLogPanel, g_log_panel, G_TYPE_PANEL_ITEM);
+
+
/******************************************************************************
* *
-* Paramètres : ref = espace de référencement global. *
+* Paramètres : klass = classe à initialiser. *
* *
-* Description : Construit le panneau d'affichage des messages système. *
+* Description : Initialise la classe des panneaux d'affichage des messages. *
* *
-* Retour : Adresse du panneau mis en place. *
+* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *create_log_panel(GObject *ref)
+static void g_log_panel_class_init(GLogPanelClass *klass)
{
- GEditorItem *result; /* Elément réactif à renvoyer */
- GtkWidget *panel; /* Composant GTK visuel */
-
- panel = build_log_panel();
+ GObjectClass *object; /* Autre version de la classe */
- result = g_panel_item_new(ref, PANEL_LOG_ID, _("Misc information"), panel, "S");
+ object = G_OBJECT_CLASS(klass);
- return G_PANEL_ITEM(result);
+ object->dispose = (GObjectFinalizeFunc/* ! */)g_log_panel_dispose;
+ object->finalize = (GObjectFinalizeFunc)g_log_panel_finalize;
}
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : panel = instance à initialiser. *
* *
-* Description : Construit le panneau d'affichage des messages système. *
+* Description : Initialise une instance de panneau d'affichage des messages. *
* *
-* Retour : Adresse du panneau mis en place. *
+* Retour : - *
* *
* Remarques : - *
* *
******************************************************************************/
-static GtkWidget *build_log_panel(void)
+static void g_log_panel_init(GLogPanel *panel)
{
- GtkWidget *result; /* Panneau à retourner */
+ GtkWidget *scrolled; /* Fenêtre avec défilements */
GtkTreeStore *store; /* Modèle de gestion */
GtkWidget *treeview; /* Affichage de la liste */
GtkCellRenderer *renderer; /* Moteur de rendu de colonne */
GtkTreeViewColumn *column; /* Colonne de la liste */
+ GEditorItem *base; /* Version basique d'instance */
- result = gtk_scrolled_window_new(NULL, NULL);
- gtk_widget_show(result);
+ scrolled = gtk_scrolled_window_new(NULL, NULL);
+ gtk_widget_show(scrolled);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(result), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(result), GTK_SHADOW_IN);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrolled), GTK_SHADOW_IN);
store = gtk_tree_store_new(LGC_COUNT, G_TYPE_STRING, G_TYPE_STRING);
- g_object_set_data(G_OBJECT(result), "store", store);
+ g_object_set_data(G_OBJECT(scrolled), "store", store);
treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store));
- g_object_set_data(G_OBJECT(result), "treeview", treeview);
+ g_object_set_data(G_OBJECT(scrolled), "treeview", treeview);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE);
gtk_widget_show(treeview);
- gtk_container_add(GTK_CONTAINER(result), treeview);
+ gtk_container_add(GTK_CONTAINER(scrolled), treeview);
g_object_unref(G_OBJECT(store));
@@ -153,6 +184,71 @@ static GtkWidget *build_log_panel(void)
gtk_tree_view_append_column(GTK_TREE_VIEW(treeview), column);
+ base = G_EDITOR_ITEM(panel);
+ base->widget = scrolled;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : panel = instance d'objet GLib à traiter. *
+* *
+* Description : Supprime toutes les références externes. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_log_panel_dispose(GLogPanel *panel)
+{
+ G_OBJECT_CLASS(g_log_panel_parent_class)->dispose(G_OBJECT(panel));
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : panel = instance d'objet GLib à traiter. *
+* *
+* Description : Procède à la libération totale de la mémoire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_log_panel_finalize(GLogPanel *panel)
+{
+ G_OBJECT_CLASS(g_log_panel_parent_class)->finalize(G_OBJECT(panel));
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : ref = espace de référencement global. *
+* *
+* Description : Crée un panneau d'affichage des messages système. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GEditorItem *g_log_panel_new(GObject *ref)
+{
+ GEditorItem *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_LOG_PANEL, NULL);
+
+ g_panel_item_init_ext(G_PANEL_ITEM(result), ref, PANEL_LOG_ID,
+ _("Misc information"), G_EDITOR_ITEM(result)->widget, "S");
+
return result;
}
@@ -160,6 +256,32 @@ static GtkWidget *build_log_panel(void)
/******************************************************************************
* *
+* Paramètres : ref = espace de référencement global. *
+* *
+* Description : Construit le panneau d'affichage des messages système. *
+* *
+* Retour : Adresse du panneau mis en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *create_log_panel(GObject *ref)
+{
+ GEditorItem *result; /* Elément réactif à renvoyer */
+
+ result = g_log_panel_new(ref);
+
+ /* Enregistre correctement le tout */
+ register_editor_item(result);
+
+ return G_PANEL_ITEM(result);
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : type = espèce du message à ajouter. *
* msg = message à faire apparaître à l'écran. *
* *