Mercurial > projects > doodle
diff doodle/gtk/palette.d @ 54:30ecedfe2ce2
Partial palette support
author | "David Bryant <bagnose@gmail.com>" |
---|---|
date | Sun, 08 Aug 2010 21:07:47 +0930 |
parents | 4dadc3c03b7e |
children | 4922e746dd76 |
line wrap: on
line diff
--- a/doodle/gtk/palette.d Fri Aug 06 09:38:36 2010 +0930 +++ b/doodle/gtk/palette.d Sun Aug 08 21:07:47 2010 +0930 @@ -6,11 +6,12 @@ } private { + import doodle.core.logging; import gtk.ToolButton; + import gtk.RadioToolButton; + import gtk.Image; import glib.ListSG; import std.stdio; - import gtk.RadioToolButton; - import gtk.Image; } class Palette : Toolbar, IPalette { @@ -21,41 +22,41 @@ setTooltips(true); } - //void set( + override void configure(in Item[] items) { + _items = items.dup; + ListSG group; - 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; + foreach(index, item; _items) { + auto button = new RadioToolButton(group); + if (index == 0) group = button.getGroup; + auto image = new Image(_iconBase ~ "/" ~ item.iconPath); + button.setLabelWidget(image); + button.setTooltipText(item.tooltipText); + + int * i = new int; + *i = index; + button.objectGSetDataFull(_indexStr, cast(gpointer)i); + button.addOnClicked(&onClicked); + + insert(button); + } } - void remove(in int id) { - } - - void activate(in int id) { + override void activate(in int index) { + warning("Not yet implemented"); } private { - immutable iconBase = "/home/daveb/source/d/doodle/source/doodle/gtk/data"; - immutable indexStr = "index"; - ListSG _group; - void delegate(int) _delegates[int]; + immutable _iconBase = "/home/daveb/source/d/doodle/doodle/gtk/data"; + immutable _indexStr = "index"; + Item[] _items; - void onClicked(ToolButton tool_button) { - int * i = cast(int *)tool_button.getData(indexStr); - _delegates[*i](*i); + void onClicked(ToolButton toolButton) { + RadioToolButton button = cast(RadioToolButton)toolButton; + if (button.getActive) { + int * i = cast(int *)button.getData(_indexStr); + _items[*i].callback(*i); + } } - - /* - ToolButton find(int index) { - } - */ } }