corrade-vassal – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 vero 1 using System;
2 using System.Collections.Generic;
3 using Gtk;
4 using GridProxyGUI;
5  
6 namespace GridProxyGUI
7 {
8 public class FilterScroller : ScrolledWindow
9 {
10 ListStore store;
11  
12 public FilterScroller(Container parent, ListStore store)
13 {
14 this.store = store;
15  
16 TreeView tvFilterUDP = new TreeView();
17 TreeViewColumn cbCol = new TreeViewColumn();
18 TreeViewColumn udpCol = new TreeViewColumn();
19  
20 CellRendererToggle cbCell = new CellRendererToggle();
21 cbCell.Toggled += new ToggledHandler(cbCell_Toggled);
22 cbCell.Activatable = true;
23 cbCol.PackStart(cbCell, true);
24 cbCol.SetCellDataFunc(cbCell, renderToggleCell);
25 tvFilterUDP.AppendColumn(cbCol);
26  
27 CellRendererText cell = new CellRendererText();
28 udpCol.PackStart(cell, true);
29 udpCol.SetCellDataFunc(cell, renderTextCell);
30 tvFilterUDP.AppendColumn(udpCol);
31  
32 tvFilterUDP.Model = store;
33 tvFilterUDP.HeadersVisible = false;
34 tvFilterUDP.Selection.Mode = SelectionMode.Single;
35  
36 foreach (var child in new List<Widget>(parent.Children))
37 {
38 parent.Remove(child);
39 }
40  
41 Add(tvFilterUDP);
42 ShadowType = ShadowType.EtchedIn;
43 parent.Add(this);
44 parent.ShowAll();
45 }
46  
47 void cbCell_Toggled(object o, ToggledArgs args)
48 {
49 TreeIter iter;
50 if (store.GetIterFromString(out iter, args.Path))
51 {
52 FilterItem item = store.GetValue(iter, 0) as FilterItem;
53 if (null != item)
54 {
55 item.Enabled = !item.Enabled;
56 store.SetValue(iter, 0, item);
57 }
58 }
59 }
60  
61 void renderTextCell(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
62 {
63 var item = model.GetValue(iter, 0) as FilterItem;
64 if (item != null)
65 {
66 ((CellRendererText)cell).Text = item.Name;
67 }
68 }
69  
70 void renderToggleCell(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter)
71 {
72 var item = model.GetValue(iter, 0) as FilterItem;
73 if (item != null)
74 {
75 ((CellRendererToggle)cell).Active = item.Enabled;
76 }
77 }
78  
79 }
80 }