view 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 source

private {
    import doodle.core.backtrace;
    import doodle.core.logging;
    import doodle.core.backtrace;

    import doodle.dia.tool_layer;
    import doodle.dia.standard_tools;
    import doodle.dia.grid_layer;
    import doodle.dia.page_layer;

    import doodle.gtk.canvas;
    import doodle.gtk.palette;

    import gtk.Main;
    import gtk.MainWindow;
    import gtk.VBox;

    import std.stdio;
}

class TopLevel {
    this(string[] args) {
        Main.init(args);
        auto window = new MainWindow("Doodle");
        auto vbox = new VBox(false, 0);

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

        Tool[] tools;
        tools ~= new PanTool;
        tools ~= new ZoomTool;
        tools ~= new SelectTool;
        auto toolLayer = new ToolLayer(tools, "Tools");
        _toolStack = toolLayer;

        auto gridLayer = new GridLayer("Grid");

        Layer[] layers;
        layers ~= new PageLayer("Page");
        layers ~= gridLayer;
        layers ~= toolLayer;
        auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0);

        vbox.packStart(canvas, true, true, 0);
        window.add(vbox);
        window.setDefaultSize(640, 580);
        window.showAll();
        Main.run();
    }

    private {
        ToolStack _toolStack;

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