4
namespace Stetic.Editor
6
public class FlagsSelectorDialog: IDisposable
8
[Glade.Widget] Gtk.TreeView treeView;
9
[Glade.Widget ("FlagsSelectorDialog")] Gtk.Dialog dialog;
14
public FlagsSelectorDialog (Gtk.Window parent, EnumDescriptor enumDesc, uint flags, string title)
19
Glade.XML xml = new Glade.XML (null, "stetic.glade", "FlagsSelectorDialog", null);
20
xml.Autoconnect (this);
22
store = new Gtk.ListStore (typeof(bool), typeof(string), typeof(uint));
23
treeView.Model = store;
25
Gtk.TreeViewColumn col = new Gtk.TreeViewColumn ();
27
Gtk.CellRendererToggle tog = new Gtk.CellRendererToggle ();
28
tog.Toggled += new Gtk.ToggledHandler (OnToggled);
29
col.PackStart (tog, false);
30
col.AddAttribute (tog, "active", 0);
32
Gtk.CellRendererText crt = new Gtk.CellRendererText ();
33
col.PackStart (crt, true);
34
col.AddAttribute (crt, "text", 1);
36
treeView.AppendColumn (col);
38
foreach (Enum value in enumDesc.Values) {
39
EnumValue eval = enumDesc[value];
42
uint val = (uint) (int) eval.Value;
43
store.AppendValues (((flags & val) != 0), eval.Label, val);
50
dialog.TransientFor = parent;
54
public void Dispose ()
59
void OnToggled (object s, Gtk.ToggledArgs args)
62
if (!store.GetIterFromString (out iter, args.Path))
65
bool oldValue = (bool) store.GetValue (iter, 0);
66
uint flag = (uint) store.GetValue (iter, 2);
67
store.SetValue (iter, 0, !oldValue);