Mercurial > projects > doodle
diff 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 |
line wrap: on
line diff
--- a/doodle/main/prog/doodler.d Sun Aug 08 22:01:54 2010 +0930 +++ b/doodle/main/prog/doodler.d Mon Aug 09 21:43:24 2010 +0930 @@ -3,10 +3,13 @@ import doodle.core.logging; import doodle.core.backtrace; + import doodle.dia.standard_tools; + import doodle.dia.page_layer; + import doodle.dia.grid_layer; + import doodle.fig.diagram_layer; import doodle.dia.tool_layer; - import doodle.dia.standard_tools; - import doodle.dia.grid_layer; - import doodle.dia.page_layer; + + import doodle.fig.tools; import doodle.gtk.canvas; import doodle.gtk.palette; @@ -18,33 +21,37 @@ import std.stdio; } -class TopLevel { +final class TopLevel : private IToolStackObserver { this(string[] args) { Main.init(args); auto window = new MainWindow("Doodle"); auto vbox = new VBox(false, 0); auto palette = new Palette; + _palette = palette; IPalette.Item[] items = [ { "select.svg", "Select", "Select and modify elements", &paletteCallback }, { "rectangle.svg", "Rectangle", "Create rectangle", &paletteCallback }, { "ellipse.svg", "Ellipse", "Create ellipse", &paletteCallback }, { "polyline.svg", "Polyline", "Create polyline", &paletteCallback } ]; - palette.configure(items); + _palette.configure(items); vbox.packStart(palette, false, false, 0); Tool[] tools; tools ~= new PanTool; tools ~= new ZoomTool; tools ~= new SelectTool; - auto toolLayer = new ToolLayer(tools, "Tools"); + auto toolLayer = new ToolLayer(tools, this); _toolStack = toolLayer; - auto gridLayer = new GridLayer("Grid"); + auto diagramLayer = new DiagramLayer; + _diagram = diagramLayer; + + auto gridLayer = new GridLayer; Layer[] layers; - layers ~= new PageLayer("Page"); + layers ~= new PageLayer; layers ~= gridLayer; layers ~= toolLayer; auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0); @@ -56,8 +63,15 @@ Main.run(); } + void toolChanged(int index) { // FIXME dmd bug? have to make this public + message("Tool changed %s", index); + _palette.activate(index); + } + private { IToolStack _toolStack; + IPalette _palette; + IDiagram _diagram; void paletteCallback(int index) { switch (index) { @@ -66,6 +80,7 @@ break; case 1: // Rectangle + _toolStack.use(new CreateRectangleTool(_diagram)); break; case 2: // Ellipse @@ -77,6 +92,7 @@ assert(0); } } + } }