1 module DemoCustomList; 2 3 import CustomList; 4 5 import glib.RandG; 6 import gtk.Main; 7 import gtk.ScrolledWindow; 8 import gtk.MainWindow; 9 import gtk.TreeView; 10 import gtk.TreeViewColumn; 11 import gtk.CellRendererText; 12 import gtk.ListStore; 13 14 class CustomListWindow : MainWindow 15 { 16 this() 17 { 18 super("GtkD - Custom TreeModel"); 19 setDefaultSize(200, 400); 20 21 ScrolledWindow scrollwin = new ScrolledWindow(); 22 TreeView view = createViewAndModel(); 23 24 scrollwin.add(view); 25 add(scrollwin); 26 27 showAll(); 28 } 29 30 TreeView createViewAndModel() 31 { 32 TreeViewColumn col; 33 CellRendererText renderer; 34 CustomList customlist; 35 TreeView view; 36 37 customlist = new CustomList(); 38 fillModel(customlist); 39 40 view = new TreeView(customlist); 41 42 col = new TreeViewColumn(); 43 renderer = new CellRendererText(); 44 col.packStart(renderer, true); 45 col.addAttribute(renderer, "text", CustomListColumn.Name); 46 col.setTitle("Name"); 47 view.appendColumn(col); 48 49 col = new TreeViewColumn(); 50 renderer = new CellRendererText(); 51 col.packStart(renderer, true); 52 col.addAttribute(renderer, "text", CustomListColumn.YearBorn); 53 col.setTitle("Year Born"); 54 view.appendColumn(col); 55 56 return view; 57 } 58 59 void fillModel (CustomList customlist) 60 { 61 string[] firstnames = [ "Joe", "Jane", "William", "Hannibal", "Timothy", "Gargamel" ]; 62 string[] surnames = [ "Grokowich", "Twitch", "Borheimer", "Bork" ]; 63 64 foreach (sname; surnames) 65 { 66 foreach (fname; firstnames) 67 { 68 customlist.appendRecord(fname ~" "~ sname, 1900 + (RandG.randomInt() % 100)); 69 } 70 } 71 } 72 } 73 74 void main (string[] arg) 75 { 76 Main.init(arg); 77 78 new CustomListWindow(); 79 80 Main.run(); 81 }