소스 검색

Moved TreeView column setting inside the template

Dexter89 11 년 전
부모
커밋
c31189f53f
2개의 변경된 파일12개의 추가작업 그리고 6개의 파일을 삭제
  1. 10 3
      tools/gui/crown-tests/GtkExt/TreeViewTemplate.cs
  2. 2 3
      tools/gui/crown-tests/MainWindow.cs

+ 10 - 3
tools/gui/crown-tests/GtkExt/TreeViewTemplate.cs

@@ -5,12 +5,19 @@ namespace crown_tests.GtkExt
 {
 	public class TreeViewTemplate: ITemplate
 	{
-		public List<TreeViewRowTemplate> RowTemplates = new List<TreeViewRowTemplate>();
+		private List<TreeViewRowTemplate> RowTemplates = new List<TreeViewRowTemplate>();
+		private List<Tuple<String, Gtk.CellRenderer>> Columns = new List<Tuple<String, Gtk.CellRenderer>>();
 
 		public TreeViewTemplate()
 		{
 		}
 
+		public TreeViewTemplate AddColumn(String Title, Gtk.CellRenderer renderer)
+		{
+			Columns.Add(Tuple.Create(Title, renderer));
+			return this;
+		}
+
 		public TreeViewTemplate AddRowTemplate(TreeViewRowTemplate rowTemplate)
 		{
 			RowTemplates.Add(rowTemplate);
@@ -25,8 +32,8 @@ namespace crown_tests.GtkExt
 				return;
 			}
 
-			foreach (var col in treeView.Columns) {
-				col.SetCellDataFunc(col.CellRenderers[0], ValuePropertyDataFunc);
+			foreach (var col in Columns) {
+				treeView.AppendColumn(col.Item1, col.Item2, ValuePropertyDataFunc);
 			}
 		}
 

+ 2 - 3
tools/gui/crown-tests/MainWindow.cs

@@ -16,12 +16,11 @@ namespace crown_tests
 		{
 			this.Build();
 
-			twTests.AppendColumn("Name", new Gtk.CellRendererText());
-			twTests.AppendColumn("State", new Gtk.CellRendererText());
-
 			var crownTestsViewModel = new CrownTestsViewModel();
 			Templating.ApplyTemplate(twTests,
 				new TreeViewTemplate()
+					.AddColumn("Name", new Gtk.CellRendererText())
+					.AddColumn("State", new Gtk.CellRendererText())
 				  .AddRowTemplate(TreeViewRowTemplate.Create(typeof(TestCategory))
 																						 .SetBinding("Name", "Name"))
 					.AddRowTemplate(TreeViewRowTemplate.Create(typeof(Test))