diff doodle/main/prog/doodler.d @ 56:b190a9d9352e

Checkpoint
author "David Bryant <bagnose@gmail.com>"
date Sun, 08 Aug 2010 21:56:54 +0930
parents 4922e746dd76
children 9960c4fbd0dd
line wrap: on
line diff
--- a/doodle/main/prog/doodler.d	Sun Aug 08 21:37:38 2010 +0930
+++ b/doodle/main/prog/doodler.d	Sun Aug 08 21:56:54 2010 +0930
@@ -18,43 +18,68 @@
     import std.stdio;
 }
 
-void main(string[] args) {
-    void paletteCallback(int index) {
-        writefln("Callback %s", index);
-    }
+class TopLevel {
+    this(string[] args) {
+        Main.init(args);
+        auto window = new MainWindow("Doodle");
+        auto vbox = new VBox(false, 0);
 
-    Main.init(args);
-    auto window = new MainWindow("Doodle");
-    auto vbox = new VBox(false, 0);
-
-    auto palette = new Palette;
-    IPalette.Item[] items =
-        [
-        { "select.svg", "Select", &paletteCallback },
-        { "rectangle.svg", "Rectangle", &paletteCallback },
-        { "ellipse.svg", "Ellipse", &paletteCallback },
-        { "polyline.svg", "Polyline", &paletteCallback }
+        auto palette = new 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);
-    vbox.packStart(palette, false, false, 0);
+        vbox.packStart(palette, false, false, 0);
+
+        Tool[] tools;
+        tools ~= new PanTool;
+        tools ~= new ZoomTool;
+        tools ~= new SelectTool;
+        auto toolLayer = new ToolLayer(tools, "Tools");
+        _toolStack = toolLayer;
+
+        auto gridLayer = new GridLayer("Grid");
 
-    Tool[] tools;
-    tools ~= new PanTool;
-    tools ~= new ZoomTool;
-    tools ~= new LassoTool;
-    auto toolLayer = new ToolLayer(tools, "Tools");
+        Layer[] layers;
+        layers ~= new PageLayer("Page");
+        layers ~= gridLayer;
+        layers ~= toolLayer;
+        auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0);
 
-    auto gridLayer = new GridLayer("Grid");
+        vbox.packStart(canvas, true, true, 0);
+        window.add(vbox);
+        window.setDefaultSize(640, 580);
+        window.showAll();
+        Main.run();
+    }
 
-    Layer[] layers;
-    layers ~= new PageLayer("Page");
-    layers ~= gridLayer;
-    layers ~= toolLayer;
-    auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0);
+    private {
+        ToolStack _toolStack;
 
-    vbox.packStart(canvas, true, true, 0);
-    window.add(vbox);
-    window.setDefaultSize(640, 580);
-    window.showAll();
-    Main.run();
+        void paletteCallback(int index) {
+            switch (index) {
+            case 0:
+                // Select
+                break;
+            case 1:
+                // Rectangle
+                break;
+            case 2:
+                // Ellipse
+                break;
+            case 3:
+                // Polyline
+                break;
+            default:
+                assert(0);
+            }
+        }
+    }
 }
+
+void main(string[] args) {
+    new TopLevel(args);
+}