comparison 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
comparison
equal deleted inserted replaced
53:fbabd1957c89 54:30ecedfe2ce2
4 import doodle.tk.palette; 4 import doodle.tk.palette;
5 import gtk.Toolbar; 5 import gtk.Toolbar;
6 } 6 }
7 7
8 private { 8 private {
9 import doodle.core.logging;
9 import gtk.ToolButton; 10 import gtk.ToolButton;
11 import gtk.RadioToolButton;
12 import gtk.Image;
10 import glib.ListSG; 13 import glib.ListSG;
11 import std.stdio; 14 import std.stdio;
12 import gtk.RadioToolButton;
13 import gtk.Image;
14 } 15 }
15 16
16 class Palette : Toolbar, IPalette { 17 class Palette : Toolbar, IPalette {
17 this() { 18 this() {
18 setIconSize(GtkIconSize.LARGE_TOOLBAR); 19 setIconSize(GtkIconSize.LARGE_TOOLBAR);
19 setStyle(GtkToolbarStyle.ICONS); 20 setStyle(GtkToolbarStyle.ICONS);
20 setOrientation(GtkOrientation.HORIZONTAL); 21 setOrientation(GtkOrientation.HORIZONTAL);
21 setTooltips(true); 22 setTooltips(true);
22 } 23 }
23 24
24 //void set( 25 override void configure(in Item[] items) {
26 _items = items.dup;
27 ListSG group;
25 28
26 int add(in string iconPath, in string tooltipText, void delegate(int) dg) { 29 foreach(index, item; _items) {
27 auto button = new RadioToolButton(_group); 30 auto button = new RadioToolButton(group);
28 auto image = new Image(iconBase ~ "/" ~ iconPath); 31 if (index == 0) group = button.getGroup;
29 button.setLabelWidget(image); 32 auto image = new Image(_iconBase ~ "/" ~ item.iconPath);
30 int * i = new int; 33 button.setLabelWidget(image);
31 *i = _delegates.length; 34 button.setTooltipText(item.tooltipText);
32 _delegates[*i] = dg; 35
33 button.objectGSetDataFull(indexStr, cast(gpointer)i); 36 int * i = new int;
34 button.addOnClicked(&onClicked); 37 *i = index;
35 insert(button); 38 button.objectGSetDataFull(_indexStr, cast(gpointer)i);
36 return *i; 39 button.addOnClicked(&onClicked);
40
41 insert(button);
42 }
37 } 43 }
38 44
39 void remove(in int id) { 45 override void activate(in int index) {
40 } 46 warning("Not yet implemented");
41
42 void activate(in int id) {
43 } 47 }
44 48
45 private { 49 private {
46 immutable iconBase = "/home/daveb/source/d/doodle/source/doodle/gtk/data"; 50 immutable _iconBase = "/home/daveb/source/d/doodle/doodle/gtk/data";
47 immutable indexStr = "index"; 51 immutable _indexStr = "index";
48 ListSG _group; 52 Item[] _items;
49 void delegate(int) _delegates[int];
50 53
51 void onClicked(ToolButton tool_button) { 54 void onClicked(ToolButton toolButton) {
52 int * i = cast(int *)tool_button.getData(indexStr); 55 RadioToolButton button = cast(RadioToolButton)toolButton;
53 _delegates[*i](*i); 56 if (button.getActive) {
57 int * i = cast(int *)button.getData(_indexStr);
58 _items[*i].callback(*i);
59 }
54 } 60 }
55
56 /*
57 ToolButton find(int index) {
58 }
59 */
60 } 61 }
61 } 62 }