コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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();
        }