diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2020-12-05 00:39:57 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2020-12-05 00:39:57 (GMT) |
commit | 1e3fa9b79ebe55698e2aa7d5484baec7e8400a8f (patch) | |
tree | c3581ceb7f8586f2f6822de563927a1246dd33a5 /src/gui/panels | |
parent | 6122bb7f34b178d4c07285adae16afcc55294b1f (diff) |
Rewritten the whole API dealing with panels.
Diffstat (limited to 'src/gui/panels')
-rw-r--r-- | src/gui/panels/Makefile.am | 1 | ||||
-rw-r--r-- | src/gui/panels/bintree.c | 73 | ||||
-rw-r--r-- | src/gui/panels/bookmarks.c | 71 | ||||
-rw-r--r-- | src/gui/panels/errors.c | 89 | ||||
-rw-r--r-- | src/gui/panels/glance.c | 78 | ||||
-rw-r--r-- | src/gui/panels/history.c | 72 | ||||
-rw-r--r-- | src/gui/panels/log.c | 126 | ||||
-rw-r--r-- | src/gui/panels/regedit.c | 77 | ||||
-rw-r--r-- | src/gui/panels/strings.c | 103 | ||||
-rw-r--r-- | src/gui/panels/symbols.c | 107 | ||||
-rw-r--r-- | src/gui/panels/view.c | 261 | ||||
-rw-r--r-- | src/gui/panels/view.h | 59 | ||||
-rw-r--r-- | src/gui/panels/welcome.c | 113 |
13 files changed, 956 insertions, 274 deletions
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; |