.
1 /*
2 Copyright (C) 2015 Johan Mattsson
3
4 This library is free software; you can redistribute it and/or modify
5 it under the terms of the GNU Lesser General Public License as
6 published by the Free Software Foundation; either version 3 of the
7 License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful, but
10 WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13 */
14
15 using Cairo;
16 using Math;
17
18 namespace BirdFont {
19
20 public class HiddenTools : ToolCollection {
21
22 public Gee.ArrayList<Expander> expanders;
23 public Expander hidden_expander;
24
25 public static Tool bezier_line;
26 public static Tool bezier_corner;
27 public static Tool move_along_axis;
28
29 public HiddenTools () {
30 hidden_expander = new Expander ();
31 expanders = new Gee.ArrayList<Expander> ();
32
33 Tool zoom_in = new Tool ("zoom_in", t_("Zoom in"));
34 zoom_in.select_action.connect ((self) => {
35 DrawingTools.zoom_tool.store_current_view ();
36 GlyphCanvas.current_display.zoom_in ();
37 });
38 hidden_expander.add_tool (zoom_in);
39
40 Tool zoom_out = new Tool ("zoom_out", t_("Zoom out"));
41 zoom_out.select_action.connect ((self) => {
42 DrawingTools.zoom_tool.store_current_view ();
43 GlyphCanvas.current_display.zoom_out ();
44 });
45 hidden_expander.add_tool (zoom_out);
46
47 bezier_line = new Tool ("bezier_line", t_("Convert the last segment to a straight line"));
48 bezier_line.select_action.connect ((self) => {
49 DrawingTools.bezier_tool.switch_to_line_mode ();
50 });
51 bezier_line.is_tool_modifier = true;
52 hidden_expander.add_tool (bezier_line);
53 bezier_line.set_tool_visibility (false);
54
55 bezier_corner = new Tool ("bezier_corner", t_("Convert the last control point to a corner node"));
56 bezier_corner.select_action.connect ((self) => {
57 DrawingTools.bezier_tool.create_corner ();
58 });
59 bezier_corner.is_tool_modifier = true;
60 hidden_expander.add_tool (bezier_corner);
61 bezier_corner.set_tool_visibility (false);
62
63 move_along_axis = new Tool ("bezier", t_("Move handle along axis"));
64 move_along_axis.select_action.connect ((self) => {
65 Tool t = MainWindow.get_toolbox ().get_current_tool ();
66 if (t is BezierTool) {
67 DrawingTools.bezier_tool.move_handle_on_axis ();
68 } else if (t is PenTool || t is PointTool) {
69 PenTool.move_handle_on_axis ();
70 }
71 });
72 move_along_axis.is_tool_modifier = true;
73 hidden_expander.add_tool (move_along_axis);
74 move_along_axis.set_tool_visibility (false);
75
76 expanders.add (hidden_expander);
77 }
78
79 public override Gee.ArrayList<Expander> get_expanders () {
80 return expanders;
81 }
82 }
83
84 }
85