f24dad66bff7edd9a957d0c4fca2e478ff211f13
1 /**
2 * \brief Stock icons for Inkscape-specific menu items and buttons.
3 *
4 * Author:
5 * Derek P. Moore <derekm@hackunix.org>
6 *
7 * Copyright (C) 2004 Derek P. Moore
8 *
9 * Released under GNU GPL. Read the file 'COPYING' for more information.
10 */
12 #ifdef HAVE_CONFIG_H
13 # include "config.h"
14 #endif
16 #include <gtkmm/iconfactory.h>
17 #include <gtkmm/stock.h>
19 #include "stock.h"
20 #include "path-prefix.h"
22 namespace Inkscape {
23 namespace UI {
24 namespace Icons {
26 static Glib::ustring const get_icon_path(char const *utf8_basename);
28 void
29 init()
30 {
31 Glib::RefPtr<Gtk::IconFactory> icons = Gtk::IconFactory::create();
32 Gtk::IconSource src;
34 // repeat, for every Inkscape stock.h entry that needs an icon.
35 //Gtk::IconSet ;
36 //src.set_icon_name("");
37 //src.set_filename(get_icon_path(".svg"));
38 //.add_source(src);
39 //icons->add(Stock::, );
41 // File menu
42 // Open Recent
43 Gtk::IconSet _open_recent;
44 src.set_icon_name("OpenRecent");
45 src.set_filename(get_icon_path("open-recent.svg"));
46 _open_recent.add_source(src);
47 icons->add(Stock::OPEN_RECENT, _open_recent);
48 // Import
49 Gtk::IconSet _import;
50 src.set_icon_name("Import");
51 src.set_filename(get_icon_path("import.svg"));
52 _import.add_source(src);
53 icons->add(Stock::IMPORT, _import);
54 // Export
55 Gtk::IconSet _export;
56 src.set_icon_name("Export");
57 src.set_filename(get_icon_path("export.svg"));
58 _export.add_source(src);
59 icons->add(Stock::EXPORT, _export);
60 // Vacuum Defs
61 Gtk::IconSet _vacuum_defs;
62 src.set_icon_name("VacuumDefs");
63 src.set_filename(get_icon_path("vacuum-defs.svg"));
64 _vacuum_defs.add_source(src);
65 icons->add(Stock::VACUUM_DEFS, _vacuum_defs);
67 // Edit menu
68 // Undo History
69 Gtk::IconSet _undo_history;
70 src.set_icon_name("UndoHistory");
71 src.set_filename(get_icon_path("undo-history.svg"));
72 _undo_history.add_source(src);
73 icons->add(Stock::UNDO_HISTORY, _undo_history);
74 // Paste In Place
75 Gtk::IconSet _paste_in_place;
76 src.set_icon_name("PasteInPlace");
77 src.set_filename(get_icon_path("paste-in-place.svg"));
78 _paste_in_place.add_source(src);
79 icons->add(Stock::PASTE_IN_PLACE, _paste_in_place);
80 // Paste Style
81 Gtk::IconSet _paste_style;
82 src.set_icon_name("PasteStyle");
83 src.set_filename(get_icon_path("paste-style.svg"));
84 _paste_style.add_source(src);
85 icons->add(Stock::PASTE_STYLE, _paste_style);
86 // Duplicate
87 Gtk::IconSet _duplicate;
88 src.set_icon_name("Duplicate");
89 src.set_filename(get_icon_path("duplicate.svg"));
90 _duplicate.add_source(src);
91 icons->add(Stock::DUPLICATE, _duplicate);
92 // Clone
93 Gtk::IconSet _clone;
94 src.set_icon_name("Clone");
95 src.set_filename(get_icon_path("clone.svg"));
96 _clone.add_source(src);
97 icons->add(Stock::CLONE, _clone);
98 // Unlink Clone
99 Gtk::IconSet _clone_unlink;
100 src.set_icon_name("CloneUnlink");
101 src.set_filename(get_icon_path("clone-unlink.svg"));
102 _clone_unlink.add_source(src);
103 icons->add(Stock::CLONE_UNLINK, _clone_unlink);
104 // Make Bitmap
105 Gtk::IconSet _make_bitmap;
106 src.set_icon_name("MakeBitmap");
107 src.set_filename(get_icon_path("make-bitmap.svg"));
108 _make_bitmap.add_source(src);
109 icons->add(Stock::MAKE_BITMAP, _make_bitmap);
110 // Select All
111 Gtk::IconSet _select_all;
112 src.set_icon_name("SelectAll");
113 src.set_filename(get_icon_path("select-all.svg"));
114 _select_all.add_source(src);
115 icons->add(Stock::SELECT_ALL, _select_all);
116 // XML Editor
117 Gtk::IconSet _xml_editor;
118 src.set_icon_name("XmlEditor");
119 src.set_filename(get_icon_path("xml-editor.svg"));
120 _xml_editor.add_source(src);
121 icons->add(Stock::XML_EDITOR, _xml_editor);
123 // View menu
124 // Zoom
125 Gtk::IconSet _zoom;
126 src.set_icon_name("Zoom");
127 src.set_filename(get_icon_path("zoom.svg"));
128 _zoom.add_source(src);
129 icons->add(Stock::ZOOM, _zoom);
130 // Zoom In (use Inkscape icon for consistency over Gtk::Stock::ZOOM_IN)
131 Gtk::IconSet _zoom_in;
132 src.set_icon_name("ZoomIn");
133 src.set_filename(get_icon_path("zoom-in.svg"));
134 _zoom_in.add_source(src);
135 icons->add(Stock::ZOOM_IN, _zoom_in);
136 // Zoom Out (use Inkscape icon for consistency over Gtk::Stock::ZOOM_OUT)
137 Gtk::IconSet _zoom_out;
138 src.set_icon_name("ZoomOut");
139 src.set_filename(get_icon_path("zoom-out.svg"));
140 _zoom_out.add_source(src);
141 icons->add(Stock::ZOOM_OUT, _zoom_out);
142 // Zoom 100% (use Inkscape icon for consistency over Gtk::Stock::ZOOM_100)
143 Gtk::IconSet _zoom_100;
144 src.set_icon_name("Zoom100");
145 src.set_filename(get_icon_path("zoom-100.svg"));
146 _zoom_100.add_source(src);
147 icons->add(Stock::ZOOM_100, _zoom_100);
148 // Zoom 50%
149 Gtk::IconSet _zoom_50;
150 src.set_icon_name("Zoom50");
151 src.set_filename(get_icon_path("zoom-50.svg"));
152 _zoom_50.add_source(src);
153 icons->add(Stock::ZOOM_50, _zoom_50);
154 // Zoom 200%
155 Gtk::IconSet _zoom_200;
156 src.set_icon_name("Zoom200");
157 src.set_filename(get_icon_path("zoom-200.svg"));
158 _zoom_200.add_source(src);
159 icons->add(Stock::ZOOM_200, _zoom_200);
160 // Zoom Selection
161 Gtk::IconSet _zoom_selection;
162 src.set_icon_name("ZoomSelection");
163 src.set_filename(get_icon_path("zoom-selection.svg"));
164 _zoom_selection.add_source(src);
165 icons->add(Stock::ZOOM_SELECTION, _zoom_selection);
166 // Zoom Drawing
167 Gtk::IconSet _zoom_drawing;
168 src.set_icon_name("ZoomDrawing");
169 src.set_filename(get_icon_path("zoom-drawing.svg"));
170 _zoom_drawing.add_source(src);
171 icons->add(Stock::ZOOM_DRAWING, _zoom_drawing);
172 // Zoom Page (use Inkscape icon for consistency over Gtk::Stock::ZOOM_FIT)
173 Gtk::IconSet _zoom_page;
174 src.set_icon_name("ZoomPage");
175 src.set_filename(get_icon_path("zoom-page.svg"));
176 _zoom_page.add_source(src);
177 icons->add(Stock::ZOOM_PAGE, _zoom_page);
178 // Zoom Width
179 Gtk::IconSet _zoom_width;
180 src.set_icon_name("ZoomWidth");
181 src.set_filename(get_icon_path("zoom-width.svg"));
182 _zoom_width.add_source(src);
183 icons->add(Stock::ZOOM_WIDTH, _zoom_width);
184 // Zoom Previous
185 Gtk::IconSet _zoom_prev;
186 src.set_icon_name("ZoomPrev");
187 src.set_filename(get_icon_path("zoom-prev.svg"));
188 _zoom_prev.add_source(src);
189 icons->add(Stock::ZOOM_PREV, _zoom_prev);
190 // Zoom Next
191 Gtk::IconSet _zoom_next;
192 src.set_icon_name("ZoomNext");
193 src.set_filename(get_icon_path("zoom-next.svg"));
194 _zoom_next.add_source(src);
195 icons->add(Stock::ZOOM_NEXT, _zoom_next);
196 // Show/Hide Dialogs
197 Gtk::IconSet _show_hide_dialogs;
198 src.set_icon_name("ShowHideDialogs");
199 src.set_filename(get_icon_path("show-hide-dialogs.svg"));
200 _show_hide_dialogs.add_source(src);
201 icons->add(Stock::SHOW_HIDE_DIALOGS, _show_hide_dialogs);
202 // Grid
203 Gtk::IconSet _grid;
204 src.set_icon_name("Grid");
205 src.set_filename(get_icon_path("grid.svg"));
206 _grid.add_source(src);
207 icons->add(Stock::GRID, _grid);
208 // Guides
209 Gtk::IconSet _guides;
210 src.set_icon_name("Guides");
211 src.set_filename(get_icon_path("guides.svg"));
212 _guides.add_source(src);
213 icons->add(Stock::GUIDES, _guides);
214 // Fullscreen
215 Gtk::IconSet _fullscreen;
216 src.set_icon_name("Fullscreen");
217 src.set_filename(get_icon_path("fullscreen.svg"));
218 _fullscreen.add_source(src);
219 icons->add(Stock::FULLSCREEN, _fullscreen);
220 // Previous Window
221 Gtk::IconSet _window_prev;
222 src.set_icon_name("WindowPrev");
223 src.set_filename(get_icon_path("window-prev.svg"));
224 _window_prev.add_source(src);
225 icons->add(Stock::WINDOW_PREV, _window_prev);
226 // Next Window
227 Gtk::IconSet _window_next;
228 src.set_icon_name("WindowNext");
229 src.set_filename(get_icon_path("window-next.svg"));
230 _window_next.add_source(src);
231 icons->add(Stock::WINDOW_NEXT, _window_next);
232 // Duplicate Window
233 Gtk::IconSet _window_duplicate;
234 src.set_icon_name("WindowDuplicate");
235 src.set_filename(get_icon_path("window-duplicate.svg"));
236 _window_duplicate.add_source(src);
237 icons->add(Stock::WINDOW_DUPLICATE, _window_duplicate);
239 // Layer menu
240 // New Layer
241 icons->add(Stock::LAYER_NEW,
242 Gtk::IconSet::lookup_default(Gtk::Stock::NEW));
243 // Delete Layer
244 icons->add(Stock::LAYER_DELETE,
245 Gtk::IconSet::lookup_default(Gtk::Stock::DELETE));
246 // Raise Layer
247 icons->add(Stock::LAYER_RAISE,
248 Gtk::IconSet::lookup_default(Gtk::Stock::GO_UP));
249 // Lower Layer
250 icons->add(Stock::LAYER_LOWER,
251 Gtk::IconSet::lookup_default(Gtk::Stock::GO_DOWN));
252 // Layer to Top
253 icons->add(Stock::LAYER_TO_TOP,
254 Gtk::IconSet::lookup_default(Gtk::Stock::GOTO_TOP));
255 // Layer to Bottom
256 icons->add(Stock::LAYER_TO_BOTTOM,
257 Gtk::IconSet::lookup_default(Gtk::Stock::GOTO_BOTTOM));
259 // Object menu
260 // Fill and Stoke
261 Gtk::IconSet _fill_stroke;
262 src.set_icon_name("FillAndStroke");
263 src.set_filename(get_icon_path("fill-stroke.svg"));
264 _fill_stroke.add_source(src);
265 icons->add(Stock::FILL_STROKE, _fill_stroke);
266 // Object Properties
267 Gtk::IconSet _object_properties;
268 src.set_icon_name("ObjectProperties");
269 src.set_filename(get_icon_path("object-properties.svg"));
270 _object_properties.add_source(src);
271 icons->add(Stock::OBJECT_PROPERTIES, _object_properties);
272 // Group
273 Gtk::IconSet _group;
274 src.set_icon_name("Group");
275 src.set_filename(get_icon_path("group.svg"));
276 _group.add_source(src);
277 icons->add(Stock::GROUP, _group);
278 // Ungroup
279 Gtk::IconSet _ungroup;
280 src.set_icon_name("Ungroup");
281 src.set_filename(get_icon_path("ungroup.svg"));
282 _ungroup.add_source(src);
283 icons->add(Stock::UNGROUP, _ungroup);
284 // Raise
285 Gtk::IconSet _raise;
286 src.set_icon_name("Raise");
287 src.set_filename(get_icon_path("raise.svg"));
288 _raise.add_source(src);
289 icons->add(Stock::RAISE, _raise);
290 // Lower
291 Gtk::IconSet _lower;
292 src.set_icon_name("Lower");
293 src.set_filename(get_icon_path("lower.svg"));
294 _lower.add_source(src);
295 icons->add(Stock::LOWER, _lower);
296 // Raise to Top
297 Gtk::IconSet _raise_to_top;
298 src.set_icon_name("RaiseToTop");
299 src.set_filename(get_icon_path("raise-to-top.svg"));
300 _raise_to_top.add_source(src);
301 icons->add(Stock::RAISE_TO_TOP, _raise_to_top);
302 // Lower to Bottom
303 Gtk::IconSet _lower_to_bottom;
304 src.set_icon_name("LowerToBottom");
305 src.set_filename(get_icon_path("lower-to-bottom.svg"));
306 _lower_to_bottom.add_source(src);
307 icons->add(Stock::LOWER_TO_BOTTOM, _lower_to_bottom);
308 // Move to Next Layer
309 Gtk::IconSet _move_to_next_layer;
310 src.set_icon_name("MoveToNextLayer");
311 src.set_filename(get_icon_path("move-to-next-layer.svg"));
312 _move_to_next_layer.add_source(src);
313 icons->add(Stock::MOVE_TO_NEXT_LAYER, _move_to_next_layer);
314 // Move to Previous Layer
315 Gtk::IconSet _move_to_prev_layer;
316 src.set_icon_name("MoveToPrevLayer");
317 src.set_filename(get_icon_path("move-to-prev-layer.svg"));
318 _move_to_prev_layer.add_source(src);
319 icons->add(Stock::MOVE_TO_PREV_LAYER, _move_to_prev_layer);
320 // Move to Top Layer
321 Gtk::IconSet _move_to_top_layer;
322 src.set_icon_name("MoveToTopLayer");
323 src.set_filename(get_icon_path("move-to-top-layer.svg"));
324 _move_to_top_layer.add_source(src);
325 icons->add(Stock::MOVE_TO_TOP_LAYER, _move_to_top_layer);
326 // Move to Bottom Layer
327 Gtk::IconSet _move_to_bottom_layer;
328 src.set_icon_name("MoveToBottomLayer");
329 src.set_filename(get_icon_path("move-to-bottom-layer.svg"));
330 _move_to_bottom_layer.add_source(src);
331 icons->add(Stock::MOVE_TO_BOTTOM_LAYER, _move_to_bottom_layer);
332 // Rotate 90 CW
333 Gtk::IconSet _rotate_90_cw;
334 src.set_icon_name("Rotate90CW");
335 src.set_filename(get_icon_path("rotate-90-cw.svg"));
336 _rotate_90_cw.add_source(src);
337 icons->add(Stock::ROTATE_90_CW, _rotate_90_cw);
338 // Rotate 90 CCW
339 Gtk::IconSet _rotate_90_ccw;
340 src.set_icon_name("Rotate90CCW");
341 src.set_filename(get_icon_path("rotate-90-ccw.svg"));
342 _rotate_90_ccw.add_source(src);
343 icons->add(Stock::ROTATE_90_CCW, _rotate_90_ccw);
344 // Flip Horizontal
345 Gtk::IconSet _flip_horiz;
346 src.set_icon_name("FlipHoriz");
347 src.set_filename(get_icon_path("flip-horiz.svg"));
348 _flip_horiz.add_source(src);
349 icons->add(Stock::FLIP_HORIZ, _flip_horiz);
350 // Flip Vertical
351 Gtk::IconSet _flip_vert;
352 src.set_icon_name("FlipVert");
353 src.set_filename(get_icon_path("flip-vert.svg"));
354 _flip_vert.add_source(src);
355 icons->add(Stock::FLIP_VERT, _flip_vert);
356 // Transform
357 Gtk::IconSet _transform;
358 src.set_icon_name("Transform");
359 src.set_filename(get_icon_path("transform.svg"));
360 _transform.add_source(src);
361 icons->add(Stock::TRANSFORM, _transform);
362 // Transformation
363 Gtk::IconSet _transformation;
364 src.set_icon_name("Transformation");
365 src.set_filename(get_icon_path("transform.svg"));
366 _transformation.add_source(src);
367 icons->add(Stock::TRANSFORMATION, _transformation);
368 // Align and Distribute
369 Gtk::IconSet _align_distribute;
370 src.set_icon_name("AlignAndDistribute");
371 src.set_filename(get_icon_path("align-distribute.svg"));
372 _align_distribute.add_source(src);
373 icons->add(Stock::ALIGN_DISTRIBUTE, _align_distribute);
375 // Path menu
376 // Object to Path
377 Gtk::IconSet _object_to_path;
378 src.set_icon_name("ObjectToPath");
379 src.set_filename(get_icon_path("object-to-path.svg"));
380 _object_to_path.add_source(src);
381 icons->add(Stock::OBJECT_TO_PATH, _object_to_path);
382 // Stroke to Path
383 Gtk::IconSet _stroke_to_path;
384 src.set_icon_name("StrokeToPath");
385 src.set_filename(get_icon_path("stroke-to-path.svg"));
386 _stroke_to_path.add_source(src);
387 icons->add(Stock::STROKE_TO_PATH, _stroke_to_path);
388 // Trace
389 Gtk::IconSet _trace;
390 src.set_icon_name("Trace");
391 src.set_filename(get_icon_path("trace.svg"));
392 _trace.add_source(src);
393 icons->add(Stock::TRACE, _trace);
394 // Union
395 Gtk::IconSet _union;
396 src.set_icon_name("Union");
397 src.set_filename(get_icon_path("union.svg"));
398 _union.add_source(src);
399 icons->add(Stock::UNION, _union);
400 // Difference
401 Gtk::IconSet _difference;
402 src.set_icon_name("Difference");
403 src.set_filename(get_icon_path("difference.svg"));
404 _difference.add_source(src);
405 icons->add(Stock::DIFFERENCE, _difference);
406 // Intersection
407 Gtk::IconSet _intersection;
408 src.set_icon_name("Intersection");
409 src.set_filename(get_icon_path("intersection.svg"));
410 _intersection.add_source(src);
411 icons->add(Stock::INTERSECTION, _intersection);
412 // Exclusion
413 Gtk::IconSet _exclusion;
414 src.set_icon_name("Exclusion");
415 src.set_filename(get_icon_path("exclusion.svg"));
416 _exclusion.add_source(src);
417 icons->add(Stock::EXCLUSION, _exclusion);
418 // Division
419 Gtk::IconSet _division;
420 src.set_icon_name("Division");
421 src.set_filename(get_icon_path("division.svg"));
422 _division.add_source(src);
423 icons->add(Stock::DIVISION, _division);
424 // Cut Path
425 Gtk::IconSet _cut_path;
426 src.set_icon_name("CutPath");
427 src.set_filename(get_icon_path("cut-path.svg"));
428 _cut_path.add_source(src);
429 icons->add(Stock::CUT_PATH, _cut_path);
430 // Combine
431 Gtk::IconSet _combine;
432 src.set_icon_name("Combine");
433 src.set_filename(get_icon_path("combine.svg"));
434 _combine.add_source(src);
435 icons->add(Stock::COMBINE, _combine);
436 // Break Apart
437 Gtk::IconSet _break_apart;
438 src.set_icon_name("BreakApart");
439 src.set_filename(get_icon_path("break-apart.svg"));
440 _break_apart.add_source(src);
441 icons->add(Stock::BREAK_APART, _break_apart);
442 // Inset
443 Gtk::IconSet _inset;
444 src.set_icon_name("Inset");
445 src.set_filename(get_icon_path("inset.svg"));
446 _inset.add_source(src);
447 icons->add(Stock::INSET, _inset);
448 // Outset
449 Gtk::IconSet _outset;
450 src.set_icon_name("Outset");
451 src.set_filename(get_icon_path("outset.svg"));
452 _outset.add_source(src);
453 icons->add(Stock::OUTSET, _outset);
454 // Dynamic Offset
455 Gtk::IconSet _offset_dynamic;
456 src.set_icon_name("OffsetDynamic");
457 src.set_filename(get_icon_path("offset-dynamic.svg"));
458 _offset_dynamic.add_source(src);
459 icons->add(Stock::OFFSET_DYNAMIC, _offset_dynamic);
460 // Linked Offset
461 Gtk::IconSet _offset_linked;
462 src.set_icon_name("OffsetLinked");
463 src.set_filename(get_icon_path("offset-linked.svg"));
464 _offset_linked.add_source(src);
465 icons->add(Stock::OFFSET_LINKED, _offset_linked);
466 // Simplify
467 Gtk::IconSet _simplify;
468 src.set_icon_name("Simplify");
469 src.set_filename(get_icon_path("simplify.svg"));
470 _simplify.add_source(src);
471 icons->add(Stock::SIMPLIFY, _simplify);
472 // Reverse
473 Gtk::IconSet _reverse;
474 src.set_icon_name("Reverse");
475 src.set_filename(get_icon_path("reverse.svg"));
476 _reverse.add_source(src);
477 icons->add(Stock::REVERSE, _reverse);
479 // Help menu
480 // Keys and Mouse
481 Gtk::IconSet _keys_mouse;
482 src.set_icon_name("KeysAndMouse");
483 src.set_filename(get_icon_path("keys-mouse.svg"));
484 _keys_mouse.add_source(src);
485 icons->add(Stock::KEYS_MOUSE, _keys_mouse);
486 // Tutorials
487 Gtk::IconSet _tutorials;
488 src.set_icon_name("Tutorials");
489 src.set_filename(get_icon_path("tutorials.svg"));
490 _tutorials.add_source(src);
491 icons->add(Stock::TUTORIALS, _tutorials);
492 // About Inkscape
493 Gtk::IconSet _about;
494 src.set_icon_name("About");
495 src.set_filename(get_icon_path("inkscape.svg"));
496 _about.add_source(src);
497 icons->add(Stock::ABOUT, _about);
498 // About Splash
499 Gtk::IconSet _about_splash;
500 src.set_filename(get_icon_path("about41.svg"));
501 src.set_size(Gtk::IconSize::register_new("about", 750, 625));
502 _about_splash.add_source(src);
503 icons->add(Stock::ABOUT_SPLASH, _about_splash);
504 // 42 Don't Panic!
505 Gtk::IconSet _about_42;
506 src.set_filename(get_icon_path("dontpanic.svg"));
507 src.set_size(Gtk::IconSize::register_new("dontpanic", 250, 172));
508 _about_42.add_source(src);
509 icons->add(Stock::ABOUT_42, _about_42);
510 // Quick Help
511 Gtk::IconSet _about_quick_help;
512 src.set_filename(get_icon_path("quick-help.svg"));
513 src.set_size(Gtk::IconSize::from_name("about"));
514 _about_quick_help.add_source(src);
515 icons->add(Stock::ABOUT_QUICK_HELP, _about_quick_help);
517 // Tools toolbar
518 // Select tool
519 Gtk::IconSet _tool_select;
520 src.set_icon_name("ToolSelect");
521 src.set_filename(get_icon_path("tool-select.svg"));
522 _tool_select.add_source(src);
523 icons->add(Stock::TOOL_SELECT, _tool_select);
524 // Node tool
525 Gtk::IconSet _tool_node;
526 src.set_icon_name("ToolNode");
527 src.set_filename(get_icon_path("tool-node.svg"));
528 _tool_node.add_source(src);
529 icons->add(Stock::TOOL_NODE, _tool_node);
530 // Zoom tool
531 Gtk::IconSet _tool_zoom;
532 src.set_icon_name("ToolZoom");
533 src.set_filename(get_icon_path("tool-zoom.svg"));
534 _tool_zoom.add_source(src);
535 icons->add(Stock::TOOL_ZOOM, _tool_zoom);
536 // Rect tool
537 Gtk::IconSet _tool_rect;
538 src.set_icon_name("ToolRect");
539 src.set_filename(get_icon_path("tool-rect.svg"));
540 _tool_rect.add_source(src);
541 icons->add(Stock::TOOL_RECT, _tool_rect);
542 // Arc tool
543 Gtk::IconSet _tool_arc;
544 src.set_icon_name("ToolArc");
545 src.set_filename(get_icon_path("tool-arc.svg"));
546 _tool_arc.add_source(src);
547 icons->add(Stock::TOOL_ARC, _tool_arc);
548 // Star tool
549 Gtk::IconSet _tool_star;
550 src.set_icon_name("ToolStar");
551 src.set_filename(get_icon_path("tool-star.svg"));
552 _tool_star.add_source(src);
553 icons->add(Stock::TOOL_STAR, _tool_star);
554 // Spiral tool
555 Gtk::IconSet _tool_spiral;
556 src.set_icon_name("ToolSpiral");
557 src.set_filename(get_icon_path("tool-spiral.svg"));
558 _tool_spiral.add_source(src);
559 icons->add(Stock::TOOL_SPIRAL, _tool_spiral);
560 // Freehand tool
561 Gtk::IconSet _tool_freehand;
562 src.set_icon_name("ToolFreehand");
563 src.set_filename(get_icon_path("tool-freehand.svg"));
564 _tool_freehand.add_source(src);
565 icons->add(Stock::TOOL_FREEHAND, _tool_freehand);
566 // Pen tool
567 Gtk::IconSet _tool_pen;
568 src.set_icon_name("ToolPen");
569 src.set_filename(get_icon_path("tool-pen.svg"));
570 _tool_pen.add_source(src);
571 icons->add(Stock::TOOL_PEN, _tool_pen);
572 // DynaDraw tool
573 Gtk::IconSet _tool_dynadraw;
574 src.set_icon_name("ToolDynaDraw");
575 src.set_filename(get_icon_path("tool-dynadraw.svg"));
576 _tool_dynadraw.add_source(src);
577 icons->add(Stock::TOOL_DYNADRAW, _tool_dynadraw);
578 // Text tool
579 Gtk::IconSet _tool_text;
580 src.set_icon_name("ToolText");
581 src.set_filename(get_icon_path("tool-text.svg"));
582 _tool_text.add_source(src);
583 icons->add(Stock::TOOL_TEXT, _tool_text);
584 // Dropper tool
585 Gtk::IconSet _tool_dropper;
586 src.set_icon_name("ToolDropper");
587 src.set_filename(get_icon_path("tool-dropper.svg"));
588 _tool_dropper.add_source(src);
589 icons->add(Stock::TOOL_DROPPER, _tool_dropper);
591 // Select Tool controls
592 Gtk::IconSource small;
593 small.set_size(Gtk::ICON_SIZE_SMALL_TOOLBAR);
594 // Transform Stroke
595 Gtk::IconSet _transform_stroke;
596 small.set_icon_name("TransformStroke");
597 small.set_filename(get_icon_path("transform-stroke.svg"));
598 _transform_stroke.add_source(small);
599 icons->add(Stock::TRANSFORM_STROKE, _transform_stroke);
600 // Transform Corners
601 Gtk::IconSet _transform_corners;
602 small.set_icon_name("TransformCorners");
603 small.set_filename(get_icon_path("transform-corners.svg"));
604 _transform_corners.add_source(small);
605 icons->add(Stock::TRANSFORM_CORNERS, _transform_corners);
606 // Transform Gradient
607 Gtk::IconSet _transform_gradient;
608 small.set_icon_name("TransformGradient");
609 small.set_filename(get_icon_path("transform-gradient.svg"));
610 _transform_gradient.add_source(small);
611 icons->add(Stock::TRANSFORM_GRADIENT, _transform_gradient);
612 // Transform Pattern
613 Gtk::IconSet _transform_pattern;
614 small.set_icon_name("TransformPattern");
615 small.set_filename(get_icon_path("transform-pattern.svg"));
616 _transform_pattern.add_source(small);
617 icons->add(Stock::TRANSFORM_PATTERN, _transform_pattern);
619 // Calligraphy Tool controls
620 // Use Pressure
621 Gtk::IconSet _use_pressure;
622 small.set_icon_name("UsePressure");
623 small.set_filename(get_icon_path("use-pressure.svg"));
624 _use_pressure.add_source(small);
625 icons->add(Stock::USE_PRESSURE, _use_pressure);
626 // Use Tilt
627 Gtk::IconSet _use_tilt;
628 small.set_icon_name("UseTilt");
629 small.set_filename(get_icon_path("use-tilt.svg"));
630 _use_tilt.add_source(small);
631 icons->add(Stock::USE_TILT, _use_tilt);
633 // Session playback dialog
634 // Rewind
635 Gtk::IconSet _session_rewind;
636 src.set_icon_name("Rewind");
637 src.set_filename(get_icon_path("session-rew.svg"));
638 _session_rewind.add_source(src);
639 icons->add(Stock::SESSION_PLAYBACK_REW, _session_rewind);
640 // Step backwards
641 Gtk::IconSet _session_stepback;
642 src.set_icon_name("StepBackward");
643 src.set_filename(get_icon_path("session-back1.svg"));
644 _session_stepback.add_source(src);
645 icons->add(Stock::SESSION_PLAYBACK_STEPBACK, _session_stepback);
646 // Pause
647 Gtk::IconSet _session_pause;
648 src.set_icon_name("Pause");
649 src.set_filename(get_icon_path("session-pause.svg"));
650 _session_pause.add_source(src);
651 icons->add(Stock::SESSION_PLAYBACK_PAUSE, _session_pause);
652 // Step forwards
653 Gtk::IconSet _session_stepforward;
654 src.set_icon_name("StepForward");
655 src.set_filename(get_icon_path("session-adv1.svg"));
656 _session_stepforward.add_source(src);
657 icons->add(Stock::SESSION_PLAYBACK_STEPFORWARD, _session_stepforward);
658 // Play
659 Gtk::IconSet _session_play;
660 src.set_icon_name("Play");
661 src.set_filename(get_icon_path("session-play.svg"));
662 _session_play.add_source(src);
663 icons->add(Stock::SESSION_PLAYBACK_PLAY, _session_play);
665 icons->add_default();
666 }
668 /** Returns the icon filename (in the operating system encoding used for filenames) whose basename
669 in utf8 encoding is \a utf8_basename.
670 **/
671 static Glib::ustring const
672 get_icon_path(char const *const utf8_basename)
673 {
674 /* Given that INKSCAPE_PIXMAPDIR is often a compiled constant, I suppose we should
675 interpret it as utf8: under windows, the encoding for filenames can change from
676 day to day even for a given file. */
677 static char *const opsys_iconsdir = g_filename_from_utf8(INKSCAPE_PIXMAPDIR, -1,
678 NULL, NULL, NULL);
680 g_assert(g_utf8_validate(utf8_basename, -1, NULL));
681 char *const opsys_basename = g_filename_from_utf8(utf8_basename, -1, NULL, NULL, NULL);
682 char *const ret_cstr = g_build_filename(opsys_iconsdir, opsys_basename, NULL);
683 Glib::ustring const ret(ret_cstr);
684 g_free(ret_cstr);
685 g_free(opsys_basename);
686 return ret;
687 }
689 } // namespace Icon
690 } // namespace UI
691 } // namespace Inkscape
693 /*
694 Local Variables:
695 mode:c++
696 c-file-style:"stroustrup"
697 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
698 indent-tabs-mode:nil
699 fill-column:99
700 End:
701 */
702 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :