summaryrefslogtreecommitdiff
path: root/src/gtkext
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2012-01-16 01:29:18 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2012-01-16 01:29:18 (GMT)
commitd487ea54850c85ea22df22af3b21b57d9ad0fd2f (patch)
treee84eefa64d8845cb97ca98c95cc9acf713ccfcf8 /src/gtkext
parent725304423eccf57b8e829542670b5abe7b00eeb4 (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.h3
-rw-r--r--src/gtkext/gtkbufferview.c10
-rw-r--r--src/gtkext/gtkdockstation.c13
-rw-r--r--src/gtkext/gtkdockstation.h4
-rw-r--r--src/gtkext/gtkviewpanel-int.h3
-rw-r--r--src/gtkext/gtkviewpanel.c89
-rw-r--r--src/gtkext/gtkviewpanel.h12
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 *);