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);
             }
         }
+
     }
 }