// // Author: // Mikael Hallendal // // (C) 2004 Imendio HB // using GConf; using Glade; using Gtk; using System; using System.Collections; namespace Imendio.Blam { public class Preference { public static string REVERSE_ENTRIES = "behaviour/reverse_entries"; public static string AUTO_REFRESH = "behaviour/auto_refresh"; public static string AUTO_REFRESH_RATE = "behaviour/auto_refresh_rate"; public static string IGNORE_SSL_ERR = "behaviour/ignore_ssl_err"; public static string BEHAVIOUR_PATH = Conf.GetFullKey("behaviour"); public static string FONT_PATH = "/desktop/gnome/interface"; public static string VARIABLE_FONT = "/desktop/gnome/interface/font_name"; public static string FIXED_FONT = "/desktop/gnome/interface/monospace_font_name"; public static string THEME = "ui/theme"; } public class PreferencesDialog { [Widget] Gtk.Dialog preferencesDialog = null; [Widget] Gtk.Label boldBehaviourLabel = null; [Widget] Gtk.CheckButton reverseEntriesCheckButton = null; [Widget] Gtk.CheckButton autoRefreshCheckButton = null; [Widget]Gtk.CheckButton ignoreSSLErr = null; [Widget] Gtk.SpinButton refreshRateSpinButton = null; [Widget] Gtk.Label boldThemeLabel = null; [Widget] Gtk.ComboBox themeComboBox = null; public PreferencesDialog (Gtk.Window parentWindow) { Glade.XML gladeXML = Glade.XML.FromAssembly ("blam.glade", "preferencesDialog", null); gladeXML.Autoconnect (this); preferencesDialog.TransientFor = parentWindow; preferencesDialog.Icon = Gdk.Pixbuf.LoadFromResource ("blam.png"); boldBehaviourLabel.Markup = "" + boldBehaviourLabel.Text + ""; bool reverseEntries = Conf.Get (Preference.REVERSE_ENTRIES, false); reverseEntriesCheckButton.Active = reverseEntries; bool autoRefresh = Conf.Get (Preference.AUTO_REFRESH, false); autoRefreshCheckButton.Active = autoRefresh; int refreshRate = Conf.Get (Preference.AUTO_REFRESH_RATE, 15); refreshRateSpinButton.Value = refreshRate; boldThemeLabel.Markup = "" + boldThemeLabel.Text + ""; themeComboBox.Changed += new EventHandler(ThemeSelectionChanged); Conf.AddNotify (Preference.BEHAVIOUR_PATH, new NotifyEventHandler (ConfNotifyHandler)); } public void Show () { /* This needs to be this late, otherwise mono will die. */ fill_themes_combo(themeComboBox); preferencesDialog.ShowAll (); } public void CloseButtonClicked (object obj, EventArgs args) { preferencesDialog.Hide(); } public void ReverseItemsCheckButtonToggled (object obj, EventArgs args) { Conf.Set (Preference.REVERSE_ENTRIES, reverseEntriesCheckButton.Active); } public void AutoRefreshCheckButtonToggled (object obj, EventArgs args) { Conf.Set (Preference.AUTO_REFRESH, autoRefreshCheckButton.Active); } public void RefreshRateSpinButtonChanged (object obj, EventArgs args) { Conf.Set (Preference.AUTO_REFRESH_RATE, (int) refreshRateSpinButton.Value); } public void IgnoreSSLErrToggled (object obj, EventArgs args) { Conf.Set (Preference.IGNORE_SSL_ERR, (bool) ignoreSSLErr.Active); } public void ThemeSelectionChanged (object obj, EventArgs args) { Gtk.ComboBox box = obj as Gtk.ComboBox; Conf.Set(Preference.THEME, Application.TheApp.ThemeManager.PathByName(box.ActiveText)); } private void ConfNotifyHandler (object sender, NotifyEventArgs args) { if (args.Key == Conf.GetFullKey (Preference.REVERSE_ENTRIES)) { reverseEntriesCheckButton.Active = (bool) args.Value; } else if (args.Key == Conf.GetFullKey (Preference.AUTO_REFRESH)) { autoRefreshCheckButton.Active = (bool) args.Value; } else if (args.Key == Conf.GetFullKey (Preference.AUTO_REFRESH_RATE)) { refreshRateSpinButton.Value = (int) args.Value; } else if (args.Key == Conf.GetFullKey (Preference.IGNORE_SSL_ERR)) { ignoreSSLErr.Active = (bool) args.Value; } } private void fill_themes_combo(Gtk.ComboBox box) { box.Clear(); CellRendererText cell = new CellRendererText(); box.PackStart(cell, false); box.AddAttribute(cell, "text", 0); ListStore store = new ListStore(typeof(string)); box.Model = store; TreeIter iter; string cur_theme = Conf.Get(Preference.THEME, Defines.DEFAULT_THEME); cur_theme = cur_theme.Substring(cur_theme.LastIndexOf("/") + 1); IList themes = Application.TheApp.ThemeManager.GetThemeList(); foreach(Theme t in themes){ iter = store.AppendValues(t.Name); if(t.Name == cur_theme){ box.SetActiveIter(iter); } } } } }