示例#1
0
文件: ppEditor.cs 项目: kkdevs/sb3u
        public static void UnregisterExternalTool(ExternalTool tool)
        {
            List <ExternalTool> extList;

            if (ExternalTools.TryGetValue(tool.Extension, out extList))
            {
                for (int i = 0; i < extList.Count; i++)
                {
                    if (tool == extList[i])
                    {
                        extList.RemoveAt(i);

                        foreach (SettingsPropertyValue value in Gui.Config.PropertyValues)
                        {
                            if (value.PropertyValue.GetType() == typeof(ExternalTool))
                            {
                                ExternalTool settingsTool = (ExternalTool)value.PropertyValue;
                                if (settingsTool.ToolPath == tool.ToolPath)
                                {
                                    Gui.Config.PropertyValues.Remove(value.Name);
                                    Gui.Config.Properties.Remove(value.Name);
                                    break;
                                }
                            }
                        }
                        return;
                    }
                }
            }
        }
示例#2
0
 public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType)
 {
     if (destinationType == typeof(string))
     {
         ExternalTool tool = (ExternalTool)value;
         return(tool.Extension + ",|" + tool.ppFormatIndex + ",|" + tool.ToolPath + ",|" + tool.ToTextOptions + ",|" + tool.ToBinaryOptions);
     }
     return(base.ConvertTo(context, culture, value, destinationType));
 }
示例#3
0
        public string GetData()
        {
            ExternalTool decoder = SelectTool(extension, ppFormatIndex, true);

            if (decoder == null)
            {
                throw new Exception("No tool registered for " + extension + " supports decoding of ppFormat " + ppFormat.Array[ppFormatIndex]);
            }
            return(decoder.ConvertToText(Parser.contents));
        }
示例#4
0
        public void SetData(string text)
        {
            ExternalTool encoder = SelectTool(extension, ppFormatIndex, false);

            if (encoder == null)
            {
                throw new Exception("No tool registered for " + extension + " supports encoding of ppFormat " + ppFormat.Array[ppFormatIndex]);
            }
            Parser.contents = encoder.ConvertToBinary(text);
            Text            = text;
        }
示例#5
0
 public static string SearchToolVar(ExternalTool tool)
 {
     foreach (var var in Gui.Scripting.Variables)
     {
         if (var.Value == tool)
         {
             return(var.Key);
         }
     }
     return(null);
 }
示例#6
0
 public static string SearchToolVar(ExternalTool tool)
 {
     foreach (var var in Gui.Scripting.Variables)
     {
         if (var.Value == tool)
         {
             return var.Key;
         }
     }
     return null;
 }
示例#7
0
文件: ppEditor.cs 项目: kkdevs/sb3u
        public ppEditor(ppParser parser)
        {
            if (ExternalTools == null && Gui.Config != null)
            {
                ExternalTools = new Dictionary <string, List <ExternalTool> >();

                foreach (SettingsPropertyValue value in Gui.Config.PropertyValues)
                {
                    if (value.PropertyValue.GetType() == typeof(ExternalTool))
                    {
                        ExternalTool tool = (ExternalTool)value.PropertyValue;
                        tool = RegisterExternalTool(tool, false);
                        string toolVar = Gui.Scripting.GetNextVariable("externalTool");
                        Gui.Scripting.Variables.Add(toolVar, tool);
                    }
                }
            }

            Parser = parser;
        }
示例#8
0
        public static ExternalTool SelectTool(string extension, int ppFormatIndex, bool forDecoding)
        {
            ExternalTool        result = null;
            List <ExternalTool> toolList;

            if (!ppEditor.ExternalTools.TryGetValue(extension.ToUpper(), out toolList))
            {
                throw new Exception("No tools registered for " + extension.ToUpper());
            }
            foreach (ExternalTool tool in toolList)
            {
                if ((tool.ppFormatIndex == -1 || tool.ppFormatIndex == ppFormatIndex) &&
                    (forDecoding && tool.ToTextOptions != null && tool.ToTextOptions.Length > 0 ||
                     !forDecoding && tool.ToBinaryOptions != null && tool.ToBinaryOptions.Length > 0))
                {
                    result = tool;
                    break;
                }
            }
            return(result);
        }
示例#9
0
        private void comboBoxToolPath_SelectedIndexChanged(object sender, EventArgs e)
        {
            checkBoxOnlyPPFormat.Checked       = false;
            comboBoxOnlyPPFormat.SelectedIndex = default_ppFormatIndex;
            ExternalTool tool = comboBoxToolPath.SelectedItem as ExternalTool;

            if (tool != null)
            {
                toolTip1.SetToolTip(comboBoxToolPath, tool.ToolPath);
                textBoxDecodingArguments.Text = tool.ToTextOptions;
                textBoxEncodingArguments.Text = tool.ToBinaryOptions;
                if (tool.ppFormatIndex != -1)
                {
                    checkBoxOnlyPPFormat.Checked       = true;
                    comboBoxOnlyPPFormat.SelectedIndex = tool.ppFormatIndex;
                }
            }
            else
            {
                toolTip1.SetToolTip(comboBoxToolPath, comboBoxToolPath.Text);
                textBoxDecodingArguments.Text = String.Empty;
                textBoxEncodingArguments.Text = String.Empty;
            }
        }
示例#10
0
文件: ppEditor.cs 项目: kkdevs/sb3u
 public static ExternalTool RegisterExternalTool(ExternalTool tool, bool save)
 {
     try
     {
         string extensionKey = tool.Extension.ToUpper();
         List <ExternalTool> extList;
         if (!ExternalTools.TryGetValue(extensionKey, out extList))
         {
             extList = new List <ExternalTool>();
             ExternalTools.Add(extensionKey, extList);
         }
         else
         {
             foreach (ExternalTool presentTool in extList)
             {
                 if (presentTool.ToolPath.Equals(tool.ToolPath, StringComparison.InvariantCultureIgnoreCase))
                 {
                     presentTool.ToTextOptions   = tool.ToTextOptions;
                     presentTool.ToBinaryOptions = tool.ToBinaryOptions;
                     presentTool.ppFormatIndex   = tool.ppFormatIndex;
                     tool = presentTool;
                     return(tool);
                 }
             }
         }
         extList.Add(tool);
         return(tool);
     }
     finally
     {
         if (save)
         {
             bool          stored      = false;
             HashSet <int> usedIndices = new HashSet <int>();
             foreach (SettingsPropertyValue value in Gui.Config.PropertyValues)
             {
                 if (value.Name.StartsWith("ExternalTool"))
                 {
                     ExternalTool newTool = (ExternalTool)value.PropertyValue;
                     if (newTool.ToolPath.Equals(tool.ToolPath, StringComparison.InvariantCultureIgnoreCase))
                     {
                         Gui.Config[value.Name] = tool;
                         stored = true;
                         break;
                     }
                     string intStr = value.Name.Substring("ExternalTool".Length);
                     usedIndices.Add(Int32.Parse(intStr));
                 }
             }
             if (!stored)
             {
                 int smallestFreeTool;
                 for (smallestFreeTool = 0; smallestFreeTool < usedIndices.Count; smallestFreeTool++)
                 {
                     if (!usedIndices.Contains(smallestFreeTool))
                     {
                         break;
                     }
                 }
                 if (smallestFreeTool >= 30 /*Settings.MaxExternalTools*/)
                 {
                     Report.ReportLog("Cant persist more than 30 external tools.");
                 }
                 else
                 {
                     SettingsProperty newProp = new SettingsProperty(
                         "ExternalTool" + smallestFreeTool, typeof(ExternalTool),
                         Gui.Config.Providers[Path.GetFileName(System.Reflection.Assembly.GetEntryAssembly().Location)],
                         false,
                         tool,
                         SettingsSerializeAs.String,
                         null,
                         true, true
                         );
                     Gui.Config.Properties.Add(newProp);
                     SettingsPropertyValue newValue = new SettingsPropertyValue(newProp);
                     newValue.PropertyValue = tool;
                     Gui.Config.PropertyValues.Add(newValue);
                 }
             }
         }
     }
 }
示例#11
0
文件: ppEditor.cs 项目: kkdevs/sb3u
        public static ExternalTool RegisterExternalTool(string extension, int ppFormatIndex, string toolPath, string toText, string toBin, bool save)
        {
            ExternalTool tool = new ExternalTool(extension, ppFormatIndex, toolPath, toText, toBin);

            return(RegisterExternalTool(tool, save));
        }
示例#12
0
 public static ExternalTool RegisterExternalTool(string extension, int ppFormatIndex, string toolPath, string toText, string toBin, bool save)
 {
     ExternalTool tool = new ExternalTool(extension, ppFormatIndex, toolPath, toText, toBin);
     return RegisterExternalTool(tool, save);
 }
示例#13
0
        public static void UnregisterExternalTool(ExternalTool tool)
        {
            List<ExternalTool> extList;
            if (ExternalTools.TryGetValue(tool.Extension, out extList))
            {
                for (int i = 0; i < extList.Count; i++)
                {
                    if (tool == extList[i])
                    {
                        extList.RemoveAt(i);

                        foreach (SettingsPropertyValue value in Gui.Config.PropertyValues)
                        {
                            if (value.PropertyValue.GetType() == typeof(ExternalTool))
                            {
                                ExternalTool settingsTool = (ExternalTool)value.PropertyValue;
                                if (settingsTool.ToolPath == tool.ToolPath)
                                {
                                    Gui.Config.PropertyValues.Remove(value.Name);
                                    Gui.Config.Properties.Remove(value.Name);
                                    break;
                                }
                            }
                        }
                        return;
                    }
                }
            }
        }
示例#14
0
 public static ExternalTool RegisterExternalTool(ExternalTool tool, bool save)
 {
     try
     {
         string extensionKey = tool.Extension.ToUpper();
         List<ExternalTool> extList;
         if (!ExternalTools.TryGetValue(extensionKey, out extList))
         {
             extList = new List<ExternalTool>();
             ExternalTools.Add(extensionKey, extList);
         }
         else
         {
             foreach (ExternalTool presentTool in extList)
             {
                 if (presentTool.ToolPath.Equals(tool.ToolPath, StringComparison.InvariantCultureIgnoreCase))
                 {
                     presentTool.ToTextOptions = tool.ToTextOptions;
                     presentTool.ToBinaryOptions = tool.ToBinaryOptions;
                     presentTool.ppFormatIndex = tool.ppFormatIndex;
                     tool = presentTool;
                     return tool;
                 }
             }
         }
         extList.Add(tool);
         return tool;
     }
     finally
     {
         if (save)
         {
             bool stored = false;
             HashSet<int> usedIndices = new HashSet<int>();
             foreach (SettingsPropertyValue value in Gui.Config.PropertyValues)
             {
                 if (value.Name.StartsWith("ExternalTool"))
                 {
                     ExternalTool newTool = (ExternalTool)value.PropertyValue;
                     if (newTool.ToolPath.Equals(tool.ToolPath, StringComparison.InvariantCultureIgnoreCase))
                     {
                         Gui.Config[value.Name] = tool;
                         stored = true;
                         break;
                     }
                     string intStr = value.Name.Substring("ExternalTool".Length);
                     usedIndices.Add(Int32.Parse(intStr));
                 }
             }
             if (!stored)
             {
                 int smallestFreeTool;
                 for (smallestFreeTool = 0; smallestFreeTool < usedIndices.Count; smallestFreeTool++)
                 {
                     if (!usedIndices.Contains(smallestFreeTool))
                     {
                         break;
                     }
                 }
                 if (smallestFreeTool >= 30/*Settings.MaxExternalTools*/)
                 {
                     Report.ReportLog("Cant persist more than 30 external tools.");
                 }
                 else
                 {
                     SettingsProperty newProp = new SettingsProperty(
                         "ExternalTool" + smallestFreeTool, typeof(ExternalTool),
                         Gui.Config.Providers[Path.GetFileName(System.Reflection.Assembly.GetEntryAssembly().Location)],
                         false,
                         tool,
                         SettingsSerializeAs.String,
                         null,
                         true, true
                     );
                     Gui.Config.Properties.Add(newProp);
                     SettingsPropertyValue newValue = new SettingsPropertyValue(newProp);
                     newValue.PropertyValue = tool;
                     Gui.Config.PropertyValues.Add(newValue);
                 }
             }
         }
     }
 }