diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2017-08-26 22:15:05 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2017-08-26 22:15:05 (GMT) |
commit | 8ca477e012b11a19363542d171b8e973d637641c (patch) | |
tree | 94a4fcde1779f031946eff7a36075f41a17cd73b /src/gui/editem.c | |
parent | 4fb2ac107092671fe27fc3ebf9fc86dff7c3ec19 (diff) |
Removed most of the functions using the editor items as global access to active items.
Diffstat (limited to 'src/gui/editem.c')
-rw-r--r-- | src/gui/editem.c | 404 |
1 files changed, 0 insertions, 404 deletions
diff --git a/src/gui/editem.c b/src/gui/editem.c index 0eead32..4848cc9 100644 --- a/src/gui/editem.c +++ b/src/gui/editem.c @@ -26,13 +26,9 @@ #include "editem-int.h" -#include "../analysis/db/items/move.h" -/* ------------------------- ELEMENT INDIVIDUEL D'INTERFACE ------------------------- */ - - /* Initialise la classe des éléments réactifs de l'éditeur. */ static void g_editor_item_class_init(GEditorItemClass *); @@ -40,36 +36,6 @@ static void g_editor_item_class_init(GEditorItemClass *); static void g_editor_item_init(GEditorItem *); - -/* ---------------------------- MANIPULATION D'ENSEMBLES ---------------------------- */ - - -/* Liste des éléments enregistrés */ -static GEditorItem *_editem_list = NULL; - -/* Suivi du panneau d'affichage courant */ -static GtkDisplayPanel *_current_view = NULL; - -/* Suivi des changements de position */ -static GObject *_caret_instance = NULL; - - -/* Suit les changements de focus des panneaux d'affichage. */ -static gboolean notify_view_panel_focus_change(GtkDisplayPanel *, GdkEventFocus *, void *); - -/* Lance une procédure de déplacement de la position courante. */ -static void start_moving_to_address_in_view_panel(GtkDisplayPanel *, const vmpa2t *, void *); - -/* Suit les changements de position dans du code d'assembleur. */ -static void track_caret_address_on_view_panel(GtkDisplayPanel *, const vmpa2t *, void *); - - - -/* ---------------------------------------------------------------------------------- */ -/* ELEMENT INDIVIDUEL D'INTERFACE */ -/* ---------------------------------------------------------------------------------- */ - - /* Indique le type défini pour un élément réactif d'éditeur. */ G_DEFINE_TYPE(GEditorItem, g_editor_item, G_TYPE_OBJECT); @@ -166,373 +132,3 @@ GtkWidget *g_editor_item_get_widget(const GEditorItem *item) return item->widget; } - - -/****************************************************************************** -* * -* Paramètres : item = instance à consulter. * -* * -* Description : Fournit le gestionnaire du binaire courant. * -* * -* Retour : Instance en place ou NULL si aucune. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GLoadedBinary *g_editor_item_get_current_binary(const GEditorItem *item) -{ - return g_object_get_data(item->ref, "current_binary"); - -} - - -/****************************************************************************** -* * -* Paramètres : item = instance à consulter. * -* * -* Description : Fournit l'affichage de binaire courant. * -* * -* Retour : Instance en place ou NULL si aucune. * -* * -* Remarques : - * -* * -******************************************************************************/ - -GtkDisplayPanel *g_editor_item_get_current_view(const GEditorItem *item) -{ - return _current_view; - -} - - - -/* ---------------------------------------------------------------------------------- */ -/* MANIPULATION D'ENSEMBLES */ -/* ---------------------------------------------------------------------------------- */ - - -/****************************************************************************** -* * -* Paramètres : - * -* * -* Description : Procède à l'enregistrement d'un élément reactif de l'éditeur.* -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void register_editor_item(GEditorItem *item) -{ - editem_list_add_tail(item, &_editem_list); - -} - - -/****************************************************************************** -* * -* Paramètres : ref = espace de référencement global. * -* binary = nouvelle instance de binaire analysé. * -* * -* Description : Lance une actualisation du fait d'un changement de binaire. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void change_editor_items_current_binary(GObject *ref, GLoadedBinary *binary) -{ - GEditorItem *iter; /* Boucle de parcours */ - GEditorItemClass *klass; /* Classe correspondante */ - - if (binary == NULL) - g_object_set_data(ref, "current_binary", NULL); - - else - { - g_object_ref(G_OBJECT(binary)); - g_object_set_data_full(ref, "current_binary", binary, g_object_unref); - } - - editem_list_for_each(iter, _editem_list) - { - klass = G_EDITOR_ITEM_GET_CLASS(iter); - - if (klass->update_binary != NULL) - klass->update_binary(iter, binary); - - } - -} - - -/****************************************************************************** -* * -* Paramètres : panel = composant d'affichage concerné par l'opération. * -* event = informations liées à l'événement. * -* data = adresse non utilisée ici. * -* * -* Description : Suit les changements de focus des panneaux d'affichage. * -* * -* Retour : FALSE pour continuer la propagation. * -* * -* Remarques : - * -* * -******************************************************************************/ - -static gboolean notify_view_panel_focus_change(GtkDisplayPanel *panel, GdkEventFocus *event, void *data) -{ - GEditorItem *iter; /* Boucle de parcours */ - GEditorItemClass *klass; /* Classe correspondante */ - - editem_list_for_each(iter, _editem_list) - { - klass = G_EDITOR_ITEM_GET_CLASS(iter); - - if (klass->notify_focus != NULL) - klass->notify_focus(iter, event->in ? panel : NULL); - - } - - return FALSE; - -} - - -/****************************************************************************** -* * -* Paramètres : panel = composant d'affichage parcouru. * -* addr = adresse de destination du curseur souhaitée. * -* data = adresse non utilisée ici. * -* * -* Description : Lance une procédure de déplacement de la position courante. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void start_moving_to_address_in_view_panel(GtkDisplayPanel *panel, const vmpa2t *addr, void *data) -{ - const vmpa2t *src; /* Position courante de curseur*/ - GDbMove *move; /* Déplacement à organiser */ - GLoadedBinary *binary; /* Binaire en cours d'étude */ - - src = gtk_display_panel_get_caret_location(panel); - - /* S'il n'y a pas de passif, pas besoin d'historique */ - if (src == NULL) - gtk_display_panel_scroll_to_address(panel, addr, SPT_CENTER); - - else - { - move = g_db_move_new(src, addr); - - binary = gtk_display_panel_get_binary(panel); - g_loaded_binary_add_to_collection(binary, G_DB_ITEM(move)); - g_object_unref(G_OBJECT(binary)); - - } - -} - - -/****************************************************************************** -* * -* Paramètres : panel = composant d'affichage parcouru. * -* addr = nouvelle adresse du curseur courant. * -* data = adresse non utilisée ici. * -* * -* Description : Suit les changements de position dans du code d'assembleur. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -static void track_caret_address_on_view_panel(GtkDisplayPanel *panel, const vmpa2t *addr, void *data) -{ - GEditorItem *iter; /* Boucle de parcours */ - GEditorItemClass *klass; /* Classe correspondante */ - - editem_list_for_each(iter, _editem_list) - { - klass = G_EDITOR_ITEM_GET_CLASS(iter); - - if (klass->track_caret != NULL) - klass->track_caret(iter, panel, addr); - - } - -} - - -/****************************************************************************** -* * -* Paramètres : ref = espace de référencement global. * -* panel = nouveau panneau d'affichage actif. * -* * -* Description : Lance une actualisation du fait d'un changement de vue. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void change_editor_items_current_view(GObject *ref, GtkDisplayPanel *panel) -{ - GEditorItem *iter; /* Boucle de parcours */ - GEditorItemClass *klass; /* Classe correspondante */ - - /* Suivi des affichages */ - - if (_current_view != NULL) - { - g_signal_handlers_disconnect_by_func(_current_view, G_CALLBACK(notify_view_panel_focus_change), NULL); - g_signal_handlers_disconnect_by_func(_current_view, G_CALLBACK(notify_view_panel_focus_change), NULL); - } - - _current_view = panel; - - editem_list_for_each(iter, _editem_list) - { - klass = G_EDITOR_ITEM_GET_CLASS(iter); - - if (klass->update_view != NULL) - klass->update_view(iter, panel); - - } - - if (panel != NULL) - { - g_signal_connect(panel, "focus-in-event", G_CALLBACK(notify_view_panel_focus_change), NULL); - g_signal_connect(panel, "focus-out-event", G_CALLBACK(notify_view_panel_focus_change), NULL); - } - - /* Suivi du curseur */ - - if (_caret_instance != NULL) - { - g_signal_handlers_disconnect_by_func(_caret_instance, - G_CALLBACK(start_moving_to_address_in_view_panel), - NULL); - g_signal_handlers_disconnect_by_func(_caret_instance, - G_CALLBACK(track_caret_address_on_view_panel), - NULL); - g_object_unref(_caret_instance); - _caret_instance = NULL; - } - - if (panel != NULL) - { - g_signal_connect(panel, "move-request", - G_CALLBACK(start_moving_to_address_in_view_panel), - NULL); - - g_signal_connect(panel, "caret-moved", - G_CALLBACK(track_caret_address_on_view_panel), - NULL); - - _caret_instance = G_OBJECT(panel); - g_object_ref(_caret_instance); - - } - -} - - -/****************************************************************************** -* * -* Paramètres : ref = espace de référencement global. * -* panel = nouveau panneau d'affichage actif. * -* * -* Description : Lance une actualisation du fait d'un changement de contenu. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void change_editor_items_current_view_content(GtkDisplayPanel *panel) -{ - GEditorItem *iter; /* Boucle de parcours */ - GEditorItemClass *klass; /* Classe correspondante */ - - editem_list_for_each(iter, _editem_list) - { - klass = G_EDITOR_ITEM_GET_CLASS(iter); - - if (klass->update_content != NULL) - klass->update_content(iter, panel); - - } - -} - - -/****************************************************************************** -* * -* Paramètres : binary = binaire contenant l'adresse à représenter. * -* addr = adresse mémoire à mettre en avant. * -* source = composant à l'origine du changement. * -* * -* Description : Concentre l'attention de l'ensemble sur une adresse donnée. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void focus_address_in_editor_items(GLoadedBinary *binary, const vmpa2t *addr, GEditorItem *source) -{ - GEditorItem *iter; /* Boucle de parcours */ - GEditorItemClass *klass; /* Classe correspondante */ - - editem_list_for_each(iter, _editem_list) - { - klass = G_EDITOR_ITEM_GET_CLASS(iter); - - if (klass->focus_addr != NULL && iter != source) - klass->focus_addr(iter, binary, addr); - - } - -} - - -/****************************************************************************** -* * -* Paramètres : project = projet concerné par l'évolution. * -* * -* Description : Lance une actualisation relative à l'étendue du projet. * -* * -* Retour : - * -* * -* Remarques : - * -* * -******************************************************************************/ - -void update_project_area(GStudyProject *project) -{ - GEditorItem *iter; /* Boucle de parcours */ - GEditorItemClass *klass; /* Classe correspondante */ - - editem_list_for_each(iter, _editem_list) - { - klass = G_EDITOR_ITEM_GET_CLASS(iter); - - if (klass->update_project != NULL) - klass->update_project(iter, project); - - } - -} |