Mercurial > projects > doodle
comparison doodle/main/doodle.d @ 139:e33f37b14893 default tip
Port to 'no-more-make' https://github.com/GrahamStJack/no-more-make
author | David Bryant <bagnose@gmail.com> |
---|---|
date | Sun, 30 Sep 2012 15:41:25 +0930 |
parents | doodle/main/util/doodle.d@be50d20643a1 |
children |
comparison
equal
deleted
inserted
replaced
138:a1c2b56cb44d | 139:e33f37b14893 |
---|---|
1 module main.prog.doodler; | |
2 | |
3 // XXX bob problem, needs it to be like this... | |
4 import doodle.core.backtrace; | |
5 import doodle.core.logging; | |
6 import doodle.core.backtrace; | |
7 | |
8 import doodle.dia.standard_tools; | |
9 import doodle.dia.page_layer; | |
10 import doodle.dia.grid_layer; | |
11 import doodle.dia.tool_layer; | |
12 | |
13 import doodle.fig.diagram_layer; | |
14 import doodle.fig.select_tool; | |
15 | |
16 import doodle.fig.tools; | |
17 | |
18 import doodle.gtk.palette; | |
19 | |
20 import doodle.gtk.cairo_canvas; | |
21 | |
22 private { | |
23 /* | |
24 import doodle.core.backtrace; | |
25 import doodle.core.logging; | |
26 import doodle.core.backtrace; | |
27 | |
28 import doodle.dia.standard_tools; | |
29 import doodle.dia.page_layer; | |
30 import doodle.dia.grid_layer; | |
31 import doodle.dia.tool_layer; | |
32 | |
33 import doodle.fig.diagram_layer; | |
34 import doodle.fig.select_tool; | |
35 | |
36 import doodle.fig.tools; | |
37 | |
38 import doodle.gtk.palette; | |
39 | |
40 import doodle.gtk.cairo_canvas; | |
41 */ | |
42 | |
43 import gtk.Main; | |
44 import gtk.MainWindow; | |
45 import gtk.VBox; | |
46 | |
47 import std.stdio; | |
48 } | |
49 | |
50 final class TopLevel : /*private*/ IToolStackObserver { | |
51 this(string[] args) { | |
52 Main.init(args); | |
53 auto window = new MainWindow("Doodle"); | |
54 auto vbox = new VBox(false, 0); | |
55 | |
56 auto palette = new Palette!Tool; | |
57 _palette = palette; | |
58 | |
59 vbox.packStart(palette, false, false, 0); | |
60 | |
61 Tool[] tools; | |
62 tools ~= new PanTool; | |
63 tools ~= new ZoomTool; | |
64 tools ~= new SelectTool; | |
65 auto toolLayer = new ToolLayer(tools, this); | |
66 _toolStack = toolLayer; | |
67 | |
68 auto gridLayer = new GridLayer; | |
69 | |
70 auto diagramLayer = new DiagramLayer; | |
71 _diagram = diagramLayer; | |
72 | |
73 Layer[] layers; | |
74 layers ~= new PageLayer; | |
75 layers ~= gridLayer; | |
76 layers ~= diagramLayer; | |
77 layers ~= toolLayer; | |
78 | |
79 // assume the screen has PPI of 120.0 | |
80 immutable millimetersPerInch = 25.4; | |
81 immutable pixelsPerMillimetre = 120.0 / millimetersPerInch; | |
82 auto canvas = new CairoCanvas(layers, toolLayer, gridLayer, pixelsPerMillimetre); | |
83 | |
84 vbox.packStart(canvas, true, true, 0); | |
85 | |
86 Palette!Tool.Item[] items = [ | |
87 { "select.svg", "Select", "Select and modify elements", new SelectTool }, | |
88 { "rectangle.svg", "Rectangle", "Create rectangle", new CreateRectangleTool(_diagram) }, | |
89 { "ellipse.svg", "Ellipse", "Create ellipse", new CreateRectangleTool(_diagram) }, | |
90 { "polyline.svg", "Polyline", "Create polyline", new CreateRectangleTool(_diagram) } | |
91 ]; | |
92 | |
93 palette.configure(items, &_toolStack.use); | |
94 window.add(vbox); | |
95 window.setDefaultSize(640, 580); | |
96 window.showAll(); | |
97 Main.run(); | |
98 } | |
99 | |
100 void toolChanged(Tool tool) { | |
101 message("Tool changed %s", tool.name); | |
102 _palette.activate(tool); | |
103 } | |
104 | |
105 private { | |
106 IToolStack _toolStack; | |
107 IPalette!Tool _palette; | |
108 IDiagram _diagram; | |
109 } | |
110 } | |
111 | |
112 void main(string[] args) { | |
113 new TopLevel(args); | |
114 } |