[dia/zbrown/gresource-icons: 11/12] Use GResource for standard icons



commit d8f9238b96f302ffda75fa62634d632e9a0d6af3
Author: Zander Brown <zbrown gnome org>
Date:   Fri Mar 1 19:07:23 2019 +0000

    Use GResource for standard icons

 objects/standard/arc.c                          | 91 ++++++++++++-------------
 objects/standard/bezier.c                       | 91 ++++++++++++-------------
 objects/standard/beziergon.c                    | 39 +++++------
 objects/standard/box.c                          | 59 ++++++++--------
 objects/standard/ellipse.c                      | 55 +++++++--------
 objects/standard/image.c                        | 51 +++++++-------
 objects/standard/line.c                         | 50 +++++++-------
 objects/standard/meson.build                    |  2 +-
 objects/standard/outline.c                      | 49 +++++++------
 objects/standard/pixmaps/meson.build            | 34 ++-------
 objects/standard/pixmaps/standard.gresource.xml | 17 +++++
 objects/standard/polygon.c                      | 23 +++----
 objects/standard/polyline.c                     | 27 ++++----
 objects/standard/textobj.c                      | 30 ++++----
 objects/standard/zigzagline.c                   | 30 ++++----
 15 files changed, 303 insertions(+), 345 deletions(-)
---
diff --git a/objects/standard/arc.c b/objects/standard/arc.c
index 425a1d6e..45ed2d4e 100644
--- a/objects/standard/arc.c
+++ b/objects/standard/arc.c
@@ -33,8 +33,6 @@
 #include "arrows.h"
 #include "properties.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 0.25
 
 #define HANDLE_MIDDLE (HANDLE_CUSTOM1)
@@ -140,8 +138,7 @@ DiaObjectType arc_type =
 {
   "Standard - Arc",   /* name */
   0,                  /* version */
-  (const gchar **) arc_icon, /* pixmap */
-  
+  (const char **) "res:/org/gnome/Dia/objects/standard/arc.png",
   &arc_type_ops,      /* ops */
   NULL,               /* pixmap_file */
   NULL,               /* default_user_data */
@@ -172,7 +169,7 @@ static ObjectOps arc_ops = {
 static void
 arc_set_props(Arc *arc, GPtrArray *props)
 {
-  object_set_props_from_offsets(&arc->connection.object, 
+  object_set_props_from_offsets(&arc->connection.object,
                                 arc_offsets, props);
   arc_update_data(arc);
 }
@@ -204,7 +201,7 @@ arc_distance_from(Arc *arc, Point *point)
   Point from_center;
   real angle;
   real d, d2;
-  
+
   endpoints = &arc->connection.endpoints[0];
 
   if (arc_is_line (arc))
@@ -248,14 +245,14 @@ arc_update_handles(Arc *arc)
   Connection *conn = &arc->connection;
 
   connection_update_handles(conn);
-  
+
   middle_pos = &arc->middle_handle.pos;
   middle_pos->x = (conn->endpoints[0].x + conn->endpoints[1].x) / 2.0;
   middle_pos->y = (conn->endpoints[0].y + conn->endpoints[1].y) / 2.0;
 
   dx = conn->endpoints[1].x - conn->endpoints[0].x;
   dy = conn->endpoints[1].y - conn->endpoints[0].y;
-  
+
   dist = sqrt(dx*dx + dy*dy);
   if (dist > 0.000001) {
     middle_pos->x -= arc->curve_distance*dy/dist;
@@ -274,20 +271,20 @@ arc_compute_curve_distance(const Arc *arc, const Point *start, const Point *end,
 
     b = *mid;
     point_sub(&b, start);
-   
+
     a = *end;
     point_sub(&a, start);
 
     tmp = point_dot(&a,&b);
     cd =
       sqrt(fabs(point_dot(&b,&b) - tmp*tmp/point_dot(&a,&a)));
-    
-    if (a.x*b.y - a.y*b.x < 0) 
+
+    if (a.x*b.y - a.y*b.x < 0)
       cd = - cd;
     return cd;
 }
 
-/** rotates p around the center by an angle given in radians 
+/** rotates p around the center by an angle given in radians
  * a positive angle is ccw on the screen*/
 static void
 rotate_point_around_point(Point *p, const Point *center, real angle)
@@ -304,7 +301,7 @@ rotate_point_around_point(Point *p, const Point *center, real angle)
 }
 
 
-/* finds the point intersecting the full circle 
+/* finds the point intersecting the full circle
  * on the vector defined by the center and Point *to
  * that point is returned in Point *best if 1 is returned */
 static int
@@ -318,7 +315,7 @@ arc_find_radial(const Arc *arc, const Point *to, Point *best)
         point_add(&tmp, &arc->center);
         *best = tmp;
         return 1;
-        
+
 }
 
 static gboolean
@@ -348,7 +345,7 @@ arc_move_handle(Arc *arc, Handle *handle,
    * Otherwise our math will get unstable with unpredictable results. */
   {
     const Point *p1, *p2;
-    
+
     if (handle->id == HANDLE_MIDDLE) {
       p1 = &arc->connection.endpoints[0];
       p2 = &arc->connection.endpoints[1];
@@ -400,7 +397,7 @@ arc_move_handle(Arc *arc, Handle *handle,
         {
           TRACE(printf("SHIFT USED, to at %.2f %.2f  ",to->x,to->y));
           if (arc_find_radial(arc, to, &best)){
-            /* needs to move two handles at the same time 
+            /* needs to move two handles at the same time
              * compute pos of middle handle */
             Point midpoint;
             int ok;
@@ -434,7 +431,7 @@ static ObjectChange*
 arc_move(Arc *arc, Point *to)
 {
   Point start_to_end;
-  Point *endpoints = &arc->connection.endpoints[0]; 
+  Point *endpoints = &arc->connection.endpoints[0];
 
   start_to_end = endpoints[1];
   point_sub(&start_to_end, &endpoints[0]);
@@ -447,13 +444,13 @@ arc_move(Arc *arc, Point *to)
   return NULL;
 }
 
-static int 
+static int
 arc_compute_midpoint(Arc *arc, const Point * ep0, const Point * ep1 , Point * midpoint)
 {
             real angle;
             Point midpos;
             Point *oep0, *oep1;
-            
+
             oep0 = &arc->connection.endpoints[0];
             oep1 = &arc->connection.endpoints[1];
 
@@ -479,7 +476,7 @@ arc_compute_midpoint(Arc *arc, const Point * ep0, const Point * ep1 , Point * mi
             midpos = arc->middle_handle.pos;
             /*rotate middle handle by half the angle */
             TRACE(printf("\nmidpos before: %.2f %.2f \n",midpos.x, midpos.y));
-            rotate_point_around_point(&midpos, &arc->center, angle/2); 
+            rotate_point_around_point(&midpos, &arc->center, angle/2);
             TRACE(printf("\nmidpos after : %.2f %.2f \n",midpos.x, midpos.y));
             *midpoint = midpos;
             return 1;
@@ -508,9 +505,9 @@ real get_middle_arc_angle(real angle1, real angle2, gboolean clock)
         angle2 = round_angle(angle2);
         delta = (angle2-angle1);
         if (delta<0) delta+=360;
-        if (clock) 
+        if (clock)
                 return round_angle(angle1-(360-delta)/2);
-        else  
+        else
                 return round_angle(angle1+delta/2);
 }
 
@@ -520,7 +517,7 @@ real get_middle_arc_angle(real angle1, real angle2, gboolean clock)
  *      if both are inside or if ang_start is very close , then the point at ang_start is returned
  */
 static void
-calculate_arc_object_edge(Arc *arc, real ang_start, real ang_end, DiaObject *obj, Point *target, gboolean 
clockwiseness) 
+calculate_arc_object_edge(Arc *arc, real ang_start, real ang_end, DiaObject *obj, Point *target, gboolean 
clockwiseness)
 {
 #define MAXITER 25
 #ifdef TRACE_DIST
@@ -541,7 +538,7 @@ calculate_arc_object_edge(Arc *arc, real ang_start, real ang_end, DiaObject *obj
   arc_get_point_at_angle(arc,target,mid1);
   dist = obj->ops->distance_from(obj, target );
   if (dist < 0.001){
-          TRACE(printf("Point at %f°: %f,%f is very close to object: %f, returning it\n",mid1, target->x, 
target->y, dist)); 
+          TRACE(printf("Point at %f°: %f,%f is very close to object: %f, returning it\n",mid1, target->x, 
target->y, dist));
           return ;
   }
   do {
@@ -552,16 +549,16 @@ calculate_arc_object_edge(Arc *arc, real ang_start, real ang_end, DiaObject *obj
     disttrace[i] = dist;
 #endif
     i++;
-    
+
     if (dist < 0.0000001) {
       mid3 = mid2;
     } else {
       mid1 = mid2;
     }
     mid2 = get_middle_arc_angle(mid1,mid3,clockwiseness);
-    
+
   } while (i < MAXITER && (dist < 0.0000001 || dist > 0.001));
-  
+
 #ifdef TRACE_DIST
     for (j = 0; j < i; j++) {
       arc_get_point_at_angle(arc,target,trace[j]);
@@ -577,8 +574,8 @@ arc_draw(Arc *arc, DiaRenderer *renderer)
   DiaRendererClass *renderer_ops = DIA_RENDERER_GET_CLASS (renderer);
   Point *endpoints;
   Point gaptmp[3];
-  ConnectionPoint *start_cp, *end_cp;  
-    
+  ConnectionPoint *start_cp, *end_cp;
+
   assert(arc != NULL);
   assert(renderer != NULL);
 
@@ -607,15 +604,15 @@ arc_draw(Arc *arc, DiaRenderer *renderer)
   }
 
   /* compute new middle_point */
-  arc_compute_midpoint(arc, &gaptmp[0], &gaptmp[1], &gaptmp[2]); 
+  arc_compute_midpoint(arc, &gaptmp[0], &gaptmp[1], &gaptmp[2]);
 
   renderer_ops->set_linewidth(renderer, arc->line_width);
   renderer_ops->set_linestyle(renderer, arc->line_style, arc->dashlength);
   renderer_ops->set_linecaps(renderer, arc->line_caps);
-  
+
   /* Special case when almost line: */
   if (arc_is_line (arc)) {
-          TRACE(printf("drawing like a line\n")); 
+          TRACE(printf("drawing like a line\n"));
     renderer_ops->draw_line_with_arrows(renderer,
                                         &gaptmp[0], &gaptmp[1],
                                         arc->line_width,
@@ -659,7 +656,7 @@ arc_draw(Arc *arc, DiaRenderer *renderer)
     renderer_ops->set_linestyle(renderer, LINESTYLE_DOTTED, 1);
     renderer_ops->set_linejoin(renderer, LINEJOIN_MITER);
     renderer_ops->set_linecaps(renderer, LINECAPS_BUTT);
-    
+
     renderer_ops->draw_line(renderer, &endpoints[0], &arc->center, &line_color);
     renderer_ops->draw_line(renderer, &endpoints[1], &arc->center, &line_color);
   }
@@ -697,10 +694,10 @@ arc_create(Point *startpoint,
 
   arc = g_malloc0(sizeof(Arc));
   arc->connection.object.enclosing_box = g_new0 (Rectangle, 1);
-  
+
   arc->line_width =  attributes_get_default_linewidth();
   arc->curve_distance = 1.0;
-  arc->arc_color = attributes_get_foreground(); 
+  arc->arc_color = attributes_get_foreground();
   attributes_get_default_line_style(&arc->line_style, &arc->dashlength);
   arc->line_caps = LINECAPS_BUTT;
   arc->start_arrow = attributes_get_default_start_arrow();
@@ -710,12 +707,12 @@ arc_create(Point *startpoint,
   conn->endpoints[0] = *startpoint;
   conn->endpoints[1] = *startpoint;
   point_add(&conn->endpoints[1], &defaultlen);
- 
+
   obj = &conn->object;
-  
+
   obj->type = &arc_type;;
   obj->ops = &arc_ops;
-  
+
   connection_init(conn, 4, 0);
 
   _arc_setup_handles (arc);
@@ -741,9 +738,9 @@ arc_copy(Arc *arc)
   Arc *newarc;
   Connection *conn, *newconn;
   DiaObject *newobj;
-  
+
   conn = &arc->connection;
-  
+
   newarc = g_malloc0(sizeof(Arc));
   newarc->connection.object.enclosing_box = g_new0 (Rectangle, 1);
   newconn = &newarc->connection;
@@ -764,10 +761,10 @@ arc_copy(Arc *arc)
   newarc->angle1 = arc->angle1;
   newarc->angle2 = arc->angle2;
 
-  newobj->handles[2] = &newarc->middle_handle;  
+  newobj->handles[2] = &newarc->middle_handle;
   newarc->middle_handle = arc->middle_handle;
 
-  newobj->handles[3] = &newarc->center_handle;  
+  newobj->handles[3] = &newarc->center_handle;
   newarc->center_handle = arc->center_handle;
 
   arc_update_data(arc);
@@ -801,7 +798,7 @@ arc_update_data(Arc *arc)
   real lensq, alpha, radius;
   real angle1, angle2;
   gboolean righthand;
-  
+
   endpoints = &arc->connection.endpoints[0];
   x1 = endpoints[0].x;
   y1 = endpoints[0].y;
@@ -839,7 +836,7 @@ arc_update_data(Arc *arc)
     angle2 = tmp;
     radius = -radius;
   }
-  
+
   arc->radius = radius;
   arc->center.x = xc; arc->center.y = yc;
   arc->angle1 = angle1;
@@ -890,7 +887,7 @@ arc_update_data(Arc *arc)
     Rectangle bbox = {0,};
     real tmp;
     Point move_arrow, move_line;
-    Point to = arc->connection.endpoints[0]; 
+    Point to = arc->connection.endpoints[0];
     Point from = to;
     point_sub (&from, &arc->center);
     tmp = from.x;
@@ -912,7 +909,7 @@ arc_update_data(Arc *arc)
     Rectangle bbox = {0,};
     real tmp;
     Point move_arrow, move_line;
-    Point to = arc->connection.endpoints[1]; 
+    Point to = arc->connection.endpoints[1];
     Point from = to;
     point_sub (&from, &arc->center);
     tmp = from.x;
@@ -1040,7 +1037,7 @@ arc_load(ObjectNode obj_node, int version,DiaContext *ctx)
   /* older versions did not prohibit everything reduced to a single point
    * and afterwards failed on all the calculations producing nan.
    */
-  if (distance_point_point (&arc->connection.endpoints[0], 
+  if (distance_point_point (&arc->connection.endpoints[0],
                             &arc->connection.endpoints[1]) < 0.02) {
     arc->curve_distance = 0.0;
     arc->connection.endpoints[0].x -= 0.01;
diff --git a/objects/standard/bezier.c b/objects/standard/bezier.c
index 005d5031..2c4fbf07 100644
--- a/objects/standard/bezier.c
+++ b/objects/standard/bezier.c
@@ -36,8 +36,6 @@
 #include "properties.h"
 #include "create.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 0.15
 
 typedef struct _Bezierline Bezierline;
@@ -104,8 +102,7 @@ static DiaObjectType bezierline_type =
 {
   "Standard - BezierLine",   /* name */
   0,                         /* version */
-  (const char **) bezierline_icon,      /* pixmap */
-  
+  (const char **) "res:/org/gnome/Dia/objects/standard/bezierline.png",
   &bezierline_type_ops,      /* ops */
   NULL,                      /* pixmap_file */
   0                          /* default_user_data */
@@ -212,7 +209,7 @@ bezierline_distance_from(Bezierline *bezierline, Point *point)
   }
 }
 
-static int 
+static int
 bezierline_closest_segment(Bezierline *bezierline, Point *point)
 {
   BezierConn *bez = &bezierline->bez;
@@ -245,7 +242,7 @@ bezierline_move_handle(Bezierline *bezierline, Handle *handle,
     point_scale(&dist, 0.332);
 
     bezierconn_move_handle(bez, handle, to, cp, reason, modifiers);
-    
+
     bez->bezier.points[1].p1 = bez->bezier.points[0].p1;
     point_sub(&bez->bezier.points[1].p1, &dist);
     bez->bezier.points[1].p2 = *to;
@@ -288,7 +285,7 @@ exchange_bez_gap_points(BezierConn * bez, Point* gap_points)
 }
 static real approx_bez_length(BezierConn *bez)
 {
-        /* Approximates the length of the bezier curve 
+        /* Approximates the length of the bezier curve
          * by the length of the polyline joining its points */
         Point *current, *last, vec;
         real length = .0;
@@ -304,7 +301,7 @@ static real approx_bez_length(BezierConn *bez)
         return length;
 }
 
-static void 
+static void
 compute_gap_points(Bezierline *bezierline, Point *gap_points)
 {
         real bez_length;
@@ -316,7 +313,7 @@ compute_gap_points(Bezierline *bezierline, Point *gap_points)
         gap_points[1] = bez->bezier.points[1].p1;
         gap_points[2] = bez->bezier.points[bez->bezier.num_points-1].p2;
         gap_points[3] = bez->bezier.points[bez->bezier.num_points-1].p3;
-        
+
         point_copy(&vec_start, &gap_points[1]);
         point_sub(&vec_start, &gap_points[0]);
         point_normalize(&vec_start); /* unit vector pointing from first point */
@@ -324,16 +321,16 @@ compute_gap_points(Bezierline *bezierline, Point *gap_points)
         point_sub(&vec_end, &gap_points[3]);
         point_normalize(&vec_end); /* unit vector pointing from last point */
 
-                
-        bez_length = approx_bez_length(bez) ; 
-        
-        if (connpoint_is_autogap(bez->object.handles[0]->connected_to) && 
-               (bez->object.handles[0])->connected_to != NULL && 
+
+        bez_length = approx_bez_length(bez) ;
+
+        if (connpoint_is_autogap(bez->object.handles[0]->connected_to) &&
+               (bez->object.handles[0])->connected_to != NULL &&
                (bez->object.handles[0])->connected_to->object != NULL ) {
-            Point end; 
+            Point end;
             point_copy(&end, &gap_points[0]);
             point_add_scaled(&end, &vec_start, bez_length); /* far away on the same slope */
-            end = calculate_object_edge(&gap_points[0], &end, 
+            end = calculate_object_edge(&gap_points[0], &end,
                             (bez->object.handles[0])->connected_to->object);
             point_sub(&end, &gap_points[0]); /* vector from old start to new start */
             /* move points */
@@ -341,13 +338,13 @@ compute_gap_points(Bezierline *bezierline, Point *gap_points)
             point_add(&gap_points[1], &end);
         }
 
-        if (connpoint_is_autogap(bez->object.handles[3*(bez->bezier.num_points-1)]->connected_to) && 
+        if (connpoint_is_autogap(bez->object.handles[3*(bez->bezier.num_points-1)]->connected_to) &&
                 (bez->object.handles[3*(bez->bezier.num_points-1)])->connected_to != NULL &&
                 (bez->object.handles[3*(bez->bezier.num_points-1)])->connected_to->object != NULL) {
-            Point end; 
+            Point end;
             point_copy(&end, &gap_points[3]);
             point_add_scaled(&end, &vec_end, bez_length); /* far away on the same slope */
-            end = calculate_object_edge(&gap_points[3], &end, 
+            end = calculate_object_edge(&gap_points[3], &end,
                             (bez->object.handles[3*(bez->bezier.num_points-1)])->connected_to->object);
             point_sub(&end, &gap_points[3]); /* vector from old end to new end */
             /* move points */
@@ -355,7 +352,7 @@ compute_gap_points(Bezierline *bezierline, Point *gap_points)
             point_add(&gap_points[2], &end);
         }
 
-        
+
         /* adds the absolute start gap  according to the slope at the first point */
         point_add_scaled(&gap_points[0], &vec_start, bezierline->absolute_start_gap);
         point_add_scaled(&gap_points[1], &vec_start, bezierline->absolute_start_gap);
@@ -370,10 +367,10 @@ static void
 bezierline_draw(Bezierline *bezierline, DiaRenderer *renderer)
 {
   Point gap_points[4]; /* two first and two last bez points */
-        
+
   BezierConn *bez = &bezierline->bez;
   DiaRendererClass *renderer_ops = DIA_RENDERER_GET_CLASS (renderer);
-  
+
   renderer_ops->set_linewidth(renderer, bezierline->line_width);
   renderer_ops->set_linestyle(renderer, bezierline->line_style, bezierline->dashlength);
   renderer_ops->set_linejoin(renderer, bezierline->line_join);
@@ -446,13 +443,13 @@ bezierline_create(Point *startpoint,
   bezierline->bez.object.enclosing_box = g_new0 (Rectangle, 1);
   bez = &bezierline->bez;
   obj = &bez->object;
-  
+
   obj->type = &bezierline_type;
   obj->ops = &bezierline_ops;
 
   if (user_data == NULL) {
     bezierconn_init(bez, 2);
-    
+
     bez->bezier.points[0].p1 = *startpoint;
     bez->bezier.points[1].p1 = *startpoint;
     point_add(&bez->bezier.points[1].p1, &defaultlen);
@@ -497,9 +494,9 @@ bezierline_copy(Bezierline *bezierline)
 {
   Bezierline *newbezierline;
   BezierConn *bez, *newbez;
-  
+
   bez = &bezierline->bez;
- 
+
   newbezierline = g_new0(Bezierline, 1);
   newbezierline->bez.object.enclosing_box = g_new0 (Rectangle, 1);
   newbez = &newbezierline->bez;
@@ -529,8 +526,8 @@ bezierline_update_data(Bezierline *bezierline)
   PolyBBExtras *extra = &bez->extra_spacing;
 
   bezierconn_update_data(bez);
-    
-  extra->start_trans = extra->start_long = 
+
+  extra->start_trans = extra->start_long =
   extra->middle_trans =
   extra->end_trans = extra->end_long = (bezierline->line_width / 2.0);
 
@@ -541,7 +538,7 @@ bezierline_update_data(Bezierline *bezierline)
       bezierline->absolute_start_gap || bezierline->absolute_end_gap ||
       bezierline->start_arrow.type != ARROW_NONE || bezierline->end_arrow.type != ARROW_NONE) {
     Point gap_points[4];
-    Rectangle bbox_union = {bez->bezier.points[0].p1.x, bez->bezier.points[0].p1.y, 
+    Rectangle bbox_union = {bez->bezier.points[0].p1.x, bez->bezier.points[0].p1.y,
                            bez->bezier.points[0].p1.x, bez->bezier.points[0].p1.y};
     compute_gap_points(bezierline, gap_points);
     exchange_bez_gap_points(bez,gap_points);
@@ -550,7 +547,7 @@ bezierline_update_data(Bezierline *bezierline)
       Rectangle bbox;
       Point move_arrow, move_line;
       Point to = bez->bezier.points[0].p1, from = bez->bezier.points[1].p1;
-      
+
       calculate_arrow_point(&bezierline->start_arrow, &to, &from, &move_arrow, &move_line, 
bezierline->line_width);
       point_sub(&to, &move_arrow);
       point_sub(&bez->bezier.points[0].p1, &move_line);
@@ -562,7 +559,7 @@ bezierline_update_data(Bezierline *bezierline)
       Point move_arrow, move_line;
       int num_points = bez->bezier.num_points;
       Point to = bez->bezier.points[num_points-1].p3, from = bez->bezier.points[num_points-1].p2;
-      
+
       calculate_arrow_point(&bezierline->end_arrow, &to, &from, &move_arrow, &move_line, 
bezierline->line_width);
       point_sub(&to, &move_arrow);
       point_sub(&bez->bezier.points[num_points-1].p3, &move_line);
@@ -571,11 +568,11 @@ bezierline_update_data(Bezierline *bezierline)
     }
     bezierconn_update_boundingbox(bez);
     rectangle_union (&obj->bounding_box, &bbox_union);
-    exchange_bez_gap_points(bez,gap_points);          
+    exchange_bez_gap_points(bez,gap_points);
   } else {
     bezierconn_update_boundingbox(bez);
   }
-    /* add control points to the bounding box, needed to make them visible when showing all 
+    /* add control points to the bounding box, needed to make them visible when showing all
       * and to remove traces from them */
   {
     int i, num_points = bez->bezier.num_points;
@@ -585,8 +582,8 @@ bezierline_update_data(Bezierline *bezierline)
     for (i = 1; i < num_points; ++i) {
       if (bez->bezier.points[i].type != BEZ_CURVE_TO)
         continue;
-      rectangle_add_point(obj->enclosing_box, &bez->bezier.points[i].p1);      
-      rectangle_add_point(obj->enclosing_box, &bez->bezier.points[i].p2);      
+      rectangle_add_point(obj->enclosing_box, &bez->bezier.points[i].p1);
+      rectangle_add_point(obj->enclosing_box, &bez->bezier.points[i].p2);
     }
   }
 }
@@ -603,17 +600,17 @@ bezierline_save(Bezierline *bezierline, ObjectNode obj_node,
     exchange_bez_gap_points(&bezierline->bez,gap_points);
     bezierconn_update_boundingbox(&bezierline->bez);
     exchange_bez_gap_points(&bezierline->bez,gap_points);
-  } 
+  }
   bezierconn_save(&bezierline->bez, obj_node, ctx);
 
   if (!color_equals(&bezierline->line_color, &color_black))
     data_add_color(new_attribute(obj_node, "line_color"),
                   &bezierline->line_color, ctx);
-  
+
   if (bezierline->line_width != 0.1)
     data_add_real(new_attribute(obj_node, PROP_STDNAME_LINE_WIDTH),
                  bezierline->line_width, ctx);
-  
+
   if (bezierline->line_style != LINESTYLE_SOLID)
     data_add_enum(new_attribute(obj_node, "line_style"),
                  bezierline->line_style, ctx);
@@ -661,7 +658,7 @@ bezierline_load(ObjectNode obj_node, int version, DiaContext *ctx)
 
   bez = &bezierline->bez;
   obj = &bez->object;
-  
+
   obj->type = &bezierline_type;
   obj->ops = &bezierline_ops;
 
@@ -711,12 +708,12 @@ bezierline_load(ObjectNode obj_node, int version, DiaContext *ctx)
   attr = object_find_attribute(obj_node, "absolute_end_gap");
   if (attr != NULL)
     bezierline->absolute_end_gap =  data_real(attribute_first_data(attr), ctx);
-  
+
   /* if "screws up the bounding box if auto_gap" it must be fixed there
    * not by copying some meaningless bounding_box before this function call!
    * But the real fix is in connectionpoint.c(connpoint_is_autogap)
    */
-  bezierline_update_data(bezierline); 
+  bezierline_update_data(bezierline);
 
   return &bezierline->bez.object;
 }
@@ -740,7 +737,7 @@ bezierline_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer dat
   int seg_nr;
   Bezierline *bezierline = (Bezierline*) obj;
   ObjectChange *change;
-  
+
   seg_nr = beziercommon_closest_segment(&bezierline->bez.bezier, clicked, bezierline->line_width);
 
   change = bezierconn_remove_segment(&bezierline->bez, seg_nr+1);
@@ -754,11 +751,11 @@ bezierline_set_corner_type_callback (DiaObject *obj, Point *clicked, gpointer da
   Handle *closest;
   Bezierline *bezierline = (Bezierline*) obj;
   ObjectChange *change;
-  
+
   closest = bezierconn_closest_major_handle(&bezierline->bez, clicked);
-  change = bezierconn_set_corner_type(&bezierline->bez, closest, 
+  change = bezierconn_set_corner_type(&bezierline->bez, closest,
                                      GPOINTER_TO_INT(data));
-  
+
   bezierline_update_data(bezierline);
   return change;
 }
@@ -767,9 +764,9 @@ static DiaMenuItem bezierline_menu_items[] = {
   { N_("Add Segment"), bezierline_add_segment_callback, NULL, 1 },
   { N_("Delete Segment"), bezierline_delete_segment_callback, NULL, 1 },
   { NULL, NULL, NULL, 1 },
-  { N_("Symmetric control"), bezierline_set_corner_type_callback, 
+  { N_("Symmetric control"), bezierline_set_corner_type_callback,
     GINT_TO_POINTER(BEZ_CORNER_SYMMETRIC), 1 },
-  { N_("Smooth control"), bezierline_set_corner_type_callback, 
+  { N_("Smooth control"), bezierline_set_corner_type_callback,
     GINT_TO_POINTER(BEZ_CORNER_SMOOTH), 1 },
   { N_("Cusp control"), bezierline_set_corner_type_callback,
     GINT_TO_POINTER(BEZ_CORNER_CUSP), 1 }
diff --git a/objects/standard/beziergon.c b/objects/standard/beziergon.c
index 52d1b1ac..adda7f2f 100644
--- a/objects/standard/beziergon.c
+++ b/objects/standard/beziergon.c
@@ -37,8 +37,6 @@
 #include "create.h"
 #include "pattern.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 0.15
 
 /*!
@@ -128,8 +126,7 @@ static DiaObjectType beziergon_type =
 {
   "Standard - Beziergon",   /* name */
   0,                         /* version */
-  (const char **) beziergon_icon,      /* pixmap */
-  
+  (const char **) "res:/org/gnome/Dia/objects/standard/beziergon.png",
   &beziergon_type_ops,      /* ops */
   NULL,                     /* pixmap_file */
   0,                        /* default_user_data */
@@ -221,7 +218,7 @@ beziergon_draw(Beziergon *beziergon, DiaRenderer *renderer)
   BezierShape *bez = &beziergon->bezier;
   BezPoint *points;
   int n;
-  
+
   points = &bez->bezier.points[0];
   n = bez->bezier.num_points;
 
@@ -328,7 +325,7 @@ beziergon_copy(Beziergon *beziergon)
   BezierShape *bezier, *newbezier;
 
   bezier = &beziergon->bezier;
- 
+
   newbeziergon = g_malloc0(sizeof(Beziergon));
   newbeziergon->bezier.object.enclosing_box = g_new0 (Rectangle, 1);
   newbezier = &newbeziergon->bezier;
@@ -368,8 +365,8 @@ beziergon_update_data(Beziergon *beziergon)
     for (i = 0; i < num_points; ++i) {
       if (bez->bezier.points[i].type != BEZ_CURVE_TO)
         continue;
-      rectangle_add_point(obj->enclosing_box, &bez->bezier.points[i].p1);      
-      rectangle_add_point(obj->enclosing_box, &bez->bezier.points[i].p2);      
+      rectangle_add_point(obj->enclosing_box, &bez->bezier.points[i].p1);
+      rectangle_add_point(obj->enclosing_box, &bez->bezier.points[i].p2);
     }
   }
   obj->position = bez->bezier.points[0].p1;
@@ -384,15 +381,15 @@ beziergon_save(Beziergon *beziergon, ObjectNode obj_node,
   if (!color_equals(&beziergon->line_color, &color_black))
     data_add_color(new_attribute(obj_node, "line_color"),
                   &beziergon->line_color, ctx);
-  
+
   if (beziergon->line_width != 0.1)
     data_add_real(new_attribute(obj_node, PROP_STDNAME_LINE_WIDTH),
                  beziergon->line_width, ctx);
-  
+
   if (!color_equals(&beziergon->inner_color, &color_white))
     data_add_color(new_attribute(obj_node, "inner_color"),
                   &beziergon->inner_color, ctx);
-  
+
   data_add_boolean(new_attribute(obj_node, "show_background"),
                   beziergon->show_background, ctx);
 
@@ -404,7 +401,7 @@ beziergon_save(Beziergon *beziergon, ObjectNode obj_node,
       beziergon->dashlength != DEFAULT_LINESTYLE_DASHLEN)
     data_add_real(new_attribute(obj_node, "dashlength"),
                  beziergon->dashlength, ctx);
-  
+
   if (beziergon->line_join != LINEJOIN_MITER)
     data_add_enum(new_attribute(obj_node, "line_join"),
                   beziergon->line_join, ctx);
@@ -427,7 +424,7 @@ beziergon_load(ObjectNode obj_node, int version, DiaContext *ctx)
 
   bez = &beziergon->bezier;
   obj = &bez->object;
-  
+
   obj->type = &beziergon_type;
   obj->ops = &beziergon_ops;
 
@@ -447,7 +444,7 @@ beziergon_load(ObjectNode obj_node, int version, DiaContext *ctx)
   attr = object_find_attribute(obj_node, "inner_color");
   if (attr != NULL)
     data_color(attribute_first_data(attr), &beziergon->inner_color, ctx);
-  
+
   beziergon->show_background = TRUE;
   attr = object_find_attribute(obj_node, "show_background");
   if (attr != NULL)
@@ -483,7 +480,7 @@ beziergon_add_segment_callback (DiaObject *obj, Point *clicked, gpointer data)
   Beziergon *bezier = (Beziergon*) obj;
   int segment;
   ObjectChange *change;
-  
+
   segment = beziergon_closest_segment(bezier, clicked);
   change = beziershape_add_segment(&bezier->bezier, segment, clicked);
 
@@ -497,7 +494,7 @@ beziergon_delete_segment_callback (DiaObject *obj, Point *clicked, gpointer data
   int seg_nr;
   Beziergon *bezier = (Beziergon*) obj;
   ObjectChange *change;
-  
+
   seg_nr = beziergon_closest_segment(bezier, clicked);
   change = beziershape_remove_segment(&bezier->bezier, seg_nr+1);
 
@@ -511,11 +508,11 @@ beziergon_set_corner_type_callback (DiaObject *obj, Point *clicked, gpointer dat
   Handle *closest;
   Beziergon *beziergon = (Beziergon *) obj;
   ObjectChange *change;
-  
+
   closest = beziershape_closest_major_handle(&beziergon->bezier, clicked);
-  change = beziershape_set_corner_type(&beziergon->bezier, closest, 
+  change = beziershape_set_corner_type(&beziergon->bezier, closest,
                                       GPOINTER_TO_INT(data));
-  
+
   beziergon_update_data(beziergon);
   return change;
 }
@@ -524,9 +521,9 @@ static DiaMenuItem beziergon_menu_items[] = {
   { N_("Add Segment"), beziergon_add_segment_callback, NULL, 1 },
   { N_("Delete Segment"), beziergon_delete_segment_callback, NULL, 1 },
   { NULL, NULL, NULL, 1 },
-  { N_("Symmetric control"), beziergon_set_corner_type_callback, 
+  { N_("Symmetric control"), beziergon_set_corner_type_callback,
     GINT_TO_POINTER(BEZ_CORNER_SYMMETRIC), 1 },
-  { N_("Smooth control"), beziergon_set_corner_type_callback, 
+  { N_("Smooth control"), beziergon_set_corner_type_callback,
     GINT_TO_POINTER(BEZ_CORNER_SMOOTH), 1 },
   { N_("Cusp control"), beziergon_set_corner_type_callback,
     GINT_TO_POINTER(BEZ_CORNER_CUSP), 1 }
diff --git a/objects/standard/box.c b/objects/standard/box.c
index 2992b6a9..791d04d3 100644
--- a/objects/standard/box.c
+++ b/objects/standard/box.c
@@ -34,8 +34,6 @@
 #include "message.h"
 #include "pattern.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 2.0
 #define DEFAULT_HEIGHT 1.0
 #define DEFAULT_BORDER 0.25
@@ -84,7 +82,7 @@ static void box_select(Box *box, Point *clicked_point,
                       DiaRenderer *interactive_renderer);
 static ObjectChange* box_move_handle(Box *box, Handle *handle,
                            Point *to, ConnectionPoint *cp,
-                                    HandleMoveReason reason, 
+                                    HandleMoveReason reason,
                            ModifierKeys modifiers);
 static ObjectChange* box_move(Box *box, Point *to);
 static void box_draw(Box *box, DiaRenderer *renderer);
@@ -159,8 +157,7 @@ DiaObjectType box_type =
 {
   "Standard - Box",  /* name */
   0,                 /* version */
-  (const char **) box_icon, /* pixmap */
-
+  (const char **) "res:/org/gnome/Dia/objects/standard/box.png",
   &box_type_ops,      /* ops */
   NULL,              /* pixmap_file */
   0,                 /* default_user_data */
@@ -192,7 +189,7 @@ static ObjectOps box_ops = {
 static void
 box_set_props(Box *box, GPtrArray *props)
 {
-  object_set_props_from_offsets(&box->element.object, 
+  object_set_props_from_offsets(&box->element.object,
                                 box_offsets, props);
   box_update_data(box);
 }
@@ -307,7 +304,7 @@ box_move_handle(Box *box, Handle *handle,
       new_width = to_width > aspect_width ? to_width : aspect_width;
       new_height = new_width / width * height;
       break;
-    default: 
+    default:
       new_width = width;
       new_height = height;
       break;
@@ -315,7 +312,7 @@ box_move_handle(Box *box, Handle *handle,
 
     se_to.x = corner.x + new_width;
     se_to.y = corner.y + new_height;
-        
+
     element_move_handle(&box->element, HANDLE_RESIZE_SE, &se_to, cp, reason, modifiers);
   } else {
     element_move_handle(&box->element, handle->id, to, cp, reason, modifiers);
@@ -330,7 +327,7 @@ static ObjectChange*
 box_move(Box *box, Point *to)
 {
   box->element.corner = *to;
-  
+
   box_update_data(box);
 
   return NULL;
@@ -381,7 +378,7 @@ box_draw(Box *box, DiaRenderer *renderer)
       renderer_ops->set_pattern (renderer, NULL);
   } else {
     if (box->angle == 0) {
-      renderer_ops->draw_rounded_rect (renderer, 
+      renderer_ops->draw_rounded_rect (renderer,
                                       &elem->corner, &lr_corner,
                                       NULL, &box->border_color,
                                       box->corner_radius);
@@ -400,7 +397,7 @@ box_update_data(Box *box)
   ElementBBExtras *extra = &elem->extra_spacing;
   DiaObject *obj = &elem->object;
   real radius;
-  
+
   if (box->aspect == SQUARE_ASPECT){
     float size = elem->height < elem->width ? elem->height : elem->width;
     elem->height = elem->width = size;
@@ -410,7 +407,7 @@ box_update_data(Box *box)
   radius = MIN(radius, elem->width/2);
   radius = MIN(radius, elem->height/2);
   radius *= (1-M_SQRT1_2);
-  
+
   /* Update connections: */
   element_update_connections_rectangle (elem, box->connections);
 
@@ -429,9 +426,9 @@ box_update_data(Box *box)
 
   extra->border_trans = box->border_width / 2.0;
   element_update_boundingbox(elem);
-  
+
   obj->position = elem->corner;
-  
+
   element_update_handles(elem);
 
   if (radius > 0.0) {
@@ -461,7 +458,7 @@ box_create(Point *startpoint,
   box = g_malloc0(sizeof(Box));
   elem = &box->element;
   obj = &elem->object;
-  
+
   obj->type = &box_type;
 
   obj->ops = &box_ops;
@@ -493,7 +490,7 @@ box_create(Point *startpoint,
   box_update_data(box);
 
   *handle1 = NULL;
-  *handle2 = obj->handles[7];  
+  *handle2 = obj->handles[7];
   return &box->element.object;
 }
 
@@ -512,9 +509,9 @@ box_copy(Box *box)
   Box *newbox;
   Element *elem, *newelem;
   DiaObject *newobj;
-  
+
   elem = &box->element;
-  
+
   newbox = g_malloc0(sizeof(Box));
   newelem = &newbox->element;
   newobj = &newelem->object;
@@ -553,22 +550,22 @@ box_save(Box *box, ObjectNode obj_node, DiaContext *ctx)
   if (box->border_width != 0.1)
     data_add_real(new_attribute(obj_node, "border_width"),
                  box->border_width, ctx);
-  
+
   if (!color_equals(&box->border_color, &color_black))
     data_add_color(new_attribute(obj_node, "border_color"),
                   &box->border_color, ctx);
-  
+
   if (!color_equals(&box->inner_color, &color_white))
     data_add_color(new_attribute(obj_node, "inner_color"),
                   &box->inner_color, ctx);
-  
+
   data_add_boolean(new_attribute(obj_node, "show_background"),
                   box->show_background, ctx);
 
   if (box->line_style != LINESTYLE_SOLID)
     data_add_enum(new_attribute(obj_node, "line_style"),
                  box->line_style, ctx);
-  
+
   if (box->line_style != LINESTYLE_SOLID &&
       box->dashlength != DEFAULT_LINESTYLE_DASHLEN)
     data_add_real(new_attribute(obj_node, "dashlength"),
@@ -608,12 +605,12 @@ box_load(ObjectNode obj_node, int version, DiaContext *ctx)
   box = g_malloc0(sizeof(Box));
   elem = &box->element;
   obj = &elem->object;
-  
+
   obj->type = &box_type;
   obj->ops = &box_ops;
 
   element_load(elem, obj_node, ctx);
-  
+
   box->border_width = 0.1;
   attr = object_find_attribute(obj_node, "border_width");
   if (attr != NULL)
@@ -623,12 +620,12 @@ box_load(ObjectNode obj_node, int version, DiaContext *ctx)
   attr = object_find_attribute(obj_node, "border_color");
   if (attr != NULL)
     data_color(attribute_first_data(attr), &box->border_color, ctx);
-  
+
   box->inner_color = color_white;
   attr = object_find_attribute(obj_node, "inner_color");
   if (attr != NULL)
     data_color(attribute_first_data(attr), &box->inner_color, ctx);
-  
+
   box->show_background = TRUE;
   attr = object_find_attribute(obj_node, "show_background");
   if (attr != NULL)
@@ -752,11 +749,11 @@ box_set_aspect_callback (DiaObject* obj, Point* clicked, gpointer data)
 }
 
 static DiaMenuItem box_menu_items[] = {
-  { N_("Free aspect"), box_set_aspect_callback, (void*)FREE_ASPECT, 
+  { N_("Free aspect"), box_set_aspect_callback, (void*)FREE_ASPECT,
     DIAMENU_ACTIVE|DIAMENU_TOGGLE },
-  { N_("Fixed aspect"), box_set_aspect_callback, (void*)FIXED_ASPECT, 
+  { N_("Fixed aspect"), box_set_aspect_callback, (void*)FIXED_ASPECT,
     DIAMENU_ACTIVE|DIAMENU_TOGGLE },
-  { N_("Square"), box_set_aspect_callback, (void*)SQUARE_ASPECT, 
+  { N_("Square"), box_set_aspect_callback, (void*)SQUARE_ASPECT,
     DIAMENU_ACTIVE|DIAMENU_TOGGLE}
 };
 
@@ -775,9 +772,9 @@ box_get_object_menu(Box *box, Point *clickedpoint)
   box_menu_items[1].active = DIAMENU_ACTIVE|DIAMENU_TOGGLE;
   box_menu_items[2].active = DIAMENU_ACTIVE|DIAMENU_TOGGLE;
 
-  box_menu_items[box->aspect].active = 
+  box_menu_items[box->aspect].active =
     DIAMENU_ACTIVE|DIAMENU_TOGGLE|DIAMENU_TOGGLE_ON;
-  
+
   return &box_menu;
 }
 
diff --git a/objects/standard/ellipse.c b/objects/standard/ellipse.c
index 74964633..ed1fc9f8 100644
--- a/objects/standard/ellipse.c
+++ b/objects/standard/ellipse.c
@@ -34,8 +34,6 @@
 #include "diapathrenderer.h"
 #include "message.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 2.0
 #define DEFAULT_HEIGHT 1.0
 #define DEFAULT_BORDER 0.15
@@ -58,7 +56,7 @@ struct _Ellipse {
 
   ConnectionPoint connections[9];
   Handle center_handle;
-  
+
   real border_width;
   Color border_color;
   Color inner_color;
@@ -67,7 +65,7 @@ struct _Ellipse {
   LineStyle line_style;
   real dashlength;
   DiaPattern *pattern;
-  real angle; /*!< between [-45�-45�] to simplify connection point handling */
+  real angle; /*!< between [-45�-45�] to simplify connection point handling */
 };
 
 static struct _EllipseProperties {
@@ -148,8 +146,7 @@ DiaObjectType ellipse_type =
 {
   "Standard - Ellipse",   /* name */
   0,                      /* version */
-  (const char **) ellipse_icon,  /* pixmap */
-  
+  (const char **) "res:/org/gnome/Dia/objects/standard/ellipse.png",
   &ellipse_type_ops,      /* ops */
   NULL,
   0,
@@ -181,8 +178,8 @@ static ObjectOps ellipse_ops = {
 static void
 ellipse_set_props(Ellipse *ellipse, GPtrArray *props)
 {
-  
-  object_set_props_from_offsets(&ellipse->element.object, 
+
+  object_set_props_from_offsets(&ellipse->element.object,
                                 ellipse_offsets, props);
 
   ellipse_update_data(ellipse);
@@ -286,17 +283,17 @@ ellipse_move_handle(Ellipse *ellipse, Handle *handle,
             new_width = to_width < aspect_width ? to_width : aspect_width;
             new_height = new_width / width * height;
             break;
-       default: 
+       default:
            new_width = width;
            new_height = height;
            break;
         }
-       
+
         nw_to.x = center.x - new_width/2;
         nw_to.y = center.y - new_height/2;
         se_to.x = center.x + new_width/2;
         se_to.y = center.y + new_height/2;
-        
+
         element_move_handle(&ellipse->element, HANDLE_RESIZE_NW, &nw_to, cp, reason, modifiers);
         element_move_handle(&ellipse->element, HANDLE_RESIZE_SE, &se_to, cp, reason, modifiers);
     } else {
@@ -309,7 +306,7 @@ ellipse_move_handle(Ellipse *ellipse, Handle *handle,
 
         element_move_handle(&ellipse->element, handle->id, to, cp, reason, modifiers);
         /* this second move screws the intended object size, e.g. from dot2dia.py
-        * but without it the 'centered' behaviour during edit is screwed 
+        * but without it the 'centered' behaviour during edit is screwed
         */
         element_move_handle(&ellipse->element, 7-handle->id, &opposite_to, cp, reason, modifiers);
     }
@@ -392,7 +389,7 @@ ellipse_update_data(Ellipse *ellipse)
   DiaObject *obj = &elem->object;
   Point center;
   real half_x, half_y;
-  
+
   /* handle circle implies height=width */
   if (ellipse->aspect == CIRCLE_ASPECT){
        float size = elem->height < elem->width ? elem->height : elem->width;
@@ -401,10 +398,10 @@ ellipse_update_data(Ellipse *ellipse)
 
   center.x = elem->corner.x + elem->width / 2.0;
   center.y = elem->corner.y + elem->height / 2.0;
-  
+
   half_x = elem->width * M_SQRT1_2 / 2.0;
   half_y = elem->height * M_SQRT1_2 / 2.0;
-    
+
   /* Update connections: */
   ellipse->connections[0].pos.x = center.x - half_x;
   ellipse->connections[0].pos.y = center.y - half_y;
@@ -471,7 +468,7 @@ ellipse_create(Point *startpoint,
   ellipse = g_malloc0(sizeof(Ellipse));
   elem = &ellipse->element;
   obj = &elem->object;
-  
+
   obj->type = &ellipse_type;
 
   obj->ops = &ellipse_ops;
@@ -524,9 +521,9 @@ ellipse_copy(Ellipse *ellipse)
   Ellipse *newellipse;
   Element *elem, *newelem;
   DiaObject *newobj;
-  
+
   elem = &ellipse->element;
-  
+
   newellipse = g_malloc0(sizeof(Ellipse));
   newelem = &newellipse->element;
   newobj = &newelem->object;
@@ -568,11 +565,11 @@ ellipse_save(Ellipse *ellipse, ObjectNode obj_node, DiaContext *ctx)
   if (ellipse->border_width != 0.1)
     data_add_real(new_attribute(obj_node, "border_width"),
                  ellipse->border_width, ctx);
-  
+
   if (!color_equals(&ellipse->border_color, &color_black))
     data_add_color(new_attribute(obj_node, "border_color"),
                   &ellipse->border_color, ctx);
-  
+
   if (!color_equals(&ellipse->inner_color, &color_white))
     data_add_color(new_attribute(obj_node, "inner_color"),
                   &ellipse->inner_color, ctx);
@@ -580,7 +577,7 @@ ellipse_save(Ellipse *ellipse, ObjectNode obj_node, DiaContext *ctx)
   if (!ellipse->show_background)
     data_add_boolean(new_attribute(obj_node, "show_background"),
                     ellipse->show_background, ctx);
-  
+
   if (ellipse->aspect != FREE_ASPECT)
     data_add_enum(new_attribute(obj_node, "aspect"),
                  ellipse->aspect, ctx);
@@ -613,7 +610,7 @@ static DiaObject *ellipse_load(ObjectNode obj_node, int version, DiaContext *ctx
   ellipse = g_malloc0(sizeof(Ellipse));
   elem = &ellipse->element;
   obj = &elem->object;
-  
+
   obj->type = &ellipse_type;
   obj->ops = &ellipse_ops;
 
@@ -628,12 +625,12 @@ static DiaObject *ellipse_load(ObjectNode obj_node, int version, DiaContext *ctx
   attr = object_find_attribute(obj_node, "border_color");
   if (attr != NULL)
     data_color(attribute_first_data(attr), &ellipse->border_color, ctx);
-  
+
   ellipse->inner_color = color_white;
   attr = object_find_attribute(obj_node, "inner_color");
   if (attr != NULL)
     data_color(attribute_first_data(attr), &ellipse->inner_color, ctx);
-  
+
   ellipse->show_background = TRUE;
   attr = object_find_attribute(obj_node, "show_background");
   if (attr != NULL)
@@ -752,11 +749,11 @@ ellipse_set_aspect_callback (DiaObject* obj, Point* clicked, gpointer data)
 }
 
 static DiaMenuItem ellipse_menu_items[] = {
-  { N_("Free aspect"), ellipse_set_aspect_callback, (void*)FREE_ASPECT, 
+  { N_("Free aspect"), ellipse_set_aspect_callback, (void*)FREE_ASPECT,
     DIAMENU_ACTIVE|DIAMENU_TOGGLE },
-  { N_("Fixed aspect"), ellipse_set_aspect_callback, (void*)FIXED_ASPECT, 
+  { N_("Fixed aspect"), ellipse_set_aspect_callback, (void*)FIXED_ASPECT,
     DIAMENU_ACTIVE|DIAMENU_TOGGLE },
-  { N_("Circle"), ellipse_set_aspect_callback, (void*)CIRCLE_ASPECT, 
+  { N_("Circle"), ellipse_set_aspect_callback, (void*)CIRCLE_ASPECT,
     DIAMENU_ACTIVE|DIAMENU_TOGGLE},
 };
 
@@ -775,9 +772,9 @@ ellipse_get_object_menu(Ellipse *ellipse, Point *clickedpoint)
   ellipse_menu_items[1].active = DIAMENU_ACTIVE|DIAMENU_TOGGLE;
   ellipse_menu_items[2].active = DIAMENU_ACTIVE|DIAMENU_TOGGLE;
 
-  ellipse_menu_items[ellipse->aspect].active = 
+  ellipse_menu_items[ellipse->aspect].active =
     DIAMENU_ACTIVE|DIAMENU_TOGGLE|DIAMENU_TOGGLE_ON;
-  
+
   return &ellipse_menu;
 }
 
diff --git a/objects/standard/image.c b/objects/standard/image.c
index a2d556f7..005ae16e 100644
--- a/objects/standard/image.c
+++ b/objects/standard/image.c
@@ -39,8 +39,6 @@
 #include "properties.h"
 #include "dia_dirs.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 2.0
 #define DEFAULT_HEIGHT 2.0
 
@@ -62,10 +60,10 @@ struct _Image {
   Color border_color;
   LineStyle line_style;
   real dashlength;
-  
+
   DiaImage *image;
   gchar *file;
-  
+
   gboolean inline_data;
   /* may contain the images pixbuf pointer - if so: reference counted! */
   GdkPixbuf *pixbuf;
@@ -142,8 +140,7 @@ DiaObjectType image_type =
 {
   "Standard - Image",  /* name */
   0,                 /* version */
-  (const char **) image_icon, /* pixmap */
-
+  (const char **) "res:/org/gnome/Dia/objects/standard/image.png",
   &image_type_ops,      /* ops */
   NULL,
   0,
@@ -417,7 +414,7 @@ image_move_handle(Image *image, Handle *handle,
     default:
       message_warning("Unforeseen handle in image_move_handle: %d\n",
                      handle->id);
-      
+
     }
   } else {
     element_move_handle(elem, handle->id, to, cp, reason, modifiers);
@@ -431,7 +428,7 @@ static ObjectChange*
 image_move(Image *image, Point *to)
 {
   image->element.corner = *to;
-  
+
   image_update_data(image);
 
   return NULL;
@@ -443,15 +440,15 @@ image_draw(Image *image, DiaRenderer *renderer)
   DiaRendererClass *renderer_ops = DIA_RENDERER_GET_CLASS (renderer);
   Point ul_corner, lr_corner;
   Element *elem;
-  
+
   assert(image != NULL);
   assert(renderer != NULL);
 
   elem = &image->element;
-  
+
   lr_corner.x = elem->corner.x + elem->width + image->border_width/2;
   lr_corner.y = elem->corner.y + elem->height + image->border_width/2;
-  
+
   ul_corner.x = elem->corner.x - image->border_width/2;
   ul_corner.y = elem->corner.y - image->border_width/2;
 
@@ -580,19 +577,19 @@ image_create(Point *startpoint,
   image = g_malloc0(sizeof(Image));
   elem = &image->element;
   obj = &elem->object;
-  
+
   obj->type = &image_type;
   obj->ops = &image_ops;
 
   elem->corner = *startpoint;
   elem->width = DEFAULT_WIDTH;
   elem->height = DEFAULT_HEIGHT;
-    
+
   image->border_width =  attributes_get_default_linewidth();
   image->border_color = attributes_get_foreground();
   attributes_get_default_line_style(&image->line_style,
                                    &image->dashlength);
-  
+
   element_init(elem, 8, NUM_CONNECTIONS);
 
   for (i=0; i<NUM_CONNECTIONS; i++) {
@@ -619,13 +616,13 @@ image_create(Point *startpoint,
   image->keep_aspect = default_properties.keep_aspect;
 
   image_update_data(image);
-  
+
   *handle1 = NULL;
-  *handle2 = obj->handles[7];  
+  *handle2 = obj->handles[7];
   return &image->element.object;
 }
 
-static void 
+static void
 image_destroy(Image *image)
 {
   if (image->file != NULL)
@@ -647,9 +644,9 @@ image_copy(Image *image)
   Image *newimage;
   Element *elem, *newelem;
   DiaObject *newobj;
-  
+
   elem = &image->element;
-  
+
   newimage = g_malloc0(sizeof(Image));
   newelem = &newimage->element;
   newobj = &newelem->object;
@@ -660,7 +657,7 @@ image_copy(Image *image)
   newimage->border_color = image->border_color;
   newimage->line_style = image->line_style;
   newimage->angle = image->angle;
-  
+
   for (i=0;i<NUM_CONNECTIONS;i++) {
     newobj->connections[i] = &newimage->connections[i];
     newimage->connections[i].object = newobj;
@@ -702,7 +699,7 @@ image_save(Image *image, ObjectNode obj_node, DiaContext *ctx)
   if (!color_equals(&image->border_color, &color_black))
     data_add_color(new_attribute(obj_node, "border_color"),
                   &image->border_color, ctx);
-  
+
   if (image->line_style != LINESTYLE_SOLID)
     data_add_enum(new_attribute(obj_node, "line_style"),
                  image->line_style, ctx);
@@ -711,7 +708,7 @@ image_save(Image *image, ObjectNode obj_node, DiaContext *ctx)
       image->dashlength != DEFAULT_LINESTYLE_DASHLEN)
     data_add_real(new_attribute(obj_node, "dashlength"),
                  image->dashlength, ctx);
-  
+
   data_add_boolean(new_attribute(obj_node, "draw_border"), image->draw_border, ctx);
   data_add_boolean(new_attribute(obj_node, "keep_aspect"), image->keep_aspect, ctx);
 
@@ -754,16 +751,16 @@ image_load(ObjectNode obj_node, int version, DiaContext *ctx)
   int i;
   AttributeNode attr;
   char *diafile_dir;
-  
+
   image = g_malloc0(sizeof(Image));
   elem = &image->element;
   obj = &elem->object;
-  
+
   obj->type = &image_type;
   obj->ops = &image_ops;
 
   element_load(elem, obj_node, ctx);
-  
+
   image->border_width = 0.1;
   attr = object_find_attribute(obj_node, "border_width");
   if (attr != NULL)
@@ -773,7 +770,7 @@ image_load(ObjectNode obj_node, int version, DiaContext *ctx)
   attr = object_find_attribute(obj_node, "border_color");
   if (attr != NULL)
     data_color(attribute_first_data(attr), &image->border_color, ctx);
-  
+
   image->line_style = LINESTYLE_SOLID;
   attr = object_find_attribute(obj_node, "line_style");
   if (attr != NULL)
@@ -816,7 +813,7 @@ image_load(ObjectNode obj_node, int version, DiaContext *ctx)
   image->connections[8].flags = CP_FLAGS_MAIN;
 
   image->image = NULL;
-  
+
   if (strcmp(image->file, "")!=0) {
     if (   g_path_is_absolute (image->file)
        && g_file_test (image->file, G_FILE_TEST_IS_REGULAR)) { /* Absolute pathname */
diff --git a/objects/standard/line.c b/objects/standard/line.c
index 53c57624..1d51780a 100644
--- a/objects/standard/line.c
+++ b/objects/standard/line.c
@@ -36,8 +36,6 @@
 #include "properties.h"
 #include "create.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 0.25
 
 typedef struct _LineProperties LineProperties;
@@ -46,7 +44,7 @@ typedef struct _LineProperties LineProperties;
  * \brief Standard - Line: a straight _Connection
  *
  * The Standard - Line object implements a straight connection between two points.
- * The object can grow addtional _ConnectionPoint though the internal use 
+ * The object can grow addtional _ConnectionPoint though the internal use
  * of ConnPointLine.
  *
  * \extends _Connection
@@ -74,7 +72,7 @@ static LineProperties default_properties;
 
 static ObjectChange* line_move_handle(Line *line, Handle *handle,
                                      Point *to, ConnectionPoint *cp,
-                                     HandleMoveReason reason, 
+                                     HandleMoveReason reason,
                             ModifierKeys modifiers);
 static ObjectChange* line_move(Line *line, Point *to);
 static void line_select(Line *line, Point *clicked_point,
@@ -123,14 +121,14 @@ static PropDescription line_props[] = {
     N_("Start point"), NULL },
   { "end_point", PROP_TYPE_POINT, 0,
     N_("End point"), NULL },
-  
+
   PROP_FRAME_BEGIN("gaps",0,N_("Line gaps")),
   { "absolute_start_gap", PROP_TYPE_REAL, PROP_FLAG_VISIBLE | PROP_FLAG_OPTIONAL,
     N_("Absolute start gap"), NULL, &gap_range },
   { "absolute_end_gap", PROP_TYPE_REAL, PROP_FLAG_VISIBLE | PROP_FLAG_OPTIONAL,
     N_("Absolute end gap"), NULL, &gap_range },
   PROP_FRAME_END("gaps",0),
- 
+
   PROP_DESC_END
 };
 
@@ -156,7 +154,7 @@ DiaObjectType line_type =
 {
   "Standard - Line",   /* name */
   0,                   /* version */
-  (const char **) line_icon,  /* pixmap */
+  (const char **) "res:/org/gnome/Dia/objects/standard/line.png",
   &line_type_ops,      /* ops */
   NULL,
   0,
@@ -188,7 +186,7 @@ static ObjectOps line_ops = {
 static void
 line_set_props(Line *line, GPtrArray *props)
 {
-  object_set_props_from_offsets(&line->connection.object, 
+  object_set_props_from_offsets(&line->connection.object,
                                 line_offsets, props);
   line_update_data(line);
 }
@@ -210,7 +208,7 @@ line_init_defaults() {
  * \memberof Line
  */
 static ObjectChange *
-line_add_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data) 
+line_add_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
 {
   ObjectChange *oc;
   oc = connpointline_add_point(((Line *)obj)->cpl,clicked);
@@ -224,7 +222,7 @@ line_add_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
  * \memberof Line
  */
 static ObjectChange *
-line_remove_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data) 
+line_remove_connpoint_callback(DiaObject *obj, Point *clicked, gpointer data)
 {
   ObjectChange *oc;
   oc = connpointline_remove_point(((Line *)obj)->cpl,clicked);
@@ -337,9 +335,9 @@ line_get_object_menu(Line *line, Point *clickedpoint)
 
   cpl = line->cpl;
   /* Set entries sensitive/selected etc here */
-  object_menu_items[0].active = 
+  object_menu_items[0].active =
     connpointline_can_add_point(cpl, clickedpoint);
-  object_menu_items[1].active = 
+  object_menu_items[1].active =
     connpointline_can_remove_point(cpl,clickedpoint);
   return &object_menu;
 }
@@ -392,7 +390,7 @@ line_distance_from(Line *line, Point *point)
 {
   Point *endpoints;
 
-  endpoints = &line->connection.endpoints[0]; 
+  endpoints = &line->connection.endpoints[0];
 
   if (line->absolute_start_gap || line->absolute_end_gap ) {
     Point gap_endpoints[2];  /* Visible endpoints of line */
@@ -434,7 +432,7 @@ static ObjectChange*
 line_move(Line *line, Point *to)
 {
   Point start_to_end;
-  Point *endpoints = &line->connection.endpoints[0]; 
+  Point *endpoints = &line->connection.endpoints[0];
 
   start_to_end = endpoints[1];
   point_sub(&start_to_end, &endpoints[0]);
@@ -453,7 +451,7 @@ line_draw(Line *line, DiaRenderer *renderer)
   Point gap_endpoints[2];
 
   DiaRendererClass *renderer_ops = DIA_RENDERER_GET_CLASS (renderer);
-  
+
   assert(line != NULL);
   assert(renderer != NULL);
 
@@ -472,7 +470,7 @@ line_draw(Line *line, DiaRenderer *renderer)
                                        &line->end_arrow);
   } else {
         renderer_ops->draw_line_with_arrows(renderer,
-                                           &line->connection.endpoints[0], 
+                                           &line->connection.endpoints[0],
                                            &line->connection.endpoints[1],
                                            line->line_width,
                                            &line->line_color,
@@ -501,19 +499,19 @@ line_create(Point *startpoint,
   line->line_color = attributes_get_foreground();
   line->absolute_start_gap = default_properties.absolute_start_gap;
   line->absolute_end_gap = default_properties.absolute_end_gap;
-    
+
   conn = &line->connection;
   conn->endpoints[0] = *startpoint;
   conn->endpoints[1] = *startpoint;
   point_add(&conn->endpoints[1], &defaultlen);
- 
+
   obj = &conn->object;
-  
+
   obj->type = &line_type;
   obj->ops = &line_ops;
 
   connection_init(conn, 2, 0);
-  
+
   line->cpl = connpointline_create(obj,1);
 
   attributes_get_default_line_style(&line->line_style, &line->dashlength);
@@ -543,15 +541,15 @@ line_copy(Line *line)
   int rcc = 0;
 
   conn = &line->connection;
-  
+
   newline = g_malloc0(sizeof(Line));
   newconn = &newline->connection;
   newobj = &newconn->object;
-  
+
   connection_copy(conn, newconn);
 
   newline->cpl = connpointline_copy(newobj,line->cpl,&rcc);
-  
+
   newline->line_color = line->line_color;
   newline->line_width = line->line_width;
   newline->line_style = line->line_style;
@@ -630,7 +628,7 @@ line_update_data(Line *line)
 
   connpointline_update(line->cpl);
   connpointline_putonaline(line->cpl, &start, &end, DIR_ALL);
-  
+
   connection_update_handles(conn);
 }
 
@@ -722,10 +720,10 @@ line_load(ObjectNode obj_node, int version, DiaContext *ctx)
   if (attr != NULL)
     line->line_caps = data_enum(attribute_first_data(attr), ctx);
 
-  load_arrow(obj_node, &line->start_arrow, 
+  load_arrow(obj_node, &line->start_arrow,
             "start_arrow", "start_arrow_length", "start_arrow_width", ctx);
 
-  load_arrow(obj_node, &line->end_arrow, 
+  load_arrow(obj_node, &line->end_arrow,
             "end_arrow", "end_arrow_length", "end_arrow_width", ctx);
 
   line->absolute_start_gap = 0.0;
diff --git a/objects/standard/meson.build b/objects/standard/meson.build
index 6e8d2ade..c68a29bd 100644
--- a/objects/standard/meson.build
+++ b/objects/standard/meson.build
@@ -18,5 +18,5 @@ sources = files(
 
 dia_object_desc += {
     'name': 'standard_objects',
-    'sources': sources + [tool_icons_h],
+    'sources': sources + [resources],
 }
diff --git a/objects/standard/outline.c b/objects/standard/outline.c
index 1cb5541a..cdc11c19 100644
--- a/objects/standard/outline.c
+++ b/objects/standard/outline.c
@@ -35,12 +35,10 @@
 #include "boundingbox.h"
 #include "standard-path.h"
 
-#include "tool-icons.h"
-
 #ifdef HAVE_CAIRO
 #include <cairo.h>
 
-#ifdef CAIRO_HAS_SVG_SURFACE 
+#ifdef CAIRO_HAS_SVG_SURFACE
 #include <cairo-svg.h>
 #endif
 
@@ -53,7 +51,7 @@
  */
 typedef struct _Outline {
   DiaObject object; /*!< inheritance */
-  
+
   char *name;
   real rotation;
 
@@ -64,7 +62,7 @@ typedef struct _Outline {
   Color fill_color;
   gboolean show_background;
   real line_width;
-  
+
   Handle handles[NUM_HANDLES];
   /* calculated data */
   Point ink_rect[4];
@@ -98,7 +96,7 @@ static ObjectTypeOps outline_type_ops =
 static PropNumData _rotation_range = { 0.0f, 360.0f, 1.0f };
 static PropDescription outline_props[] = {
   OBJECT_COMMON_PROPERTIES,
-  { "name", PROP_TYPE_STRING,PROP_FLAG_VISIBLE|PROP_FLAG_DONT_MERGE, 
+  { "name", PROP_TYPE_STRING,PROP_FLAG_VISIBLE|PROP_FLAG_DONT_MERGE,
     N_("Text content"),NULL },
   { "rotation", PROP_TYPE_REAL,PROP_FLAG_VISIBLE,
     N_("Rotation"), N_("Angle to rotate the outline"), &_rotation_range},
@@ -129,8 +127,7 @@ static DiaObjectType outline_type =
 {
   "Standard - Outline",   /* name */
   0,                      /* version */
-  (const char **) outline_icon, /* pixmap */
-  
+  (const char **) "res:/org/gnome/Dia/objects/standard/outline.png",
   &outline_type_ops,      /* ops */
   NULL,                   /* pixmap_file */
   0,                      /* default_user_data */
@@ -182,7 +179,7 @@ outline_init_handles (Outline *outline)
 {
   DiaObject *obj = &outline->object;
   int i;
-  
+
   for (i = 0; i < NUM_HANDLES; ++i) {
     obj->handles[i] = &outline->handles[i];
     obj->handles[i]->type = HANDLE_MAJOR_CONTROL;
@@ -200,7 +197,7 @@ outline_create (Point *startpoint,
 {
   Outline *outline;
   DiaObject *obj;
-  
+
   outline = g_new0 (Outline,1);
   obj = &outline->object;
   obj->type = &outline_type;
@@ -210,7 +207,7 @@ outline_create (Point *startpoint,
   obj->position = *startpoint;
 
   outline_init_handles (outline);
-  
+
   attributes_get_default_font (&outline->font, &outline->font_height);
 
   outline->line_width = 0; /* Not: attributes_get_default_linewidth(); it looks ugly */
@@ -257,7 +254,7 @@ outline_update_handles(Outline *outline)
 }
 /*!
  * \brief Object update function called after property change
- * 
+ *
  * Not in the object interface but very important anyway.
  * Used to recalculate the object data after a change
  * \protected \memberof Outline
@@ -287,7 +284,7 @@ outline_update_data (Outline *outline)
   cairo_surface_destroy (surface); /* in fact: unref() */
   style = dia_font_get_style (outline->font);
   /* not exact matching but almost the best we can do with the toy api */
-  cairo_select_font_face (cr, dia_font_get_family (outline->font), 
+  cairo_select_font_face (cr, dia_font_get_family (outline->font),
                           DIA_FONT_STYLE_GET_SLANT (style) == DIA_FONT_NORMAL ? CAIRO_FONT_SLANT_NORMAL : 
CAIRO_FONT_SLANT_ITALIC,
                           DIA_FONT_STYLE_GET_WEIGHT (style) < DIA_FONT_MEDIUM ? CAIRO_FONT_WEIGHT_NORMAL : 
CAIRO_FONT_WEIGHT_BOLD);
   cairo_set_font_size (cr, outline->font_height);
@@ -303,7 +300,7 @@ outline_update_data (Outline *outline)
 
   /* fix point */
   outline->ink_rect[0].x = x = obj->position.x;
-  outline->ink_rect[0].y = y = obj->position.y;  
+  outline->ink_rect[0].y = y = obj->position.y;
   /* handle rotation */
   outline->ink_rect[1].x = x + extents.width * outline->mat.xx;
   outline->ink_rect[1].y = y + extents.width * outline->mat.yx;
@@ -342,7 +339,7 @@ outline_update_data (Outline *outline)
  *
  * \memberof Outline
  */
-static void 
+static void
 outline_draw(Outline *outline, DiaRenderer *renderer)
 {
   DiaObject *obj = &outline->object;
@@ -350,7 +347,7 @@ outline_draw(Outline *outline, DiaRenderer *renderer)
   BezPoint *pts;
   real x, y;
   Point ps = {0, 0}; /* silence gcc */
-  
+
   if (!outline->path)
     return;
   DIA_RENDERER_GET_CLASS (renderer)->set_linewidth (renderer, outline->line_width);
@@ -434,7 +431,7 @@ outline_get_object_menu(Outline *outline, Point *clickedpoint)
  * \brief Set the object state from the given proeprty vector
  * \memberof Outline
  */
-static void 
+static void
 outline_set_props (Outline *outline, GPtrArray *props)
 {
   object_set_props_from_offsets(&outline->object, outline_offsets, props);
@@ -453,7 +450,7 @@ outline_distance_from (Outline *outline, Point *point)
  * \brief Move one of the objects handles
  * \memberof Outline
  */
-static ObjectChange* 
+static ObjectChange*
 outline_move_handle (Outline *outline,
                      Handle *handle,
                     Point *to, ConnectionPoint *cp,
@@ -481,22 +478,22 @@ outline_move_handle (Outline *outline,
   /* disallow everything below a certain level, otherwise the font-size could become invalid */
   if (dist > 0.1) {
     obj->position = start;
-    
+
     outline->font_height *= (dist / old_dist);
-  
+
     outline_update_data (outline);
   }
   return NULL;
 }
 /*!
  * \brief Move the whole object to the given position
- * 
+ *
  * If the object position does not change the whole object should not either.
  * This is used as a kludge to call the protected update_data() function
  *
  * \memberof Outline
  */
-static ObjectChange* 
+static ObjectChange*
 outline_move (Outline *outline, Point *to)
 {
   DiaObject *obj = &outline->object;
@@ -514,7 +511,7 @@ static DiaObject *
 outline_copy (Outline *from)
 {
   Outline *to;
-  
+
   to = g_new0 (Outline, 1);
   object_copy (&from->object, &to->object);
   outline_init_handles (to);
@@ -535,7 +532,7 @@ outline_copy (Outline *from)
  * \brief Destruction of the object
  * \memberof Outline
  */
-static void 
+static void
 outline_destroy (Outline *outline)
 {
   if (outline->path)
@@ -545,10 +542,10 @@ outline_destroy (Outline *outline)
   /* but not the object itself? */
 }
 /*!
- * \brief Change the object state regarding selection 
+ * \brief Change the object state regarding selection
  * \memberof Outline
  */
-static void 
+static void
 outline_select (Outline *outline, Point *clicked_point,
                DiaRenderer *interactive_renderer)
 {
diff --git a/objects/standard/pixmaps/meson.build b/objects/standard/pixmaps/meson.build
index bf6397c7..6e5d73ff 100644
--- a/objects/standard/pixmaps/meson.build
+++ b/objects/standard/pixmaps/meson.build
@@ -1,30 +1,4 @@
-icons = [
-    'arc.png',
-    'beziergon.png',
-    'bezierline.png',
-    'box.png',
-    'ellipse.png',
-    'image.png',
-    'line.png',
-    'outline.png',
-    'polygon.png',
-    'polyline.png',
-    'text.png',
-    'zigzagline.png'
-]
-
-#TODO: this is duplicated in app/pixmaps, lib/pixmaps and objects/standard/pixmaps.
-# Remove from all three once we port from gdk_pixbuf_csource to GResource.
-icon_pairs = []
-foreach icon_file : icons
-    icon_pairs += [icon_file.split('.')[0].underscorify() + '_icon', files(icon_file)]
-endforeach
-
-tool_icons_h = custom_target(
-    'tool-icons.h',
-    output : 'tool-icons.h',
-    capture : true,
-    command : [ gdk_pixbuf_csource,
-                '--raw',
-                '--build-list',
-                icon_pairs ])
+resources = gnome.compile_resources('dia-resources-standard',
+                                    'standard.gresource.xml',
+                                    source_dir : '.',
+                                    c_name : 'dia')
\ No newline at end of file
diff --git a/objects/standard/pixmaps/standard.gresource.xml b/objects/standard/pixmaps/standard.gresource.xml
new file mode 100644
index 00000000..c89010ed
--- /dev/null
+++ b/objects/standard/pixmaps/standard.gresource.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+  <gresource prefix="/org/gnome/Dia/objects/standard/">
+    <file>arc.png</file>
+    <file>box.png</file>
+    <file>line.png</file>
+    <file>polyline.png</file>
+    <file>beziergon.png</file>
+    <file>ellipse.png</file>
+    <file>outline.png</file>
+    <file>text.png</file>
+    <file>bezierline.png</file>
+    <file>image.png</file>
+    <file>polygon.png</file>
+    <file>zigzagline.png</file>
+  </gresource>
+</gresources>
\ No newline at end of file
diff --git a/objects/standard/polygon.c b/objects/standard/polygon.c
index 103ce79b..d2ff93f2 100644
--- a/objects/standard/polygon.c
+++ b/objects/standard/polygon.c
@@ -33,8 +33,6 @@
 #include "properties.h"
 #include "pattern.h"
 
-#include "tool-icons.h"
-
 #include "create.h"
 
 /*
@@ -130,8 +128,7 @@ static DiaObjectType polygon_type =
 {
   "Standard - Polygon",   /* name */
   0,                         /* version */
-  (const char **) polygon_icon,      /* pixmap */
-  
+  (const char **) "res:/org/gnome/Dia/objects/standard/polygon.png",
   &polygon_type_ops,       /* ops */
   NULL, /* pixmap_file */
   0, /* default_user_data */
@@ -164,7 +161,7 @@ static ObjectOps polygon_ops = {
 static void
 polygon_set_props(Polygon *polygon, GPtrArray *props)
 {
-  object_set_props_from_offsets(&polygon->poly.object, 
+  object_set_props_from_offsets(&polygon->poly.object,
                                 polygon_offsets, props);
   polygon_update_data(polygon);
 }
@@ -223,7 +220,7 @@ polygon_draw(Polygon *polygon, DiaRenderer *renderer)
   Point *points;
   int n;
   Color fill;
-  
+
   points = &poly->points[0];
   n = poly->numpoints;
 
@@ -277,7 +274,7 @@ polygon_create(Point *startpoint,
     point_add(&poly->points[2], &defaulty);
   } else {
     MultipointCreateData *pcd = (MultipointCreateData *)user_data;
-    
+
     polyshape_init(poly, pcd->num_points);
     polyshape_set_points(poly, pcd->num_points, pcd->points);
   }
@@ -312,7 +309,7 @@ polygon_copy(Polygon *polygon)
   PolyShape *poly, *newpoly;
 
   poly = &polygon->poly;
- 
+
   newpolygon = g_malloc0(sizeof(Polygon));
   newpoly = &newpolygon->poly;
 
@@ -339,7 +336,7 @@ polygon_update_data(Polygon *polygon)
   ElementBBExtras *extra = &poly->extra_spacing;
 
   polyshape_update_data(poly);
-  
+
   extra->border_trans = polygon->line_width / 2.0;
   polyshape_update_boundingbox(poly);
 
@@ -397,7 +394,7 @@ polygon_load(ObjectNode obj_node, int version, DiaContext *ctx)
 
   poly = &polygon->poly;
   obj = &poly->object;
-  
+
   obj->type = &polygon_type;
   obj->ops = &polygon_ops;
 
@@ -417,7 +414,7 @@ polygon_load(ObjectNode obj_node, int version, DiaContext *ctx)
   attr = object_find_attribute(obj_node, "inner_color");
   if (attr != NULL)
     data_color(attribute_first_data(attr), &polygon->inner_color, ctx);
-  
+
   polygon->show_background = TRUE;
   attr = object_find_attribute(obj_node, "show_background");
   if (attr != NULL)
@@ -453,7 +450,7 @@ polygon_add_corner_callback (DiaObject *obj, Point *clicked, gpointer data)
   Polygon *poly = (Polygon*) obj;
   int segment;
   ObjectChange *change;
-  
+
   segment = polygon_closest_segment(poly, clicked);
   change = polyshape_add_point(&poly->poly, segment, clicked);
 
@@ -468,7 +465,7 @@ polygon_delete_corner_callback (DiaObject *obj, Point *clicked, gpointer data)
   int handle_nr, i;
   Polygon *poly = (Polygon*) obj;
   ObjectChange *change;
-  
+
   handle = polygon_closest_handle(poly, clicked);
 
   for (i = 0; i < obj->num_handles; i++) {
diff --git a/objects/standard/polyline.c b/objects/standard/polyline.c
index 80468ca7..fae8b520 100644
--- a/objects/standard/polyline.c
+++ b/objects/standard/polyline.c
@@ -34,8 +34,6 @@
 
 #include "create.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 0.15
 
 /*!
@@ -137,8 +135,7 @@ static DiaObjectType polyline_type =
 {
   "Standard - PolyLine",   /* name */
   0,                         /* version */
-  (const char **) polyline_icon,      /* pixmap */
-  
+  (const char **) "res:/org/gnome/Dia/objects/standard/polyline.png",
   &polyline_type_ops,       /* ops */
   NULL, /* pixmap_file */
   0, /* default_user_data */
@@ -248,7 +245,7 @@ polyline_calculate_gap_endpoints(Polyline *polyline, Point *gap_endpoints)
                                           &polyline->poly.points[1],
                                           start_cp->object);
   }
-  if (connpoint_is_autogap(end_cp)) {    
+  if (connpoint_is_autogap(end_cp)) {
       gap_endpoints[1] = calculate_object_edge(&gap_endpoints[1],
                                           &polyline->poly.points[n-2],
                                           end_cp->object);
@@ -261,7 +258,7 @@ polyline_calculate_gap_endpoints(Polyline *polyline, Point *gap_endpoints)
   end_vec = gap_endpoints[1];
   point_sub(&end_vec, &polyline->poly.points[n-1]);
   point_normalize(&end_vec);
-  
+
   /* add absolute gap */
   point_add_scaled(&gap_endpoints[0], &start_vec, polyline->absolute_start_gap);
   point_add_scaled(&gap_endpoints[1], &end_vec, polyline->absolute_end_gap);
@@ -279,7 +276,7 @@ polyline_exchange_gap_points(Polyline *polyline,  Point *gap_points)
         polyline->poly.points[n-1] = tmp[1];
 }
 
-        
+
 static void
 polyline_draw(Polyline *polyline, DiaRenderer *renderer)
 {
@@ -288,7 +285,7 @@ polyline_draw(Polyline *polyline, DiaRenderer *renderer)
   PolyConn *poly = &polyline->poly;
   Point *points;
   int n;
-  
+
   points = &poly->points[0];
   n = poly->numpoints;
   renderer_ops->set_linewidth(renderer, polyline->line_width);
@@ -308,7 +305,7 @@ polyline_draw(Polyline *polyline, DiaRenderer *renderer)
   polyline_exchange_gap_points(polyline, gap_endpoints);
 }
 
-/** user_data is a struct polyline_create_data, containing an array of 
+/** user_data is a struct polyline_create_data, containing an array of
     points and a count.
     If user_data is NULL, the startpoint is used and a 1x1 line is created.
     Otherwise, the startpoint is ignored.
@@ -328,7 +325,7 @@ polyline_create(Point *startpoint,
   polyline = g_malloc0(sizeof(Polyline));
   poly = &polyline->poly;
   obj = &poly->object;
-  
+
   obj->type = &polyline_type;
   obj->ops = &polyline_ops;
 
@@ -381,9 +378,9 @@ polyline_copy(Polyline *polyline)
 {
   Polyline *newpolyline;
   PolyConn *poly, *newpoly;
-  
+
   poly = &polyline->poly;
- 
+
   newpolyline = g_malloc0(sizeof(Polyline));
   newpoly = &newpolyline->poly;
 
@@ -475,7 +472,7 @@ polyline_save(Polyline *polyline, ObjectNode obj_node,
   if (polyline->line_width != 0.1)
     data_add_real(new_attribute(obj_node, PROP_STDNAME_LINE_WIDTH),
                  polyline->line_width, ctx);
-  
+
   if (polyline->line_style != LINESTYLE_SOLID)
     data_add_enum(new_attribute(obj_node, "line_style"),
                  polyline->line_style, ctx);
@@ -526,7 +523,7 @@ polyline_load(ObjectNode obj_node, int version, DiaContext *ctx)
 
   poly = &polyline->poly;
   obj = &poly->object;
-  
+
   obj->type = &polyline_type;
   obj->ops = &polyline_ops;
 
@@ -607,7 +604,7 @@ polyline_delete_corner_callback (DiaObject *obj, Point *clicked, gpointer data)
   int handle_nr, i;
   Polyline *poly = (Polyline*) obj;
   ObjectChange *change;
-  
+
   handle = polyline_closest_handle(poly, clicked);
 
   for (i = 0; i < obj->num_handles; i++) {
diff --git a/objects/standard/textobj.c b/objects/standard/textobj.c
index 37eb0f20..3a6ea044 100644
--- a/objects/standard/textobj.c
+++ b/objects/standard/textobj.c
@@ -35,8 +35,6 @@
 #include "create.h"
 #include "message.h" /* just dia_log_message */
 
-#include "tool-icons.h"
-
 #define HANDLE_TEXT HANDLE_CUSTOM1
 
 
@@ -108,7 +106,7 @@ static ObjectTypeOps textobj_type_ops =
   (CreateFunc) textobj_create,
   (LoadFunc)   textobj_load,
   (SaveFunc)   textobj_save,
-  (GetDefaultsFunc)   NULL, 
+  (GetDefaultsFunc)   NULL,
   (ApplyDefaultsFunc) NULL
 };
 
@@ -135,7 +133,7 @@ static PropDescription textobj_props[] = {
   PROP_STD_FILL_COLOUR_OPTIONAL,
   PROP_STD_SHOW_BACKGROUND_OPTIONAL,
   { "text_margin", PROP_TYPE_REAL,  PROP_FLAG_VISIBLE | PROP_FLAG_OPTIONAL,
-    N_("Text margin"), NULL, &text_margin_range }, 
+    N_("Text margin"), NULL, &text_margin_range },
   PROP_DESC_END
 };
 
@@ -162,7 +160,7 @@ DiaObjectType textobj_type =
 {
   "Standard - Text",   /* name */
   1,                   /* version */
-  (const char **) text_icon, /* pixmap */
+  (const char **) "res:/org/gnome/Dia/objects/standard/text.png",
   &textobj_type_ops,   /* ops */
   NULL,
   0,
@@ -247,7 +245,7 @@ textobj_distance_from(Textobj *textobj, Point *point)
   }
   if (textobj->show_background)
     return distance_rectangle_point(&textobj->object.bounding_box, point);
-  return text_distance_from(textobj->text, point); 
+  return text_distance_from(textobj->text, point);
 }
 
 static void
@@ -326,20 +324,20 @@ textobj_draw(Textobj *textobj, DiaRenderer *renderer)
 static void
 textobj_valign_point(Textobj *textobj, Point* p)
 {
-  Rectangle *bb  = &(textobj->object.bounding_box); 
+  Rectangle *bb  = &(textobj->object.bounding_box);
   real offset;
   switch (textobj->vert_align){
   case VALIGN_BOTTOM:
     offset = bb->bottom - textobj->object.position.y;
-    p->y -= offset; 
+    p->y -= offset;
     break;
   case VALIGN_TOP:
     offset = bb->top - textobj->object.position.y;
-    p->y -= offset; 
+    p->y -= offset;
     break;
   case VALIGN_CENTER:
     offset = (bb->bottom + bb->top)/2 - textobj->object.position.y;
-    p->y -= offset; 
+    p->y -= offset;
     break;
   case VALIGN_FIRST_LINE:
     break;
@@ -351,7 +349,7 @@ textobj_update_data(Textobj *textobj)
   Point to2;
   DiaObject *obj = &textobj->object;
   Rectangle tx_bb;
-  
+
   text_set_position(textobj->text, &obj->position);
   text_calc_boundingbox(textobj->text, &obj->bounding_box);
 
@@ -412,7 +410,7 @@ textobj_create(Point *startpoint,
   Color col;
   DiaFont *font = NULL;
   real font_height;
-  
+
   textobj = g_malloc0(sizeof(Textobj));
   obj = &textobj->object;
   obj->enclosing_box = g_new0 (Rectangle, 1);
@@ -430,11 +428,11 @@ textobj_create(Point *startpoint,
 
   dia_font_unref(font);
   textobj->vert_align = default_properties.vert_align;
-  
+
   /* default visibility must be off to keep compatibility */
   textobj->fill_color = attributes_get_background();
   textobj->show_background = FALSE;
-  
+
   object_init(obj, 1, 0);
 
   obj->handles[0] = &textobj->text_handle;
@@ -501,7 +499,7 @@ textobj_load(ObjectNode obj_node, int version, DiaContext *ctx)
   textobj = g_malloc0(sizeof(Textobj));
   obj = &textobj->object;
   obj->enclosing_box = g_new0(Rectangle,1);
-  
+
   obj->type = &textobj_type;
   obj->ops = &textobj_ops;
 
@@ -594,7 +592,7 @@ static DiaMenu *
 textobj_get_object_menu(Textobj *textobj, Point *clickedpoint)
 {
   const Text *text = textobj->text;
-  
+
   /* Set entries sensitive/selected etc here */
   textobj_menu_items[0].active = (text->numlines > 0) ? DIAMENU_ACTIVE : 0;
 
diff --git a/objects/standard/zigzagline.c b/objects/standard/zigzagline.c
index ccfffd76..d88af6a9 100644
--- a/objects/standard/zigzagline.c
+++ b/objects/standard/zigzagline.c
@@ -33,8 +33,6 @@
 #include "autoroute.h"
 #include "create.h"
 
-#include "tool-icons.h"
-
 #define DEFAULT_WIDTH 0.15
 
 #define HANDLE_MIDDLE HANDLE_CUSTOM1
@@ -126,7 +124,7 @@ static DiaObjectType zigzagline_type =
   "Standard - ZigZagLine",   /* name */
   /* Version 0 had no autorouting and so shouldn't have it set by default. */
   1,                         /* version */
-  (const char **) zigzagline_icon, /* pixmap */
+  (const char **) "res:/org/gnome/Dia/objects/standard/zigzagline.png",
   &zigzagline_type_ops,      /* ops */
   NULL,
   0,
@@ -187,7 +185,7 @@ zigzagline_move_handle(Zigzagline *zigzagline, Handle *handle,
   assert(handle!=NULL);
   assert(to!=NULL);
 
-  change = orthconn_move_handle((OrthConn*)zigzagline, handle, to, cp, 
+  change = orthconn_move_handle((OrthConn*)zigzagline, handle, to, cp,
                                reason, modifiers);
 
   zigzagline_update_data(zigzagline);
@@ -212,10 +210,10 @@ zigzagline_draw(Zigzagline *zigzagline, DiaRenderer *renderer)
   OrthConn *orth = &zigzagline->orth;
   Point *points;
   int n;
-  
+
   points = &orth->points[0];
   n = orth->numpoints;
-  
+
   renderer_ops->set_linewidth(renderer, zigzagline->line_width);
   renderer_ops->set_linestyle(renderer, zigzagline->line_style, zigzagline->dashlength);
   renderer_ops->set_linejoin(renderer, zigzagline->line_join);
@@ -246,7 +244,7 @@ zigzagline_create(Point *startpoint,
   zigzagline = g_malloc0(sizeof(Zigzagline));
   orth = &zigzagline->orth;
   obj = &orth->object;
-  
+
   obj->type = &zigzagline_type;
   obj->ops = &zigzagline_ops;
 
@@ -289,9 +287,9 @@ zigzagline_copy(Zigzagline *zigzagline)
 {
   Zigzagline *newzigzagline;
   OrthConn *orth, *neworth;
-  
+
   orth = &zigzagline->orth;
- 
+
   newzigzagline = g_malloc0(sizeof(Zigzagline));
   neworth = &newzigzagline->orth;
 
@@ -320,10 +318,10 @@ zigzagline_update_data(Zigzagline *zigzagline)
   PolyBBExtras *extra = &orth->extra_spacing;
 
   orthconn_update_data(&zigzagline->orth);
-    
-  extra->start_long = 
-    extra->end_long = 
-    extra->middle_trans = 
+
+  extra->start_long =
+    extra->end_long =
+    extra->middle_trans =
     extra->start_trans =
     extra->end_trans = (zigzagline->line_width / 2.0);
 
@@ -381,7 +379,7 @@ zigzagline_delete_segment_callback(DiaObject *obj, Point *clicked, gpointer data
 /*!
  * \brief Upgrade the _Zigzagline to a _Bezierline
  *
- * Accessible through the object's context menu this function substitutes 
+ * Accessible through the object's context menu this function substitutes
  * the _Zigzagline with a _Bezierline. The function creates a favorable
  * representation of the original _OrthConn data of the given object.
  *
@@ -509,7 +507,7 @@ zigzagline_save(Zigzagline *zigzagline, ObjectNode obj_node,
             "end_arrow_length", "end_arrow_width", ctx);
   }
 
-  if (zigzagline->line_style != LINESTYLE_SOLID && 
+  if (zigzagline->line_style != LINESTYLE_SOLID &&
       zigzagline->dashlength != DEFAULT_LINESTYLE_DASHLEN)
     data_add_real(new_attribute(obj_node, "dashlength"),
                   zigzagline->dashlength, ctx);
@@ -531,7 +529,7 @@ zigzagline_load(ObjectNode obj_node, int version, DiaContext *ctx)
 
   orth = &zigzagline->orth;
   obj = &orth->object;
-  
+
   obj->type = &zigzagline_type;
   obj->ops = &zigzagline_ops;
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]