Mercurial > projects > doodle
annotate doodle/main/prog/doodler.d @ 63:20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
author | daveb |
---|---|
date | Thu, 12 Aug 2010 16:35:24 +0930 |
parents | 08ffc44fc21a |
children | d540f7e4af9e |
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; |
63
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
61
diff
changeset
|
9 import doodle.dia.tool_layer; |
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
61
diff
changeset
|
10 |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
11 import doodle.fig.diagram_layer; |
63
20d6327c4a75
Event progress. Got key press/release working and panning via keyboard.
daveb
parents:
61
diff
changeset
|
12 import doodle.fig.select_tool; |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
13 |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
14 import doodle.fig.tools; |
20 | 15 |
28
1754cb773d41
Part-way through getting to compile with configure/builder.
Graham St Jack <graham.stjack@internode.on.net>
parents:
27
diff
changeset
|
16 import doodle.gtk.canvas; |
61 | 17 import doodle.gtk.palette; |
27 | 18 |
20 | 19 import gtk.Main; |
20 import gtk.MainWindow; | |
27 | 21 import gtk.VBox; |
20 | 22 |
23 import std.stdio; | |
24 } | |
25 | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
26 final class TopLevel : private IToolStackObserver { |
56 | 27 this(string[] args) { |
28 Main.init(args); | |
29 auto window = new MainWindow("Doodle"); | |
30 auto vbox = new VBox(false, 0); | |
54 | 31 |
61 | 32 auto palette = new Palette!Tool; |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
33 _palette = palette; |
60
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
34 |
56 | 35 vbox.packStart(palette, false, false, 0); |
36 | |
37 Tool[] tools; | |
38 tools ~= new PanTool; | |
39 tools ~= new ZoomTool; | |
40 tools ~= new SelectTool; | |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
41 auto toolLayer = new ToolLayer(tools, this); |
56 | 42 _toolStack = toolLayer; |
43 | |
60
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
44 auto gridLayer = new GridLayer; |
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
45 |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
46 auto diagramLayer = new DiagramLayer; |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
47 _diagram = diagramLayer; |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
48 |
56 | 49 Layer[] layers; |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
50 layers ~= new PageLayer; |
56 | 51 layers ~= gridLayer; |
52 layers ~= toolLayer; | |
53 auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0); | |
51 | 54 |
56 | 55 vbox.packStart(canvas, true, true, 0); |
60
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
56 |
61 | 57 Palette!Tool.Item[] items = [ |
60
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
58 { "select.svg", "Select", "Select and modify elements", new SelectTool }, |
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
59 { "rectangle.svg", "Rectangle", "Create rectangle", new CreateRectangleTool(_diagram) }, |
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
60 { "ellipse.svg", "Ellipse", "Create ellipse", new CreateRectangleTool(_diagram) }, |
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
61 { "polyline.svg", "Polyline", "Create polyline", new CreateRectangleTool(_diagram) } |
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
62 ]; |
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
63 |
61 | 64 palette.configure(items, &_toolStack.use); |
56 | 65 window.add(vbox); |
66 window.setDefaultSize(640, 580); | |
67 window.showAll(); | |
68 Main.run(); | |
69 } | |
51 | 70 |
60
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
71 void toolChanged(Tool tool) { |
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
72 message("Tool changed %s", tool.name); |
e64baac3efb2
Attempt at a templatised palette
David Bryant <bagnose@gmail.com>
parents:
58
diff
changeset
|
73 _palette.activate(tool); |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
74 } |
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
75 |
56 | 76 private { |
57 | 77 IToolStack _toolStack; |
61 | 78 IPalette!Tool _palette; |
58
c63719604adb
Beginnings of creating a rectangle...
"David Bryant <bagnose@gmail.com>"
parents:
57
diff
changeset
|
79 IDiagram _diagram; |
56 | 80 } |
20 | 81 } |
56 | 82 |
83 void main(string[] args) { | |
84 new TopLevel(args); | |
85 } |