/// <summary> /// Store all GreenshotControl values to the configuration /// </summary> protected void StoreFields() { bool iniDirty = false; foreach (FieldInfo field in GetCachedFields(GetType())) { Object controlObject = field.GetValue(this); if (controlObject == null) { continue; } IGreenshotConfigBindable configBindable = controlObject as IGreenshotConfigBindable; if (configBindable == null) { continue; } if (!string.IsNullOrEmpty(configBindable.SectionName) && !string.IsNullOrEmpty(configBindable.PropertyName)) { IniSection section = IniConfig.GetIniSection(configBindable.SectionName); if (section != null) { IniValue iniValue = null; if (!section.Values.TryGetValue(configBindable.PropertyName, out iniValue)) { continue; } CheckBox checkBox = controlObject as CheckBox; if (checkBox != null) { iniValue.Value = checkBox.Checked; iniDirty = true; continue; } RadioButton radioButton = controlObject as RadioButton; if (radioButton != null) { iniValue.Value = radioButton.Checked; iniDirty = true; continue; } TextBox textBox = controlObject as TextBox; if (textBox != null) { HotkeyControl hotkeyControl = controlObject as HotkeyControl; if (hotkeyControl != null) { iniValue.Value = hotkeyControl.ToString(); iniDirty = true; continue; } iniValue.UseValueOrDefault(textBox.Text); iniDirty = true; continue; } GreenshotComboBox comboxBox = controlObject as GreenshotComboBox; if (comboxBox != null) { iniValue.Value = comboxBox.GetSelectedEnum(); iniDirty = true; continue; } } } } if (iniDirty) { IniConfig.Save(); } }
/// <summary> /// Fill all GreenshotControls with the values from the configuration /// </summary> protected void FillFields() { foreach (FieldInfo field in GetCachedFields(GetType())) { Object controlObject = field.GetValue(this); if (controlObject == null) { continue; } IGreenshotConfigBindable configBindable = controlObject as IGreenshotConfigBindable; if (configBindable == null) { continue; } if (!string.IsNullOrEmpty(configBindable.SectionName) && !string.IsNullOrEmpty(configBindable.PropertyName)) { IniSection section = IniConfig.GetIniSection(configBindable.SectionName); if (section != null) { IniValue iniValue = null; if (!section.Values.TryGetValue(configBindable.PropertyName, out iniValue)) { LOG.WarnFormat("Wrong property '{0}' configured for field '{1}'", configBindable.PropertyName, field.Name); continue; } CheckBox checkBox = controlObject as CheckBox; if (checkBox != null) { checkBox.Checked = (bool)iniValue.Value; checkBox.Enabled = !iniValue.IsFixed; continue; } RadioButton radíoButton = controlObject as RadioButton; if (radíoButton != null) { radíoButton.Checked = (bool)iniValue.Value; radíoButton.Enabled = !iniValue.IsFixed; continue; } TextBox textBox = controlObject as TextBox; if (textBox != null) { HotkeyControl hotkeyControl = controlObject as HotkeyControl; if (hotkeyControl != null) { string hotkeyValue = (string)iniValue.Value; if (!string.IsNullOrEmpty(hotkeyValue)) { hotkeyControl.SetHotkey(hotkeyValue); hotkeyControl.Enabled = !iniValue.IsFixed; } continue; } textBox.Text = iniValue.ToString(); textBox.Enabled = !iniValue.IsFixed; continue; } GreenshotComboBox comboxBox = controlObject as GreenshotComboBox; if (comboxBox != null) { comboxBox.Populate(iniValue.ValueType); comboxBox.SetValue((Enum)iniValue.Value); comboxBox.Enabled = !iniValue.IsFixed; continue; } } } } OnFieldsFilled(); }