void SetupPropertyEditor (IPropertyEditor peditor) { // Ensure the key exists Preferences.Get (peditor.Key); peditor.Setup (); }
public InsertTimestampPreferences() : base(false, 12) { // Get current values String dateFormat = (string)Preferences.Get( Preferences.INSERT_TIMESTAMP_FORMAT); DateTime now = DateTime.Now; // Label Gtk.Label label = new Gtk.Label(Catalog.GetString( "Choose one of the predefined formats " + "or use your own.")); label.Wrap = true; label.Xalign = 0; PackStart(label); // Use Selected Format selected_radio = new Gtk.RadioButton(Catalog.GetString( "Use _Selected Format")); PackStart(selected_radio); // 1st column (visible): formatted date // 2nd column (not visible): date format store = new Gtk.ListStore(typeof(string), typeof(string)); foreach (String format in formats) { store.AppendValues(now.ToString(format), format); } scroll = new Gtk.ScrolledWindow(); scroll.ShadowType = Gtk.ShadowType.In; PackStart(scroll); tv = new Gtk.TreeView(store); tv.HeadersVisible = false; tv.AppendColumn("Format", new Gtk.CellRendererText(), "text", 0); scroll.Add(tv); // Use Custom Format Gtk.HBox customBox = new Gtk.HBox(false, 12); PackStart(customBox); custom_radio = new Gtk.RadioButton( selected_radio, Catalog.GetString("_Use Custom Format")); customBox.PackStart(custom_radio); custom_entry = new Gtk.Entry(); customBox.PackStart(custom_entry); IPropertyEditor entryEditor = Services.Factory.CreatePropertyEditorEntry( Preferences.INSERT_TIMESTAMP_FORMAT, custom_entry); entryEditor.Setup(); // Activate/deactivate widgets bool useCustom = true; Gtk.TreeIter iter; store.GetIterFirst(out iter); foreach (object[] row in store) { if (dateFormat.Equals(row[1])) { // Found format in list useCustom = false; break; } store.IterNext(ref iter); } if (useCustom) { custom_radio.Active = true; scroll.Sensitive = false; } else { selected_radio.Active = true; custom_entry.Sensitive = false; tv.Selection.SelectIter(iter); Gtk.TreePath path = store.GetPath(iter); tv.ScrollToCell(path, null, false, 0, 0); } // Register Toggled event for one radio button only selected_radio.Toggled += OnSelectedRadioToggled; tv.Selection.Changed += OnSelectionChanged; ShowAll(); }