5
using Do.Platform.Linux;
7
using Do.Universe.Common;
10
namespace RequestTracker
13
[System.ComponentModel.ToolboxItem(true)]
14
public partial class RTPrefs : Gtk.Bin
16
Gtk.ListStore rtListStore;
17
Gtk.TreeViewColumn nameColumn;
18
Gtk.TreeViewColumn urlColumn;
20
protected virtual void OnRemoveBtnClicked (object sender, System.EventArgs e)
24
RTTree.Selection.GetSelected (out model, out iter);
25
rtListStore.Remove (ref iter);
30
protected virtual void OnAddBtnClicked (object sender, System.EventArgs e)
32
Gtk.TreeIter iter = rtListStore.AppendValues ("", "");
33
Gtk.TreePath path = rtListStore.GetPath (iter);
34
RTTree.SetCursor (path, nameColumn, true);
37
protected virtual void OnNameCellEdited (object sender, Gtk.EditedArgs args)
39
OnCellEdited (sender, args, 0);
42
protected virtual void OnURLCellEdited (object sender, Gtk.EditedArgs args)
44
// Test the URL is valid
46
new System.Uri (args.NewText);
47
} catch (System.UriFormatException) {
51
OnCellEdited (sender, args, 1);
54
protected virtual void OnCellEdited (object sender, Gtk.EditedArgs args, int column)
57
rtListStore.GetIter (out iter, new Gtk.TreePath (args.Path));
59
rtListStore.SetValue (iter, column, args.NewText);
64
public void UpdatePrefs ()
70
int num_children = rtListStore.IterNChildren ();
72
for (int i = 0; i < num_children; i++) {
73
rtListStore.IterNthChild (out iter, i);
75
name = rtListStore.GetValue (iter, 0).ToString ();
76
url = rtListStore.GetValue (iter, 1).ToString ();
78
if (!string.IsNullOrEmpty (name) && !string.IsNullOrEmpty (url)) {
82
URLs += name.Replace ("|", "");
84
URLs += url.Replace ("|", "");
88
RTPreferences prefs = new RTPreferences ();
94
RTPreferences prefs = new RTPreferences();
98
nameColumn = new Gtk.TreeViewColumn ();
99
nameColumn.Title = "Name";
100
urlColumn = new Gtk.TreeViewColumn ();
101
urlColumn.Title = "URL";
103
RTTree.AppendColumn (nameColumn);
104
RTTree.AppendColumn (urlColumn);
106
rtListStore = new Gtk.ListStore (typeof (string), typeof (string));
107
RTTree.Model = rtListStore;
109
Gtk.CellRendererText nameNameCell = new Gtk.CellRendererText ();
110
nameNameCell.Editable = true;
111
nameNameCell.Edited += OnNameCellEdited;
112
nameColumn.PackStart (nameNameCell, true);
114
Gtk.CellRendererText urlTitleCell = new Gtk.CellRendererText ();
115
urlTitleCell.Editable = true;
116
urlTitleCell.Edited += OnURLCellEdited;
117
urlColumn.PackStart (urlTitleCell, true);
119
nameColumn.AddAttribute (nameNameCell, "text", 0);
120
urlColumn.AddAttribute (urlTitleCell, "text", 1);
122
if (!string.IsNullOrEmpty (prefs.URLs)) {
123
string[] urlbits = prefs.URLs.Split('|');
124
for (int i = 0; i < urlbits.Length; i++) {
125
string name = urlbits[i];
126
string uri = urlbits[++i];
129
url = new System.Uri(uri);
130
} catch (System.UriFormatException) {
134
rtListStore.AppendValues (name, url.ToString());