/// <summary> /// Handles when the done button is pressed. /// </summary> private void doneButton_Click(object sender, EventArgs e) { string wksName = nameTextBox.Text.Trim(); string wksLocation = workspaceTextBox.Text.Trim(); string xmlfolder = XMLTextBox.Text.Trim(); if (string.IsNullOrEmpty(wksName) || string.IsNullOrEmpty(wksLocation) || !Directory.Exists(wksLocation) || string.IsNullOrEmpty(xmlfolder) || !Directory.Exists(xmlfolder)) { MessageBox.Show(Resources.WorkspaceSettingWarning, Resources.Warning, MessageBoxButtons.OK); return; } string driveStr0 = Path.GetPathRoot(wksLocation); // create the given behavior folder if it does not exist string behaviorFolder = this.sourceTextBox.Text; if (string.IsNullOrEmpty(behaviorFolder)) { behaviorFolder = Path.Combine(wksLocation, "behaviors"); } string driveStr1 = Path.GetPathRoot(behaviorFolder); Debug.Check(driveStr1 == driveStr0); if (!Directory.Exists(behaviorFolder)) { Directory.CreateDirectory(behaviorFolder); } // create the given export folder if it does not exist string exportFolder = this.exportTextBox.Text; if (string.IsNullOrEmpty(exportFolder)) { exportFolder = Path.Combine(wksLocation, "exported"); } string driveStr2 = Path.GetPathRoot(behaviorFolder); Debug.Check(driveStr2 == driveStr0); if (!Directory.Exists(exportFolder)) { Directory.CreateDirectory(exportFolder); } // create the updated or new workspace if (_workspace != null) { _workspace = new Workspace(_filename, wksName, xmlfolder, behaviorFolder, exportFolder, _workspace.ExportDatas); } else { _workspace = new Workspace(_filename, wksName, xmlfolder, behaviorFolder, exportFolder); } if (!Plugin.IsASCII(_workspace.RelativeDefaultExportFolder)) { string errorMsg = string.Format("The relative export path '{0}' can only be ASCII", _workspace.RelativeDefaultExportFolder); MessageBox.Show(errorMsg, Resources.FileError, MessageBoxButtons.OK); return; } // update plugins foreach (string plugin in pluginListBox.CheckedItems) { _workspace.AddXMLPlugin(plugin); } Close(); }
/// <summary> /// Handles when the done button is pressed. /// </summary> private void doneButton_Click(object sender, EventArgs e) { string wksName = nameTextBox.Text.Trim(); string wksLocation = workspaceTextBox.Text.Trim(); string xmlfolder = XMLTextBox.Text.Trim(); if (string.IsNullOrEmpty(wksName) || string.IsNullOrEmpty(wksLocation) || !Directory.Exists(wksLocation)) //string.IsNullOrEmpty(xmlfolder) || !Directory.Exists(xmlfolder)) { MessageBox.Show(Resources.WorkspaceSettingWarning, Resources.Warning, MessageBoxButtons.OK); return; } string driveStr0 = Path.GetPathRoot(wksLocation); // create the given behavior folder if it does not exist string behaviorFolder = this.sourceTextBox.Text; if (string.IsNullOrEmpty(behaviorFolder)) { behaviorFolder = Path.Combine(wksLocation, "behaviors"); } string driveStr1 = Path.GetPathRoot(behaviorFolder); Debug.Check(driveStr1 == driveStr0); if (!Directory.Exists(behaviorFolder)) { Directory.CreateDirectory(behaviorFolder); } // create the given export folder if it does not exist string exportFolder = this.exportTextBox.Text; if (string.IsNullOrEmpty(exportFolder)) { exportFolder = Path.Combine(wksLocation, "exported"); } string driveStr2 = Path.GetPathRoot(behaviorFolder); Debug.Check(driveStr2 == driveStr0); if (!Directory.Exists(exportFolder)) { Directory.CreateDirectory(exportFolder); } string language = string.IsNullOrEmpty(_sourceLanguage) ? this.languageComboBox.Text : _sourceLanguage; // create the updated or new workspace if (_workspace != null) { _workspace = new Workspace(language, _filename, wksName, xmlfolder, behaviorFolder, exportFolder, _workspace.ExportDatas); } else { _workspace = new Workspace(language, _filename, wksName, xmlfolder, behaviorFolder, exportFolder); } if (!Plugin.IsASCII(_workspace.RelativeDefaultExportFolder)) { string errorMsg = string.Format("The relative export path '{0}' can only be ASCII", _workspace.RelativeDefaultExportFolder); MessageBox.Show(errorMsg, Resources.FileError, MessageBoxButtons.OK); return; } // create the types export folder if it does not exist string typesExportFolder = this.typesExportTextBox.Text; if (string.IsNullOrEmpty(typesExportFolder)) { typesExportFolder = exportFolder; } if (!Directory.Exists(typesExportFolder)) { Directory.CreateDirectory(typesExportFolder); } string wsFilename = _filename.Replace('/', '\\'); typesExportFolder = typesExportFolder.Replace('/', '\\'); typesExportFolder = Workspace.MakeRelative(typesExportFolder, wsFilename, true, true); typesExportFolder = typesExportFolder.Replace('\\', '/'); _workspace.SetExportInfo(language, _workspace.ShouldBeExported(language), _workspace.ExportFileCount(language), typesExportFolder); // update plugins foreach (string plugin in pluginListBox.CheckedItems) { _workspace.AddXMLPlugin(plugin); } Workspace.SaveWorkspaceFile(_workspace); Close(); }
public static Workspace LoadWorkspaceFile(string filename) { try { if (!File.Exists(filename)) { return null; } XmlDocument xml = new XmlDocument(); xml.Load(filename); XmlNode root = xml.ChildNodes[1]; if (root.Name == "workspace") { string name = GetAttribute(root, "name"); string xmlfolder = GetAttribute(root, "xmlmetafolder"); string folder = GetAttribute(root, "folder"); string defaultExportFolder = GetAttribute(root, "export"); if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(xmlfolder) || string.IsNullOrEmpty(folder) || string.IsNullOrEmpty(defaultExportFolder)) { throw new Exception(Resources.LoadWorkspaceError); } Workspace ws = new Workspace(filename, name, xmlfolder, folder, defaultExportFolder); foreach(XmlNode subnode in root) { if (subnode.NodeType == XmlNodeType.Element) { switch (subnode.Name) { // Load all XML plugins. case "xmlmeta": string nodeName = subnode.InnerText.Trim(); if (!string.IsNullOrEmpty(nodeName)) { ws.AddXMLPlugin(nodeName); } break; // Load export nodes. case "export": foreach(XmlNode exportNode in subnode) { if (exportNode.NodeType == XmlNodeType.Element) { if (!ws._exportDatas.ContainsKey(exportNode.Name)) { ws._exportDatas[exportNode.Name] = new ExportData(); } ExportData data = ws._exportDatas[exportNode.Name]; foreach(XmlNode exportInfoNode in exportNode) { switch (exportInfoNode.Name) { case "isexported": data.IsExported = Boolean.Parse(exportInfoNode.InnerText.Trim()); break; case "exportunifiedfile": data.ExportUnifiedFile = Boolean.Parse(exportInfoNode.InnerText.Trim()); break; case "folder": data.ExportFolder = exportInfoNode.InnerText.Trim(); break; case "includedfilenames": foreach(XmlNode sn in exportInfoNode) { if (sn.NodeType == XmlNodeType.Element && sn.Name == "includedfilename") { string includeFilename = sn.InnerText.Trim(); if (!data.ExportIncludedFilenames.Contains(includeFilename)) { data.ExportIncludedFilenames.Add(includeFilename); } } } break; } } } } break; } } } return ws; } } catch (Exception) { string msgError = string.Format(Resources.LoadWorkspaceError, filename); MessageBox.Show(msgError, Resources.LoadError, MessageBoxButtons.OK); } return null; }
public static Workspace LoadWorkspaceFile(string filename) { try { if (!File.Exists(filename)) { return(null); } XmlDocument xml = new XmlDocument(); xml.Load(filename); XmlNode root = xml.ChildNodes[1]; if (root.Name == "workspace") { string name = GetAttribute(root, "name"); string xmlfolder = GetAttribute(root, "xmlmetafolder"); string folder = GetAttribute(root, "folder"); string defaultExportFolder = GetAttribute(root, "export"); if (string.IsNullOrEmpty(name) || string.IsNullOrEmpty(xmlfolder) || string.IsNullOrEmpty(folder) || string.IsNullOrEmpty(defaultExportFolder)) { throw new Exception(Resources.LoadWorkspaceError); } Workspace ws = new Workspace(filename, name, xmlfolder, folder, defaultExportFolder); foreach (XmlNode subnode in root) { if (subnode.NodeType == XmlNodeType.Element) { switch (subnode.Name) { // Load all XML plugins. case "xmlmeta": string nodeName = subnode.InnerText.Trim(); if (!string.IsNullOrEmpty(nodeName)) { ws.AddXMLPlugin(nodeName); } break; // Load export nodes. case "export": foreach (XmlNode exportNode in subnode) { if (exportNode.NodeType == XmlNodeType.Element) { if (!ws._exportDatas.ContainsKey(exportNode.Name)) { ws._exportDatas[exportNode.Name] = new ExportData(); } ExportData data = ws._exportDatas[exportNode.Name]; foreach (XmlNode exportInfoNode in exportNode) { switch (exportInfoNode.Name) { case "isexported": data.IsExported = Boolean.Parse(exportInfoNode.InnerText.Trim()); break; case "filename": data.ExportFilename = exportInfoNode.InnerText.Trim(); break; case "folder": data.ExportFolder = exportInfoNode.InnerText.Trim(); break; case "includedfilenames": foreach (XmlNode sn in exportInfoNode) { if (sn.NodeType == XmlNodeType.Element && sn.Name == "includedfilename") { string includeFilename = sn.InnerText.Trim(); if (!data.ExportIncludedFilenames.Contains(includeFilename)) { data.ExportIncludedFilenames.Add(includeFilename); } } } break; } } } } break; } } } return(ws); } } catch (Exception) { string msgError = string.Format(Resources.LoadWorkspaceError, filename); MessageBox.Show(msgError, Resources.LoadError, MessageBoxButtons.OK); } return(null); }