annotate doodle/gtk/palette.d @ 55:4922e746dd76

Checkpoint
author "David Bryant <bagnose@gmail.com>"
date Sun, 08 Aug 2010 21:37:38 +0930
parents 30ecedfe2ce2
children
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;
55
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
13 import gtk.Label;
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
14 import glib.ListSG;
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
15 import std.stdio;
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
16 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
17
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
18 class Palette : Toolbar, IPalette {
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
19 this() {
55
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
20 // INVALID, MENU, SMALL_TOOLBAR, LARGE_TOOLBAR,
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
21 // BUTTON, DND, DIALOG
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
22 setIconSize(GtkIconSize.LARGE_TOOLBAR);
55
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
23 // ICONS, TEXT, BOTH, BOTH_HORIZ
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
24 setStyle(GtkToolbarStyle.ICONS);
55
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
25 // HORIZONTAL, VERTICAL
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
26 setOrientation(GtkOrientation.HORIZONTAL);
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
27 setTooltips(true);
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
28 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
29
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
30 override void configure(in Item[] items) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
31 _items = items.dup;
55
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
32
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
33 RadioToolButton group;
52
4dadc3c03b7e Palette work.
daveb
parents: 51
diff changeset
34
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
35 foreach(index, item; _items) {
55
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
36 RadioToolButton button;
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
37
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
38 if (index == 0) {
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
39 ListSG list;
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
40 button = new RadioToolButton(list);
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
41 group = button;
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
42 }
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
43 else {
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
44 button = new RadioToolButton(group);
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
45 }
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
46
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
47 auto image = new Image(_iconBase ~ "/" ~ item.iconPath);
55
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
48 auto label = new Label(item.tooltipText);
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
49 button.setIconWidget(image);
4922e746dd76 Checkpoint
"David Bryant <bagnose@gmail.com>"
parents: 54
diff changeset
50 button.setLabelWidget(label);
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
51 button.setTooltipText(item.tooltipText);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
52
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
53 int * i = new int;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
54 *i = index;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
55 button.objectGSetDataFull(_indexStr, cast(gpointer)i);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
56 button.addOnClicked(&onClicked);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
57
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
58 insert(button);
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
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
62 override void activate(in int index) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
63 warning("Not yet implemented");
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
64 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
65
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
66 private {
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
67 immutable _iconBase = "/home/daveb/source/d/doodle/doodle/gtk/data";
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
68 immutable _indexStr = "index";
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
69 Item[] _items;
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
70
54
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
71 void onClicked(ToolButton toolButton) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
72 RadioToolButton button = cast(RadioToolButton)toolButton;
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
73 if (button.getActive) {
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
74 int * i = cast(int *)button.getData(_indexStr);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
75 _items[*i].callback(*i);
30ecedfe2ce2 Partial palette support
"David Bryant <bagnose@gmail.com>"
parents: 52
diff changeset
76 }
51
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
77 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
78 }
0eaf39fda206 First cut at palette class
daveb
parents:
diff changeset
79 }