diff options
author | Lluis Sanchez <lluis@novell.com> | 2007-12-04 13:54:06 +0300 |
---|---|---|
committer | Lluis Sanchez <lluis@novell.com> | 2007-12-04 13:54:06 +0300 |
commit | fb3d82535d1eb51b03b9df5c8c3b24c0e6fa6d92 (patch) | |
tree | 5c9c507ec718981e2dda5406e126b8efd02fa3b2 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools | |
parent | 6342b2ae0820167754b9f39077777520e20c08a0 (diff) |
Directory reorganization
svn path=/branches/monodevelop/reorg/; revision=90640
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalTool.cs | 162 | ||||
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalToolService.cs | 134 |
2 files changed, 296 insertions, 0 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalTool.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalTool.cs new file mode 100644 index 0000000000..39721e0f86 --- /dev/null +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalTool.cs @@ -0,0 +1,162 @@ +// +// ExternalTool.cs +// +// Author: +// Mike Krüger <mkrueger@novell.com> +// +// Copyright (C) 2007 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using System.Diagnostics; +using System.Xml; + +using MonoDevelop.Core; + +namespace MonoDevelop.Ide.ExternalTools +{ + public class ExternalTool + { + string menuCommand; + string command; + string arguments; + string initialDirectory; + bool promptForArguments; + bool useOutputPad; + bool saveCurrentFile; + + public string MenuCommand { + get { + return menuCommand; + } + set { + menuCommand = value; + } + } + + public string Command { + get { + return command; + } + set { + command = value; + } + } + + public string Arguments { + get { + return arguments; + } + set { + arguments = value; + } + } + + public string InitialDirectory { + get { + return initialDirectory; + } + set { + initialDirectory = value; + } + } + + public bool PromptForArguments { + get { + return promptForArguments; + } + set { + promptForArguments = value; + } + } + + public bool UseOutputPad { + get { + return useOutputPad; + } + set { + useOutputPad = value; + } + } + + public bool SaveCurrentFile { + get { + return saveCurrentFile; + } + set { + saveCurrentFile = value; + } + } + + public ExternalTool () + { + this.menuCommand = GettextCatalog.GetString ("New Tool"); + } + +#region I/O + public const string Node = "ExternalTool"; + + const string menuCommandAttribute = "menuCommand"; + const string commandAttribute = "command"; + const string argumentsAttribute = "arguments"; + const string initialDirectoryAttribute = "initialDirectory"; + const string promptForArgumentsAttribute = "promptForArguments"; + const string useOutputPadAttribute = "useOutputPad"; + const string saveCurrentFileAttribute = "saveCurrentFile"; + + public void Write (XmlWriter writer) + { + writer.WriteStartElement (Node); + writer.WriteAttributeString (menuCommandAttribute, this.menuCommand); + writer.WriteAttributeString (commandAttribute, this.command); + writer.WriteAttributeString (argumentsAttribute, this.arguments); + writer.WriteAttributeString (initialDirectoryAttribute, this.initialDirectory); + writer.WriteAttributeString (promptForArgumentsAttribute, this.promptForArguments.ToString ()); + writer.WriteAttributeString (useOutputPadAttribute, this.useOutputPad.ToString ()); + writer.WriteAttributeString (saveCurrentFileAttribute, this.saveCurrentFile.ToString ()); + writer.WriteEndElement (); // Node + } + + public static ExternalTool Read (XmlReader reader) + { + Debug.Assert (reader.LocalName == Node); + + ExternalTool result = new ExternalTool (); + result.menuCommand = reader.GetAttribute (menuCommandAttribute); + result.command = reader.GetAttribute (commandAttribute); + result.arguments = reader.GetAttribute (argumentsAttribute); + result.initialDirectory = reader.GetAttribute (initialDirectoryAttribute); + result.menuCommand = reader.GetAttribute (menuCommandAttribute); + + if (!String.IsNullOrEmpty (reader.GetAttribute (promptForArgumentsAttribute))) + result.promptForArguments = Boolean.Parse (reader.GetAttribute (promptForArgumentsAttribute)); + if (!String.IsNullOrEmpty (reader.GetAttribute (useOutputPadAttribute))) + result.useOutputPad = Boolean.Parse (reader.GetAttribute (useOutputPadAttribute)); + if (!String.IsNullOrEmpty (reader.GetAttribute (saveCurrentFileAttribute))) + result.saveCurrentFile = Boolean.Parse (reader.GetAttribute (saveCurrentFileAttribute)); + + return result; + } +#endregion + + } +}
\ No newline at end of file diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalToolService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalToolService.cs new file mode 100644 index 0000000000..f236bd9706 --- /dev/null +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.ExternalTools/ExternalToolService.cs @@ -0,0 +1,134 @@ +// +// ExternalToolService.cs +// +// Author: +// Mike Krüger <mkrueger@novell.com> +// +// Copyright (C) 2007 Novell, Inc (http://www.novell.com) +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// + +using System; +using System.Diagnostics; +using System.IO; +using System.Collections.Generic; +using System.Xml; + +using MonoDevelop.Core; + +namespace MonoDevelop.Ide.ExternalTools +{ + public static class ExternalToolService + { + static string FileName = "MonoDevelop-tools.xml"; + static string Version = "2.0"; + + static List<ExternalTool> tools; + + public static List<ExternalTool> Tools { + get { + return tools; + } + set { + tools = value; + } + } + + static ExternalToolService () + { + try { + tools = LoadTools (); + } catch (Exception e) { + LoggingService.LogError ("ExternalToolService: Exception while loading tools.", e); + tools = new List<ExternalTool> (); + } + } + +#region I/O + const string Node = "Tools"; + const string VersionAttribute = "version"; + + static void SaveTools (string fileName) + { + XmlTextWriter writer = new XmlTextWriter (fileName, System.Text.Encoding.UTF8); + writer.Settings.Indent = true; + try { + writer.WriteStartDocument (); + writer.WriteStartElement (Node); + writer.WriteAttributeString (VersionAttribute, Version); + + foreach (ExternalTool tool in tools) + tool.Write (writer); + + writer.WriteEndElement (); // Node + } finally { + writer.Close (); + } + } + + public static void SaveTools () + { + SaveTools (Path.Combine (PropertyService.ConfigPath, FileName)); + } + + static List<ExternalTool> LoadTools (string fileName) + { + if (!File.Exists (fileName)) + return null; + List<ExternalTool> result = new List<ExternalTool> (); + XmlReader reader = XmlTextReader.Create (fileName); + try { + while (reader.Read ()) { + if (reader.IsStartElement ()) { + switch (reader.LocalName) { + case Node: + string fileVersion = reader.GetAttribute (VersionAttribute); + if (fileVersion != Version) + return null; + break; + case ExternalTool.Node: + result.Add (ExternalTool.Read (reader)); + break; + } + } + } + } finally { + reader.Close (); + } + return result; + } + + static List<ExternalTool> LoadTools () + { + List<ExternalTool> result = LoadTools (Path.Combine (PropertyService.ConfigPath, FileName)); + if (result == null) { + LoggingService.LogInfo ("ExternalToolService: No user templates, reading default templates."); + result = LoadTools (Path.Combine (Path.Combine (PropertyService.DataPath, "options"), FileName)); + } + + if (result == null) + return new List<ExternalTool> (); + + return result; + } +#endregion + } +} |