コード例 #1
0
        public void SaveConfigToFile(string settingsFilename)
        {
            var encoding = new UTF8Encoding(false);

            try {
                bool onWindows = Environment.OSVersion.Platform != PlatformID.Unix &&
                                 Environment.OSVersion.Platform != PlatformID.MacOSX;
                using (StreamWriter xout =
                           new StreamWriter(new FileStream(settingsFilename, FileMode.Create), encoding))
                {
                    var xsettings = new XmlWriterSettings {
                        Encoding = encoding, Indent = true
                    };
                    if (!onWindows)
                    {
                        xsettings.NewLineChars = "\n";
                    }
                    using (XmlWriter xmlOut = XmlWriter.Create(xout, xsettings))
                    {
                        xmlOut.WriteStartDocument();

                        xmlOut.WriteStartElement("DockingWindows2");

                        if (this.SaveCustomConfig != null)
                        {
                            SaveCustomConfig(xmlOut);
                        }

                        //Saving the layout causes problems on Mono
                        if (onWindows)
                        {
                            xmlOut.WriteStartElement("DockingLayout");
                            DockManagerControl.SavedLayout layout = dockManager.SaveLayout();
                            layout.SaveToXML(xmlOut);
                            xmlOut.WriteEndElement();
                        }

                        xmlOut.WriteEndElement();
                        xmlOut.Close();
                    }
                }
            }
            catch (Exception e) {
                Console.Error.WriteLine("Error writing XML settings file:\n{0}", e);
            }
        }
コード例 #2
0
        public void LoadConfigFromFile(string settingsFilename)
        {
            loadingInProgress = true;
            //Back up the current layout (since if there is an error while loading, the dock manager
            //might be rendered useless).
            DockManagerControl.SavedLayout backupLayout = dockManager.SaveLayout();
            try
            {
                if (File.Exists(settingsFilename))
                {
                    XPathDocument  xmlIn = new XPathDocument(settingsFilename);
                    XPathNavigator xpath = xmlIn.CreateNavigator();
                    //TODO The "ARMSIMApplicationSettings" key is probably incorrect (for symmetry with the save method, it should probably be "DockingWindows2")
                    XmlReader xmlReader = xpath.SelectSingleNode("//ARMSimApplicationSettings").ReadSubtree();
                    xmlReader.MoveToContent();

                    if (this.LoadCustomConfig != null)
                    {
                        LoadCustomConfig(xmlReader);
                    }

                    //TODO
                    //mStaticMainForm.LoadXML(xpath.SelectSingleNode("//" + StaticMainForm.XMLKEYNAME));
                    if (!WeifenLuo.WinFormsUI.Docking.Win32Helper.IsRunningOnMono)
                    {
                        var xmlReader1 = xpath.SelectSingleNode("//DockingLayout");
                        if (xmlReader1 != null)
                        {
                            xmlReader = xmlReader1.ReadSubtree();
                            xmlReader.MoveToContent();
                            DockManagerControl.SavedLayout layout = DockManagerControl.SavedLayout.LoadFromXML(xmlReader);
                            dockManager.LoadLayout(layout);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                ARMPluginInterfaces.Utils.OutputDebugString("Exception in loading xml save file:" + ex.Message);
                //If there was some kind of error in the loading process, revert to the backed up layout.
                dockManager.LoadLayout(backupLayout);
            }
            loadingInProgress = false;
        }