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); } }
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; }