private void LoadSettings() { if (!(_addin is IWeSayAddinHasSettings)) { return; } IWeSayAddinHasSettings addin = (IWeSayAddinHasSettings)_addin; object existingSettings = addin.Settings; if (existingSettings == null) { return; // this class doesn't do settings } //this is not necessarily the right place for this deserialization to be happening string settings = AddinSet.Singleton.GetSettingsXmlForAddin(_addin.ID); if (!String.IsNullOrEmpty(settings)) { XmlSerializer x = new XmlSerializer(existingSettings.GetType()); using (StringReader r = new StringReader(settings)) { addin.Settings = x.Deserialize(r); } } }
private void OnSetupClicked(object sender, LinkLabelLinkClickedEventArgs e) { try { LoadSettings(); IWeSayAddinHasSettings addin = (IWeSayAddinHasSettings)_addin; if (!addin.DoShowSettingsDialog(ParentForm, _projectInfo)) { return; } object settings = addin.Settings; if (settings == null) { return; } XmlSerializer serializer = new XmlSerializer(settings.GetType()); StringBuilder builder = new StringBuilder(); XmlWriterSettings writerSettings = new XmlWriterSettings(); writerSettings.ConformanceLevel = ConformanceLevel.Fragment; //we don't want the <xml header using (StringWriter stringWriter = new StringWriter(builder)) { using (XmlTextWriter writer = new FragmentXmlTextWriter(stringWriter)) { writer.Formatting = Formatting.Indented; XmlSerializerNamespaces ns = new XmlSerializerNamespaces(); ns.Add("", ""); //prevent writing namespaces serializer.Serialize(writer, settings, ns); writer.Close(); } string settingsXml = builder.ToString(); stringWriter.Close(); AddinSet.Singleton.SetSettingsForAddin(((IWeSayAddin)addin).ID, settingsXml); } } catch (Exception error) { ErrorReport.NotifyUserOfProblem( "Sorry, WeSay had a problem storing those settings. {0}", error.Message); } UpdateVisualThings(); }