annotate doodle/main/util/doodler.d @ 134:89e8b0d92f36

Ported to bob2 !!!
author David Bryant <bagnose@gmail.com>
date Thu, 02 Aug 2012 17:20:52 +0930
parents doodle/main/prog/doodler.d@bc5baa585b32
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
83
06b4504cbcb0 Checkpoint of trying to get a different renderer going (OpenGL)
daveb
parents: 69
diff changeset
1 module main.prog.doodler;
06b4504cbcb0 Checkpoint of trying to get a different renderer going (OpenGL)
daveb
parents: 69
diff changeset
2
134
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
3 // XXX bob problem, needs it to be like this...
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
4 import doodle.core.backtrace;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
5 import doodle.core.logging;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
6 import doodle.core.backtrace;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
7
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
8 import doodle.dia.standard_tools;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
9 import doodle.dia.page_layer;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
10 import doodle.dia.grid_layer;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
11 import doodle.dia.tool_layer;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
12
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
13 import doodle.fig.diagram_layer;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
14 import doodle.fig.select_tool;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
15
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
16 import doodle.fig.tools;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
17
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
18 import doodle.gtk.palette;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
19
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
20 import doodle.gtk.cairo_canvas;
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
21
28
1754cb773d41 Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents: 27
diff changeset
22 private {
134
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
23 /*
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 40
diff changeset
24 import doodle.core.backtrace;
38
452915ecd1f4 Basic logging functionality
David Bryant <bagnose@gmail.com>
parents: 35
diff changeset
25 import doodle.core.logging;
45
01bbf3f6f966 Cleanups
daveb
parents: 44
diff changeset
26 import doodle.core.backtrace;
38
452915ecd1f4 Basic logging functionality
David Bryant <bagnose@gmail.com>
parents: 35
diff changeset
27
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
28 import doodle.dia.standard_tools;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
29 import doodle.dia.page_layer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
30 import doodle.dia.grid_layer;
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 61
diff changeset
31 import doodle.dia.tool_layer;
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 61
diff changeset
32
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
33 import doodle.fig.diagram_layer;
63
20d6327c4a75 Event progress. Got key press/release working and panning via keyboard.
daveb
parents: 61
diff changeset
34 import doodle.fig.select_tool;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
35
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
36 import doodle.fig.tools;
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
37
61
08ffc44fc21a More palette work.
daveb
parents: 60
diff changeset
38 import doodle.gtk.palette;
87
c825e6db57c1 Added a flag for OpenGL/Cairo
"David Bryant <bagnose@gmail.com>"
parents: 85
diff changeset
39
92
a98116479793 Removed GL support. Improved grid.
daveb
parents: 87
diff changeset
40 import doodle.gtk.cairo_canvas;
134
89e8b0d92f36 Ported to bob2 !!!
David Bryant <bagnose@gmail.com>
parents: 132
diff changeset
41 */
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 22
diff changeset
42
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
43 import gtk.Main;
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
44 import gtk.MainWindow;
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 22
diff changeset
45 import gtk.VBox;
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
46
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
47 import std.stdio;
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
48 }
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
49
132
bc5baa585b32 Updated to dmd 2.060
David Bryant <bagnose@gmail.com>
parents: 92
diff changeset
50 final class TopLevel : /*private*/ IToolStackObserver {
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
51 this(string[] args) {
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
52 Main.init(args);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
53 auto window = new MainWindow("Doodle");
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
54 auto vbox = new VBox(false, 0);
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 51
diff changeset
55
61
08ffc44fc21a More palette work.
daveb
parents: 60
diff changeset
56 auto palette = new Palette!Tool;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
57 _palette = palette;
60
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
58
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
59 vbox.packStart(palette, false, false, 0);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
60
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
61 Tool[] tools;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
62 tools ~= new PanTool;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
63 tools ~= new ZoomTool;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
64 tools ~= new SelectTool;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
65 auto toolLayer = new ToolLayer(tools, this);
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
66 _toolStack = toolLayer;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
67
60
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
68 auto gridLayer = new GridLayer;
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
69
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
70 auto diagramLayer = new DiagramLayer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
71 _diagram = diagramLayer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
72
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
73 Layer[] layers;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
74 layers ~= new PageLayer;
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
75 layers ~= gridLayer;
92
a98116479793 Removed GL support. Improved grid.
daveb
parents: 87
diff changeset
76 layers ~= diagramLayer;
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
77 layers ~= toolLayer;
69
d540f7e4af9e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
78
d540f7e4af9e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
79 // assume the screen has PPI of 120.0
d540f7e4af9e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
80 immutable millimetersPerInch = 25.4;
d540f7e4af9e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 63
diff changeset
81 immutable pixelsPerMillimetre = 120.0 / millimetersPerInch;
92
a98116479793 Removed GL support. Improved grid.
daveb
parents: 87
diff changeset
82 auto canvas = new CairoCanvas(layers, toolLayer, gridLayer, pixelsPerMillimetre);
51
0eaf39fda206 First cut at palette class
daveb
parents: 48
diff changeset
83
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
84 vbox.packStart(canvas, true, true, 0);
60
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
85
61
08ffc44fc21a More palette work.
daveb
parents: 60
diff changeset
86 Palette!Tool.Item[] items = [
60
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
87 { "select.svg", "Select", "Select and modify elements", new SelectTool },
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
88 { "rectangle.svg", "Rectangle", "Create rectangle", new CreateRectangleTool(_diagram) },
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
89 { "ellipse.svg", "Ellipse", "Create ellipse", new CreateRectangleTool(_diagram) },
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
90 { "polyline.svg", "Polyline", "Create polyline", new CreateRectangleTool(_diagram) }
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
91 ];
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
92
61
08ffc44fc21a More palette work.
daveb
parents: 60
diff changeset
93 palette.configure(items, &_toolStack.use);
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
94 window.add(vbox);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
95 window.setDefaultSize(640, 580);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
96 window.showAll();
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
97 Main.run();
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
98 }
51
0eaf39fda206 First cut at palette class
daveb
parents: 48
diff changeset
99
60
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
100 void toolChanged(Tool tool) {
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
101 message("Tool changed %s", tool.name);
e64baac3efb2 Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents: 58
diff changeset
102 _palette.activate(tool);
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
103 }
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
104
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
105 private {
57
9960c4fbd0dd I is for Interface
"David Bryant <bagnose@gmail.com>"
parents: 56
diff changeset
106 IToolStack _toolStack;
61
08ffc44fc21a More palette work.
daveb
parents: 60
diff changeset
107 IPalette!Tool _palette;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
108 IDiagram _diagram;
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
109 }
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
110 }
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
111
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
112 void main(string[] args) {
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
113 new TopLevel(args);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
114 }