Mercurial > projects > doodle
comparison doodle/main/prog/doodler.d @ 60:e64baac3efb2
Attempt at a templatised palette
author | David Bryant <bagnose@gmail.com> |
---|---|
date | Tue, 10 Aug 2010 22:55:54 +0930 |
parents | c63719604adb |
children | 08ffc44fc21a |
comparison
equal
deleted
inserted
replaced
59:860e18c87255 | 60:e64baac3efb2 |
---|---|
10 import doodle.dia.tool_layer; | 10 import doodle.dia.tool_layer; |
11 | 11 |
12 import doodle.fig.tools; | 12 import doodle.fig.tools; |
13 | 13 |
14 import doodle.gtk.canvas; | 14 import doodle.gtk.canvas; |
15 import doodle.gtk.palette; | 15 import doodle.gtk.palette2; |
16 | 16 |
17 import gtk.Main; | 17 import gtk.Main; |
18 import gtk.MainWindow; | 18 import gtk.MainWindow; |
19 import gtk.VBox; | 19 import gtk.VBox; |
20 | 20 |
25 this(string[] args) { | 25 this(string[] args) { |
26 Main.init(args); | 26 Main.init(args); |
27 auto window = new MainWindow("Doodle"); | 27 auto window = new MainWindow("Doodle"); |
28 auto vbox = new VBox(false, 0); | 28 auto vbox = new VBox(false, 0); |
29 | 29 |
30 auto palette = new Palette; | 30 auto palette = new Palette2!Tool; |
31 _palette = palette; | 31 _palette = palette; |
32 IPalette.Item[] items = [ | 32 |
33 { "select.svg", "Select", "Select and modify elements", &paletteCallback }, | |
34 { "rectangle.svg", "Rectangle", "Create rectangle", &paletteCallback }, | |
35 { "ellipse.svg", "Ellipse", "Create ellipse", &paletteCallback }, | |
36 { "polyline.svg", "Polyline", "Create polyline", &paletteCallback } | |
37 ]; | |
38 _palette.configure(items); | |
39 vbox.packStart(palette, false, false, 0); | 33 vbox.packStart(palette, false, false, 0); |
40 | 34 |
41 Tool[] tools; | 35 Tool[] tools; |
42 tools ~= new PanTool; | 36 tools ~= new PanTool; |
43 tools ~= new ZoomTool; | 37 tools ~= new ZoomTool; |
44 tools ~= new SelectTool; | 38 tools ~= new SelectTool; |
45 auto toolLayer = new ToolLayer(tools, this); | 39 auto toolLayer = new ToolLayer(tools, this); |
46 _toolStack = toolLayer; | 40 _toolStack = toolLayer; |
47 | 41 |
42 auto gridLayer = new GridLayer; | |
43 | |
48 auto diagramLayer = new DiagramLayer; | 44 auto diagramLayer = new DiagramLayer; |
49 _diagram = diagramLayer; | 45 _diagram = diagramLayer; |
50 | |
51 auto gridLayer = new GridLayer; | |
52 | 46 |
53 Layer[] layers; | 47 Layer[] layers; |
54 layers ~= new PageLayer; | 48 layers ~= new PageLayer; |
55 layers ~= gridLayer; | 49 layers ~= gridLayer; |
56 layers ~= toolLayer; | 50 layers ~= toolLayer; |
57 auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0); | 51 auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0); |
58 | 52 |
59 vbox.packStart(canvas, true, true, 0); | 53 vbox.packStart(canvas, true, true, 0); |
54 | |
55 Palette2!Tool.Item[] items = [ | |
56 { "select.svg", "Select", "Select and modify elements", new SelectTool }, | |
57 { "rectangle.svg", "Rectangle", "Create rectangle", new CreateRectangleTool(_diagram) }, | |
58 { "ellipse.svg", "Ellipse", "Create ellipse", new CreateRectangleTool(_diagram) }, | |
59 { "polyline.svg", "Polyline", "Create polyline", new CreateRectangleTool(_diagram) } | |
60 ]; | |
61 | |
62 palette.configure(items, &paletteCallback); | |
60 window.add(vbox); | 63 window.add(vbox); |
61 window.setDefaultSize(640, 580); | 64 window.setDefaultSize(640, 580); |
62 window.showAll(); | 65 window.showAll(); |
63 Main.run(); | 66 Main.run(); |
64 } | 67 } |
65 | 68 |
66 void toolChanged(int index) { // FIXME dmd bug? have to make this public | 69 void toolChanged(Tool tool) { |
67 message("Tool changed %s", index); | 70 message("Tool changed %s", tool.name); |
68 _palette.activate(index); | 71 _palette.activate(tool); |
69 } | 72 } |
70 | 73 |
71 private { | 74 private { |
72 IToolStack _toolStack; | 75 IToolStack _toolStack; |
73 IPalette _palette; | 76 Palette2!Tool _palette; // FIXME refer to the interface? |
74 IDiagram _diagram; | 77 IDiagram _diagram; |
75 | 78 |
76 void paletteCallback(int index) { | 79 void paletteCallback(Tool tool) { |
77 switch (index) { | 80 _toolStack.use(tool); |
78 case 0: | |
79 // Select | |
80 break; | |
81 case 1: | |
82 // Rectangle | |
83 _toolStack.use(new CreateRectangleTool(_diagram)); | |
84 break; | |
85 case 2: | |
86 // Ellipse | |
87 break; | |
88 case 3: | |
89 // Polyline | |
90 break; | |
91 default: | |
92 assert(0); | |
93 } | |
94 } | 81 } |
95 | 82 |
96 } | 83 } |
97 } | 84 } |
98 | 85 |