Mercurial > projects > doodle
diff doodle/main/prog/doodler.d @ 60:e64baac3efb2
Attempt at a templatised palette
author | David Bryant <bagnose@gmail.com> |
---|---|
date | Tue, 10 Aug 2010 22:55:54 +0930 |
parents | c63719604adb |
children | 08ffc44fc21a |
line wrap: on
line diff
--- a/doodle/main/prog/doodler.d Mon Aug 09 21:50:16 2010 +0930 +++ b/doodle/main/prog/doodler.d Tue Aug 10 22:55:54 2010 +0930 @@ -12,7 +12,7 @@ import doodle.fig.tools; import doodle.gtk.canvas; - import doodle.gtk.palette; + import doodle.gtk.palette2; import gtk.Main; import gtk.MainWindow; @@ -27,15 +27,9 @@ auto window = new MainWindow("Doodle"); auto vbox = new VBox(false, 0); - auto palette = new Palette; + auto palette = new Palette2!Tool; _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); + vbox.packStart(palette, false, false, 0); Tool[] tools; @@ -45,11 +39,11 @@ auto toolLayer = new ToolLayer(tools, this); _toolStack = toolLayer; + auto gridLayer = new GridLayer; + auto diagramLayer = new DiagramLayer; _diagram = diagramLayer; - auto gridLayer = new GridLayer; - Layer[] layers; layers ~= new PageLayer; layers ~= gridLayer; @@ -57,40 +51,33 @@ auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0); vbox.packStart(canvas, true, true, 0); + + Palette2!Tool.Item[] items = [ + { "select.svg", "Select", "Select and modify elements", new SelectTool }, + { "rectangle.svg", "Rectangle", "Create rectangle", new CreateRectangleTool(_diagram) }, + { "ellipse.svg", "Ellipse", "Create ellipse", new CreateRectangleTool(_diagram) }, + { "polyline.svg", "Polyline", "Create polyline", new CreateRectangleTool(_diagram) } + ]; + + palette.configure(items, &paletteCallback); window.add(vbox); window.setDefaultSize(640, 580); window.showAll(); Main.run(); } - void toolChanged(int index) { // FIXME dmd bug? have to make this public - message("Tool changed %s", index); - _palette.activate(index); + void toolChanged(Tool tool) { + message("Tool changed %s", tool.name); + _palette.activate(tool); } private { IToolStack _toolStack; - IPalette _palette; + Palette2!Tool _palette; // FIXME refer to the interface? IDiagram _diagram; - void paletteCallback(int index) { - switch (index) { - case 0: - // Select - break; - case 1: - // Rectangle - _toolStack.use(new CreateRectangleTool(_diagram)); - break; - case 2: - // Ellipse - break; - case 3: - // Polyline - break; - default: - assert(0); - } + void paletteCallback(Tool tool) { + _toolStack.use(tool); } }