# HG changeset patch # User daveb # Date 1280905592 -34200 # Node ID 0eaf39fda20625a1190697baf0e8380710a37857 # Parent dfa1e219eafe7baf8f3240b458d09e98bffc145b First cut at palette class diff -r dfa1e219eafe -r 0eaf39fda206 doodle/core/logging.d --- a/doodle/core/logging.d Wed Aug 04 16:36:07 2010 +0930 +++ b/doodle/core/logging.d Wed Aug 04 16:36:32 2010 +0930 @@ -31,7 +31,7 @@ mixin(defineEnum!("Severity", "TRACE", "INFO", "MESSAGE", "WARNING", "ERROR", "FATAL")); - string mod_string(in Severity s) { + string severityString(in Severity s) { switch (s) { case Severity.TRACE: return modifierString(Modifier.DIM) ~ fgColorString(Color.CYAN); @@ -52,7 +52,7 @@ } void log(in Severity severity, in string message) { - write(mod_string(severity)); + write(severityString(severity)); write(message); writeln(modifierString(Modifier.RESET)); } @@ -78,11 +78,11 @@ WHITE = 7 } - string modifierString(Modifier m) { return std.string.format("\033[%dm", 0 + m); } - string fgColorString(Color c) { return std.string.format("\033[%dm", 30 + c); } - string bgColorString(Color c) { return std.string.format("\033[%dm", 40 + c); } + string modifierString(in Modifier m) { return std.string.format("\033[%dm", 0 + m); } + string fgColorString(in Color c) { return std.string.format("\033[%dm", 30 + c); } + string bgColorString(in Color c) { return std.string.format("\033[%dm", 40 + c); } - private const(char)[] right(in char[] str, int n) { + private string right(in string str, in int n) { int pos = str.length < n ? 0 : str.length - n; return str[pos..$]; } diff -r dfa1e219eafe -r 0eaf39fda206 doodle/gtk/palette.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/gtk/palette.d Wed Aug 04 16:36:32 2010 +0930 @@ -0,0 +1,59 @@ +module doodle.gtk.palette; + +public { + import doodle.tk.palette; + import gtk.Toolbar; +} + +private { + import gtk.ToolButton; + import glib.ListSG; + import std.stdio; + import gtk.RadioToolButton; + import gtk.Image; +} + +class Palette : Toolbar, IPalette { + this() { + setIconSize(GtkIconSize.LARGE_TOOLBAR); + setStyle(GtkToolbarStyle.ICONS); + setOrientation(GtkOrientation.HORIZONTAL); + setTooltips(true); + } + + int add(in string iconPath, in string tooltipText, void delegate(int) dg) { + auto button = new RadioToolButton(_group); + auto image = new Image(iconBase ~ "/" ~ iconPath); + button.setLabelWidget(image); + int * i = new int; + *i = _delegates.length; + _delegates[*i] = dg; + button.objectGSetDataFull(indexStr, cast(gpointer)i); + button.addOnClicked(&onClicked); + insert(button); + return *i; + } + + void remove(in int id) { + } + + void activate(in int id) { + } + + private { + immutable iconBase = "/home/daveb/source/d/doodle/source/doodle/gtk/data"; + immutable indexStr = "index"; + ListSG _group; + void delegate(int) _delegates[int]; + + void onClicked(ToolButton tool_button) { + int * i = cast(int *)tool_button.getData(indexStr); + _delegates[*i](*i); + } + + /* + ToolButton find(int index) { + } + */ + } +} diff -r dfa1e219eafe -r 0eaf39fda206 doodle/main/prog/doodler.d --- a/doodle/main/prog/doodler.d Wed Aug 04 16:36:07 2010 +0930 +++ b/doodle/main/prog/doodler.d Wed Aug 04 16:36:32 2010 +0930 @@ -10,6 +10,7 @@ import doodle.gtk.canvas; import doodle.gtk.toolbar; + import doodle.gtk.palette; import gtk.Main; import gtk.MainWindow; @@ -19,47 +20,39 @@ } void main(string[] args) { - trace("Test trace"); + Main.init(args); + auto window = new MainWindow("Doodle"); + auto vbox = new VBox(false, 0); /+ - trace("Test trace"); - info("Test trace"); - message("Test trace"); - warning("Test trace"); - error("Test trace"); - fatal("Test trace"); + auto toolBar = new ToolBar; + vbox.packStart(toolBar, false, false, 0); +/ - trace("Test trace1"); - Main.init(args); - trace("Test trace2"); - auto window = new MainWindow("Doodle"); - trace("Test trace3"); - auto vbox = new VBox(false, 0); - trace("Test trace4"); - auto toolBar = new ToolBar; - trace("Test trace5"); - vbox.packStart(toolBar, false, false, 0); + auto palette = new Palette; + palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); + palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); + palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); + palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); + palette.add("select.svg", "tooltip-text", (int i){ writefln("Wow %s", i); }); + vbox.packStart(palette, false, false, 0); + Tool[] tools; tools ~= new PanTool; tools ~= new ZoomTool; tools ~= new LassoTool; - trace("Test trace4"); auto toolLayer = new ToolLayer(tools, "Tools"); + auto gridLayer = new GridLayer("Grid"); + Layer[] layers; - trace("Test trace5"); layers ~= new PageLayer("Page"); layers ~= gridLayer; layers ~= toolLayer; - trace("Test trace6"); auto canvas = new Canvas(layers, toolLayer, gridLayer, 120.0); - trace("Test trace7"); + vbox.packStart(canvas, true, true, 0); - trace("Test trace8"); window.add(vbox); - trace("Test trace9"); window.setDefaultSize(380, 380); window.showAll(); - trace("Test trace8"); Main.run(); } diff -r dfa1e219eafe -r 0eaf39fda206 doodle/tk/geometry.d --- a/doodle/tk/geometry.d Wed Aug 04 16:36:07 2010 +0930 +++ b/doodle/tk/geometry.d Wed Aug 04 16:36:32 2010 +0930 @@ -24,15 +24,9 @@ // struct Point { - static immutable Point DEFAULT; - - static this() { - DEFAULT = Point(0.0, 0.0); - } + static immutable Point DEFAULT = Point(0.0, 0.0); this(in double x, in double y) { - assert(!isnan(x)); - assert(!isnan(y)); _x = x; _y = y; } @@ -74,15 +68,9 @@ // struct Vector { - static Vector DEFAULT; - - static this() { - DEFAULT = Vector(0.0, 0.0); - } + static Vector DEFAULT = Vector(0.0, 0.0); this(in double x, in double y) { - assert(!isnan(x)); - assert(!isnan(y)); _x = x; _y = y; } @@ -344,7 +332,7 @@ } private { - Point _point; // Arbitrary point along line + Point _point; // Arbitrary point along line Vector _gradient; } } diff -r dfa1e219eafe -r 0eaf39fda206 doodle/tk/palette.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/doodle/tk/palette.d Wed Aug 04 16:36:32 2010 +0930 @@ -0,0 +1,7 @@ +module doodle.tk.palette; + +interface IPalette { + int add(in string iconPath, in string tooltipText, void delegate(int) dg); + void remove(in int id); + void activate(in int id); +}