Mercurial > projects > doodle
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 } |