2 * This file is part of gtkD.
4 * gtkD is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation; either version 2.1 of the License, or
7 * (at your option) any later version.
9 * gtkD is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public License
15 * along with gtkD; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 module gtkD
.TestTreeView1
;
23 private import gtk
.VBox
;
25 private import gobject
.Value
;
27 private import gtkc
.gtktypes
;
28 private import gtk
.Image
;
29 private import gtk
.TreeView
;
30 private import gtk
.TreeStore
;
31 private import gtk
.TreePath
;
32 private import gtk
.TreeViewColumn
;
33 private import gtk
.TreeIter
;
34 private import gtk
.TreeSelection
;
35 private import gtk
.CellRendererPixbuf
;
36 private import gtk
.CellRendererText
;
37 private import gtk
.ScrolledWindow
;
38 private import gdk
.Pixbuf
;
39 version(Tango
) private import tango
.io
.Stdout
;
40 version(Tango
) private import tango
.stdc
.stdio
;
41 else private import std
.stdio
;
44 * This tests the gtkD tree widget
46 public class TestTreeView1
: VBox
50 // gtkDObject = pixbufGetType(),
51 // desc = gtkDType.STRING,
58 TreeStore testTreeStore1
;
59 TreeStore testTreeStore2
;
64 debug(trace
) version(Tango
) Stdout("TestTreeView1.this 1").newline
;
65 else writefln("TestTreeView1.this 1");
67 debug(trace
) version(Tango
) Stdout("TestTreeView1.this 2").newline
;
68 else writefln("TestTreeView1.this 2");
70 pixbuf
= new Pixbuf(greenClass_xpm
);
71 debug(trace
) version(Tango
) Stdout("TestTreeView1.this 2.1").newline
;
72 else writefln("TestTreeView1.this 2.1");
73 pixbufTest
= new Pixbuf(book_closed_xpm
);
74 debug(trace
) version(Tango
) Stdout("TestTreeView1.this 2.2").newline
;
75 else writefln("TestTreeView1.this 2.2");
76 image
= new Image(pixbufTest
);
78 debug(trace
) version(Tango
) Stdout("TestTreeView1.this 3").newline
;
79 else writefln("TestTreeView1.this 3");
80 TreeView treeView1
= setup1();
81 populate(testTreeStore1
);
83 debug(trace
) version(Tango
) Stdout("TestTreeView1.this 4").newline
;
84 else writefln("TestTreeView1.this 4");
85 TreeView treeView2
= setup2();
86 populate(testTreeStore2
);
88 debug(trace
) version(Tango
) Stdout("TestTreeView1.this 5").newline
;
89 else writefln("TestTreeView1.this 5");
90 treeView2
.addOnMoveCursor(&moveCursorCallback
);
91 packStart(image
, false, false, 1);
92 ScrolledWindow sw
= new ScrolledWindow(null, null);
94 packStart(sw
, true, true, 1);
95 sw
= new ScrolledWindow(null, null);
97 packStart(sw
, true, true, 1);
99 debug(trace
) version(Tango
) Stdout("TestTreeView1.this 6").newline
;
100 else writefln("TestTreeView1.this 6");
101 //addWithViewport(treeView);
107 int moveCursorCallback(GtkMovementStep step
, int i
, TreeView tree
)
109 TreeIter iter
= tree
.getSelectedIter();
110 iter
.setModel(tree
.getModel());
111 Value v
= new Value();
113 debug(trace
) version(Tango
) Stdout("cursor on {}", v
).newline
;
114 else writefln("cursor on %s", v
);
120 void populate(TreeStore treeStore
)
123 TreeIter iterTop
= treeStore
.createIter();
124 treeStore
.setValue(iterTop
, 0, new Pixbuf(package_xpm
) );
125 treeStore
.setValue(iterTop
, 1, "Icon for packages" );
127 iterChild
= treeStore
.append(iterTop
);
128 treeStore
.setValue(iterChild
, 0,new Pixbuf(greenTemplate_xpm
) );
129 treeStore
.setValue(iterChild
, 1, "Icon for templates" );
131 iterChild
= treeStore
.append(iterTop
);
132 treeStore
.setValue(iterChild
, 0, new Pixbuf(greenInterface_xpm
) );
133 treeStore
.setValue(iterChild
, 1, "Icon for interfaces" );
135 iterChild
= treeStore
.append(iterTop
);
136 treeStore
.setValue(iterChild
, 0, new Pixbuf(greenClass_xpm
) );
137 treeStore
.setValue(iterChild
, 1, "Icon for classes" );
142 * Creates the treeView and treeStore
147 class TTreeStore
: TreeStore
151 //int* i = cast(int*)pixbufGetType();
154 columns
~= Pixbuf
.getType();
155 columns
~= GType
.STRING
;
161 testTreeStore1
= new TTreeStore();
162 TreeView treeView
= new TreeView(testTreeStore1
);
163 treeView
.setRulesHint(true);
165 TreeSelection ts
= treeView
.getSelection();
166 ts
.setMode(SelectionMode
.MULTIPLE
);
167 TreeViewColumn column
;
169 column
= new TreeViewColumn("Icon",new CellRendererPixbuf(),"pixbuf", col
);
170 treeView
.appendColumn(column
);
173 column
= new TreeViewColumn("Description",new CellRendererText(),"text", col
);
174 treeView
.appendColumn(column
);
175 column
.setResizable(true);
176 column
.setReorderable(true);
177 column
.setSortColumnId(col
);
178 column
.setSortIndicator(true);
186 * Creates the treeView and treeStore
191 class TTreeStore
: TreeStore
195 //int* i = cast(int*)pixbufGetType();
198 columns
~= Pixbuf
.getType();
199 columns
~= GType
.STRING
;
205 testTreeStore2
= new TTreeStore();
206 TreeView treeView
= new TreeView(testTreeStore2
);
207 treeView
.setRulesHint(true);
209 TreeSelection ts
= treeView
.getSelection();
210 ts
.setMode(SelectionMode
.MULTIPLE
);
211 TreeViewColumn column
;
214 column
= new TreeViewColumn();
216 CellRendererPixbuf cellPixbuf
= new CellRendererPixbuf();
217 CellRendererText cellText
= new CellRendererText();
219 column
.packStart(cellPixbuf
, false);
220 column
.addAttribute(cellPixbuf
, "pixbuf", col
);
223 column
.packEnd(cellText
, true);
224 column
.addAttribute(cellText
, "text", col
);
226 column
.setTitle("Types");
228 treeView
.appendColumn(column
);
230 column
.setResizable(true);
231 column
.setReorderable(true);
232 column
.setSortColumnId(col
);
233 column
.setSortIndicator(true);
241 void rowActivatedCallback(TreeView treeView
, TreePath path
, TreeViewColumn column
)
243 printf("rowActivateCallback for %X \n",treeView
);
244 printf("rowActivateCallback for path %.*s\n",path
.toString());
249 static char** greenClass_xpm
= [
337 static char** greenInterface_xpm
= [
420 static char** greenTemplate_xpm
= [
503 static char** package_xpm
= [
547 /* Don't copy this bad example; inline RGB data is always a better
548 * idea than inline XPMs.
550 static char** book_closed_xpm
= [