summaryrefslogtreecommitdiff
path: root/src/gtkext/gtkgraphview.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2014-01-26 23:00:18 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2014-01-26 23:00:18 (GMT)
commit84790a5b420d0a9ce658013573b180ce059db325 (patch)
tree5000d25a0d5ede63e671364e1e017fbb6674b5f5 /src/gtkext/gtkgraphview.c
parentabb191e42e356914bd09176a6d6c5bf89ec50bbf (diff)
Saved the first steps of the migration to GTK+ v3.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@367 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/gtkext/gtkgraphview.c')
-rw-r--r--src/gtkext/gtkgraphview.c154
1 files changed, 91 insertions, 63 deletions
diff --git a/src/gtkext/gtkgraphview.c b/src/gtkext/gtkgraphview.c
index 52d718b..817c311 100644
--- a/src/gtkext/gtkgraphview.c
+++ b/src/gtkext/gtkgraphview.c
@@ -69,14 +69,17 @@ static void gtk_graph_view_class_init(GtkGraphViewClass *);
/* Initialise une instance d'afficheur de code en graphique. */
static void gtk_graph_view_init(GtkGraphView *);
-/* Fournit la taille de composant requise pour un plein rendu. */
-static void gtk_graph_view_size_request(GtkWidget *, GtkRequisition *);
+/* Fournit la hauteur de composant requise pour un plein rendu. */
+static void gtk_graph_view_get_preferred_height(GtkWidget *, gint *, gint *);
+
+/* Fournit la largeur de composant requise pour un plein rendu. */
+static void gtk_graph_view_get_preferred_width(GtkWidget *, gint *, gint *);
/* S'adapte à la surface concédée par le composant parent. */
static void gtk_graph_view_size_allocate(GtkWidget *, GtkAllocation *);
/* Met à jour l'affichage de la vue sous forme graphique. */
-static gboolean gtk_graph_view_expose(GtkWidget *, GdkEventExpose *, GtkGraphView *);
+static gboolean gtk_graph_view_draw(GtkWidget *, cairo_t *, GtkGraphView *);
/* Réagit à la sélection externe d'une adresse. */
static void gtk_graph_view_define_main_address(GtkGraphView *, vmpa_t);
@@ -125,7 +128,8 @@ static void gtk_graph_view_class_init(GtkGraphViewClass *klass)
widget_class = (GtkWidgetClass *)klass;
- widget_class->size_request = gtk_graph_view_size_request;
+ widget_class->get_preferred_height = gtk_graph_view_get_preferred_height;
+ widget_class->get_preferred_width = gtk_graph_view_get_preferred_width;
widget_class->size_allocate = gtk_graph_view_size_allocate;
}
@@ -166,13 +170,15 @@ static void gtk_graph_view_init(GtkGraphView *view)
view->support = GTK_FIXED(gtk_fixed_new());
gtk_widget_set_has_window(GTK_WIDGET(view->support), TRUE);
- g_signal_connect(G_OBJECT(view->support), "expose-event",
- G_CALLBACK(gtk_graph_view_expose), view);
+ g_signal_connect(G_OBJECT(view->support), "draw",
+ G_CALLBACK(gtk_graph_view_draw), view);
gtk_widget_show(GTK_WIDGET(view->support));
+ /*
gdk_color_white(gtk_widget_get_colormap(GTK_WIDGET(view->support)), &white);
gtk_widget_modify_bg(GTK_WIDGET(view->support), GTK_STATE_NORMAL, &white);
+ */
gtk_fixed_put(GTK_FIXED(view), GTK_WIDGET(view->support), 0, 0);
@@ -182,12 +188,23 @@ static void gtk_graph_view_init(GtkGraphView *view)
}
+
+
+
+
+
+
+
+
+
+
/******************************************************************************
* *
-* Paramètres : widget = composant GTK à consulter. *
-* requisition = dimensions souhaitées. [OUT] *
+* Paramètres : widget = composant GTK à consulter. *
+* minimal = taille minimale. [OUT] *
+* natural = taille idéale. [OUT] *
* *
-* Description : Fournit la taille de composant requise pour un plein rendu. *
+* Description : Fournit la hauteur de composant requise pour un plein rendu. *
* *
* Retour : - *
* *
@@ -195,63 +212,74 @@ static void gtk_graph_view_init(GtkGraphView *view)
* *
******************************************************************************/
-static void gtk_graph_view_size_request(GtkWidget *widget, GtkRequisition *requisition)
+static void gtk_graph_view_get_preferred_height(GtkWidget *widget, gint *minimal, gint *natural)
{
- gpointer fixed_class; /* Classe parente */
GtkGraphView *view; /* Autre vision du composant */
- size_t i; /* Boucle de parcours */
- gint left_corner; /* Abscisse minimale */
- gint top_corner; /* Ordonnée minimale */
-
- fixed_class = g_type_class_peek_parent(GTK_GRAPH_VIEW_GET_CLASS(widget));
- fixed_class = g_type_class_peek_parent(fixed_class);
-
- GTK_WIDGET_CLASS(fixed_class)->size_request(widget, requisition);
+ GtkRequisition requisition; /* Taille requise */
+ gpointer fixed_class; /* Classe parente */
view = GTK_GRAPH_VIEW(widget);
if (view->layout != NULL)
- g_graph_layout_size_request(view->layout, requisition);
+ {
+ g_graph_layout_size_request(view->layout, &requisition);
+ *minimal = requisition.height;
+ *natural = *minimal;
+ }
- //requisition->width += 65;
- //requisition->height += 65;
+ else
+ {
+ fixed_class = g_type_class_peek_parent(GTK_GRAPH_VIEW_GET_CLASS(widget));
+ fixed_class = g_type_class_peek_parent(fixed_class);
- view = GTK_GRAPH_VIEW(widget);
+ GTK_WIDGET_CLASS(fixed_class)->get_preferred_height(widget, minimal, natural);
- /*
- requisition->width += GTK_VIEW_PANEL(widget)->hadjustment->value;
- requisition->height += GTK_VIEW_PANEL(widget)->vadjustment->value;
- */
+ }
-#if 0
- /**
- * On s'assure de ne couper aucun lien.
- */
+}
- /*
- for (i = 0; i < view->links_count; i++)
- gtk_link_renderer_size_request(view->links[i], requisition);
- */
- /**
- * Traitement purement cosmétique : on ajoute la même bordure aux bords
- * droit et bas.
- */
+/******************************************************************************
+* *
+* Paramètres : widget = composant GTK à consulter. *
+* minimal = taille minimale. [OUT] *
+* natural = taille idéale. [OUT] *
+* *
+* Description : Fournit la largeur de composant requise pour un plein rendu. *
+* *
+* Retour : - *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+static void gtk_graph_view_get_preferred_width(GtkWidget *widget, gint *minimal, gint *natural)
+{
+ GtkGraphView *view; /* Autre vision du composant */
+ GtkRequisition requisition; /* Taille requise */
+ gpointer fixed_class; /* Classe parente */
- left_corner = G_MAXINT;
- top_corner = G_MAXINT;
+ view = GTK_GRAPH_VIEW(widget);
- for (i = 0; i < view->children_count; i++)
+ if (view->layout != NULL)
{
- left_corner = MIN(left_corner, view->allocs[i].x);
- top_corner = MIN(top_corner, view->allocs[i].y);
+ g_graph_layout_size_request(view->layout, &requisition);
+
+ *minimal = requisition.width;
+ *natural = *minimal;
+
}
- if (left_corner != G_MAXINT) requisition->width += left_corner;
- if (top_corner != G_MAXINT) requisition->height += top_corner;
-#endif
+ else
+ {
+ fixed_class = g_type_class_peek_parent(GTK_GRAPH_VIEW_GET_CLASS(widget));
+ fixed_class = g_type_class_peek_parent(fixed_class);
+
+ GTK_WIDGET_CLASS(fixed_class)->get_preferred_width(widget, minimal, natural);
+
+ }
}
@@ -293,23 +321,23 @@ static void gtk_graph_view_size_allocate(GtkWidget *widget, GtkAllocation *alloc
gtk_view_panel_compute_allocation(panel, &valloc);
- gtk_widget_size_request(widget, &req);
+ gtk_widget_get_preferred_size(widget, NULL, &req);
/* Correction de la taille du support */
view = GTK_GRAPH_VIEW(widget);
- window = GTK_WIDGET(view->support)->window;
+ window = gtk_widget_get_window(GTK_WIDGET(view->support));
if (gdk_window_get_width(window) != req.width || gdk_window_get_height(window) != req.height)
gdk_window_resize(window, req.width, req.height);
/* Défilement horizontal */
- panel->hadjustment->page_size = valloc.width;
- panel->hadjustment->step_increment = valloc.width * 0.1;
- panel->hadjustment->page_increment = valloc.width * 0.9;
+ gtk_adjustment_set_page_size(panel->hadjustment, valloc.width);
+ gtk_adjustment_set_step_increment(panel->hadjustment, valloc.width * 0.1);
+ gtk_adjustment_set_page_increment(panel->hadjustment, valloc.width * 0.9);
- panel->hadjustment->upper = MAX(req.width, valloc.width);
+ gtk_adjustment_set_upper(panel->hadjustment, MAX(req.width, valloc.width));
gtk_view_panel_reclamp_adjustment(panel->hadjustment, &changed);
@@ -320,11 +348,11 @@ static void gtk_graph_view_size_allocate(GtkWidget *widget, GtkAllocation *alloc
/* Défilement vertical */
- panel->vadjustment->page_size = valloc.height;
- panel->vadjustment->step_increment = valloc.width * 0.1;
- panel->vadjustment->page_increment = valloc.width * 0.9;
+ gtk_adjustment_set_page_size(panel->vadjustment, valloc.width);
+ gtk_adjustment_set_step_increment(panel->vadjustment, valloc.width * 0.1);
+ gtk_adjustment_set_page_increment(panel->vadjustment, valloc.width * 0.9);
- panel->vadjustment->upper = MAX(req.height, valloc.height);
+ gtk_adjustment_set_upper(panel->vadjustment, MAX(req.height, valloc.height));
gtk_view_panel_reclamp_adjustment(panel->vadjustment, &changed);
@@ -339,7 +367,7 @@ static void gtk_graph_view_size_allocate(GtkWidget *widget, GtkAllocation *alloc
/******************************************************************************
* *
* Paramètres : widget = composant GTK à redessiner. *
-* event = informations liées à l'événement. *
+* cr = contexte graphique associé à l'événement. *
* view = support maître à consulter. *
* *
* Description : Met à jour l'affichage de la vue sous forme graphique. *
@@ -350,10 +378,10 @@ static void gtk_graph_view_size_allocate(GtkWidget *widget, GtkAllocation *alloc
* *
******************************************************************************/
-static gboolean gtk_graph_view_expose(GtkWidget *widget, GdkEventExpose *event, GtkGraphView *view)
+static gboolean gtk_graph_view_draw(GtkWidget *widget, cairo_t *cr, GtkGraphView *view)
{
if (view->layout != NULL)
- g_graph_layout_draw(view->layout, GDK_DRAWABLE(widget->window), GTK_VIEW_PANEL(view)->gc);
+ g_graph_layout_draw(view->layout, cr, true);
return FALSE;
@@ -508,8 +536,8 @@ static bool gtk_graph_view_get_address_coordinates(const GtkGraphView *view, vmp
static void gtk_graph_view_scroll(GtkGraphView *view)
{
gtk_fixed_move(GTK_FIXED(view), GTK_WIDGET(view->support),
- -GTK_VIEW_PANEL(view)->hadjustment->value,
- -GTK_VIEW_PANEL(view)->vadjustment->value);
+ -gtk_adjustment_get_value(GTK_VIEW_PANEL(view)->hadjustment),
+ -gtk_adjustment_get_value(GTK_VIEW_PANEL(view)->vadjustment));
}
@@ -548,7 +576,7 @@ static void gtk_graph_view_cache_glance(GtkGraphView *view, cairo_t *cairo, cons
cairo_scale(cairo, scale, scale);
if (view->layout != NULL)
- _g_graph_layout_draw(view->layout, cairo, false);
+ g_graph_layout_draw(view->layout, cairo, false);
}