Mercurial > projects > doodle
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 |
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 | 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 | 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 | 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 | 15 import doodle.gtk.palette; |
27 | 16 |
20 | 17 import gtk.Main; |
18 import gtk.MainWindow; | |
27 | 19 import gtk.VBox; |
20 | 20 |
21 import std.stdio; | |
22 } | |
23 | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
24 final class TopLevel : private IToolStackObserver { |
56 | 25 this(string[] args) { |
26 Main.init(args); | |
27 auto window = new MainWindow("Doodle"); | |
28 auto vbox = new VBox(false, 0); | |
54 | 29 |
56 | 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 | 32 IPalette.Item[] items = [ |
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 } | |
54 | 37 ]; |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
38 _palette.configure(items); |
56 | 39 vbox.packStart(palette, false, false, 0); |
40 | |
41 Tool[] tools; | |
42 tools ~= new PanTool; | |
43 tools ~= new ZoomTool; | |
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 | 46 _toolStack = toolLayer; |
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 | 52 |
56 | 53 Layer[] layers; |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
54 layers ~= new PageLayer; |
56 | 55 layers ~= gridLayer; |
56 layers ~= toolLayer; | |
57 auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0); | |
51 | 58 |
56 | 59 vbox.packStart(canvas, true, true, 0); |
60 window.add(vbox); | |
61 window.setDefaultSize(640, 580); | |
62 window.showAll(); | |
63 Main.run(); | |
64 } | |
51 | 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 | 71 private { |
57 | 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 | 75 |
56 | 76 void paletteCallback(int index) { |
77 switch (index) { | |
78 case 0: | |
79 // Select | |
80 break; | |
81 case 1: | |
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 | 84 break; |
85 case 2: | |
86 // Ellipse | |
87 break; | |
88 case 3: | |
89 // Polyline | |
90 break; | |
91 default: | |
92 assert(0); | |
93 } | |
94 } | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
95 |
56 | 96 } |
20 | 97 } |
56 | 98 |
99 void main(string[] args) { | |
100 new TopLevel(args); | |
101 } |