annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
1 module doodle.gtk.palette;
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
2
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
3 public {
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
4 import doodle.tk.palette;
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
5 import gtk.Toolbar;
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
6 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
7
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
8 private {
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
9 import doodle.core.logging;
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
10 import gtk.ToolButton;
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
11 import gtk.RadioToolButton;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
12 import gtk.Image;
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
13 import glib.ListSG;
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
14 import std.stdio;
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
15 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
16
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
17 class Palette : Toolbar, IPalette {
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
18 this() {
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
19 setIconSize(GtkIconSize.LARGE_TOOLBAR);
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
20 setStyle(GtkToolbarStyle.ICONS);
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
21 setOrientation(GtkOrientation.HORIZONTAL);
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
22 setTooltips(true);
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
23 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
24
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
25 override void configure(in Item[] items) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
26 _items = items.dup;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
27 ListSG group;
52
4dadc3c03b7e Palette work.
daveb
parents: 51
diff changeset
28
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
29 foreach(index, item; _items) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
30 auto button = new RadioToolButton(group);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
31 if (index == 0) group = button.getGroup;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
32 auto image = new Image(_iconBase ~ "/" ~ item.iconPath);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
33 button.setLabelWidget(image);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
34 button.setTooltipText(item.tooltipText);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
35
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
36 int * i = new int;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
37 *i = index;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
38 button.objectGSetDataFull(_indexStr, cast(gpointer)i);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
39 button.addOnClicked(&onClicked);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
40
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
41 insert(button);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
42 }
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
43 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
44
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
45 override void activate(in int index) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
46 warning("Not yet implemented");
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
47 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
48
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
49 private {
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
50 immutable _iconBase = "/home/daveb/source/d/doodle/doodle/gtk/data";
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
51 immutable _indexStr = "index";
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
52 Item[] _items;
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
53
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
54 void onClicked(ToolButton toolButton) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
55 RadioToolButton button = cast(RadioToolButton)toolButton;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
56 if (button.getActive) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
57 int * i = cast(int *)button.getData(_indexStr);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
58 _items[*i].callback(*i);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
59 }
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
60 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
61 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
62 }