diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2012-01-16 01:29:18 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2012-01-16 01:29:18 (GMT) |
commit | d487ea54850c85ea22df22af3b21b57d9ad0fd2f (patch) | |
tree | e84eefa64d8845cb97ca98c95cc9acf713ccfcf8 /src/gtkext | |
parent | 725304423eccf57b8e829542670b5abe7b00eeb4 (diff) |
Updated menus on view change.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@227 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gtkext')
-rw-r--r-- | src/gtkext/gtkbufferview-int.h | 3 | ||||
-rw-r--r-- | src/gtkext/gtkbufferview.c | 10 | ||||
-rw-r--r-- | src/gtkext/gtkdockstation.c | 13 | ||||
-rw-r--r-- | src/gtkext/gtkdockstation.h | 4 | ||||
-rw-r--r-- | src/gtkext/gtkviewpanel-int.h | 3 | ||||
-rw-r--r-- | src/gtkext/gtkviewpanel.c | 89 | ||||
-rw-r--r-- | src/gtkext/gtkviewpanel.h | 12 |
7 files changed, 124 insertions, 10 deletions
diff --git a/src/gtkext/gtkbufferview-int.h b/src/gtkext/gtkbufferview-int.h index 31b911e..db27b9e 100644 --- a/src/gtkext/gtkbufferview-int.h +++ b/src/gtkext/gtkbufferview-int.h @@ -40,9 +40,6 @@ struct _GtkBufferView GCodeBuffer *buffer; /* Code sous forme de texte */ GBufferView *buffer_view; /* Affichage de cette forme */ - bool *display_addr; /* Affichage des adresses ? */ - bool *display_code; /* Affichage du code binaire ? */ - gint line_height; /* Hauteur maximale des lignes */ gint left_margin; /* Marge gauche + espace */ gint left_text; /* Début d'impression du code */ diff --git a/src/gtkext/gtkbufferview.c b/src/gtkext/gtkbufferview.c index 6a2e93d..3e58500 100644 --- a/src/gtkext/gtkbufferview.c +++ b/src/gtkext/gtkbufferview.c @@ -181,7 +181,8 @@ static void gtk_buffer_view_size_request(GtkWidget *widget, GtkRequisition *requ if (view->buffer_view != NULL) g_buffer_view_get_size(view->buffer_view, &requisition->width, &requisition->height, - *view->display_addr, *view->display_code); + *GTK_VIEW_PANEL(view)->display_addr, + *GTK_VIEW_PANEL(view)->display_code); } @@ -225,7 +226,7 @@ static void gtk_buffer_view_size_allocate(GtkWidget *widget, GtkAllocation *allo view = GTK_BUFFER_VIEW(widget); g_buffer_view_get_size(view->buffer_view, &width, &height, - *view->display_addr, *view->display_code); + *panel->display_addr, *panel->display_code); gtk_view_panel_compute_allocation(panel, &valloc); @@ -324,7 +325,7 @@ static gboolean gtk_buffer_view_expose(GtkWidget *widget, GdkEventExpose *event) if (view->buffer_view != NULL) g_buffer_view_draw(view->buffer_view, event, pview->gc, fake_x, fake_y, - *view->display_addr, *view->display_code); + *pview->display_addr, *pview->display_code); gdk_window_end_paint(drawable); @@ -383,9 +384,6 @@ void gtk_buffer_view_attach_buffer(GtkBufferView *view, GCodeBuffer *buffer, boo view->buffer_view = g_buffer_view_new(view->buffer); - view->display_addr = addr; - view->display_code = code; - //gdk_threads_enter(); /* Taille des marges */ diff --git a/src/gtkext/gtkdockstation.c b/src/gtkext/gtkdockstation.c index afea11d..4b837bc 100644 --- a/src/gtkext/gtkdockstation.c +++ b/src/gtkext/gtkdockstation.c @@ -29,6 +29,7 @@ #include "easygtk.h" +#include "iodamarshal.h" @@ -61,6 +62,13 @@ G_DEFINE_TYPE(GtkDockStation, gtk_dock_station, GTK_TYPE_VBOX) static void gtk_dock_station_class_init(GtkDockStationClass *class) { + g_signal_new("switch-widget", + GTK_TYPE_DOCK_STATION, + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET(GtkDockStationClass, switch_widget), + NULL, NULL, + g_cclosure_user_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, GTK_TYPE_WIDGET); } @@ -175,7 +183,7 @@ static gboolean gtk_dock_station_switch_panel(GtkNotebook *notebook, GtkNotebook gtk_dock_panel_update_title(GTK_DOCK_STATION(data), widget, caption); - //g_signal_emit_by_name(GTK_DOCK_PANEL(data), "switch-item", ditem); + g_signal_emit_by_name(GTK_DOCK_STATION(data), "switch-widget", widget); return TRUE; @@ -214,6 +222,9 @@ void gtk_dock_panel_add_widget(GtkDockStation *station, GtkWidget *widget, const gtk_dock_panel_update_title(station, widget, caption); + if (gtk_notebook_get_n_pages(station->notebook) == 1) + g_signal_emit_by_name(station, "switch-widget", widget); + } diff --git a/src/gtkext/gtkdockstation.h b/src/gtkext/gtkdockstation.h index c92f43d..41adacc 100644 --- a/src/gtkext/gtkdockstation.h +++ b/src/gtkext/gtkdockstation.h @@ -59,6 +59,10 @@ struct _GtkDockStationClass { GtkVBoxClass parent_class; /* Présence obligatoire en 1er */ + /* Signaux */ + + void (* switch_widget) (GtkDockStation *, GtkWidget *); + }; diff --git a/src/gtkext/gtkviewpanel-int.h b/src/gtkext/gtkviewpanel-int.h index 6ef3567..79f6f4c 100644 --- a/src/gtkext/gtkviewpanel-int.h +++ b/src/gtkext/gtkviewpanel-int.h @@ -56,6 +56,9 @@ struct _GtkViewPanel attach_binary_fc attach; /* Association avec un binaire */ scroll_fc scroll; /* Défilement du contenu */ + bool *display_addr; /* Affichage des adresses ? */ + bool *display_code; /* Affichage du code binaire ? */ + }; /* Composant d'affichage générique (classe) */ diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c index 7ffeccc..9ccf209 100644 --- a/src/gtkext/gtkviewpanel.c +++ b/src/gtkext/gtkviewpanel.c @@ -339,6 +339,9 @@ void gtk_view_panel_attach_binary(GtkViewPanel *panel, GOpenidaBinary *binary, b g_object_ref(G_OBJECT(binary)); panel->binary = binary; + panel->display_addr = addr; + panel->display_code = code; + panel->attach(panel, binary, addr, code); } @@ -348,6 +351,92 @@ void gtk_view_panel_attach_binary(GtkViewPanel *panel, GOpenidaBinary *binary, b * * * 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) +{ + return *panel->display_addr; + +} + + +/****************************************************************************** +* * +* Paramètres : panel = composant GTK à consulter. * +* state = nouvel état à prendre en compte. * +* * +* Description : Définit si les adresses doivent apparaître dans le rendu. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void gtk_view_panel_set_addresses_display(const GtkViewPanel *panel, bool state) +{ + if (*panel->display_addr != state) + { + *panel->display_addr = state; + gtk_widget_queue_draw(GTK_WIDGET(panel)); + } + +} + + +/****************************************************************************** +* * +* Paramètres : panel = composant GTK à consulter. * +* * +* Description : Indique si le code doit apparaître dans le rendu. * +* * +* Retour : Consigne d'affichage. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool gtk_view_panel_get_code_display(const GtkViewPanel *panel) +{ + return *panel->display_code; + +} + + +/****************************************************************************** +* * +* Paramètres : panel = composant GTK à consulter. * +* state = nouvel état à prendre en compte. * +* * +* Description : Définit si le code doit apparaître dans le rendu. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void gtk_view_panel_set_code_display(const GtkViewPanel *panel, bool state) +{ + if (*panel->display_code != state) + { + *panel->display_code = state; + gtk_widget_queue_draw(GTK_WIDGET(panel)); + } + +} + + +/****************************************************************************** +* * +* Paramètres : panel = composant GTK à consulter. * +* * * Description : Fournit le binaire associé à la représentation. * * * * Retour : Représentation de contenu binaire. * diff --git a/src/gtkext/gtkviewpanel.h b/src/gtkext/gtkviewpanel.h index d2b69af..6edee69 100644 --- a/src/gtkext/gtkviewpanel.h +++ b/src/gtkext/gtkviewpanel.h @@ -53,6 +53,18 @@ GType gtk_view_panel_get_type(void); /* Associe à un panneau d'affichage un binaire chargé. */ void gtk_view_panel_attach_binary(GtkViewPanel *, GOpenidaBinary *, bool *, bool *); +/* Indique si les adresses doivent apparaître dans le rendu. */ +bool gtk_view_panel_get_addresses_display(const GtkViewPanel *); + +/* Définit si les adresses doivent apparaître dans le rendu. */ +void gtk_view_panel_set_addresses_display(const GtkViewPanel *, bool); + +/* Indique si le code doit apparaître dans le rendu. */ +bool gtk_view_panel_get_code_display(const GtkViewPanel *); + +/* Définit si le code doit apparaître dans le rendu. */ +void gtk_view_panel_set_code_display(const GtkViewPanel *, bool); + /* Fournit le binaire associé à la représentation. */ GOpenidaBinary *gtk_view_panel_get_binary(const GtkViewPanel *); |