2 * This file is part of dui.
4 * dui 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 * dui 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 dui; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 module duit
.TestTreeView
;
21 private import gtk
.ScrolledWindow
;
24 private import gtk
.gtktypes
;
25 private import gtk
.TreeView
;
26 private import gtk
.TreePath
;
27 private import gtk
.TreeViewColumn
;
28 private import gtk
.TreeIter
;
29 private import gtk
.TreeStore
;
30 private import gtk
.TreeModel
;
31 //private import ddi.Pixbuf;
32 private import gtk
.TreeSelection
;
33 private import gtk
.CellRendererText
;
35 private import gtk
.Image
;
36 //private import ddi.Pixbuf;
38 private import gtk
.TreeNode
;
40 /* Don't copy this bad example; inline RGB data is always a better
41 * idea than inline XPMs.
44 static char** book_closed_xpm
= [
71 * This tests the DUI tree widget
72 * \todo report bug to ng: nested class with same name of other class was not used<br>
73 * test if this works:<br>
77 * method (){ new A;}<br>
80 private import std
.stdio
;
81 class TestTreeView
: ScrolledWindow
88 //duiObject = DUIType.PIXBUF,
89 duiObject
= GType
.STRING
,
90 gtkObject
= GType
.STRING
,
92 percentDone
= GType
.STRING
,
100 TreeView treeView
= setup();
101 addWithViewport(treeView
);
103 treeView
.addOnRowActivated(&rowActivatedCallback
);
104 treeView
.addOnMoveCursor(&moveCursorCallBack
);
107 void rowActivatedCallback(TreePath path
, TreeViewColumn column
, TreeView treeView
)
109 printf("rowActivateCallback for %X \n",treeView
);
110 printf("rowActivateCallback for path %.*s\n",path
.toString());
113 int moveCursorCallBack(GtkMovementStep step
, int direction
, TreeView treeView
)
115 printf("moveCursorCallBack for %X \n",treeView
);
116 printf("moveCursorCallBack row = %d \n",direction
);
122 void push(TreeIter ti
)
144 class HTreeNode
: TreeNode
154 this(char[] duiL
,char[] gtk
,char[] desc
,int percent
)//, TestTreeView ttv)
159 this.percent
= percent
;
165 //Pixbuf getNodePixbuf(int colum)
175 char[] getNodeValue(int column
)
180 //case 0: value = pixbuf; break;
181 case 0: value
= duiL
; break;
182 case 1: value
= gtk
; break;
183 case 2: value
= desc
; break;
187 case -1: value
= "uggly: won't get in"; break;
188 case 0: value
= "unknown"; break;
189 case 1: value
= "not yet";break;
190 case 98: value
= "Almost"; break;
191 case 99: value
= "AGAIG"; break;
192 case 100: value
= "Complete"; break;
193 default:value
= "%"; break;
197 case 4: value
= author
; break;
198 default: value
= "N/A"; break;
207 class TTreeStore
: TreeStore
211 //this.nCols = nCols;
212 static GType
[5] columns
= [
224 TTreeStore testTreeStore
= new TTreeStore();
225 TreeView treeView
= new TreeView(testTreeStore
);
226 treeView
.setRulesHint(true);
228 TreeSelection ts
= treeView
.getSelection();
229 ts
.setMode(SelectionMode
.MULTIPLE
);
231 //TreeViewColumn column = new TreeViewColumn("DUIObject",new CellRendererPixbuf(),"GdkPixbuf", 0);
232 TreeViewColumn column
= new TreeViewColumn("DUIObject",new CellRendererText(),"text", 0);
233 treeView
.appendColumn(column
);
234 column
.setResizable(true);
235 column
.setReorderable(true);
236 column
.setSortColumnId(0);
237 column
.setSortIndicator(true);
238 //pixbuf = new Pixbuf(book_closed_xpm);
239 //image = new Image(pixbuf);
240 //column.setWidget(image);
242 column
= new TreeViewColumn("GtkObject",new CellRendererText(),"text", 1);
243 treeView
.appendColumn(column
);
244 column
.setResizable(true);
245 column
.setReorderable(true);
246 column
.setSortColumnId(1);
247 column
.setSortIndicator(true);
249 column
= new TreeViewColumn("Desc",new CellRendererText(),"text", 2);
250 treeView
.appendColumn(column
);
251 column
.setResizable(true);
252 column
.setReorderable(true);
253 column
.setSortColumnId(2);
254 column
.setSortIndicator(true);
256 column
= new TreeViewColumn("Complete",new CellRendererText(),"text", 3);
257 treeView
.appendColumn(column
);
258 column
.setResizable(true);
259 column
.setReorderable(true);
260 column
.setSortColumnId(3);
261 column
.setSortIndicator(true);
263 column
= new TreeViewColumn("Author",new CellRendererText(),"text", 4);
264 treeView
.appendColumn(column
);
265 column
.setResizable(true);
266 column
.setReorderable(true);
267 column
.setSortColumnId(4);
268 column
.setSortIndicator(true);
271 TreeIter iterTop
= testTreeStore
.createIter(null);
273 TreeIter
peekIter(bit pushIt
)
275 TreeIter iter
= testTreeStore
.append(peek());
283 TreeIter
popIter(bit pushIt
)
285 TreeIter iter
= testTreeStore
.append(pop());
294 testTreeStore
.set(iterTop
, new HTreeNode("ObjectG","GObject","Parent of the main DUI objects",90));
296 testTreeStore
.set(peekIter(true), new HTreeNode("ObjectGtk","GtkObject","The main gtk object",100));
297 testTreeStore
.set(peekIter(true), new HTreeNode("Misc","GtkMisc","Comon for Most widgets",100));
299 testTreeStore
.set(peekIter(true), new HTreeNode("Label","GtkLabel","Display only widget",100));
300 testTreeStore
.set(popIter(false), new HTreeNode("AccelLabel","GtkAccelLabel","A label with a thing",1));
301 testTreeStore
.set(peekIter(false), new HTreeNode("Arrow","GtkArrow","A standard arrow",100));
302 testTreeStore
.set(popIter(false), new HTreeNode("Image","GtkImage","A image",100));
303 testTreeStore
.set(peekIter(true), new HTreeNode("Container","GtkContainer","Comon for all widgets that can contain other widgets",90));
304 testTreeStore
.set(peekIter(false), new HTreeNode("Bin","GtkBin","Comon for many widgets",90));
306 testTreeStore
.set(peekIter(false), new HTreeNode("Alignment","GtkAlignment","Aligns a widget in a larger area",100));
307 testTreeStore
.set(peekIter(true), new HTreeNode("Frame","GtkFrame","",100));
308 testTreeStore
.set(popIter(false), new HTreeNode("AspectFrame","GtkAspectFrame","",100));
309 testTreeStore
.set(peekIter(true), new HTreeNode("Button","GtkButton","",90));
311 testTreeStore
.set(peekIter(true), new HTreeNode("ToggleButton","GtkToggleButton","",0));
312 testTreeStore
.set(peekIter(false), new HTreeNode("CheckButton","GtkCheckButton","",0));
313 testTreeStore
.set(popIter(false), new HTreeNode("RadioButton","GtkRadioButton","",0));
314 testTreeStore
.set(popIter(false), new HTreeNode("OptionMenu","GtkOptionMenu","",0));
315 testTreeStore
.set(peekIter(true), new HTreeNode("Item","GtkItem","",0));
316 testTreeStore
.set(peekIter(true), new HTreeNode("MenuItem","GtkMenuItem","",0));
317 testTreeStore
.set(peekIter(true), new HTreeNode("CheckMenuItem","GtkCheckMenuItem","",0));
318 testTreeStore
.set(popIter(false), new HTreeNode("RadioMenuItem","GtkRadioMenuItem","",0));
319 testTreeStore
.set(peekIter(false), new HTreeNode("ImageMenuItem","GtkImageMenuItem","",0));
320 testTreeStore
.set(peekIter(false), new HTreeNode("SeparatorMenuItem","GtkSeparatorMenuItem","",0));
321 testTreeStore
.set(popIter(false), new HTreeNode("TearoffMenuItem","GtkTearoffMenuItem","",0));
322 testTreeStore
.set(peekIter(true), new HTreeNode("Window","GtkWindow","",0));
323 testTreeStore
.set(peekIter(true), new HTreeNode("Dialog","GtkDialog","",0));
324 testTreeStore
.set(peekIter(false), new HTreeNode("ColorSelectionDialog","GtkColorSelectionDialog","",0));
325 testTreeStore
.set(peekIter(false), new HTreeNode("FileSelection","GtkFileSelection","",0));
326 testTreeStore
.set(peekIter(false), new HTreeNode("FontSelectionDialog","GtkFontSelectionDialog","",0));
327 testTreeStore
.set(peekIter(false), new HTreeNode("InputDialog","GtkInputDialog","",0));
328 testTreeStore
.set(popIter(false), new HTreeNode("MessageDialog","GtkMessageDialog","",0));
329 testTreeStore
.set(popIter(false), new HTreeNode("Plug","GtkPlug","",0));
330 testTreeStore
.set(peekIter(false), new HTreeNode("EventBox","GtkEventBox","",0));
331 testTreeStore
.set(peekIter(false), new HTreeNode("HandleBox","GtkHandleBox","",0));
332 testTreeStore
.set(peekIter(false), new HTreeNode("ScrolledWindow","GtkScrolledWindow","",0));
333 testTreeStore
.set(popIter(false), new HTreeNode("Viewport","GtkViewport","",0));
336 testTreeStore
.set(peekIter(true), new HTreeNode("Box","GtkBox","",0));
337 testTreeStore
.set(peekIter(true), new HTreeNode("ButtonBox","GtkButtonBox","",0));
338 testTreeStore
.set(peekIter(false), new HTreeNode("HButtonBox","GtkHButtonBox","",0));
339 testTreeStore
.set(popIter(false), new HTreeNode("VButtonBox","GtkVButtonBox","",0));
340 testTreeStore
.set(peekIter(true), new HTreeNode("VBox","GtkVBox","",100));
341 testTreeStore
.set(peekIter(false), new HTreeNode("ColorSelection","GtkColorSelection","",100));
342 testTreeStore
.set(peekIter(false), new HTreeNode("FontSelection","GtkFontSelection","",100));
343 testTreeStore
.set(popIter(false), new HTreeNode("GammaCurve","GtkGammaCurve","",0));
344 testTreeStore
.set(popIter(true), new HTreeNode("HBox","GtkHBox","",100));
345 testTreeStore
.set(peekIter(false), new HTreeNode("Combo","GtkCombo","",0));
346 testTreeStore
.set(popIter(false), new HTreeNode("Statusbar","GtkStatusbar","",0));
347 testTreeStore
.set(peekIter(false), new HTreeNode("Fixed","GtkFixed","",0));
348 testTreeStore
.set(peekIter(true), new HTreeNode("Paned","GtkPaned","",0));
349 testTreeStore
.set(peekIter(false), new HTreeNode("HPaned","GtkHPaned","",0));
350 testTreeStore
.set(popIter(false), new HTreeNode("VPaned","GtkVPaned","",0));
351 testTreeStore
.set(peekIter(false), new HTreeNode("Layout","GtkLayout","",0));
352 testTreeStore
.set(peekIter(true), new HTreeNode("MenuShell","GtkMenuShell","",0));
353 testTreeStore
.set(peekIter(false), new HTreeNode("MenuBar","GtkMenuBar","",0));
354 testTreeStore
.set(popIter(false), new HTreeNode("Menu","GtkMenu","",0));
355 testTreeStore
.set(peekIter(false), new HTreeNode("Notebook","GtkNotebook","",0));
356 testTreeStore
.set(peekIter(false), new HTreeNode("Socket","GtkSocket","",0));
357 testTreeStore
.set(peekIter(false), new HTreeNode("Table","GtkTable","",0));
358 testTreeStore
.set(peekIter(false), new HTreeNode("TextView","GtkTextView","",0));
359 testTreeStore
.set(peekIter(false), new HTreeNode("Toolbar","GtkToolbar","",0));
360 testTreeStore
.set(popIter(false), new HTreeNode("TreeView","GtkTreeView","",0));
361 testTreeStore
.set(peekIter(false), new HTreeNode("Calendar","GtkCalendar","",0));
363 testTreeStore
.set(peekIter(true), new HTreeNode("DrawingArea","GtkDrawingArea","",0));
364 testTreeStore
.set(popIter(false), new HTreeNode("Curve","GtkCurve","",0));
365 testTreeStore
.set(peekIter(true), new HTreeNode("Editable","GtkEditable","",0));
366 testTreeStore
.set(peekIter(true), new HTreeNode("Entry","GtkEntry","",0));
367 testTreeStore
.set(popIter(false), new HTreeNode("SpinButton","GtkSpinButton","",0));
369 testTreeStore
.set(peekIter(true), new HTreeNode("Ruler","GtkRuler","",0));
370 testTreeStore
.set(peekIter(false), new HTreeNode("HRuler","GtkHRuler","",0));
371 testTreeStore
.set(popIter(false), new HTreeNode("VRuler","GtkVRuler","",0));
372 testTreeStore
.set(peekIter(true), new HTreeNode("Range","GtkRange","",0));
373 testTreeStore
.set(peekIter(true), new HTreeNode("Scale","GtkScale","",0));
374 testTreeStore
.set(peekIter(true), new HTreeNode("HScale","GtkHScale","",0));
375 testTreeStore
.set(popIter(false), new HTreeNode("VScale","GtkVScale","",0));
376 testTreeStore
.set(popIter(true), new HTreeNode("Scrollbar","GtkScrollbar","",0));
377 testTreeStore
.set(peekIter(false), new HTreeNode("HScrollbar","GtkHScrollbar","",0));
378 testTreeStore
.set(popIter(false), new HTreeNode("VScrollbar","GtkVScrollbar","",0));
380 testTreeStore
.set(peekIter(true), new HTreeNode("Separator","GtkSeparator","",0));
381 testTreeStore
.set(peekIter(false), new HTreeNode("HSeparator","GtkHSeparator","",0));
382 testTreeStore
.set(popIter(false), new HTreeNode("VSeparator","GtkVSeparator","",0));
383 testTreeStore
.set(peekIter(false), new HTreeNode("Invisible","GtkInvisible","",0));
384 testTreeStore
.set(peekIter(false), new HTreeNode("Preview","GtkPreview","",0));
385 testTreeStore
.set(popIter(false), new HTreeNode("ProgressBar","GtkProgressBar","",0));
386 testTreeStore
.set(peekIter(false), new HTreeNode("Adjustment","GtkAdjustment","Values for the range widget (scroolbars, spin buttons...)",0));
387 testTreeStore
.set(peekIter(true), new HTreeNode("CellRenderer","GtkCellRenderer","",0));
388 testTreeStore
.set(peekIter(false), new HTreeNode("CellRendererPixbuf","GtkCellRendererPixbuf","",0));
389 testTreeStore
.set(peekIter(false), new HTreeNode("CellRendererText","GtkCellRendererText","",0));
390 testTreeStore
.set(popIter(false), new HTreeNode("CellRendererToggle","GtkCellRendererToggle","",0));
391 testTreeStore
.set(peekIter(false), new HTreeNode("ItemFactory","GtkItemFactory","",1));
392 testTreeStore
.set(peekIter(false), new HTreeNode("Tooltips","GtkTooltips","",0));
393 testTreeStore
.set(popIter(false), new HTreeNode("TreeViewColumn","GtkTreeViewColumn","",0));
395 testTreeStore
.set(peekIter(false), new HTreeNode("ListG","GList","a double linked list used to comboBox and stuf",0));