summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkviewpanel.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2014-10-21 23:11:30 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2014-10-21 23:11:30 (GMT)
commit085fef16a819cb321fd38e7e0926d3cca863777a (patch)
treef2f24c6205134338999760f1a4a427b0c6c8be27 /src/gtkext/gtkviewpanel.c
parentec6aa436f4a1ae486feb7a88b2b8e793b59674d4 (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.c111
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);