diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/analysis/line-int.h | 2 | ||||
| -rw-r--r-- | src/analysis/line.c | 50 | ||||
| -rw-r--r-- | src/analysis/line.h | 1 | 
3 files changed, 48 insertions, 5 deletions
| diff --git a/src/analysis/line-int.h b/src/analysis/line-int.h index 142230e..a70df85 100644 --- a/src/analysis/line-int.h +++ b/src/analysis/line-int.h @@ -72,6 +72,8 @@ struct _GRenderingLineClass  {      GObjectClass parent;                    /* A laisser en premier        */ +    GtkStyle *style;                        /* Style GTK commun aux lignes */ +      /* Signaux */      void (* rendering_line_flags_changed) (GRenderingLine *); diff --git a/src/analysis/line.c b/src/analysis/line.c index b1af518..2697f77 100644 --- a/src/analysis/line.c +++ b/src/analysis/line.c @@ -48,6 +48,8 @@ static void g_rendering_line_class_init(GRenderingLineClass *);  /* Initialise une instance de ligne de représentation. */  static void g_rendering_line_init(GRenderingLine *); +/* Charge une image destinée à être rendue avec la ligne. */ +static GdkPixbuf *g_rendering_line_render_icon(const GRenderingLine *, const char *, GtkIconSize);  /* Indique le type définit pour une ligne de représentation. */ @@ -69,6 +71,8 @@ G_DEFINE_TYPE(GRenderingLine, g_rendering_line, G_TYPE_OBJECT);  static void g_rendering_line_class_init(GRenderingLineClass *klass)  { +    klass->style = gtk_style_new(); +      g_signal_new("rendering-line-flags-changed",                   G_TYPE_RENDERING_LINE,                   G_SIGNAL_RUN_LAST, @@ -224,6 +228,43 @@ RenderingLineFlag g_rendering_line_get_flags(const GRenderingLine *line)  /******************************************************************************  *                                                                             * +*  Paramètres  : line     = ligne dont les informations sont à consulter.     * +*                stock_id = identifiant GTK de l'image à charger.             * +*                size     = taille de l'image souhaitée.                      * +*                                                                             * +*  Description : Charge une image destinée à être rendue avec la ligne.       * +*                                                                             * +*  Retour      : Image prête à emploi ou NULL.                                * +*                                                                             * +*  Remarques   : -                                                            * +*                                                                             * +******************************************************************************/ + +static GdkPixbuf *g_rendering_line_render_icon(const GRenderingLine *line, const char *stock_id, GtkIconSize size) +{ +    GdkPixbuf *result;                      /* Elément mis en place / NULL */ +    GtkStyle *style;                        /* Style GTK à utiliser        */ +    GtkIconSet *icon_set;                   /* Liste d'icones              */ + +    style = G_RENDERING_LINE_GET_CLASS(line)->style; + +    icon_set = gtk_style_lookup_icon_set(style, stock_id); + +    if (icon_set == NULL) +        return NULL; + +    result = gtk_icon_set_render_icon(icon_set, style, +                                      gtk_widget_get_default_direction(), +                                      GTK_STATE_NORMAL, size, +                                      NULL, NULL); + +    return result; + +} + + +/****************************************************************************** +*                                                                             *  *  Paramètres  : line     = adresse de la structure à représenter.            *  *                drawable = support de rendu pour le dessin.                  *  *                gc       = contexte graphique à utiliser.                    * @@ -246,12 +287,11 @@ void g_rendering_line_draw(GRenderingLine *line, GdkDrawable *drawable, GdkGC *g      gdk_draw_layout(drawable, gc, x1, y, line->layout); -#if 0      if (line->flags & RLF_BREAK_POINT) -        pixbuf = gtk_widget_render_icon(mywid, "gtk-yes", GTK_ICON_SIZE_MENU, NULL); +        pixbuf = g_rendering_line_render_icon(line, "gtk-yes", GTK_ICON_SIZE_MENU);      else if (line->flags & RLF_RUNNING_BP) -        pixbuf = gtk_widget_render_icon(mywid, "gtk-no", GTK_ICON_SIZE_MENU, NULL); +        pixbuf = g_rendering_line_render_icon(line, "gtk-no", GTK_ICON_SIZE_MENU);      else pixbuf = NULL; @@ -268,7 +308,7 @@ void g_rendering_line_draw(GRenderingLine *line, GdkDrawable *drawable, GdkGC *g      /* Le point d'entrée prime */      if (line->flags & RLF_ENTRY_POINT) -        pixbuf = gtk_widget_render_icon(mywid, "gtk-go-forward", GTK_ICON_SIZE_MENU, NULL); +        pixbuf = g_rendering_line_render_icon(line, "gtk-go-forward", GTK_ICON_SIZE_MENU);      else pixbuf = NULL; @@ -281,7 +321,7 @@ void g_rendering_line_draw(GRenderingLine *line, GdkDrawable *drawable, GdkGC *g          g_object_unref(pixbuf);      } -#endif +  } diff --git a/src/analysis/line.h b/src/analysis/line.h index 5744d24..ae7698e 100644 --- a/src/analysis/line.h +++ b/src/analysis/line.h @@ -70,6 +70,7 @@ typedef struct _disass_options  #define G_RENDERING_LINE(obj)               (G_TYPE_CHECK_INSTANCE_CAST((obj), g_rendering_line_get_type(), GRenderingLine))  #define G_IS_RENDERING_LINE(obj)            (G_TYPE_CHECK_INSTANCE_TYPE((obj), g_rendering_line_get_type()))  #define G_RENDERING_LINE_GET_IFACE(inst)    (G_TYPE_INSTANCE_GET_INTERFACE((inst), g_rendering_line_get_type(), GRenderingLineIface)) +#define G_RENDERING_LINE_GET_CLASS(obj)     (G_TYPE_INSTANCE_GET_CLASS((obj), G_TYPE_RENDERING_LINE, GRenderingLineClass))  /* Ligne de représentation générique (instance) */ | 
