summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/core/core.c40
-rw-r--r--src/gui/core/items.c50
-rw-r--r--src/gui/core/items.h7
-rw-r--r--src/gui/core/panels.c173
-rw-r--r--src/gui/core/panels.h10
-rw-r--r--src/gui/editor.c66
-rw-r--r--src/gui/item-int.h2
-rw-r--r--src/gui/item.c11
-rw-r--r--src/gui/item.h2
-rw-r--r--src/gui/menubar.c8
-rw-r--r--src/gui/menus/view.c202
-rw-r--r--src/gui/panel-int.h44
-rw-r--r--src/gui/panel.c448
-rw-r--r--src/gui/panel.h36
-rw-r--r--src/gui/panels/Makefile.am1
-rw-r--r--src/gui/panels/bintree.c73
-rw-r--r--src/gui/panels/bookmarks.c71
-rw-r--r--src/gui/panels/errors.c89
-rw-r--r--src/gui/panels/glance.c78
-rw-r--r--src/gui/panels/history.c72
-rw-r--r--src/gui/panels/log.c126
-rw-r--r--src/gui/panels/regedit.c77
-rw-r--r--src/gui/panels/strings.c103
-rw-r--r--src/gui/panels/symbols.c107
-rw-r--r--src/gui/panels/view.c261
-rw-r--r--src/gui/panels/view.h59
-rw-r--r--src/gui/panels/welcome.c113
-rw-r--r--src/gui/status.c8
-rw-r--r--src/gui/tb/portions.c8
29 files changed, 1639 insertions, 706 deletions
diff --git a/src/gui/core/core.c b/src/gui/core/core.c
index 0c1e3f3..ccad3ad 100644
--- a/src/gui/core/core.c
+++ b/src/gui/core/core.c
@@ -30,6 +30,7 @@
#include "theme.h"
#include "../menubar.h"
#include "../menus/view.h"
+#include "../panels/log.h"
#include "../panels/welcome.h"
#include "../../core/params.h"
#include "../../glibext/linesegment.h"
@@ -37,6 +38,11 @@
+/* Charge les panneaux sur la base de la configuration fournie. */
+static bool apply_panel_items_configuration(GPanelItemClass *, GGenConfig *);
+
+
+
/******************************************************************************
* *
* Paramètres : - *
@@ -64,7 +70,7 @@ bool load_all_gui_components(void)
* Charge une liste initiale pour activer les raccourcis clavier.
*/
- bar = G_MENU_BAR(find_editor_item_by_key("menubar"));
+ bar = G_MENU_BAR(find_editor_item_by_type(G_TYPE_MENU_BAR));
builder = get_editor_builder();
@@ -83,6 +89,34 @@ bool load_all_gui_components(void)
/******************************************************************************
* *
+* Paramètres : class = classe de panneau enregistré comme existant. *
+* config = configuration à charger. *
+* *
+* Description : Charge les panneaux sur la base de la configuration fournie. *
+* *
+* Retour : true, par conformité avec browse_all_item_panels(). *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool apply_panel_items_configuration(GPanelItemClass *class, GGenConfig *config)
+{
+ GPanelItem *panel; /* Panneau à mettre en place */
+
+ if (gtk_panel_item_class_dock_at_startup(class))
+ {
+ panel = g_panel_item_new(G_TYPE_FROM_CLASS(class), "");
+ g_object_unref(G_OBJECT(panel));
+ }
+
+ return true;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : config = configuration globale à utiliser. *
* *
* Description : Finalise le chargement des éléments graphiques de l'éditeur. *
@@ -111,7 +145,7 @@ bool complete_loading_of_all_gui_components(GGenConfig *config)
grid = get_tiled_grid();
- welcome = get_panel_item_by_name(PANEL_WELCOME_ID);
+ welcome = g_panel_item_new(G_TYPE_WELCOME_PANEL, NULL);
gtk_tiled_grid_set_default_main_panel(grid, welcome);
g_object_unref(G_OBJECT(welcome));
@@ -127,7 +161,7 @@ bool complete_loading_of_all_gui_components(GGenConfig *config)
*/
if (result)
- result = _browse_all_item_panels(true, (handle_panel_item_fc)gtk_panel_item_apply_configuration, config);
+ result = _browse_all_item_panels(true, (handle_panel_item_fc)apply_panel_items_configuration, config);
/**
* Comme la boucle de traitements GTK n'est pas encore lancée, tous les
diff --git a/src/gui/core/items.c b/src/gui/core/items.c
index 9c82100..6c57b7b 100644
--- a/src/gui/core/items.c
+++ b/src/gui/core/items.c
@@ -24,6 +24,7 @@
#include "items.h"
+#include <assert.h>
#include <malloc.h>
#include <string.h>
@@ -33,7 +34,7 @@
-/* Liste des éléments enregistrés */
+/* Liste des éléments en place */
static GEditorItem **_item_list = NULL;
static size_t _item_count = 0;
@@ -52,7 +53,7 @@ static void track_cursor_on_view_panel(GLoadedPanel *, const GLineCursor *, gpoi
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : item = élément de l'interface graphique à intégrer. *
* *
* Description : Procède à l'enregistrement d'un élément reactif de l'éditeur.*
* *
@@ -75,9 +76,9 @@ void register_editor_item(GEditorItem *item)
/******************************************************************************
* *
-* Paramètres : target = désignation de l'élément réactif à retrouver. *
+* Paramètres : target = type de l'élément réactif à retrouver. *
* *
-* Description : Retrouve un élément reactif de l'éditeur par son nom clef. *
+* Description : Retrouve un élément reactif de l'éditeur par son type. *
* *
* Retour : Elément retrouvé ou NULL. *
* *
@@ -85,26 +86,24 @@ void register_editor_item(GEditorItem *item)
* *
******************************************************************************/
-GEditorItem *find_editor_item_by_key(const char *target)
+GEditorItem *find_editor_item_by_type(GType target)
{
GEditorItem *result; /* Elément à retourner */
size_t i; /* Boucle de parcours */
- char *key; /* Nom d'un élément à analyser */
+ GType type; /* Type d'un élément analysé */
result = NULL;
for (i = 0; i < _item_count && result == NULL; i++)
{
- key = g_editor_item_get_key(_item_list[i]);
+ type = G_TYPE_FROM_INSTANCE(_item_list[i]);
- if (strcmp(key, target) == 0)
+ if (type == target)
{
result = _item_list[i];
g_object_ref(G_OBJECT(result));
}
- free(key);
-
}
return result;
@@ -114,6 +113,37 @@ GEditorItem *find_editor_item_by_key(const char *target)
/******************************************************************************
* *
+* Paramètres : item = élément de l'interface graphique à oublier. *
+* *
+* Description : Retire un des éléments reactifs de l'éditeur. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void unregister_editor_item(GEditorItem *item)
+{
+ size_t i; /* Boucle de parcours */
+
+ for (i = 0; i < _item_count; i++)
+ if (_item_list[i] == item)
+ break;
+
+ assert(i < _item_count);
+
+ g_object_unref(G_OBJECT(item));
+
+ memmove(&_item_list[i], &_item_list[i + 1], (_item_count - i - 1) * sizeof(GEditorItem *));
+
+ _item_list = realloc(_item_list, --_item_count * sizeof(GEditorItem *));
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : content = nouvelle instance de contenu analysé. *
* *
* Description : Lance une actualisation du fait d'un changement de contenu. *
diff --git a/src/gui/core/items.h b/src/gui/core/items.h
index 7509b3b..39d6991 100644
--- a/src/gui/core/items.h
+++ b/src/gui/core/items.h
@@ -34,8 +34,11 @@
/* Procède à l'enregistrement d'un élément reactif de l'éditeur. */
void register_editor_item(GEditorItem *);
-/* Retrouve un élément reactif de l'éditeur par son nom clef. */
-GEditorItem *find_editor_item_by_key(const char *);
+/* Retrouve un élément reactif de l'éditeur par son type. */
+GEditorItem *find_editor_item_by_type(GType);
+
+/* Retire un des éléments reactifs de l'éditeur. */
+void unregister_editor_item(GEditorItem *);
/* Lance une actualisation du fait d'un changement de contenu. */
void change_editor_items_current_content(GLoadedContent *);
diff --git a/src/gui/core/panels.c b/src/gui/core/panels.c
index 8505f37..1b6f604 100644
--- a/src/gui/core/panels.c
+++ b/src/gui/core/panels.c
@@ -25,10 +25,10 @@
#include "panels.h"
+#include <assert.h>
#include <malloc.h>
-#include "global.h"
#include "items.h"
#include "../panel-int.h"
#include "../panels/bintree.h"
@@ -42,12 +42,12 @@
#include "../panels/symbols.h"
#include "../panels/welcome.h"
#include "../../core/params.h"
-#include "../../gtkext/gtkdockable.h"
-/* Liste des panneaux en place. */
-static GPanelItem *_panels_list = NULL;
+/* Liste des panneaux disponibles */
+static GType *_panels_list = NULL;
+static size_t _panels_count = 0;
@@ -66,46 +66,32 @@ static GPanelItem *_panels_list = NULL;
void load_main_panels(void)
{
GGenConfig *config; /* Configuration globale */
- GPanelItem *item; /* Panneau de base à charger */
+ GPanelItem *panel; /* Panneau à précharger */
config = get_main_configuration();
- item = g_welcome_panel_new();
- register_panel_item(item, config);
+ register_panel_item(G_TYPE_LOG_PANEL, config);
- item = g_log_panel_new();
- register_panel_item(item, config);
+ /* Chargement du panneau de rapport au plus tôt */
+ panel = g_panel_item_new(G_TYPE_LOG_PANEL, NULL);
+ g_object_unref(G_OBJECT(panel));
- item = g_regedit_panel_new();
- register_panel_item(item, config);
-
- item = g_symbols_panel_new();
- register_panel_item(item, config);
-
- item = g_history_panel_new();
- register_panel_item(item, config);
-
- item = g_strings_panel_new();
- register_panel_item(item, config);
-
- item = g_glance_panel_new();
- register_panel_item(item, config);
-
- item = g_bookmarks_panel_new();
- register_panel_item(item, config);
-
- item = g_bintree_panel_new();
- register_panel_item(item, config);
-
- item = g_error_panel_new();
- register_panel_item(item, config);
+ register_panel_item(G_TYPE_WELCOME_PANEL, config);
+ register_panel_item(G_TYPE_REGEDIT_PANEL, config);
+ register_panel_item(G_TYPE_SYMBOLS_PANEL, config);
+ register_panel_item(G_TYPE_HISTORY_PANEL, config);
+ register_panel_item(G_TYPE_STRINGS_PANEL, config);
+ register_panel_item(G_TYPE_GLANCE_PANEL, config);
+ register_panel_item(G_TYPE_BOOKMARKS_PANEL, config);
+ register_panel_item(G_TYPE_BINTREE_PANEL, config);
+ register_panel_item(G_TYPE_ERROR_PANEL, config);
}
/******************************************************************************
* *
-* Paramètres : item = composant à présenter à l'affichage. *
+* Paramètres : type = type du composant à présenter à l'affichage. *
* config = configuration à compléter. *
* *
* Description : Enregistre un panneau comme partie intégrante de l'éditeur. *
@@ -116,46 +102,27 @@ void load_main_panels(void)
* *
******************************************************************************/
-void register_panel_item(GPanelItem *item, GGenConfig *config)
+void register_panel_item(GType type, GGenConfig *config)
{
- GEditorItem *parent; /* Autre version de l'élément */
+ GPanelItemClass *class; /* Classe associée au type */
+#ifndef NDEBUG
+ bool status; /* Bilan de mise en place */
+#endif
- parent = G_EDITOR_ITEM(item);
+ _panels_list = realloc(_panels_list, ++_panels_count * sizeof(GType));
- /* Enregistre correctement le tout */
- register_editor_item(parent);
- panels_list_add_tail(item, &_panels_list);
+ _panels_list[_panels_count - 1] = type;
- activate_panel_item(item, config);
+ class = g_type_class_ref(type);
-}
+#ifndef NDEBUG
+ status = gtk_panel_item_class_setup_configuration(class, config);
+ assert(status);
+#else
+ gtk_panel_item_class_setup_configuration(class, config);
+#endif
-
-/******************************************************************************
-* *
-* Paramètres : item = composant à présenter à l'affichage. *
-* config = configuration à compléter. *
-* *
-* Description : Intègre un panneau comme partie intégrante de l'éditeur. *
-* *
-* Retour : - *
-* *
-* Remarques : - *
-* *
-******************************************************************************/
-
-void activate_panel_item(GPanelItem *item, GGenConfig *config)
-{
- GtkTiledGrid *grid; /* Composant d'affichage */
-
- grid = get_tiled_grid();
-
- g_signal_connect_swapped(item, "dock-request", G_CALLBACK(gtk_tiled_grid_add), grid);
- g_signal_connect_swapped(item, "undock-request", G_CALLBACK(gtk_tiled_grid_remove), grid);
-
- gtk_dockable_setup_dnd(GTK_DOCKABLE(item));
-
- gtk_panel_item_setup_configuration(item, config);
+ g_type_class_unref(class);
}
@@ -177,79 +144,29 @@ void activate_panel_item(GPanelItem *item, GGenConfig *config)
bool _browse_all_item_panels(bool skip, handle_panel_item_fc handle, void *data)
{
bool result; /* Résultat à renvoyer */
- GPanelItem *welcome; /* Panneau d'accueil */
- GPanelItem *iter; /* Boucle de parcours */
+ GType type; /* Type de panneau à traiter */
+ size_t i; /* Boucle de parcours */
+ GPanelItemClass *class; /* Classe associée au type */
result = true;
- if (skip)
- welcome = get_panel_item_by_name(PANEL_WELCOME_ID);
- else
- welcome = NULL;
-
- panels_list_for_each(iter, _panels_list)
+ for (i = 0; i < _panels_count; i++)
{
- if (skip && iter == welcome)
- continue;
+ type = _panels_list[i];
- result = handle(iter, data);
-
- if (!result) break;
-
- }
-
- g_clear_object(&welcome);
-
- return result;
-
-}
-
-
-/******************************************************************************
-* *
-* Paramètres : name = désignation courte servant de clef. *
-* *
-* Description : Recherche un panneau à partir de son nom court. *
-* *
-* Retour : Panneau trouvé ou NULL si aucun. *
-* *
-* Remarques : Le parcours peut se faire aussi depuis la classe parente, *
-* mais il est plus rapide par ici. *
-* *
-******************************************************************************/
-
-GPanelItem *get_panel_item_by_name(const char *name)
-{
- GPanelItem *result; /* Trouvaille à retourner */
-
- bool look_for_named_panel(GPanelItem *item, GPanelItem **found)
- {
- char *key; /* Clef à utiliser */
- bool status; /* Bilan de la comparaison */
+ if (skip && type == G_TYPE_WELCOME_PANEL)
+ continue;
- key = g_editor_item_get_key(G_EDITOR_ITEM(item));
+ class = g_type_class_ref(type);
- if (strcmp(key, name) == 0)
- {
- *found = item;
- status = false;
- }
- else
- status = true;
+ result = handle(class, data);
- free(key);
+ g_type_class_unref(class);
- return status;
+ if (!result) break;
}
- result = NULL;
-
- browse_all_item_panels((handle_panel_item_fc)look_for_named_panel, &result);
-
- if (result != NULL)
- g_object_ref(G_OBJECT(result));
-
return result;
}
diff --git a/src/gui/core/panels.h b/src/gui/core/panels.h
index 40c2fbd..3846038 100644
--- a/src/gui/core/panels.h
+++ b/src/gui/core/panels.h
@@ -38,13 +38,10 @@
void load_main_panels(void);
/* Enregistre un panneau comme partie intégrante de l'éditeur. */
-void register_panel_item(GPanelItem *, GGenConfig *);
-
-/* Intègre un panneau comme partie intégrante de l'éditeur. */
-void activate_panel_item(GPanelItem *, GGenConfig *);
+void register_panel_item(GType, GGenConfig *);
/* Réalise un traitement sur un panneau de l'éditeur. */
-typedef bool (* handle_panel_item_fc) (GPanelItem *, void *);
+typedef bool (* handle_panel_item_fc) (GPanelItemClass *, void *);
/* Effectue le parcours de tous les panneaux chargés. */
bool _browse_all_item_panels(bool, handle_panel_item_fc, void *);
@@ -52,9 +49,6 @@ bool _browse_all_item_panels(bool, handle_panel_item_fc, void *);
#define browse_all_item_panels(h, d) \
_browse_all_item_panels(false, h, d)
-/* Recherche un panneau à partir de son nom court. */
-GPanelItem *get_panel_item_by_name(const char *);
-
#endif /* _GUI_CORE_PANELS_H */
diff --git a/src/gui/editor.c b/src/gui/editor.c
index 6e98423..1665ff4 100644
--- a/src/gui/editor.c
+++ b/src/gui/editor.c
@@ -43,6 +43,7 @@
#include "core/panels.h"
#include "core/global.h"
#include "core/items.h"
+#include "panels/view.h"
#include "tb/portions.h"
#include "../common/extstr.h"
#include "../core/global.h"
@@ -117,10 +118,10 @@ static void on_dock_station_created(GtkTiledGrid *, GtkDockStation *, gpointer);
static void on_dock_item_switch(GtkDockStation *, GtkWidget *, gpointer);
/* Encastre comme demandé un panneau dans l'éditeur. */
-static void dock_panel_into_current_station(GtkCheckMenuItem *, GPanelItem *);
+static void dock_panel_into_current_station(GtkCheckMenuItem *, gpointer);
/* Ajout d'un panneau dans la liste adaptée des menus. */
-static bool add_side_panel_to_menu(GPanelItem *, GtkContainer *);
+static bool add_side_panel_to_menu(GPanelItemClass *, GtkContainer *);
/* Réagit à une demande de menu pour rajouter des panneaux. */
static void on_dock_menu_request(GtkDockStation *, GtkWidget *, gpointer);
@@ -361,7 +362,7 @@ static void connect_all_editor_signals(GtkBuilder *builder, GObject *obj, const
{
if (strncmp(hdl_name, "mcb_", 4) == 0)
{
- bar = G_MENU_BAR(find_editor_item_by_key("menubar"));
+ bar = G_MENU_BAR(find_editor_item_by_type(G_TYPE_MENU_BAR));
arg = bar;
g_object_unref(G_OBJECT(bar));
}
@@ -739,7 +740,7 @@ static void on_dock_item_switch(GtkDockStation *station, GtkWidget *widget, gpoi
/******************************************************************************
* *
* Paramètres : menuitem = élement de menu actionné. *
-* item = panneau à ajouter à l'interface graphique. *
+* type_ptr = type de panneau à mettre en place. *
* *
* Description : Encastre comme demandé un panneau dans l'éditeur. *
* *
@@ -749,18 +750,21 @@ static void on_dock_item_switch(GtkDockStation *station, GtkWidget *widget, gpoi
* *
******************************************************************************/
-static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, GPanelItem *item)
+static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, gpointer type_ptr)
{
+ GType type; /* Type de panneau considérée */
GtkWidget *parent; /* Menu parent avec chemin */
const char *new_path; /* Nouveau chemin à appliquer */
+ GPanelItem *panel; /* Panneau à mettre en place */
+
+ type = GPOINTER_TO_SIZE(type_ptr);
parent = gtk_widget_get_parent(GTK_WIDGET(menuitem));
new_path = g_object_get_data(G_OBJECT(parent), "path");
- gtk_panel_item_set_path(item, new_path);
-
- g_panel_item_dock(item);
+ panel = g_panel_item_new(type, new_path);
+ g_object_unref(G_OBJECT(panel));
}
@@ -773,47 +777,63 @@ static void dock_panel_into_current_station(GtkCheckMenuItem *menuitem, GPanelIt
* *
* Description : Ajout d'un panneau dans la liste adaptée des menus. *
* *
-* Retour : - *
+* Retour : true, par conformité avec browse_all_item_panels(). *
* *
* Remarques : - *
* *
******************************************************************************/
-static bool add_side_panel_to_menu(GPanelItem *panel, GtkContainer *support)
+static bool add_side_panel_to_menu(GPanelItemClass *class, GtkContainer *support)
{
+ GEditorItem *item; /* Instance de panneau en place*/
+ gpointer type_ptr; /* Type de panneau traité */
char *key; /* Désignation de l'entrée */
GtkWidget *submenuitem; /* Sous-élément de menu */
- const char *bindings; /* Raccourcis clavier bruts */
+ char *bindings; /* Raccourcis clavier bruts */
GtkBuilder *builder; /* Constructeur principal */
/* Profil qui ne cadre pas ? */
- if (gtk_panel_item_get_personality(panel) != PIP_SINGLETON)
+ if (gtk_panel_item_class_get_personality(class) != PIP_SINGLETON)
goto exit;
- if (g_panel_item_is_docked(panel))
- goto exit;
+ item = find_editor_item_by_type(G_TYPE_FROM_CLASS(class));
+
+ if (item != NULL)
+ {
+ if (g_panel_item_is_docked(G_PANEL_ITEM(item)))
+ goto exit_ref;
+ }
/* Elément de menu */
- key = g_editor_item_get_key(G_EDITOR_ITEM(panel));
+ type_ptr = GSIZE_TO_POINTER(G_TYPE_FROM_CLASS(class));
+
+ key = g_editor_item_class_get_key(G_EDITOR_ITEM_CLASS(class));
submenuitem = qck_create_menu_item(NULL, NULL, key,
- G_CALLBACK(dock_panel_into_current_station), panel);
+ G_CALLBACK(dock_panel_into_current_station), type_ptr);
free(key);
- bindings = gtk_panel_item_get_key_bindings(panel);
+ bindings = gtk_panel_item_class_get_key_bindings(class);
if (bindings != NULL)
{
builder = get_editor_builder();
add_accelerator_to_widget(builder, submenuitem, bindings);
g_object_unref(G_OBJECT(builder));
+
+ free(bindings);
+
}
gtk_container_add(support, submenuitem);
+ exit_ref:
+
+ g_object_unref(G_OBJECT(item));
+
exit:
return true;
@@ -838,7 +858,7 @@ static bool add_side_panel_to_menu(GPanelItem *panel, GtkContainer *support)
static void on_dock_menu_request(GtkDockStation *station, GtkWidget *button, gpointer unused)
{
GtkWidget *active; /* Composant actif modèle */
- GPanelItem *model; /* Panneau encapsulé */
+ GPanelItemClass *model; /* Panneau encapsulé */
GtkContainer *menu; /* Support à retourner */
GList *children; /* Composants mis en place */
GtkWidget *nopanel; /* Sous-élément de menu */
@@ -847,9 +867,9 @@ static void on_dock_menu_request(GtkDockStation *station, GtkWidget *button, gpo
active = gtk_notebook_get_nth_page(GTK_NOTEBOOK(station), 0);
- model = G_PANEL_ITEM(g_object_get_data(G_OBJECT(active), "dockable"));
+ model = G_PANEL_ITEM_GET_CLASS(g_object_get_data(G_OBJECT(active), "dockable"));
- g_object_set_data_full(G_OBJECT(menu), "path", strdup(gtk_panel_item_get_path(model)), free);
+ g_object_set_data_full(G_OBJECT(menu), "path", gtk_panel_item_class_get_path(model), free);
/* Ajout des panneaux uniques */
@@ -1012,9 +1032,9 @@ static void on_editor_loaded_content_added(GStudyProject *project, GLoadedConten
GPanelItem *panel; /* Nouveau panneau à integrer */
GtkWidget *selected; /* Interface de prédilection */
- panel = g_panel_item_new(PIP_BINARY_VIEW, G_NAMED_WIDGET(content), true, "M");
+ panel = g_view_panel_new(G_NAMED_WIDGET(content));
- register_panel_item(panel, get_main_configuration());
+ register_panel_item(G_TYPE_VIEW_PANEL, get_main_configuration());
selected = g_editor_item_get_widget(G_EDITOR_ITEM(panel));
@@ -1111,7 +1131,7 @@ static void remove_loaded_content_from_editor(GtkWidget *widget, GLoadedContent
panel = G_PANEL_ITEM(g_object_get_data(G_OBJECT(tab), "dockable"));
- if (gtk_panel_item_get_personality(panel) != PIP_BINARY_VIEW)
+ if (gtk_panel_item_class_get_personality(G_PANEL_ITEM_GET_CLASS(panel)) != PIP_BINARY_VIEW)
continue;
built = get_loaded_panel_from_built_view(tab);
diff --git a/src/gui/item-int.h b/src/gui/item-int.h
index a2a6a65..cce5574 100644
--- a/src/gui/item-int.h
+++ b/src/gui/item-int.h
@@ -34,7 +34,7 @@
/* Fournit le nom interne attribué à l'élément réactif. */
-typedef char * (* get_item_key_fc) (const GEditorItem *);
+typedef char * (* get_item_key_fc) (const GEditorItemClass *);
/* Fournit le composant GTK associé à l'élément réactif. */
typedef GtkWidget * (* get_item_widget_fc) (const GEditorItem *);
diff --git a/src/gui/item.c b/src/gui/item.c
index 47504d1..73d3ba7 100644
--- a/src/gui/item.c
+++ b/src/gui/item.c
@@ -81,7 +81,7 @@ static void g_editor_item_init(GEditorItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
@@ -91,16 +91,13 @@ static void g_editor_item_init(GEditorItem *item)
* *
******************************************************************************/
-char *g_editor_item_get_key(const GEditorItem *item)
+char *g_editor_item_class_get_key(const GEditorItemClass *class)
{
char *result; /* Description à renvoyer */
- GEditorItemClass *klass; /* Classe correspondante */
-
- klass = G_EDITOR_ITEM_GET_CLASS(item);
- assert(klass->get_key != NULL);
+ assert(class->get_key != NULL);
- result = klass->get_key(item);
+ result = class->get_key(class);
return result;
diff --git a/src/gui/item.h b/src/gui/item.h
index 81d5b20..dadad50 100644
--- a/src/gui/item.h
+++ b/src/gui/item.h
@@ -55,7 +55,7 @@ typedef struct _GEditorItemClass GEditorItemClass;
GType g_editor_item_get_type(void);
/* Fournit le nom interne attribué à l'élément réactif. */
-char *g_editor_item_get_key(const GEditorItem *);
+char *g_editor_item_class_get_key(const GEditorItemClass *);
/* Fournit le composant GTK associé à l'élément réactif. */
GtkWidget *g_editor_item_get_widget(const GEditorItem *);
diff --git a/src/gui/menubar.c b/src/gui/menubar.c
index 5630194..7526a50 100644
--- a/src/gui/menubar.c
+++ b/src/gui/menubar.c
@@ -72,7 +72,7 @@ static void g_menu_bar_dispose(GMenuBar *);
static void g_menu_bar_finalize(GMenuBar *);
/* Fournit le nom humain attribué à l'élément réactif. */
-static char *g_menu_bar_get_key(const GMenuBar *);
+static char *g_menu_bar_class_get_key(const GMenuBarClass *);
/* Fournit le composant GTK associé à l'élément réactif. */
static GtkWidget *g_menu_bar_get_widget(GMenuBar *);
@@ -119,7 +119,7 @@ static void g_menu_bar_class_init(GMenuBarClass *klass)
item = G_EDITOR_ITEM_CLASS(klass);
- item->get_key = (get_item_key_fc)g_menu_bar_get_key;
+ item->get_key = (get_item_key_fc)g_menu_bar_class_get_key;
item->get_widget = (get_item_widget_fc)g_menu_bar_get_widget;
item->change_content = (change_item_content_fc)change_menubar_current_content;
@@ -226,7 +226,7 @@ GEditorItem *g_menu_bar_new(GtkBuilder *builder)
/******************************************************************************
* *
-* Paramètres : bar = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
* Description : Fournit le nom humain attribué à l'élément réactif. *
* *
@@ -236,7 +236,7 @@ GEditorItem *g_menu_bar_new(GtkBuilder *builder)
* *
******************************************************************************/
-static char *g_menu_bar_get_key(const GMenuBar *bar)
+static char *g_menu_bar_class_get_key(const GMenuBarClass *class)
{
char *result; /* Description à renvoyer */
diff --git a/src/gui/menus/view.c b/src/gui/menus/view.c
index d41df92..37db20a 100644
--- a/src/gui/menus/view.c
+++ b/src/gui/menus/view.c
@@ -45,8 +45,25 @@
+/* Retire un sous-menu d'un menu. */
+static void remove_panel_menu_item(GtkWidget *, GtkContainer *);
+
+/* Filtre pour parcours de panneaux */
+typedef struct _panels_loading_filter
+{
+ GMenuBar *bar; /* Barre de menus principale */
+ GtkContainer *support; /* Support pour éléments */
+
+ PanelItemPersonality personality; /* Nature des éléments attendus*/
+ bool first; /* Premier ajout ? */
+
+} panels_loading_filter;
+
+/* Ajoute un panneau à la liste des panneaux existants. */
+static bool add_side_panel_to_list(GPanelItemClass *, panels_loading_filter *);
+
/* Réagit avec le menu "Affichage -> Panneaux latéraux -> ...". */
-static void mcb_view_change_panel_docking(GtkCheckMenuItem *, GPanelItem *);
+static void mcb_view_change_panel_docking(GtkCheckMenuItem *, gpointer);
/* Réagit avec le menu "Affichage -> Vue xxx". */
static void mcb_view_change_support(GtkRadioMenuItem *, gpointer);
@@ -123,10 +140,10 @@ void setup_menu_view_callbacks(GtkBuilder *builder)
/******************************************************************************
* *
-* Paramètres : menuitem = élément de menu sélectionné. *
-* bar = barre de menu parente. *
+* Paramètres : widget = composant graphique à retirer de l'affichage. *
+* container = conteneur graphique à vider. *
* *
-* Description : Réagit avec le menu "Affichage -> Panneaux latéraux". *
+* Description : Retire un sous-menu d'un menu. *
* *
* Retour : - *
* *
@@ -134,101 +151,140 @@ void setup_menu_view_callbacks(GtkBuilder *builder)
* *
******************************************************************************/
-void mcb_view_update_side_panels_list(GtkMenuItem *menuitem, GMenuBar *bar)
+static void remove_panel_menu_item(GtkWidget *widget, GtkContainer *container)
{
- GtkWidget *menu; /* Support pour éléments */
- GtkBuilder *builder; /* Constructeur principal */
+ gtk_container_remove(container, widget);
- typedef struct _panels_loading_filter
- {
- GtkContainer *support; /* Support pour éléments */
+}
- PanelItemPersonality personality; /* Nature des éléments attendus*/
- bool first; /* Premier ajout ? */
- } panels_loading_filter;
+/******************************************************************************
+* *
+* Paramètres : class = classe de panneau à traiter. *
+* filter = filtre pour le parcours de l'ensemble des panneaux. *
+* *
+* Description : Ajoute un panneau à la liste des panneaux existants. *
+* *
+* Retour : true, par conformité avec browse_all_item_panels(). *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
- panels_loading_filter pfilter; /* Mécanismes de filtrage */
+static bool add_side_panel_to_list(GPanelItemClass *class, panels_loading_filter *filter)
+{
+ gpointer type_ptr; /* Type de panneau traité */
+ char *key; /* Désignation de l'entrée */
+ GtkWidget *submenuitem; /* Sous-élément de menu */
+ char *bindings; /* Raccourcis clavier bruts */
+ GtkBuilder *builder; /* Constructeur principal */
+ GEditorItem *item; /* Instance de panneau en place*/
- menu = gtk_menu_item_get_submenu(menuitem);
+ if (gtk_panel_item_class_get_personality(class) != filter->personality)
+ goto exit;
- /* Réinitialisation */
+ /* Séparation */
- void remove_panel_menu_item(GtkWidget *widget, GtkContainer *container)
+ if (filter->first)
{
- gtk_container_remove(container, widget);
+ filter->first = false;
- }
+ submenuitem = qck_create_menu_separator();
+ gtk_container_add(filter->support, submenuitem);
- gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback)remove_panel_menu_item, menu);
+ }
- /* Ajout des panneaux uniques */
+ /* Elément de menu */
- bool add_side_panel_to_list(GPanelItem *panel, panels_loading_filter *filter)
- {
- char *key; /* Désignation de l'entrée */
- GtkWidget *submenuitem; /* Sous-élément de menu */
- const char *bindings; /* Raccourcis clavier bruts */
+ type_ptr = GSIZE_TO_POINTER(G_TYPE_FROM_CLASS(class));
- if (gtk_panel_item_get_personality(panel) != filter->personality)
- goto aptl_exit;
+ key = g_editor_item_class_get_key(G_EDITOR_ITEM_CLASS(class));
- /* Séparation */
+ submenuitem = qck_create_check_menu_item(NULL, NULL, key,
+ G_CALLBACK(mcb_view_change_panel_docking), type_ptr);
- if (filter->first)
- {
- filter->first = false;
+ free(key);
- submenuitem = qck_create_menu_separator();
- gtk_container_add(GTK_CONTAINER(menu), submenuitem);
+ bindings = gtk_panel_item_class_get_key_bindings(class);
- }
+ if (bindings != NULL)
+ {
+ builder = g_menu_bar_get_builder(filter->bar);
+ add_accelerator_to_widget(builder, submenuitem, bindings);
+ g_object_unref(G_OBJECT(builder));
- /* Elément de menu */
+ free(bindings);
- key = g_editor_item_get_key(G_EDITOR_ITEM(panel));
+ }
- submenuitem = qck_create_check_menu_item(NULL, NULL, key,
- G_CALLBACK(mcb_view_change_panel_docking), panel);
+ gtk_container_add(filter->support, submenuitem);
- free(key);
+ /* Statut de la coche */
- bindings = gtk_panel_item_get_key_bindings(panel);
+ item = find_editor_item_by_type(G_TYPE_FROM_CLASS(class));
- if (bindings != NULL)
+ if (item != NULL)
+ {
+ if (g_panel_item_is_docked(G_PANEL_ITEM(item)))
{
- builder = g_menu_bar_get_builder(bar);
- add_accelerator_to_widget(builder, submenuitem, bindings);
- g_object_unref(G_OBJECT(builder));
+ g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_change_panel_docking), type_ptr);
+
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(submenuitem), TRUE);
+
+ g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_change_panel_docking), type_ptr);
+
}
- gtk_container_add(filter->support, submenuitem);
+ g_object_unref(G_OBJECT(item));
- /* Statut de la coche */
+ }
- if (g_panel_item_is_docked(panel))
- {
- g_signal_handlers_disconnect_by_func(submenuitem, G_CALLBACK(mcb_view_change_panel_docking), panel);
+ exit:
- gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(submenuitem), TRUE);
+ return true;
- g_signal_connect(submenuitem, "toggled", G_CALLBACK(mcb_view_change_panel_docking), panel);
+}
- }
- aptl_exit:
+/******************************************************************************
+* *
+* Paramètres : menuitem = élément de menu sélectionné. *
+* bar = barre de menu parente. *
+* *
+* Description : Réagit avec le menu "Affichage -> Panneaux latéraux". *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void mcb_view_update_side_panels_list(GtkMenuItem *menuitem, GMenuBar *bar)
+{
+ GtkWidget *menu; /* Support pour éléments */
+ panels_loading_filter pfilter; /* Mécanismes de filtrage */
+
+ menu = gtk_menu_item_get_submenu(menuitem);
- return true;
+ /* Réinitialisation */
- }
+ gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback)remove_panel_menu_item, menu);
+
+ /* Ajout des panneaux uniques */
+ pfilter.bar = bar;
pfilter.support = GTK_CONTAINER(menu);
- pfilter.personality = PIP_SINGLETON;
+ pfilter.personality = PIP_PERSISTENT_SINGLETON;
pfilter.first = false;
browse_all_item_panels((handle_panel_item_fc)add_side_panel_to_list, &pfilter);
+ pfilter.personality = PIP_SINGLETON;
+ pfilter.first = true;
+
+ browse_all_item_panels((handle_panel_item_fc)add_side_panel_to_list, &pfilter);
+
pfilter.personality = PIP_OTHER;
pfilter.first = true;
@@ -240,7 +296,7 @@ void mcb_view_update_side_panels_list(GtkMenuItem *menuitem, GMenuBar *bar)
/******************************************************************************
* *
* Paramètres : menuitem = élément de menu ayant basculé. *
-* bar = barre de menu parente. *
+* type_ptr = type de panneau à mettre en place. *
* *
* Description : Réagit avec le menu "Affichage -> Panneaux latéraux -> ...". *
* *
@@ -250,9 +306,11 @@ void mcb_view_update_side_panels_list(GtkMenuItem *menuitem, GMenuBar *bar)
* *
******************************************************************************/
-static void mcb_view_change_panel_docking(GtkCheckMenuItem *menuitem, GPanelItem *item)
+static void mcb_view_change_panel_docking(GtkCheckMenuItem *menuitem, gpointer type_ptr)
{
- gboolean active; /* Etat de sélection du menu */
+ GType type; /* Type de panneau considérée */
+ GEditorItem *item; /* Instance de panneau en place*/
+ GPanelItem *panel; /* Instance de panneau créée */
/**
* Comme l'accrochage et le décrochage d'un panneau peuvent se réaliser
@@ -268,12 +326,28 @@ static void mcb_view_change_panel_docking(GtkCheckMenuItem *menuitem, GPanelItem
* On préfèrera donc se baser sur l'état courant du panneau.
*/
- active = !g_panel_item_is_docked(item);
+ type = GPOINTER_TO_SIZE(type_ptr);
+
+ item = find_editor_item_by_type(type);
+
+ if (item == NULL)
+ {
+ panel = g_panel_item_new(type, "");
+ g_object_unref(G_OBJECT(panel));
+ }
- if (active)
- g_panel_item_dock(item);
else
- g_panel_item_undock(item);
+ {
+ panel = G_PANEL_ITEM(item);
+
+ if (g_panel_item_is_docked(panel))
+ g_panel_item_undock(panel);
+ else
+ g_panel_item_dock(panel);
+
+ g_object_unref(G_OBJECT(item));
+
+ }
}
diff --git a/src/gui/panel-int.h b/src/gui/panel-int.h
index 2f7d876..d54dc16 100644
--- a/src/gui/panel-int.h
+++ b/src/gui/panel-int.h
@@ -33,7 +33,6 @@
#include "item-int.h"
-#include "../common/dllist.h"
#include "../glibext/delayed.h"
@@ -41,6 +40,21 @@
/* ------------------------- COEUR DES PANNEAUX D'AFFICHAGE ------------------------- */
+/* Fournit une indication sur la personnalité du panneau. */
+typedef PanelItemPersonality (* get_panel_personality_fc) (const GPanelItemClass *);
+
+/* Fournit une indication d'accroche du panneau au démarrage. */
+typedef bool (* dock_panel_at_startup_fc) (const GPanelItemClass *);
+
+/* Détermine si un panneau peut être filtré. */
+typedef bool (* can_search_panel_fc) (const GPanelItemClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+typedef char * (* get_panel_path_fc) (const GPanelItemClass *);
+
+/* Indique la définition d'un éventuel raccourci clavier. */
+typedef char * (* get_panel_bindings_fc) (const GPanelItemClass *);
+
/* Place un panneau dans l'ensemble affiché. */
typedef void (* ack_dock_process_fc) (GPanelItem *);
@@ -56,18 +70,11 @@ struct _GPanelItem
{
GEditorItem parent; /* A laisser en premier */
- DL_LIST_ITEM(link); /* Maillon de liste chaînée */
-
- PanelItemPersonality personality; /* Nature de l'élément */
+ bool docked; /* Panneau inscrusté ? */
GNamedWidget *widget; /* Composant avec noms */
GtkWidget *cached_widget; /* Composant GTK récupéré */
- bool dock_at_startup; /* Recommandation au démarrage */
- char *path; /* Chemin vers la place idéale */
-
- bool docked; /* Panneau inscrusté ? */
-
char *filter; /* Eventuel filtre textuel */
cairo_surface_t *surface; /* Copie d'écran préalable */
@@ -82,10 +89,11 @@ struct _GPanelItemClass
{
GEditorItemClass parent; /* A laisser en premier */
- bool unique; /* Panneau instanciable ? */
- const char *bindings; /* Raccourci clavier éventuel */
-
- bool can_search; /* Contenu fouillable ? */
+ get_panel_personality_fc get_personality; /* Fourniture de nature */
+ dock_panel_at_startup_fc dock_at_startup; /* Recommandation d'accroche */
+ can_search_panel_fc can_search; /* Contenu fouillable ? */
+ get_panel_path_fc get_path; /* Chemin vers la place idéale */
+ get_panel_bindings_fc get_bindings; /* Raccourci clavier éventuel */
ack_dock_process_fc ack_dock; /* Prise en compte d'accroche */
ack_undock_process_fc ack_undock; /* Prise en compte de décroche */
@@ -102,8 +110,14 @@ struct _GPanelItemClass
};
-#define panels_list_add_tail(new, head) dl_list_add_tail(new, head, GPanelItem, link)
-#define panels_list_for_each(pos, head) dl_list_for_each(pos, head, GPanelItem, link)
+/* Fournit une indication sur la personnalité du panneau. */
+PanelItemPersonality gtk_panel_item_class_get_personality_singleton(const GPanelItemClass *);
+
+/* Renvoie false lors d'une consultation de la classe. */
+bool gtk_panel_item_class_return_false(const GPanelItemClass *);
+
+/* Renvoie true lors d'une consultation de la classe. */
+bool gtk_panel_item_class_return_true(const GPanelItemClass *);
diff --git a/src/gui/panel.c b/src/gui/panel.c
index 18ecbb0..a509f40 100644
--- a/src/gui/panel.c
+++ b/src/gui/panel.c
@@ -31,20 +31,23 @@
#include "panel-int.h"
+#include "core/global.h"
+#include "core/items.h"
#include "../common/extstr.h"
#include "../core/params.h"
#include "../gtkext/gtkdockable-int.h"
#include "../gtkext/named.h"
+#include "../plugins/dt.h"
/* ------------------------- COEUR DES PANNEAUX D'AFFICHAGE ------------------------- */
-/* Initialise la classe des éléments réactifs de l'éditeur. */
+/* Initialise la classe des panneaux graphiques de l'éditeur. */
static void g_panel_item_class_init(GPanelItemClass *);
-/* Initialise une instance d'élément réactif pour l'éditeur. */
+/* Initialise une instance de panneau graphique pour l'éditeur. */
static void g_panel_item_init(GPanelItem *);
/* Procède à l'initialisation de l'interface d'incrustation. */
@@ -56,6 +59,9 @@ static void g_panel_item_dispose(GPanelItem *);
/* Procède à la libération totale de la mémoire. */
static void g_panel_item_finalize(GPanelItem *);
+/* Construit la chaîne d'accès à un élément de configuration. */
+static char *gtk_panel_item_class_build_configuration_key(const GPanelItemClass *, const char *);
+
/* Fournit le nom court du composant encapsulable. */
static char *gtk_panel_item_get_name(const GPanelItem *);
@@ -71,9 +77,6 @@ static GtkWidget *gtk_panel_item_get_widget(GPanelItem *);
/* Démarre l'actualisation du filtrage du contenu. */
static void gtk_panel_item_update_filtered(GPanelItem *, const char *);
-/* Construit la chaîne d'accès à un élément de configuration. */
-static char *gtk_panel_item_build_configuration_key(const GPanelItem *, const char *);
-
/* ---------------------- MECANISMES DE MISE A JOUR DE PANNEAU ---------------------- */
@@ -96,9 +99,9 @@ G_DEFINE_TYPE_WITH_CODE(GPanelItem, g_panel_item, G_TYPE_EDITOR_ITEM,
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
-* Description : Initialise la classe des éléments réactifs de l'éditeur. *
+* Description : Initialise la classe des panneaux graphiques de l'éditeur. *
* *
* Retour : - *
* *
@@ -106,21 +109,24 @@ G_DEFINE_TYPE_WITH_CODE(GPanelItem, g_panel_item, G_TYPE_EDITOR_ITEM,
* *
******************************************************************************/
-static void g_panel_item_class_init(GPanelItemClass *klass)
+static void g_panel_item_class_init(GPanelItemClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_panel_item_dispose;
object->finalize = (GObjectFinalizeFunc)g_panel_item_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)gtk_panel_item_get_name;
item->get_widget = (get_item_widget_fc)gtk_panel_item_get_widget;
+ class->get_personality = gtk_panel_item_class_get_personality_singleton;
+ class->dock_at_startup = gtk_panel_item_class_return_true;
+ class->can_search = gtk_panel_item_class_return_false;
+
g_signal_new("dock-request",
G_TYPE_PANEL_ITEM,
G_SIGNAL_RUN_LAST,
@@ -137,8 +143,6 @@ static void g_panel_item_class_init(GPanelItemClass *klass)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- klass->can_search = false;
-
}
@@ -146,7 +150,7 @@ static void g_panel_item_class_init(GPanelItemClass *klass)
* *
* Paramètres : item = instance à initialiser. *
* *
-* Description : Initialise une instance d'élément réactif pour l'éditeur. *
+* Description : Initialise une instance de panneau graphique pour l'éditeur. *
* *
* Retour : - *
* *
@@ -156,9 +160,7 @@ static void g_panel_item_class_init(GPanelItemClass *klass)
static void g_panel_item_init(GPanelItem *item)
{
- DL_LIST_ITEM_INIT(&item->link);
-
- item->personality = PIP_INVALID;
+ item->docked = false;
item->widget = NULL;
item->cached_widget = NULL;
@@ -230,8 +232,6 @@ static void g_panel_item_dispose(GPanelItem *item)
static void g_panel_item_finalize(GPanelItem *item)
{
- free(item->path);
-
if (item->filter != NULL)
free(item->filter);
@@ -245,33 +245,44 @@ static void g_panel_item_finalize(GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : personality = nature du panneau à mettre en place. *
-* widget = composant avec noms à présenter à l'affichage. *
-* startup = chargement au démarrage ? *
-* path = chemin vers la place idéale pour le futur panneau. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un élément de panneau réactif. *
+* Description : Fournit une indication sur la personnalité du panneau. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Identifiant lié à la nature du panneau. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_panel_item_new(PanelItemPersonality personality, GNamedWidget *widget, bool startup, const char *path)
+PanelItemPersonality gtk_panel_item_class_get_personality(const GPanelItemClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ PanelItemPersonality result; /* Personnalité à retourner */
+
+ result = class->get_personality(class);
+
+ return result;
- result = g_object_new(G_TYPE_PANEL_ITEM, NULL);
+}
- assert(personality > PIP_INVALID && personality < PIP_COUNT);
- result->personality = personality;
- result->widget = widget;
- g_object_ref(G_OBJECT(widget));
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Fournit une indication sur la personnalité du panneau. *
+* *
+* Retour : Identifiant lié à la nature unique du panneau. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
- result->dock_at_startup = startup;
- result->path = strdup(path);
+PanelItemPersonality gtk_panel_item_class_get_personality_singleton(const GPanelItemClass *class)
+{
+ PanelItemPersonality result; /* Personnalité à retourner */
+
+ result = PIP_SINGLETON;
return result;
@@ -280,23 +291,37 @@ GPanelItem *g_panel_item_new(PanelItemPersonality personality, GNamedWidget *wid
/******************************************************************************
* *
-* Paramètres : item = instance de panneau à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Indique le composant graphique principal du panneau. *
+* Description : Fournit une indication d'accroche du panneau au démarrage. *
* *
-* Retour : Composant graphique avec nom constituant le panneau. *
+* Retour : true si le panneau doit être affiché de prime abord. *
* *
* Remarques : - *
* *
******************************************************************************/
-GNamedWidget *gtk_panel_item_get_named_widget(const GPanelItem *item)
+bool gtk_panel_item_class_dock_at_startup(const GPanelItemClass *class)
{
- GNamedWidget *result; /* Composant nommé à retourner */
+ bool result; /* Statut à retourner */
+ GGenConfig *config; /* Configuration courante */
+ char *key; /* Clef d'accès à un paramètre */
+#ifndef NDEBUG
+ bool status; /* Bilan de consultation */
+#endif
- result = item->widget;
+ config = get_main_configuration();
- g_object_ref(G_OBJECT(result));
+ key = gtk_panel_item_class_build_configuration_key(class, "dock_at_startup");
+
+#ifndef NDEBUG
+ status = g_generic_config_get_value(config, key, &result);
+ assert(status);
+#else
+ g_generic_config_get_value(config, key, &result);
+#endif
+
+ free(key);
return result;
@@ -305,21 +330,21 @@ GNamedWidget *gtk_panel_item_get_named_widget(const GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* Paramètres : class = classe associée à la consultation. *
* *
-* Description : Fournit le nom court du composant encapsulable. *
+* Description : Renvoie false lors d'une consultation de la classe. *
* *
-* Retour : Désignation humaine pour titre d'onglet ou de fenêtre. *
+* Retour : false. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *gtk_panel_item_get_name(const GPanelItem *item)
+bool gtk_panel_item_class_return_false(const GPanelItemClass *class)
{
- char *result; /* Désignation à retourner */
+ bool result; /* Statut à retourner */
- result = g_named_widget_get_name(G_NAMED_WIDGET(item->widget), false);
+ result = false;
return result;
@@ -328,21 +353,21 @@ static char *gtk_panel_item_get_name(const GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* Paramètres : class = classe associée à la consultation. *
* *
-* Description : Fournit le nom long du composant encapsulable. *
+* Description : Renvoie true lors d'une consultation de la classe. *
* *
-* Retour : Désignation humaine pour titre d'onglet ou de fenêtre. *
+* Retour : true. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *gtk_panel_item_get_desc(const GPanelItem *item)
+bool gtk_panel_item_class_return_true(const GPanelItemClass *class)
{
- char *result; /* Description à retourner */
+ bool result; /* Statut à retourner */
- result = g_named_widget_get_name(G_NAMED_WIDGET(item->widget), true);
+ result = true;
return result;
@@ -351,7 +376,7 @@ static char *gtk_panel_item_get_desc(const GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* Paramètres : class = classe à consulter. *
* *
* Description : Détermine si un panneau peut être filtré. *
* *
@@ -361,14 +386,11 @@ static char *gtk_panel_item_get_desc(const GPanelItem *item)
* *
******************************************************************************/
-static bool gtk_panel_item_can_search(const GPanelItem *item)
+bool gtk_panel_item_class_can_search(const GPanelItemClass *class)
{
- bool result; /* Indication à retourner */
- GPanelItemClass *class; /* Classe de l'élément visé */
+ bool result; /* Statut à retourner */
- class = G_PANEL_ITEM_GET_CLASS(item);
-
- result = class->can_search;
+ result = class->can_search(class);
return result;
@@ -377,26 +399,40 @@ static bool gtk_panel_item_can_search(const GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le composant graphique intégrable dans un ensemble. *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
* *
-* Retour : Composant graphique prêt à emploi. *
+* Retour : Chemin fixé associé à la position initiale. *
* *
* Remarques : - *
* *
******************************************************************************/
-static GtkWidget *gtk_panel_item_get_widget(GPanelItem *item)
+char *gtk_panel_item_class_get_path(const GPanelItemClass *class)
{
- GtkWidget *result; /* Composant à retourner */
+ char *result; /* Emplacement à retourner */
+ GGenConfig *config; /* Configuration courante */
+ char *key; /* Clef d'accès à un paramètre */
+ const char *path; /* Nouveau chemin de placement */
+#ifndef NDEBUG
+ bool status; /* Statut de l'encapsulation */
+#endif
- if (item->cached_widget == NULL)
- item->cached_widget = g_named_widget_get_widget(G_NAMED_WIDGET(item->widget));
+ config = get_main_configuration();
- result = item->cached_widget;
+ key = gtk_panel_item_class_build_configuration_key(class, "path");
- g_object_ref(G_OBJECT(result));
+#ifndef NDEBUG
+ status = g_generic_config_get_value(config, key, &path);
+ assert(status);
+#else
+ g_generic_config_get_value(config, key, &path);
+#endif
+
+ free(key);
+
+ result = strdup(path);
return result;
@@ -405,33 +441,34 @@ static GtkWidget *gtk_panel_item_get_widget(GPanelItem *item)
/******************************************************************************
* *
-* Paramètres : item = instance GTK dont l'interface est à sollicitée. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Démarre l'actualisation du filtrage du contenu. *
+* Description : Indique la définition d'un éventuel raccourci clavier. *
* *
-* Retour : - *
+* Retour : Description d'un raccourci ou NULL si aucun de défini. *
* *
* Remarques : - *
* *
******************************************************************************/
-static void gtk_panel_item_update_filtered(GPanelItem *item, const char *filter)
+char *gtk_panel_item_class_get_key_bindings(const GPanelItemClass *class)
{
- assert(gtk_panel_item_can_search(item));
+ char *result; /* Emplacement à retourner */
- if (item->filter != NULL)
- free(item->filter);
+ if (class->get_bindings != NULL)
+ result = class->get_bindings(class);
- item->filter = (filter ? strdup(filter) : NULL);
+ else
+ result = NULL;
- G_PANEL_ITEM_GET_CLASS(item)->update_filtered(item);
+ return result;
}
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
+* Paramètres : class = classe du type de panneau à traiter. *
* attrib = élément de configuration à inclure dans le résultat.*
* *
* Description : Construit la chaîne d'accès à un élément de configuration. *
@@ -442,12 +479,12 @@ static void gtk_panel_item_update_filtered(GPanelItem *item, const char *filter)
* *
******************************************************************************/
-static char *gtk_panel_item_build_configuration_key(const GPanelItem *item, const char *attrib)
+static char *gtk_panel_item_class_build_configuration_key(const GPanelItemClass *class, const char *attrib)
{
char *result; /* Construction à renvoyer */
const char *name; /* Nom court du panneau */
- name = g_editor_item_get_key(G_EDITOR_ITEM(item));
+ name = g_editor_item_class_get_key(G_EDITOR_ITEM_CLASS(class));
asprintf(&result, "gui.panels.%s.%s", attrib, name);
@@ -462,10 +499,10 @@ static char *gtk_panel_item_build_configuration_key(const GPanelItem *item, cons
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
+* Paramètres : class = classe de panneau à consulter. *
* config = configuration à compléter. *
* *
-* Description : Met en place les bases de la configuration du panneau. *
+* Description : Met en place les bases de la configuration d'un panneau. *
* *
* Retour : Bilan de l'opération. *
* *
@@ -473,33 +510,42 @@ static char *gtk_panel_item_build_configuration_key(const GPanelItem *item, cons
* *
******************************************************************************/
-bool gtk_panel_item_setup_configuration(const GPanelItem *item, GGenConfig *config)
+bool gtk_panel_item_class_setup_configuration(const GPanelItemClass *class, GGenConfig *config)
{
bool result; /* Bilan à retourner */
char *key; /* Clef d'accès à un paramètre */
+ bool dock_at_startup; /* Affichage dès le départ ? */
GCfgParam *param; /* Paramètre chargé */
+ char *path; /* Localisation du panneau */
result = true;
- key = gtk_panel_item_build_configuration_key(item, "dock_at_startup");
+ key = gtk_panel_item_class_build_configuration_key(class, "dock_at_startup");
+
+ dock_at_startup = class->dock_at_startup(class);
- param = g_generic_config_create_param(config, key, CPT_BOOLEAN, item->dock_at_startup);
+ param = g_generic_config_create_param_if_not_exist(config, key, CPT_BOOLEAN, dock_at_startup);
+
+ free(key);
if (param == NULL)
{
result = false;
- goto gpisc_exit;
+ goto exit;
}
- free(key);
+ key = gtk_panel_item_class_build_configuration_key(class, "path");
+
+ path = class->get_path(class);
- key = gtk_panel_item_build_configuration_key(item, "path");
+ param = g_generic_config_create_param_if_not_exist(config, key, CPT_STRING, path);
- param = g_generic_config_create_param(config, key, CPT_STRING, item->path);
if (param == NULL)
result = false;
- gpisc_exit:
+ free(path);
+
+ exit:
free(key);
@@ -510,116 +556,160 @@ bool gtk_panel_item_setup_configuration(const GPanelItem *item, GGenConfig *conf
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
-* config = configuration à charger. *
+* Paramètres : type = type de panneau à mettre en place. *
+* path = emplacement d'affichage ou NULL. *
* *
-* Description : Charge un panneau sur les bases de la configuration fournie. *
+* Description : Crée un élément de panneau réactif. *
* *
-* Retour : true, par conformité avec browse_all_item_panels(). *
+* Retour : Adresse de la structure mise en place. *
* *
* Remarques : - *
* *
******************************************************************************/
-bool gtk_panel_item_apply_configuration(GPanelItem *item, GGenConfig *config)
+GPanelItem *g_panel_item_new(GType type, const char *path)
{
- char *key; /* Clef d'accès à un paramètre */
- const char *new_path; /* Nouveau chemin de placement */
- bool status; /* Statut de l'encapsulation */
+ GPanelItem *result; /* Structure à retourner */
+ GPanelItemClass *class; /* Classe associée au type */
+ PanelItemPersonality personality; /* Caractéristique de panneau */
+ GtkTiledGrid *grid; /* Composant d'affichage */
+
+ class = g_type_class_ref(type);
- key = gtk_panel_item_build_configuration_key(item, "path");
+ personality = gtk_panel_item_class_get_personality(class);
+ assert(path != NULL || personality == PIP_PERSISTENT_SINGLETON);
- if (g_generic_config_get_value(config, key, &new_path))
+ g_type_class_unref(class);
+
+ if (personality == PIP_PERSISTENT_SINGLETON || personality == PIP_SINGLETON)
{
- free(item->path);
+ result = G_PANEL_ITEM(find_editor_item_by_type(type));
- item->path = strdup(new_path);
+ if (result != NULL)
+ goto singleton;
}
- free(key);
+ result = create_object_from_type(type);
- key = gtk_panel_item_build_configuration_key(item, "dock_at_startup");
+ grid = get_tiled_grid();
- if (g_generic_config_get_value(config, key, &status))
+ g_signal_connect_swapped(result, "dock-request", G_CALLBACK(gtk_tiled_grid_add), grid);
+ g_signal_connect_swapped(result, "undock-request", G_CALLBACK(gtk_tiled_grid_remove), grid);
+
+ gtk_dockable_setup_dnd(GTK_DOCKABLE(result));
+
+ register_editor_item(G_EDITOR_ITEM(result));
+
+ singleton:
+
+ if (path != NULL)
{
- item->dock_at_startup = status;
+ if (path[0] != '\0')
+ gtk_panel_item_set_path(result, path);
- if (item->dock_at_startup)
- g_signal_emit_by_name(item, "dock-request");
+ g_panel_item_dock(result);
}
- free(key);
-
- return true;
+ return result;
}
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
+* Paramètres : item = instance de panneau à consulter. *
* *
-* Description : Fournit une indication sur la personnalité du panneau. *
+* Description : Indique le composant graphique principal du panneau. *
* *
-* Retour : Identifiant lié à la nature du panneau. *
+* Retour : Composant graphique avec nom constituant le panneau. *
* *
* Remarques : - *
* *
******************************************************************************/
-PanelItemPersonality gtk_panel_item_get_personality(const GPanelItem *item)
+GNamedWidget *gtk_panel_item_get_named_widget(const GPanelItem *item)
{
- return item->personality;
+ GNamedWidget *result; /* Composant nommé à retourner */
+
+ result = item->widget;
+
+ g_object_ref(G_OBJECT(result));
+
+ return result;
}
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
+* Paramètres : item = instance GTK dont l'interface est à consulter. *
* *
-* Description : Fournit le chemin d'accès à utiliser pour les encapsulations.*
+* Description : Fournit le nom court du composant encapsulable. *
* *
-* Retour : Chemin d'accès défini. *
+* Retour : Désignation humaine pour titre d'onglet ou de fenêtre. *
* *
* Remarques : - *
* *
******************************************************************************/
-const char *gtk_panel_item_get_path(const GPanelItem *item)
+static char *gtk_panel_item_get_name(const GPanelItem *item)
{
- return item->path;
+ char *result; /* Désignation à retourner */
+
+ result = g_named_widget_get_name(G_NAMED_WIDGET(item->widget), false);
+
+ return result;
}
+
/******************************************************************************
* *
-* Paramètres : item = instance GTK à consulter. *
-* path = nouvelle emplacement d'inclusion. *
+* Paramètres : item = instance GTK dont l'interface est à consulter. *
* *
-* Description : Définit le chemin d'accès à utiliser pour les encapsulations.*
+* Description : Fournit le nom long du composant encapsulable. *
* *
-* Retour : - *
+* Retour : Désignation humaine pour titre d'onglet ou de fenêtre. *
* *
* Remarques : - *
* *
******************************************************************************/
-void gtk_panel_item_set_path(GPanelItem *item, const char *path)
+static char *gtk_panel_item_get_desc(const GPanelItem *item)
{
- char *key; /* Clef d'accès à un paramètre */
+ char *result; /* Description à retourner */
- free(item->path);
+ result = g_named_widget_get_name(G_NAMED_WIDGET(item->widget), true);
- item->path = strdup(path);
+ return result;
- key = gtk_panel_item_build_configuration_key(item, "path");
+}
- g_generic_config_set_value(get_main_configuration(), key, item->path);
- free(key);
+/******************************************************************************
+* *
+* Paramètres : item = instance GTK dont l'interface est à consulter. *
+* *
+* Description : Détermine si un panneau peut être filtré. *
+* *
+* Retour : Bilan de la consultation. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static bool gtk_panel_item_can_search(const GPanelItem *item)
+{
+ bool result; /* Indication à retourner */
+ GPanelItemClass *class; /* Classe de l'élément visé */
+
+ class = G_PANEL_ITEM_GET_CLASS(item);
+
+ result = gtk_panel_item_class_can_search(class);
+
+ return result;
}
@@ -628,17 +718,81 @@ void gtk_panel_item_set_path(GPanelItem *item, const char *path)
* *
* Paramètres : item = instance GTK dont l'interface est à consulter. *
* *
-* Description : Indique la définition d'un éventuel raccourci clavier. *
+* Description : Fournit le composant graphique intégrable dans un ensemble. *
* *
-* Retour : Description d'un raccourci ou NULL si aucun de défini. *
+* Retour : Composant graphique prêt à emploi. *
* *
* Remarques : - *
* *
******************************************************************************/
-const char *gtk_panel_item_get_key_bindings(const GPanelItem *item)
+static GtkWidget *gtk_panel_item_get_widget(GPanelItem *item)
{
- return G_PANEL_ITEM_GET_CLASS(item)->bindings;
+ GtkWidget *result; /* Composant à retourner */
+
+ if (item->cached_widget == NULL)
+ item->cached_widget = g_named_widget_get_widget(G_NAMED_WIDGET(item->widget));
+
+ result = item->cached_widget;
+
+ g_object_ref(G_OBJECT(result));
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : item = instance GTK dont l'interface est à sollicitée. *
+* *
+* Description : Démarre l'actualisation du filtrage du contenu. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void gtk_panel_item_update_filtered(GPanelItem *item, const char *filter)
+{
+ assert(gtk_panel_item_can_search(item));
+
+ if (item->filter != NULL)
+ free(item->filter);
+
+ item->filter = (filter ? strdup(filter) : NULL);
+
+ G_PANEL_ITEM_GET_CLASS(item)->update_filtered(item);
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : item = instance GTK à consulter. *
+* path = nouvelle emplacement d'inclusion. *
+* *
+* Description : Définit le chemin d'accès à utiliser pour les encapsulations.*
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+void gtk_panel_item_set_path(GPanelItem *item, const char *path)
+{
+ GGenConfig *config; /* Configuration courante */
+ char *key; /* Clef d'accès à un paramètre */
+
+ config = get_main_configuration();
+
+ key = gtk_panel_item_class_build_configuration_key(G_PANEL_ITEM_GET_CLASS(item), "path");
+
+ g_generic_config_set_value(config, key, path);
+
+ free(key);
}
@@ -680,16 +834,15 @@ void g_panel_item_dock(GPanelItem *item)
* *
******************************************************************************/
-void g_panel_item_set_dock_status(GPanelItem *item, bool status)
+void g_panel_item_set_dock_at_startup(GPanelItem *item, bool status)
{
char *key; /* Clef d'accès à un paramètre */
item->docked = status;
- item->dock_at_startup = status;
- key = gtk_panel_item_build_configuration_key(item, "dock_at_startup");
+ key = gtk_panel_item_class_build_configuration_key(G_PANEL_ITEM_GET_CLASS(item), "dock_at_startup");
- g_generic_config_set_value(get_main_configuration(), key, item->dock_at_startup);
+ g_generic_config_set_value(get_main_configuration(), key, status);
free(key);
@@ -710,7 +863,11 @@ void g_panel_item_set_dock_status(GPanelItem *item, bool status)
bool g_panel_item_is_docked(const GPanelItem *item)
{
- return item->docked;
+ bool result; /* Status à retourner */
+
+ result = item->docked;
+
+ return result;
}
@@ -729,6 +886,8 @@ bool g_panel_item_is_docked(const GPanelItem *item)
void g_panel_item_undock(GPanelItem *item)
{
+ PanelItemPersonality personality; /* Caractéristique de panneau */
+
assert(item->docked);
g_signal_emit_by_name(item, "undock-request");
@@ -736,6 +895,11 @@ void g_panel_item_undock(GPanelItem *item)
if (G_PANEL_ITEM_GET_CLASS(item)->ack_undock != NULL)
G_PANEL_ITEM_GET_CLASS(item)->ack_undock(item);
+ personality = gtk_panel_item_class_get_personality(G_PANEL_ITEM_GET_CLASS(item));
+
+ if (personality != PIP_PERSISTENT_SINGLETON)
+ unregister_editor_item(G_EDITOR_ITEM(item));
+
}
diff --git a/src/gui/panel.h b/src/gui/panel.h
index 067f076..de8d2bf 100644
--- a/src/gui/panel.h
+++ b/src/gui/panel.h
@@ -56,6 +56,7 @@ typedef enum _PanelItemPersonality
PIP_INVALID, /* Information non initialisée */
PIP_SINGLETON, /* Instance unique */
+ PIP_PERSISTENT_SINGLETON, /* Instance unique permanente */
PIP_BINARY_VIEW, /* Affichage d'un binaire */
PIP_OTHER, /* Reste du monde */
@@ -67,35 +68,38 @@ typedef enum _PanelItemPersonality
/* Indique le type défini pour un élément destiné à un panneau. */
GType g_panel_item_get_type(void);
-/* Crée un élément de panneau réactif. */
-GPanelItem *g_panel_item_new(PanelItemPersonality, GNamedWidget *, bool, const char *);
+/* Fournit une indication sur la personnalité du panneau. */
+PanelItemPersonality gtk_panel_item_class_get_personality(const GPanelItemClass *);
-/* Indique le composant graphique principal du panneau. */
-GNamedWidget *gtk_panel_item_get_named_widget(const GPanelItem *);
+/* Fournit une indication d'accroche du panneau au démarrage. */
+bool gtk_panel_item_class_dock_at_startup(const GPanelItemClass *);
-/* Met en place les bases de la configuration du panneau. */
-bool gtk_panel_item_setup_configuration(const GPanelItem *, GGenConfig *);
+/* Détermine si un panneau peut être filtré. */
+bool gtk_panel_item_class_can_search(const GPanelItemClass *);
-/* Charge un panneau sur les bases de la configuration fournie. */
-bool gtk_panel_item_apply_configuration(GPanelItem *, GGenConfig *);
+/* Indique le chemin initial de la localisation d'un panneau. */
+char *gtk_panel_item_class_get_path(const GPanelItemClass *);
-/* Fournit une indication sur la personnalité du panneau. */
-PanelItemPersonality gtk_panel_item_get_personality(const GPanelItem *);
+/* Indique la définition d'un éventuel raccourci clavier. */
+char *gtk_panel_item_class_get_key_bindings(const GPanelItemClass *);
-/* Fournit le chemin d'accès à utiliser pour les encapsulations. */
-const char *gtk_panel_item_get_path(const GPanelItem *);
+/* Met en place les bases de la configuration du panneau. */
+bool gtk_panel_item_class_setup_configuration(const GPanelItemClass *, GGenConfig *);
+
+/* Crée un élément de panneau réactif. */
+GPanelItem *g_panel_item_new(GType, const char *);
+
+/* Indique le composant graphique principal du panneau. */
+GNamedWidget *gtk_panel_item_get_named_widget(const GPanelItem *);
/* Définit le chemin d'accès à utiliser pour les encapsulations. */
void gtk_panel_item_set_path(GPanelItem *, const char *);
-/* Indique la définition d'un éventuel raccourci clavier. */
-const char *gtk_panel_item_get_key_bindings(const GPanelItem *);
-
/* Place un panneau dans l'ensemble affiché. */
void g_panel_item_dock(GPanelItem *);
/* Définit si le composant repose sur un support de l'éditeur. */
-void g_panel_item_set_dock_status(GPanelItem *, bool);
+void g_panel_item_set_dock_at_startup(GPanelItem *, bool);
/* Indique si le composant repose sur un support de l'éditeur. */
bool g_panel_item_is_docked(const GPanelItem *);
diff --git a/src/gui/panels/Makefile.am b/src/gui/panels/Makefile.am
index 457e507..13c401e 100644
--- a/src/gui/panels/Makefile.am
+++ b/src/gui/panels/Makefile.am
@@ -30,6 +30,7 @@ libguipanels_la_SOURCES = \
symbols.h symbols.c \
updating-int.h \
updating.h updating.c \
+ view.h view.c \
welcome.h welcome.c
libguipanels_la_LDFLAGS =
diff --git a/src/gui/panels/bintree.c b/src/gui/panels/bintree.c
index eb2debc..db5e774 100644
--- a/src/gui/panels/bintree.c
+++ b/src/gui/panels/bintree.c
@@ -117,7 +117,10 @@ static void g_bintree_panel_dispose(GBintreePanel *);
static void g_bintree_panel_finalize(GBintreePanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_bintree_panel_get_key(const GBintreePanel *);
+static char *g_bintree_panel_class_get_key(const GBintreePanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_bintree_panel_class_get_path(const GBintreePanelClass *);
/* Modifie la profondeur affichée des portions présentes. */
static void on_depth_spin_value_changed(GtkSpinButton *, const GBintreePanel *);
@@ -215,7 +218,7 @@ G_DEFINE_TYPE_WITH_CODE(GBintreePanel, g_bintree_panel, G_TYPE_PANEL_ITEM,
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux d'affichage des portions. *
* *
@@ -225,24 +228,26 @@ G_DEFINE_TYPE_WITH_CODE(GBintreePanel, g_bintree_panel, G_TYPE_PANEL_ITEM,
* *
******************************************************************************/
-static void g_bintree_panel_class_init(GBintreePanelClass *klass)
+static void g_bintree_panel_class_init(GBintreePanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
GPanelItemClass *panel; /* Version parente de la classe*/
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_bintree_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_bintree_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_bintree_panel_get_key;
+ item->get_key = (get_item_key_fc)g_bintree_panel_class_get_key;
item->change_content = (change_item_content_fc)change_bintree_panel_current_content;
- panel = G_PANEL_ITEM_CLASS(klass);
+ panel = G_PANEL_ITEM_CLASS(class);
+
+ panel->get_path = (get_panel_path_fc)g_bintree_panel_class_get_path;
panel->gid = setup_tiny_global_work_group(1);
@@ -273,15 +278,10 @@ static void g_bintree_panel_init(GBintreePanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Binary tree"),
_("Tree of the binary layout"),
PANEL_BINTREE_ID));
- pitem->dock_at_startup = true;
- pitem->path = strdup("MEN");
-
/* Compléments propres */
panel->binary = NULL;
@@ -415,44 +415,44 @@ static void g_bintree_panel_finalize(GBintreePanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau présentant l'arborescence des portions. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_bintree_panel_new(void)
+static char *g_bintree_panel_class_get_key(const GBintreePanelClass *class)
{
- GBintreePanel *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_BINTREE_PANEL, NULL);
+ result = strdup(PANEL_BINTREE_ID);
- return G_PANEL_ITEM(result);
+ return result;
}
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Chemin fixé associé à la position initiale. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_bintree_panel_get_key(const GBintreePanel *panel)
+static char *g_bintree_panel_class_get_path(const GBintreePanelClass *class)
{
- char *result; /* Description à renvoyer */
+ char *result; /* Emplacement à retourner */
- result = strdup(PANEL_BINTREE_ID);
+ result = strdup("MEN");
return result;
@@ -461,6 +461,29 @@ static char *g_bintree_panel_get_key(const GBintreePanel *panel)
/******************************************************************************
* *
+* Paramètres : - *
+* *
+* Description : Crée un panneau présentant l'arborescence des portions. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *g_bintree_panel_new(void)
+{
+ GBintreePanel *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_BINTREE_PANEL, NULL);
+
+ return G_PANEL_ITEM(result);
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : button = bouton de réglage de l'affichage. *
* treeview = arborescence dont l'affichage est à moduler. *
* *
diff --git a/src/gui/panels/bookmarks.c b/src/gui/panels/bookmarks.c
index 46069c1..b57e657 100644
--- a/src/gui/panels/bookmarks.c
+++ b/src/gui/panels/bookmarks.c
@@ -106,7 +106,10 @@ static void g_bookmarks_panel_dispose(GBookmarksPanel *);
static void g_bookmarks_panel_finalize(GBookmarksPanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_bookmarks_panel_get_key(const GBookmarksPanel *);
+static char *g_bookmarks_panel_class_get_key(const GBookmarksPanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_bookmarks_panel_class_get_path(const GBookmarksPanelClass *);
/* Réagit à un changement d'affichage principal de contenu. */
static void change_bookmarks_panel_current_content(GBookmarksPanel *, GLoadedContent *, GLoadedContent *);
@@ -180,7 +183,7 @@ G_DEFINE_TYPE(GBookmarksPanel, g_bookmarks_panel, G_TYPE_PANEL_ITEM);
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux des paramètres de config. *
* *
@@ -190,27 +193,29 @@ G_DEFINE_TYPE(GBookmarksPanel, g_bookmarks_panel, G_TYPE_PANEL_ITEM);
* *
******************************************************************************/
-static void g_bookmarks_panel_class_init(GBookmarksPanelClass *klass)
+static void g_bookmarks_panel_class_init(GBookmarksPanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
GPanelItemClass *panel; /* Version parente de la classe*/
gchar *filename; /* Chemin d'accès à utiliser */
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_bookmarks_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_bookmarks_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_bookmarks_panel_get_key;
+ item->get_key = (get_item_key_fc)g_bookmarks_panel_class_get_key;
item->change_content = (change_item_content_fc)change_bookmarks_panel_current_content;
- panel = G_PANEL_ITEM_CLASS(klass);
+ panel = G_PANEL_ITEM_CLASS(class);
- panel->can_search = true;
+ panel->dock_at_startup = gtk_panel_item_class_return_false;
+ panel->can_search = gtk_panel_item_class_return_true;
+ panel->get_path = (get_panel_path_fc)g_bookmarks_panel_class_get_path;
panel->update_filtered = (update_filtered_fc)update_filtered_bookmarks;
@@ -219,7 +224,7 @@ static void g_bookmarks_panel_class_init(GBookmarksPanelClass *klass)
filename = find_pixmap_file("bookmark.png");
assert(filename != NULL);
- klass->bookmark_img = cairo_image_surface_create_from_png(filename);
+ class->bookmark_img = cairo_image_surface_create_from_png(filename);
g_free(filename);
@@ -249,15 +254,10 @@ static void g_bookmarks_panel_init(GBookmarksPanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Bookmarks"),
_("Bookmarks for the current binary"),
PANEL_BOOKMARKS_ID));
- pitem->dock_at_startup = false;
- pitem->path = strdup("Ms");
-
/* Représentation graphique */
builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget));
@@ -343,29 +343,44 @@ static void g_bookmarks_panel_finalize(GBookmarksPanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau d'affichage des paramètres de configuration. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_bookmarks_panel_new(void)
+static char *g_bookmarks_panel_class_get_key(const GBookmarksPanelClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_BOOKMARKS_PANEL, NULL);
+ result = strdup(PANEL_BOOKMARKS_ID);
- //reload_config_into_treeview(G_BOOKMARKS_PANEL(result), get_main_configuration());
+ return result;
+}
- //GDbCollection *g_loaded_binary_find_collection(GLoadedBinary *binary, DBFeatures feature)
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
+* *
+* Retour : Chemin fixé associé à la position initiale. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+static char *g_bookmarks_panel_class_get_path(const GBookmarksPanelClass *class)
+{
+ char *result; /* Emplacement à retourner */
+ result = strdup("Ms");
return result;
@@ -374,21 +389,21 @@ GPanelItem *g_bookmarks_panel_new(void)
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : - *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Crée un panneau d'affichage des paramètres de configuration. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Adresse de la structure mise en place. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_bookmarks_panel_get_key(const GBookmarksPanel *panel)
+GPanelItem *g_bookmarks_panel_new(void)
{
- char *result; /* Description à renvoyer */
+ GPanelItem *result; /* Structure à retourner */
- result = strdup(PANEL_BOOKMARKS_ID);
+ result = g_object_new(G_TYPE_BOOKMARKS_PANEL, NULL);
return result;
diff --git a/src/gui/panels/errors.c b/src/gui/panels/errors.c
index 905d87c..d567511 100644
--- a/src/gui/panels/errors.c
+++ b/src/gui/panels/errors.c
@@ -137,7 +137,10 @@ static void g_error_panel_dispose(GErrorPanel *);
static void g_error_panel_finalize(GErrorPanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_error_panel_get_key(const GErrorPanel *);
+static char *g_error_panel_class_get_key(const GErrorPanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_error_panel_class_get_path(const GErrorPanelClass *);
/* Organise le tri des erreurs présentées. */
static gint sort_errors_in_panel(GtkTreeModel *, GtkTreeIter *, GtkTreeIter *, gpointer);
@@ -200,7 +203,7 @@ G_DEFINE_TYPE_WITH_CODE(GErrorPanel, g_error_panel, G_TYPE_PANEL_ITEM,
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux d'affichage des erreurs. *
* *
@@ -210,47 +213,47 @@ G_DEFINE_TYPE_WITH_CODE(GErrorPanel, g_error_panel, G_TYPE_PANEL_ITEM,
* *
******************************************************************************/
-static void g_error_panel_class_init(GErrorPanelClass *klass)
+static void g_error_panel_class_init(GErrorPanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
- gchar *filename; /* Chemin d'accès à utiliser */
GPanelItemClass *panel; /* Version parente de la classe*/
+ gchar *filename; /* Chemin d'accès à utiliser */
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_error_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_error_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_error_panel_get_key;
+ item->get_key = (get_item_key_fc)g_error_panel_class_get_key;
item->change_content = (change_item_content_fc)change_error_panel_current_content;
+ panel = G_PANEL_ITEM_CLASS(class);
+
+ panel->get_path = (get_panel_path_fc)g_error_panel_class_get_path;
+
+ panel->gid = setup_tiny_global_work_group(1);
+
filename = find_pixmap_file("error_file.png");
assert(filename != NULL);
- klass->format_img = cairo_image_surface_create_from_png(filename);
+ class->format_img = cairo_image_surface_create_from_png(filename);
filename = find_pixmap_file("error_cpu.png");
assert(filename != NULL);
- klass->disass_img = cairo_image_surface_create_from_png(filename);
+ class->disass_img = cairo_image_surface_create_from_png(filename);
filename = find_pixmap_file("error_display.png");
assert(filename != NULL);
- klass->output_img = cairo_image_surface_create_from_png(filename);
+ class->output_img = cairo_image_surface_create_from_png(filename);
g_free(filename);
- panel = G_PANEL_ITEM_CLASS(klass);
-
- panel->unique = true;
-
- panel->gid = setup_tiny_global_work_group(1);
-
}
@@ -280,15 +283,10 @@ static void g_error_panel_init(GErrorPanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Errors"),
_("Disassembling errors"),
PANEL_ERRORS_ID));
- pitem->dock_at_startup = true;
- pitem->path = strdup("Ms");
-
/* Compléments propres */
panel->binary = NULL;
@@ -417,44 +415,67 @@ static void g_error_panel_finalize(GErrorPanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau présentant la liste des erreurs rencontrées. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_error_panel_new(void)
+static char *g_error_panel_class_get_key(const GErrorPanelClass *class)
{
- GErrorPanel *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_ERROR_PANEL, NULL);
+ result = strdup(PANEL_ERRORS_ID);
- return G_PANEL_ITEM(result);
+ return result;
}
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Chemin fixé associé à la position initiale. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_error_panel_get_key(const GErrorPanel *panel)
+static char *g_error_panel_class_get_path(const GErrorPanelClass *class)
{
- char *result; /* Description à renvoyer */
+ char *result; /* Emplacement à retourner */
- result = strdup(PANEL_ERRORS_ID);
+ result = strdup("Ms");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Crée un panneau présentant la liste des erreurs rencontrées. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *g_error_panel_new(void)
+{
+ GPanelItem *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_ERROR_PANEL, NULL);
return result;
diff --git a/src/gui/panels/glance.c b/src/gui/panels/glance.c
index 22d4890..9be8b63 100644
--- a/src/gui/panels/glance.c
+++ b/src/gui/panels/glance.c
@@ -89,7 +89,10 @@ static void g_glance_panel_dispose(GGlancePanel *);
static void g_glance_panel_finalize(GGlancePanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_glance_panel_get_key(const GGlancePanel *);
+static char *g_glance_panel_class_get_key(const GGlancePanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_glance_panel_class_get_path(const GGlancePanelClass *);
/* Lance une actualisation du fait d'un changement de support. */
static void change_glance_panel_current_view(GGlancePanel *, GLoadedPanel *, GLoadedPanel *);
@@ -129,7 +132,7 @@ G_DEFINE_TYPE(GGlancePanel, g_glance_panel, G_TYPE_PANEL_ITEM);
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux d'aperçu rapide. *
* *
@@ -139,29 +142,34 @@ G_DEFINE_TYPE(GGlancePanel, g_glance_panel, G_TYPE_PANEL_ITEM);
* *
******************************************************************************/
-static void g_glance_panel_class_init(GGlancePanelClass *klass)
+static void g_glance_panel_class_init(GGlancePanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
+ GPanelItemClass *panel; /* Version parente de la classe*/
GtkIconTheme *theme; /* Thème GTK offrant des icones*/
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_glance_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_glance_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_glance_panel_get_key;
+ item->get_key = (get_item_key_fc)g_glance_panel_class_get_key;
item->change_view = (change_item_view_fc)change_glance_panel_current_view;
item->update_view = (update_item_view_fc)update_glance_panel_view;
+ panel = G_PANEL_ITEM_CLASS(class);
+
+ panel->get_path = (get_panel_path_fc)g_glance_panel_class_get_path;
+
theme = gtk_icon_theme_get_default();
- klass->no_image_32 = gtk_icon_theme_lookup_icon(theme, "image-missing", 32, GTK_ICON_LOOKUP_FORCE_SIZE);
- klass->no_image_64 = gtk_icon_theme_lookup_icon(theme, "image-missing", 64, GTK_ICON_LOOKUP_FORCE_SIZE);
- klass->no_image_128 = gtk_icon_theme_lookup_icon(theme, "image-missing", 128, GTK_ICON_LOOKUP_FORCE_SIZE);
+ class->no_image_32 = gtk_icon_theme_lookup_icon(theme, "image-missing", 32, GTK_ICON_LOOKUP_FORCE_SIZE);
+ class->no_image_64 = gtk_icon_theme_lookup_icon(theme, "image-missing", 64, GTK_ICON_LOOKUP_FORCE_SIZE);
+ class->no_image_128 = gtk_icon_theme_lookup_icon(theme, "image-missing", 128, GTK_ICON_LOOKUP_FORCE_SIZE);
}
@@ -187,15 +195,10 @@ static void g_glance_panel_init(GGlancePanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Glance"),
_("Glimpse of the display content"),
PANEL_GLANCE_ID));
- pitem->dock_at_startup = true;
- pitem->path = strdup("MEs");
-
/* Représentation graphique */
builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget));
@@ -260,21 +263,21 @@ static void g_glance_panel_finalize(GGlancePanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau d'aperçu rapide. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_glance_panel_new(void)
+static char *g_glance_panel_class_get_key(const GGlancePanelClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_GLANCE_PANEL, NULL);
+ result = strdup(PANEL_GLANCE_ID);
return result;
@@ -283,21 +286,44 @@ GPanelItem *g_glance_panel_new(void)
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Chemin fixé associé à la position initiale. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_glance_panel_get_key(const GGlancePanel *panel)
+static char *g_glance_panel_class_get_path(const GGlancePanelClass *class)
{
- char *result; /* Description à renvoyer */
+ char *result; /* Emplacement à retourner */
- result = strdup(PANEL_GLANCE_ID);
+ result = strdup("MEs");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Crée un panneau d'aperçu rapide. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *g_glance_panel_new(void)
+{
+ GPanelItem *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_GLANCE_PANEL, NULL);
return result;
diff --git a/src/gui/panels/history.c b/src/gui/panels/history.c
index 320babb..79be0dd 100644
--- a/src/gui/panels/history.c
+++ b/src/gui/panels/history.c
@@ -85,7 +85,10 @@ static void g_history_panel_dispose(GHistoryPanel *);
static void g_history_panel_finalize(GHistoryPanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_history_panel_get_key(const GHistoryPanel *);
+static char *g_history_panel_class_get_key(const GHistoryPanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_history_panel_class_get_path(const GHistoryPanelClass *);
/* Réagit à un changement d'affichage principal de contenu. */
static void change_history_panel_current_content(GHistoryPanel *, GLoadedContent *, GLoadedContent *);
@@ -116,7 +119,7 @@ G_DEFINE_TYPE(GHistoryPanel, g_history_panel, G_TYPE_PANEL_ITEM);
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux d'aperçu de graphiques. *
* *
@@ -126,22 +129,27 @@ G_DEFINE_TYPE(GHistoryPanel, g_history_panel, G_TYPE_PANEL_ITEM);
* *
******************************************************************************/
-static void g_history_panel_class_init(GHistoryPanelClass *klass)
+static void g_history_panel_class_init(GHistoryPanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
+ GPanelItemClass *panel; /* Version parente de la classe*/
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_history_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_history_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_history_panel_get_key;
+ item->get_key = (get_item_key_fc)g_history_panel_class_get_key;
item->change_content = (change_item_content_fc)change_history_panel_current_content;
+ panel = G_PANEL_ITEM_CLASS(class);
+
+ panel->get_path = (get_panel_path_fc)g_history_panel_class_get_path;
+
}
@@ -167,15 +175,10 @@ static void g_history_panel_init(GHistoryPanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("History"),
_("Change history"),
PANEL_HISTORY_ID));
- pitem->dock_at_startup = true;
- pitem->path = strdup("MEN");
-
/* Représentation graphique */
builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget));
@@ -242,21 +245,21 @@ static void g_history_panel_finalize(GHistoryPanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau d'affichage des symboles. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_history_panel_new(void)
+static char *g_history_panel_class_get_key(const GHistoryPanelClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_HISTORY_PANEL, NULL);
+ result = strdup(PANEL_HISTORY_ID);
return result;
@@ -265,21 +268,44 @@ GPanelItem *g_history_panel_new(void)
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Chemin fixé associé à la position initiale. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_history_panel_get_key(const GHistoryPanel *panel)
+static char *g_history_panel_class_get_path(const GHistoryPanelClass *class)
{
- char *result; /* Description à renvoyer */
+ char *result; /* Emplacement à retourner */
- result = strdup(PANEL_HISTORY_ID);
+ result = strdup("MEN");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Crée un panneau d'affichage des symboles. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *g_history_panel_new(void)
+{
+ GPanelItem *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_HISTORY_PANEL, NULL);
return result;
diff --git a/src/gui/panels/log.c b/src/gui/panels/log.c
index 43021cf..d11fbd2 100644
--- a/src/gui/panels/log.c
+++ b/src/gui/panels/log.c
@@ -89,7 +89,16 @@ static void g_log_panel_dispose(GLogPanel *);
static void g_log_panel_finalize(GLogPanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_log_panel_get_key(const GLogPanel *);
+static char *g_log_panel_class_get_key(const GLogPanelClass *);
+
+/* Fournit une indication sur la personnalité du panneau. */
+static PanelItemPersonality g_log_panel_class_get_personality(const GLogPanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_log_panel_class_get_path(const GLogPanelClass *);
+
+/* Indique la définition d'un éventuel raccourci clavier. */
+static char *g_log_panel_class_get_key_bindings(const GLogPanelClass *);
/* Affiche un message dans le journal des messages système. */
static gboolean log_message(log_data *);
@@ -102,7 +111,7 @@ G_DEFINE_TYPE(GLogPanel, g_log_panel, G_TYPE_PANEL_ITEM);
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux d'affichage des messages. *
* *
@@ -112,25 +121,26 @@ G_DEFINE_TYPE(GLogPanel, g_log_panel, G_TYPE_PANEL_ITEM);
* *
******************************************************************************/
-static void g_log_panel_class_init(GLogPanelClass *klass)
+static void g_log_panel_class_init(GLogPanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
GPanelItemClass *panel; /* Version parente de la classe*/
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_log_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_log_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_log_panel_get_key;
+ item->get_key = (get_item_key_fc)g_log_panel_class_get_key;
- panel = G_PANEL_ITEM_CLASS(klass);
+ panel = G_PANEL_ITEM_CLASS(class);
- panel->unique = true;
- panel->bindings = "<Shift>F1";
+ panel->get_personality = (get_panel_personality_fc)g_log_panel_class_get_personality;
+ panel->get_path = (get_panel_path_fc)g_log_panel_class_get_path;
+ panel->get_bindings = (get_panel_bindings_fc)g_log_panel_class_get_key_bindings;
}
@@ -155,15 +165,10 @@ static void g_log_panel_init(GLogPanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Messages"),
_("Misc information"),
PANEL_LOG_ID));
- pitem->dock_at_startup = true;
- pitem->path = strdup("Ms");
-
}
@@ -207,21 +212,21 @@ static void g_log_panel_finalize(GLogPanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau d'affichage des messages système. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_log_panel_new(void)
+static char *g_log_panel_class_get_key(const GLogPanelClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_LOG_PANEL, NULL);
+ result = strdup(PANEL_LOG_ID);
return result;
@@ -230,21 +235,90 @@ GPanelItem *g_log_panel_new(void)
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Fournit une indication sur la personnalité du panneau. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Identifiant lié à la nature unique du panneau. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_log_panel_get_key(const GLogPanel *panel)
+static PanelItemPersonality g_log_panel_class_get_personality(const GLogPanelClass *class)
{
- char *result; /* Description à renvoyer */
+ PanelItemPersonality result; /* Personnalité à retourner */
- result = strdup(PANEL_LOG_ID);
+ result = PIP_PERSISTENT_SINGLETON;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
+* *
+* Retour : Chemin fixé associé à la position initiale. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_log_panel_class_get_path(const GLogPanelClass *class)
+{
+ char *result; /* Emplacement à retourner */
+
+ result = strdup("Ms");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Indique la définition d'un éventuel raccourci clavier. *
+* *
+* Retour : Description d'un raccourci ou NULL si aucun de défini. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_log_panel_class_get_key_bindings(const GLogPanelClass *class)
+{
+ char *result; /* Emplacement à retourner */
+
+ result = strdup("<Shift>F1");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Crée un panneau d'affichage des messages système. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *g_log_panel_new(void)
+{
+ GPanelItem *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_LOG_PANEL, NULL);
return result;
diff --git a/src/gui/panels/regedit.c b/src/gui/panels/regedit.c
index 906d274..585cc22 100644
--- a/src/gui/panels/regedit.c
+++ b/src/gui/panels/regedit.c
@@ -98,7 +98,10 @@ static void g_regedit_panel_dispose(GRegeditPanel *);
static void g_regedit_panel_finalize(GRegeditPanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_regedit_panel_get_key(const GRegeditPanel *);
+static char *g_regedit_panel_class_get_key(const GRegeditPanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_regedit_panel_class_get_path(const GRegeditPanelClass *);
@@ -170,7 +173,7 @@ G_DEFINE_TYPE(GRegeditPanel, g_regedit_panel, G_TYPE_PANEL_ITEM);
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux des paramètres de config. *
* *
@@ -180,19 +183,25 @@ G_DEFINE_TYPE(GRegeditPanel, g_regedit_panel, G_TYPE_PANEL_ITEM);
* *
******************************************************************************/
-static void g_regedit_panel_class_init(GRegeditPanelClass *klass)
+static void g_regedit_panel_class_init(GRegeditPanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
+ GPanelItemClass *panel; /* Version parente de la classe*/
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_regedit_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_regedit_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
+
+ item->get_key = (get_item_key_fc)g_regedit_panel_class_get_key;
+
+ panel = G_PANEL_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_regedit_panel_get_key;
+ panel->dock_at_startup = gtk_panel_item_class_return_false;
+ panel->get_path = (get_panel_path_fc)g_regedit_panel_class_get_path;
}
@@ -220,15 +229,10 @@ static void g_regedit_panel_init(GRegeditPanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Configuration"),
_("Configuration parameters"),
PANEL_REGEDIT_ID));
- pitem->dock_at_startup = false;
- pitem->path = strdup("M");
-
/* Représentation graphique */
builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget));
@@ -273,6 +277,10 @@ static void g_regedit_panel_init(GRegeditPanel *panel)
g_object_unref(G_OBJECT(builder));
+ /* Actualisation du contenu du panneau */
+
+ reload_config_into_treeview(panel, get_main_configuration());
+
}
@@ -322,23 +330,44 @@ static void g_regedit_panel_finalize(GRegeditPanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau d'affichage des paramètres de configuration. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_regedit_panel_new(void)
+static char *g_regedit_panel_class_get_key(const GRegeditPanelClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_REGEDIT_PANEL, NULL);
+ result = strdup(PANEL_REGEDIT_ID);
+
+ return result;
+
+}
- reload_config_into_treeview(G_REGEDIT_PANEL(result), get_main_configuration());
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
+* *
+* Retour : Chemin fixé associé à la position initiale. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_regedit_panel_class_get_path(const GRegeditPanelClass *class)
+{
+ char *result; /* Emplacement à retourner */
+
+ result = strdup("M");
return result;
@@ -347,21 +376,21 @@ GPanelItem *g_regedit_panel_new(void)
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : - *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Crée un panneau d'affichage des paramètres de configuration. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Adresse de la structure mise en place. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_regedit_panel_get_key(const GRegeditPanel *panel)
+GPanelItem *g_regedit_panel_new(void)
{
- char *result; /* Description à renvoyer */
+ GPanelItem *result; /* Structure à retourner */
- result = strdup(PANEL_REGEDIT_ID);
+ result = g_object_new(G_TYPE_REGEDIT_PANEL, NULL);
return result;
diff --git a/src/gui/panels/strings.c b/src/gui/panels/strings.c
index 1ad7e8e..33b715b 100644
--- a/src/gui/panels/strings.c
+++ b/src/gui/panels/strings.c
@@ -113,7 +113,13 @@ static void g_strings_panel_dispose(GStringsPanel *);
static void g_strings_panel_finalize(GStringsPanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_strings_panel_get_key(const GStringsPanel *);
+static char *g_strings_panel_class_get_key(const GStringsPanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_strings_panel_class_get_path(const GStringsPanelClass *);
+
+/* Indique la définition d'un éventuel raccourci clavier. */
+static char *g_strings_panel_class_get_key_bindings(const GStringsPanelClass *);
/* Réagit au changement de sélection des chaînes textuelles. */
static void on_strings_selection_change(GtkTreeSelection *, gpointer);
@@ -233,7 +239,7 @@ G_DEFINE_TYPE_WITH_CODE(GStringsPanel, g_strings_panel, G_TYPE_PANEL_ITEM,
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux d'affichage de chaînes. *
* *
@@ -243,29 +249,29 @@ G_DEFINE_TYPE_WITH_CODE(GStringsPanel, g_strings_panel, G_TYPE_PANEL_ITEM,
* *
******************************************************************************/
-static void g_strings_panel_class_init(GStringsPanelClass *klass)
+static void g_strings_panel_class_init(GStringsPanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
GPanelItemClass *panel; /* Version parente de la classe*/
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_strings_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_strings_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_strings_panel_get_key;
+ item->get_key = (get_item_key_fc)g_strings_panel_class_get_key;
item->change_content = (change_item_content_fc)change_strings_panel_current_content;
- panel = G_PANEL_ITEM_CLASS(klass);
+ panel = G_PANEL_ITEM_CLASS(class);
- panel->unique = true;
- panel->bindings = "<Shift>F12";
-
- panel->can_search = true;
+ panel->dock_at_startup = gtk_panel_item_class_return_false;
+ panel->can_search = gtk_panel_item_class_return_true;
+ panel->get_path = (get_panel_path_fc)g_strings_panel_class_get_path;
+ panel->get_bindings = (get_panel_bindings_fc)g_strings_panel_class_get_key_bindings;
panel->update_filtered = (update_filtered_fc)update_filtered_strings;
@@ -301,15 +307,10 @@ static void g_strings_panel_init(GStringsPanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Strings"),
_("Strings contained in the binary"),
PANEL_STRINGS_ID));
- pitem->dock_at_startup = false;
- pitem->path = strdup("Ms");
-
/* Représentation graphique */
builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget));
@@ -468,21 +469,21 @@ static void g_strings_panel_finalize(GStringsPanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau d'affichage des chaînes. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_strings_panel_new(void)
+static char *g_strings_panel_class_get_key(const GStringsPanelClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_STRINGS_PANEL, NULL);
+ result = strdup(PANEL_STRINGS_ID);
return result;
@@ -491,21 +492,67 @@ GPanelItem *g_strings_panel_new(void)
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Chemin fixé associé à la position initiale. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_strings_panel_get_key(const GStringsPanel *panel)
+static char *g_strings_panel_class_get_path(const GStringsPanelClass *class)
{
- char *result; /* Description à renvoyer */
+ char *result; /* Emplacement à retourner */
- result = strdup(PANEL_STRINGS_ID);
+ result = strdup("Ms");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Indique la définition d'un éventuel raccourci clavier. *
+* *
+* Retour : Description d'un raccourci ou NULL si aucun de défini. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_strings_panel_class_get_key_bindings(const GStringsPanelClass *class)
+{
+ char *result; /* Emplacement à retourner */
+
+ result = strdup("<Shift>F12");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Crée un panneau d'affichage des chaînes. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *g_strings_panel_new(void)
+{
+ GPanelItem *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_STRINGS_PANEL, NULL);
return result;
diff --git a/src/gui/panels/symbols.c b/src/gui/panels/symbols.c
index ec554ff..152d705 100644
--- a/src/gui/panels/symbols.c
+++ b/src/gui/panels/symbols.c
@@ -121,7 +121,13 @@ static void g_symbols_panel_dispose(GSymbolsPanel *);
static void g_symbols_panel_finalize(GSymbolsPanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_symbols_panel_get_key(const GSymbolsPanel *);
+static char *g_symbols_panel_class_get_key(const GSymbolsPanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_symbols_panel_class_get_path(const GSymbolsPanelClass *);
+
+/* Indique la définition d'un éventuel raccourci clavier. */
+static char *g_symbols_panel_class_get_key_bindings(const GSymbolsPanelClass *);
/* Bascule d'affichage des symboles en liste. */
static void on_symbols_list_display_toggle(GtkToggleToolButton *, GSymbolsPanel *);
@@ -240,7 +246,7 @@ G_DEFINE_TYPE_WITH_CODE(GSymbolsPanel, g_symbols_panel, G_TYPE_PANEL_ITEM,
/******************************************************************************
* *
-* Paramètres : klass = classe à initialiser. *
+* Paramètres : class = classe à initialiser. *
* *
* Description : Initialise la classe des panneaux d'affichage des symboles. *
* *
@@ -250,56 +256,56 @@ G_DEFINE_TYPE_WITH_CODE(GSymbolsPanel, g_symbols_panel, G_TYPE_PANEL_ITEM,
* *
******************************************************************************/
-static void g_symbols_panel_class_init(GSymbolsPanelClass *klass)
+static void g_symbols_panel_class_init(GSymbolsPanelClass *class)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
GPanelItemClass *panel; /* Version parente de la classe*/
gchar *filename; /* Chemin d'accès à utiliser */
- object = G_OBJECT_CLASS(klass);
+ object = G_OBJECT_CLASS(class);
object->dispose = (GObjectFinalizeFunc/* ! */)g_symbols_panel_dispose;
object->finalize = (GObjectFinalizeFunc)g_symbols_panel_finalize;
- item = G_EDITOR_ITEM_CLASS(klass);
+ item = G_EDITOR_ITEM_CLASS(class);
- item->get_key = (get_item_key_fc)g_symbols_panel_get_key;
+ item->get_key = (get_item_key_fc)g_symbols_panel_class_get_key;
item->change_content = (change_item_content_fc)change_symbols_panel_current_content;
- panel = G_PANEL_ITEM_CLASS(klass);
+ panel = G_PANEL_ITEM_CLASS(class);
- panel->unique = true;
- panel->bindings = "<Shift>F3";
+ panel->get_path = (get_panel_path_fc)g_symbols_panel_class_get_path;
+ panel->get_bindings = (get_panel_bindings_fc)g_symbols_panel_class_get_key_bindings;
panel->gid = setup_tiny_global_work_group(1);
filename = find_pixmap_file("symbol_routine_classic.png");
assert(filename != NULL);
- klass->routine_img = cairo_image_surface_create_from_png(filename);
+ class->routine_img = cairo_image_surface_create_from_png(filename);
g_free(filename);
filename = find_pixmap_file("symbol_object_classic.png");
assert(filename != NULL);
- klass->object_img = cairo_image_surface_create_from_png(filename);
+ class->object_img = cairo_image_surface_create_from_png(filename);
g_free(filename);
filename = find_pixmap_file("symbol_package.png");
assert(filename != NULL);
- klass->package_img = cairo_image_surface_create_from_png(filename);
+ class->package_img = cairo_image_surface_create_from_png(filename);
g_free(filename);
filename = find_pixmap_file("symbol_class_classic.png");
assert(filename != NULL);
- klass->class_img = cairo_image_surface_create_from_png(filename);
+ class->class_img = cairo_image_surface_create_from_png(filename);
g_free(filename);
@@ -331,15 +337,10 @@ static void g_symbols_panel_init(GSymbolsPanel *panel)
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Symbols"),
_("Binary symbols"),
PANEL_SYMBOLS_ID));
- pitem->dock_at_startup = true;
- pitem->path = strdup("MEN");
-
/* Représentation graphique */
builder = gtk_built_named_widget_get_builder(GTK_BUILT_NAMED_WIDGET(pitem->widget));
@@ -464,21 +465,21 @@ static void g_symbols_panel_finalize(GSymbolsPanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau d'affichage des symboles. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_symbols_panel_new(void)
+static char *g_symbols_panel_class_get_key(const GSymbolsPanelClass *class)
{
- GPanelItem *result; /* Structure à retourner */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_SYMBOLS_PANEL, NULL);
+ result = strdup(PANEL_SYMBOLS_ID);
return result;
@@ -487,21 +488,67 @@ GPanelItem *g_symbols_panel_new(void)
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Chemin fixé associé à la position initiale. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_symbols_panel_get_key(const GSymbolsPanel *panel)
+static char *g_symbols_panel_class_get_path(const GSymbolsPanelClass *class)
{
- char *result; /* Description à renvoyer */
+ char *result; /* Emplacement à retourner */
- result = strdup(PANEL_SYMBOLS_ID);
+ result = strdup("MEN");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Indique la définition d'un éventuel raccourci clavier. *
+* *
+* Retour : Description d'un raccourci ou NULL si aucun de défini. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_symbols_panel_class_get_key_bindings(const GSymbolsPanelClass *class)
+{
+ char *result; /* Emplacement à retourner */
+
+ result = strdup("<Shift>F3");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : - *
+* *
+* Description : Crée un panneau d'affichage des symboles. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *g_symbols_panel_new(void)
+{
+ GPanelItem *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_SYMBOLS_PANEL, NULL);
return result;
diff --git a/src/gui/panels/view.c b/src/gui/panels/view.c
new file mode 100644
index 0000000..26dc820
--- /dev/null
+++ b/src/gui/panels/view.c
@@ -0,0 +1,261 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * view.c - panneau d'affichage de contenu binaire
+ *
+ * Copyright (C) 2020 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * Chrysalide is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Chrysalide is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#include "view.h"
+
+
+#include <string.h>
+
+
+#include "../panel-int.h"
+#include "../../gtkext/named.h"
+
+
+
+/* Panneau d'affichage pour contenu binaire (instance) */
+struct _GViewPanel
+{
+ GPanelItem parent; /* A laisser en premier */
+
+};
+
+/* Panneau d'affichage pour contenu binaire (classe) */
+struct _GViewPanelClass
+{
+ GPanelItemClass parent; /* A laisser en premier */
+
+};
+
+
+/* Initialise la classe des panneaux de contenu binaire. */
+static void g_view_panel_class_init(GViewPanelClass *);
+
+/* Initialise une instance de panneau de contenu binaire. */
+static void g_view_panel_init(GViewPanel *);
+
+/* Supprime toutes les références externes. */
+static void g_view_panel_dispose(GViewPanel *);
+
+/* Procède à la libération totale de la mémoire. */
+static void g_view_panel_finalize(GViewPanel *);
+
+/* Fournit le nom interne attribué à l'élément réactif. */
+static char *g_view_panel_class_get_key(const GViewPanelClass *);
+
+/* Fournit une indication sur la personnalité du panneau. */
+static PanelItemPersonality g_view_panel_class_get_personality(const GViewPanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_view_panel_class_get_path(const GViewPanelClass *);
+
+
+
+/* Indique le type défini pour un panneau de contenu binaire. */
+G_DEFINE_TYPE(GViewPanel, g_view_panel, G_TYPE_PANEL_ITEM);
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à initialiser. *
+* *
+* Description : Initialise la classe des panneaux de contenu binaire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_view_panel_class_init(GViewPanelClass *class)
+{
+ GObjectClass *object; /* Autre version de la classe */
+ GEditorItemClass *item; /* Encore une autre vision... */
+ GPanelItemClass *panel; /* Version parente de classe */
+
+ object = G_OBJECT_CLASS(class);
+
+ object->dispose = (GObjectFinalizeFunc/* ! */)g_view_panel_dispose;
+ object->finalize = (GObjectFinalizeFunc)g_view_panel_finalize;
+
+ item = G_EDITOR_ITEM_CLASS(class);
+
+ item->get_key = (get_item_key_fc)g_view_panel_class_get_key;
+
+ panel = G_PANEL_ITEM_CLASS(class);
+
+ panel->get_personality = (get_panel_personality_fc)g_view_panel_class_get_personality;
+ panel->get_path = (get_panel_path_fc)g_view_panel_class_get_path;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : panel = instance à initialiser. *
+* *
+* Description : Initialise une instance de panneau de contenu binaire. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_view_panel_init(GViewPanel *panel)
+{
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : panel = instance d'objet GLib à traiter. *
+* *
+* Description : Supprime toutes les références externes. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void g_view_panel_dispose(GViewPanel *panel)
+{
+ G_OBJECT_CLASS(g_view_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_view_panel_finalize(GViewPanel *panel)
+{
+ G_OBJECT_CLASS(g_view_panel_parent_class)->finalize(G_OBJECT(panel));
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à 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_view_panel_class_get_key(const GViewPanelClass *class)
+{
+ char *result; /* Description à renvoyer */
+
+ result = strdup(PANEL_VIEW_ID);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Fournit une indication sur la personnalité du panneau. *
+* *
+* Retour : Identifiant lié à la nature unique du panneau. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PanelItemPersonality g_view_panel_class_get_personality(const GViewPanelClass *class)
+{
+ PanelItemPersonality result; /* Personnalité à retourner */
+
+ result = PIP_BINARY_VIEW;
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
+* *
+* Retour : Chemin fixé associé à la position initiale. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static char *g_view_panel_class_get_path(const GViewPanelClass *class)
+{
+ char *result; /* Emplacement à retourner */
+
+ result = strdup("M");
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : widget = composant avec noms à présenter à l'affichage. *
+* *
+* Description : Crée un panneau pour l'affichage d'un contenu binaire. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GPanelItem *g_view_panel_new(GNamedWidget *widget)
+{
+ GPanelItem *result; /* Structure à retourner */
+
+ result = g_object_new(G_TYPE_VIEW_PANEL, NULL);
+
+ result->widget = widget;
+ g_object_ref(G_OBJECT(widget));
+
+ return result;
+
+}
diff --git a/src/gui/panels/view.h b/src/gui/panels/view.h
new file mode 100644
index 0000000..968bd1c
--- /dev/null
+++ b/src/gui/panels/view.h
@@ -0,0 +1,59 @@
+
+/* Chrysalide - Outil d'analyse de fichiers binaires
+ * view.h - prototypes pour le panneau d'affichage de contenu binaire
+ *
+ * Copyright (C) 2020 Cyrille Bagard
+ *
+ * This file is part of Chrysalide.
+ *
+ * Chrysalide is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * Chrysalide is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+
+#ifndef _GUI_PANELS_VIEW_H
+#define _GUI_PANELS_VIEW_H
+
+
+#include "../panel.h"
+
+
+
+#define PANEL_VIEW_ID "binview"
+
+
+#define G_TYPE_VIEW_PANEL g_view_panel_get_type()
+#define G_VIEW_PANEL(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), g_view_panel_get_type(), GViewPanel))
+#define G_IS_VIEW_PANEL(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_view_panel_get_type()))
+#define G_VIEW_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), G_TYPE_VIEW_PANEL, GViewPanelClass))
+#define G_IS_VIEW_PANEL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), G_TYPE_VIEW_PANEL))
+#define G_VIEW_PANEL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_VIEW_PANEL, GViewPanelClass))
+
+
+/* Panneau d'affichage pour contenu binaire (instance) */
+typedef struct _GViewPanel GViewPanel;
+
+/* Panneau d'affichage pour contenu binaire (classe) */
+typedef struct _GViewPanelClass GViewPanelClass;
+
+
+/* Indique le type défini pour un panneau de contenu binaire. */
+GType g_view_panel_get_type(void);
+
+/* Crée un panneau pour l'affichage d'un contenu binaire. */
+GPanelItem *g_view_panel_new(GNamedWidget *);
+
+
+
+#endif /* _GUI_PANELS_VIEW_H */
diff --git a/src/gui/panels/welcome.c b/src/gui/panels/welcome.c
index 24674a7..9192d66 100644
--- a/src/gui/panels/welcome.c
+++ b/src/gui/panels/welcome.c
@@ -97,7 +97,13 @@ static void g_welcome_panel_dispose(GWelcomePanel *);
static void g_welcome_panel_finalize(GWelcomePanel *);
/* Fournit le nom interne attribué à l'élément réactif. */
-static char *g_welcome_panel_get_key(const GWelcomePanel *);
+static char *g_welcome_panel_class_get_key(const GWelcomePanelClass *);
+
+/* Fournit une indication sur la personnalité du panneau. */
+static PanelItemPersonality g_welcome_panel_class_get_personality(const GWelcomePanelClass *);
+
+/* Indique le chemin initial de la localisation d'un panneau. */
+static char *g_welcome_panel_class_get_path(const GWelcomePanelClass *);
/* Place un panneau dans l'ensemble affiché. */
static void g_welcome_panel_dock(GWelcomePanel *);
@@ -156,7 +162,7 @@ static void g_welcome_panel_class_init(GWelcomePanelClass *klass)
{
GObjectClass *object; /* Autre version de la classe */
GEditorItemClass *item; /* Encore une autre vision... */
- GPanelItemClass *parent; /* Version parente de classe */
+ GPanelItemClass *panel; /* Version parente de classe */
object = G_OBJECT_CLASS(klass);
@@ -165,11 +171,15 @@ static void g_welcome_panel_class_init(GWelcomePanelClass *klass)
item = G_EDITOR_ITEM_CLASS(klass);
- item->get_key = (get_item_key_fc)g_welcome_panel_get_key;
+ item->get_key = (get_item_key_fc)g_welcome_panel_class_get_key;
- parent = G_PANEL_ITEM_CLASS(klass);
+ panel = G_PANEL_ITEM_CLASS(klass);
- parent->ack_dock = (ack_undock_process_fc)g_welcome_panel_dock;
+ panel->get_personality = (get_panel_personality_fc)g_welcome_panel_class_get_personality;
+ panel->dock_at_startup = gtk_panel_item_class_return_false;
+ panel->get_path = (get_panel_path_fc)g_welcome_panel_class_get_path;
+
+ panel->ack_dock = (ack_undock_process_fc)g_welcome_panel_dock;
}
@@ -196,21 +206,17 @@ static void g_welcome_panel_init(GWelcomePanel *panel)
GtkToggleButton *button; /* Bouton à bascule à traiter */
bool state; /* Etat de la coche à définir */
gchar *filename; /* Chemin d'accès à une image */
+ GtkRecentManager *manager; /* Gestionnaire global */
/* Eléments de base */
pitem = G_PANEL_ITEM(panel);
- pitem->personality = PIP_SINGLETON;
-
pitem->widget = G_NAMED_WIDGET(gtk_built_named_widget_new_for_panel(_("Welcome"),
_("Welcome panel"),
PANEL_WELCOME_ID));
- pitem->dock_at_startup = false;
- pitem->path = strdup("M");
-
- panel->uorigin = !pitem->dock_at_startup;
+ panel->uorigin = !gtk_panel_item_class_dock_at_startup(G_PANEL_ITEM_GET_CLASS(pitem));
/* Représentation graphique */
@@ -259,6 +265,18 @@ static void g_welcome_panel_init(GWelcomePanel *panel)
g_object_unref(G_OBJECT(builder));
+ /* Actualisation du contenu du panneau */
+
+ manager = get_project_manager();
+
+ g_signal_connect(manager, "changed", G_CALLBACK(on_recent_list_changed), panel);
+
+ g_welcome_panel_reload_project_list(panel, manager);
+
+ g_welcome_panel_load_tips(panel);
+
+ g_welcome_panel_check_version(panel);
+
}
@@ -306,55 +324,90 @@ static void g_welcome_panel_finalize(GWelcomePanel *panel)
/******************************************************************************
* *
-* Paramètres : - *
+* Paramètres : class = classe à consulter. *
* *
-* Description : Crée un panneau d'accueil par défaut. *
+* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
-* Retour : Adresse de la structure mise en place. *
+* Retour : Désignation (courte) de l'élément de l'éditeur. *
* *
* Remarques : - *
* *
******************************************************************************/
-GPanelItem *g_welcome_panel_new(void)
+static char *g_welcome_panel_class_get_key(const GWelcomePanelClass *class)
{
- GWelcomePanel *result; /* Structure à retourner */
- GtkRecentManager *manager; /* Gestionnaire global */
+ char *result; /* Description à renvoyer */
- result = g_object_new(G_TYPE_WELCOME_PANEL, NULL);
+ result = strdup(PANEL_WELCOME_ID);
- manager = get_project_manager();
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Fournit une indication sur la personnalité du panneau. *
+* *
+* Retour : Identifiant lié à la nature unique du panneau. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static PanelItemPersonality g_welcome_panel_class_get_personality(const GWelcomePanelClass *class)
+{
+ PanelItemPersonality result; /* Personnalité à retourner */
- g_signal_connect(manager, "changed", G_CALLBACK(on_recent_list_changed), result);
+ result = PIP_PERSISTENT_SINGLETON;
- g_welcome_panel_reload_project_list(result, manager);
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : class = classe à consulter. *
+* *
+* Description : Indique le chemin initial de la localisation d'un panneau. *
+* *
+* Retour : Chemin fixé associé à la position initiale. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
- g_welcome_panel_load_tips(result);
+static char *g_welcome_panel_class_get_path(const GWelcomePanelClass *class)
+{
+ char *result; /* Emplacement à retourner */
- g_welcome_panel_check_version(result);
+ result = strdup("M");
- return G_PANEL_ITEM(result);
+ return result;
}
/******************************************************************************
* *
-* Paramètres : panel = instance à consulter. *
+* Paramètres : - *
* *
-* Description : Fournit le nom interne attribué à l'élément réactif. *
+* Description : Crée un panneau d'accueil par défaut. *
* *
-* Retour : Désignation (courte) de l'élément de l'éditeur. *
+* Retour : Adresse de la structure mise en place. *
* *
* Remarques : - *
* *
******************************************************************************/
-static char *g_welcome_panel_get_key(const GWelcomePanel *panel)
+GPanelItem *g_welcome_panel_new(void)
{
- char *result; /* Description à renvoyer */
+ GPanelItem *result; /* Structure à retourner */
- result = strdup(PANEL_WELCOME_ID);
+ result = g_object_new(G_TYPE_WELCOME_PANEL, NULL);
return result;
diff --git a/src/gui/status.c b/src/gui/status.c
index 79f47ea..6ee990a 100644
--- a/src/gui/status.c
+++ b/src/gui/status.c
@@ -72,7 +72,7 @@ static void g_status_info_dispose(GStatusInfo *);
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 *);
+static char *g_status_info_class_get_key(const GStatusInfoClass *);
/* Fournit le composant GTK associé à l'élément réactif. */
static GtkWidget *g_status_info_get_widget(const GStatusInfo *);
@@ -113,7 +113,7 @@ static void g_status_info_class_init(GStatusInfoClass *klass)
item = G_EDITOR_ITEM_CLASS(klass);
- item->get_key = (get_item_key_fc)g_status_info_get_key;
+ item->get_key = (get_item_key_fc)g_status_info_class_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;
@@ -209,7 +209,7 @@ GEditorItem *g_status_info_new(void)
/******************************************************************************
* *
-* Paramètres : info = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
@@ -219,7 +219,7 @@ GEditorItem *g_status_info_new(void)
* *
******************************************************************************/
-static char *g_status_info_get_key(const GStatusInfo *info)
+static char *g_status_info_class_get_key(const GStatusInfoClass *class)
{
char *result; /* Description à renvoyer */
diff --git a/src/gui/tb/portions.c b/src/gui/tb/portions.c
index f8b2b92..64b44db 100644
--- a/src/gui/tb/portions.c
+++ b/src/gui/tb/portions.c
@@ -70,7 +70,7 @@ static void g_portions_tbitem_dispose(GPortionsTbItem *);
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 *);
+static char *g_portions_tbitem_class_get_key(const GPortionsTbItemClass *);
/* Fournit le composant GTK associé à l'élément réactif. */
static GtkWidget *g_portions_tbitem_get_widget(const GPortionsTbItem *);
@@ -111,7 +111,7 @@ static void g_portions_tbitem_class_init(GPortionsTbItemClass *klass)
item = G_EDITOR_ITEM_CLASS(klass);
- item->get_key = (get_item_key_fc)g_portions_tbitem_get_key;
+ item->get_key = (get_item_key_fc)g_portions_tbitem_class_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;
@@ -220,7 +220,7 @@ GEditorItem *g_portions_tbitem_new(GObject *ref)
/******************************************************************************
* *
-* Paramètres : item = instance à consulter. *
+* Paramètres : class = classe à consulter. *
* *
* Description : Fournit le nom interne attribué à l'élément réactif. *
* *
@@ -230,7 +230,7 @@ GEditorItem *g_portions_tbitem_new(GObject *ref)
* *
******************************************************************************/
-static char *g_portions_tbitem_get_key(const GPortionsTbItem *item)
+static char *g_portions_tbitem_class_get_key(const GPortionsTbItemClass *item)
{
char *result; /* Description à renvoyer */