annotate doodle/main/prog/doodler.d @ 58:c63719604adb

Beginnings of creating a rectangle...
author "David Bryant <bagnose@gmail.com>"
date Mon, 09 Aug 2010 21:43:24 +0930
parents 9960c4fbd0dd
children e64baac3efb2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
28
1754cb773d41 Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents: 27
diff changeset
1 private {
44
2b9329ed0f0e Added backtrace support
"David Bryant <bagnose@gmail.com>"
parents: 40
diff changeset
2 import doodle.core.backtrace;
38
452915ecd1f4 Basic logging functionality
David Bryant <bagnose@gmail.com>
parents: 35
diff changeset
3 import doodle.core.logging;
45
01bbf3f6f966 Cleanups
daveb
parents: 44
diff changeset
4 import doodle.core.backtrace;
38
452915ecd1f4 Basic logging functionality
David Bryant <bagnose@gmail.com>
parents: 35
diff changeset
5
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
6 import doodle.dia.standard_tools;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
7 import doodle.dia.page_layer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
8 import doodle.dia.grid_layer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
9 import doodle.fig.diagram_layer;
28
1754cb773d41 Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents: 27
diff changeset
10 import doodle.dia.tool_layer;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
11
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
12 import doodle.fig.tools;
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
13
28
1754cb773d41 Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents: 27
diff changeset
14 import doodle.gtk.canvas;
51
0eaf39fda206 First cut at palette class
daveb
parents: 48
diff changeset
15 import doodle.gtk.palette;
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 22
diff changeset
16
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
17 import gtk.Main;
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
18 import gtk.MainWindow;
27
f3d91579bb28 Checkpoint
David Bryant <daveb@acres.com.au>
parents: 22
diff changeset
19 import gtk.VBox;
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
21 import std.stdio;
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
22 }
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
23
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
24 final class TopLevel : private IToolStackObserver {
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
25 this(string[] args) {
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
26 Main.init(args);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
27 auto window = new MainWindow("Doodle");
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
28 auto vbox = new VBox(false, 0);
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 51
diff changeset
29
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
30 auto palette = new Palette;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
31 _palette = palette;
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
32 IPalette.Item[] items = [
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
33 { "select.svg", "Select", "Select and modify elements", &paletteCallback },
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
34 { "rectangle.svg", "Rectangle", "Create rectangle", &paletteCallback },
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
35 { "ellipse.svg", "Ellipse", "Create ellipse", &paletteCallback },
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
36 { "polyline.svg", "Polyline", "Create polyline", &paletteCallback }
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 51
diff changeset
37 ];
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
38 _palette.configure(items);
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
39 vbox.packStart(palette, false, false, 0);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
40
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
41 Tool[] tools;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
42 tools ~= new PanTool;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
43 tools ~= new ZoomTool;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
44 tools ~= new SelectTool;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
45 auto toolLayer = new ToolLayer(tools, this);
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
46 _toolStack = toolLayer;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
47
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
48 auto diagramLayer = new DiagramLayer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
49 _diagram = diagramLayer;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
50
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
51 auto gridLayer = new GridLayer;
51
0eaf39fda206 First cut at palette class
daveb
parents: 48
diff changeset
52
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
53 Layer[] layers;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
54 layers ~= new PageLayer;
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
55 layers ~= gridLayer;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
56 layers ~= toolLayer;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
57 auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0);
51
0eaf39fda206 First cut at palette class
daveb
parents: 48
diff changeset
58
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
59 vbox.packStart(canvas, true, true, 0);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
60 window.add(vbox);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
61 window.setDefaultSize(640, 580);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
62 window.showAll();
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
63 Main.run();
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
64 }
51
0eaf39fda206 First cut at palette class
daveb
parents: 48
diff changeset
65
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
66 void toolChanged(int index) { // FIXME dmd bug? have to make this public
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
67 message("Tool changed %s", index);
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
68 _palette.activate(index);
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
69 }
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
70
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
71 private {
57
9960c4fbd0dd I is for Interface
"David Bryant <bagnose@gmail.com>"
parents: 56
diff changeset
72 IToolStack _toolStack;
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
73 IPalette _palette;
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
74 IDiagram _diagram;
51
0eaf39fda206 First cut at palette class
daveb
parents: 48
diff changeset
75
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
76 void paletteCallback(int index) {
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
77 switch (index) {
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
78 case 0:
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
79 // Select
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
80 break;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
81 case 1:
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
82 // Rectangle
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
83 _toolStack.use(new CreateRectangleTool(_diagram));
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
84 break;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
85 case 2:
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
86 // Ellipse
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
87 break;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
88 case 3:
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
89 // Polyline
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
90 break;
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
91 default:
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
92 assert(0);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
93 }
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
94 }
58
c63719604adb Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents: 57
diff changeset
95
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
96 }
20
d6e7a5a6f008 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents:
diff changeset
97 }
56
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
98
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
99 void main(string[] args) {
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
100 new TopLevel(args);
b190a9d9352e Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 55
diff changeset
101 }