diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2014-10-21 23:11:30 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2014-10-21 23:11:30 (GMT) |
commit | 085fef16a819cb321fd38e7e0926d3cca863777a (patch) | |
tree | f2f24c6205134338999760f1a4a427b0c6c8be27 /src/gtkext/gtkviewpanel.c | |
parent | ec6aa436f4a1ae486feb7a88b2b8e793b59674d4 (diff) |
Cleaned, fixed and improved the rules for the display of view columns.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@416 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gtkext/gtkviewpanel.c')
-rw-r--r-- | src/gtkext/gtkviewpanel.c | 111 |
1 files changed, 31 insertions, 80 deletions
diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c index 1933add..27799b5 100644 --- a/src/gtkext/gtkviewpanel.c +++ b/src/gtkext/gtkviewpanel.c @@ -68,7 +68,8 @@ static void gtk_view_panel_update_adjustment(GtkViewPanel *, GtkOrientation); /* Réagit à un défilement chez une barre associée au composant.*/ static void gtk_view_panel_adjustment_value_changed(GtkAdjustment *, GtkViewPanel *); - +/* Réagit à un changement des règles d'affichage. */ +static void on_view_panel_binary_display_change(GLoadedBinary *, BinaryView, BufferLineColumn, GtkViewPanel *); @@ -576,32 +577,29 @@ static void gtk_view_panel_adjustment_value_changed(GtkAdjustment *adj, GtkViewP /****************************************************************************** * * -* Paramètres : panel = composant GTK à mettre à jour. * -* show = état de l'affichage auquel parvenir. * +* Paramètres : panel = composant GTK à consulter. * * * -* Description : Définit si une bordure est à afficher. * +* Description : Indique le type de contenu représenté par le composant. * * * -* Retour : - * +* Retour : Identifiant d'un type de représentation de contenu. * * * * Remarques : - * * * ******************************************************************************/ -void gtk_view_panel_show_border(GtkViewPanel *panel, bool show) +BinaryView gtk_view_panel_describe_content(const GtkViewPanel *panel) { - panel->show_border = show; + return panel->content; } /****************************************************************************** * * -* Paramètres : panel = composant GTK à mettre à jour. * -* binary = binaire associé à intégrer. * -* addr = indique si les positions doivent être affichées. * -* code = indique si le code binaire doit être affiché. * +* Paramètres : panel = composant GTK à mettre à jour. * +* show = état de l'affichage auquel parvenir. * * * -* Description : Associe à un panneau d'affichage un binaire chargé. * +* Description : Définit si une bordure est à afficher. * * * * Retour : - * * * @@ -609,46 +607,20 @@ void gtk_view_panel_show_border(GtkViewPanel *panel, bool show) * * ******************************************************************************/ -void gtk_view_panel_attach_binary(GtkViewPanel *panel, GLoadedBinary *binary, bool *addr, bool *code) -{ - g_object_ref(G_OBJECT(binary)); - panel->binary = binary; - - panel->display_phys = addr; - panel->display_addr = addr; - panel->display_code = code; - - if (panel->attach != NULL) /* REMME ? */ - panel->attach(panel, binary, addr, code); - -} - - -/****************************************************************************** -* * -* Paramètres : panel = composant GTK à consulter. * -* * -* Description : Indique si les adresses doivent apparaître dans le rendu. * -* * -* Retour : Consigne d'affichage. * -* * -* Remarques : - * -* * -******************************************************************************/ - -bool gtk_view_panel_get_addresses_display(const GtkViewPanel *panel) +void gtk_view_panel_show_border(GtkViewPanel *panel, bool show) { - return *panel->display_addr; + panel->show_border = show; } /****************************************************************************** * * -* Paramètres : panel = composant GTK à consulter. * -* state = nouvel état à prendre en compte. * +* Paramètres : panel = composant GTK à mettre à jour. * +* binary = binaire associé à intégrer. * +* view = aspect du binaire à présenter. * * * -* Description : Définit si les adresses doivent apparaître dans le rendu. * +* Description : Associe à un panneau d'affichage un binaire chargé. * * * * Retour : - * * * @@ -656,49 +628,30 @@ bool gtk_view_panel_get_addresses_display(const GtkViewPanel *panel) * * ******************************************************************************/ -void gtk_view_panel_set_addresses_display(GtkViewPanel *panel, bool state) +void gtk_view_panel_attach_binary(GtkViewPanel *panel, GLoadedBinary *binary, BinaryView view) { - if (*panel->display_addr != state) - { - *panel->display_addr = state; - - if (panel->resize != NULL) - panel->resize(panel); - - gtk_widget_queue_resize(gtk_widget_get_parent(GTK_WIDGET(panel))); - gtk_widget_queue_resize(GTK_WIDGET(panel)); - gtk_widget_queue_draw(GTK_WIDGET(panel)); - - } - -} + g_object_ref(G_OBJECT(binary)); + panel->binary = binary; + panel->content = view; + panel->display = g_loaded_binary_get_column_display(binary, view); -/****************************************************************************** -* * -* Paramètres : panel = composant GTK à consulter. * -* * -* Description : Indique si le code doit apparaître dans le rendu. * -* * -* Retour : Consigne d'affichage. * -* * -* Remarques : - * -* * -******************************************************************************/ + if (panel->attach != NULL) /* REMME */ + panel->attach(panel, binary); -bool gtk_view_panel_get_code_display(const GtkViewPanel *panel) -{ - return *panel->display_code; + g_signal_connect(binary, "display-changed", G_CALLBACK(on_view_panel_binary_display_change), panel); } /****************************************************************************** * * -* Paramètres : panel = composant GTK à consulter. * -* state = nouvel état à prendre en compte. * +* Paramètres : binary = bianire dont les consignes d'affichage ont évolué. * +* view = type d'affichage à considérer. * +* col = colonne dont le statut a changé. * +* panel = composant GTK à consulter. * * * -* Description : Définit si le code doit apparaître dans le rendu. * +* Description : Réagit à un changement des règles d'affichage. * * * * Retour : - * * * @@ -706,12 +659,10 @@ bool gtk_view_panel_get_code_display(const GtkViewPanel *panel) * * ******************************************************************************/ -void gtk_view_panel_set_code_display(GtkViewPanel *panel, bool state) +static void on_view_panel_binary_display_change(GLoadedBinary *binary, BinaryView view, BufferLineColumn col, GtkViewPanel *panel) { - if (*panel->display_code != state) + if (panel->content == view) { - *panel->display_code = state; - if (panel->resize != NULL) panel->resize(panel); |