public void Install(bool isUpdate) { foreach (string identity in addIn.Manifest.Identities.Keys) { ICSharpCode.Core.AddInManager.AbortRemoveUserAddInOnNextStart(identity); } if (isPackage) { string targetDir = Path.Combine(ICSharpCode.Core.AddInManager.AddInInstallTemp, addIn.Manifest.PrimaryIdentity); if (Directory.Exists(targetDir)) { Directory.Delete(targetDir, true); } Directory.CreateDirectory(targetDir); FastZip fastZip = new FastZip(); fastZip.CreateEmptyDirectories = true; fastZip.ExtractZip(fileName, targetDir, null); addIn.Action = AddInAction.Install; if (!isUpdate) { AddInTree.InsertAddIn(addIn); } } else { ICSharpCode.Core.AddInManager.AddExternalAddIns(new AddIn[] { addIn }); } }
public AddIn CreateDummyAddInInsideAddInTree() { RemoveOldAddIn(); AddIn addin = CreateAddIn(); AddInTree.InsertAddIn(addin); return(addin); }
/// <summary> /// 解释加载插件描述文件 /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="Microsoft.Practices.CompositeUI.Utility.DataEventArgs<Microsoft.Practices.CompositeUI.Services.LoadedModuleInfo>"/> instance containing the event data.</param> private void ModuleLoaderService_ModuleLoaded(object sender, DataEventArgs <LoadedModuleInfo> e) { string addInfile = e.Data.Name.Split(',')[0] + ".addin"; if (File.Exists(addInfile)) { AddIn addIn = new AddIn(addInfile, RootWorkItem); addInTree.InsertAddIn(addIn); } else { List <string> files = FileUtility.SearchDirectory(FileUtility.ConvertToFullPath(@"..\AddIns\"), addInfile); if (files.Count > 0) { AddIn addIn = new AddIn(files[0], RootWorkItem); addInTree.InsertAddIn(addIn); } } Program.Logger.Info(String.Format("完成加载应用系统插件 \"{0}\"", e.Data.Name.Split(',')[0] + ".dll")); }
public void SetUpFixture() { string xml = "<AddIn name='Unit Testing Addin'\r\n" + " author='Matt Ward'\r\n" + " copyright='prj:///doc/copyright.txt'\r\n" + " description='Runs unit tests with Gallio inside SharpDevelop'\r\n" + " addInManagerHidden='preinstalled'>\r\n" + " <Manifest>\r\n" + " <Identity name='ICSharpCode.Gallio'/>\r\n" + " </Manifest>\r\n" + "</AddIn>"; AddIn addin = AddIn.Load(new StringReader(xml)); addin.Enabled = false; addin.FileName = @"d:\sharpdevelop\addins\gallio\Gallio.SharpDevelop.dll"; AddInTree.InsertAddIn(addin); }
void AddDefaultDotNetNodeBuilderToAddinTree() { string xml = "<AddIn name='test'>\r\n" + " <Runtime>\r\n"+ " <Import assembly=':ICSharpCode.SharpDevelop'/>\r\n"+ " </Runtime>\r\n"+ " <Path name = '/SharpDevelop/Views/ProjectBrowser/NodeBuilders'>\r\n"+ " <Class id = 'DefaultBuilder'\r\n"+ " class = 'ICSharpCode.SharpDevelop.Project.DefaultDotNetNodeBuilder'/>\r\n"+ " </Path>\r\n"+ "</AddIn>"; var addin = AddIn.Load(new StringReader(xml), String.Empty, null); addin.Enabled = true; AddInTree.InsertAddIn(addin); }
public void SetupFixture() { // Add forms designer addin to the AddInTree. bool formsDesignerAddInExists = false; foreach (AddIn addIn in AddInTree.AddIns) { if (addIn.Manifest.Identities.ContainsKey("ICSharpCode.FormsDesigner")) { formsDesignerAddInExists = true; break; } } if (!formsDesignerAddInExists) { formsDesignerAddIn = AddIn.Load(new StringReader(GetFormsDesignerAddInFile())); formsDesignerAddIn.Enabled = true; string codeBase = typeof(PythonSyntaxModeTestFixture).Assembly.CodeBase.Replace("file:///", String.Empty); string folder = Path.GetDirectoryName(codeBase); Type type = formsDesignerAddIn.GetType(); FieldInfo fieldInfo = type.GetField("addInFileName", BindingFlags.NonPublic | BindingFlags.Instance); fieldInfo.SetValue(formsDesignerAddIn, Path.Combine(folder, "FormsDesigner.addin")); AddInTree.InsertAddIn(formsDesignerAddIn); } using (TextReader reader = PythonBindingAddInFile.ReadAddInFile()) { addin = AddIn.Load(reader, String.Empty); // Get syntax mode codon. syntaxModeCodon = null; ExtensionPath path = addin.Paths[SyntaxModePath]; foreach (Codon codon in path.Codons) { if (codon.Id == "Python.SyntaxMode") { syntaxModeCodon = codon; break; } } // Get syntax mode. highlightingStrategy = null; if (syntaxModeCodon != null) { SyntaxModeDoozer doozer = new SyntaxModeDoozer(); AddInTreeSyntaxMode syntaxMode = (AddInTreeSyntaxMode)doozer.BuildItem(null, syntaxModeCodon, null); highlightingStrategy = HighlightingDefinitionParser.Parse(syntaxMode, syntaxMode.CreateTextReader()); // Load Python syntax file into XML document since // we cannot get all the information stored in this // document through the HighlightRuleSet class. For // example KeyWords are only accessible through a // LookupTable does not have a getter which is easy // to use. syntaxModeDocument = new XmlDocument(); syntaxModeDocument.Load(syntaxMode.CreateTextReader()); // Get default ruleset. foreach (HighlightRuleSet ruleSet in highlightingStrategy.Rules) { if (String.IsNullOrEmpty(ruleSet.Name)) { defaultRuleSet = ruleSet; break; } } // Get keywords elements. importsKeyWordsElement = GetKeyWordsElement("Imports"); iterationStatementsKeyWordsElement = GetKeyWordsElement("IterationStatements"); jumpStatementsKeyWordsElement = GetKeyWordsElement("JumpStatements"); operatorStatementsKeyWordsElement = GetKeyWordsElement("OperatorStatements"); selectionStatementsKeyWordsElement = GetKeyWordsElement("SelectionStatements"); functionDefinitionKeyWordsElement = GetKeyWordsElement("FunctionDefinition"); exceptionHandlingKeyWordsElement = GetKeyWordsElement("ExceptionHandlingStatements"); withStatementKeyWordsElement = GetKeyWordsElement("WithStatement"); passStatementKeyWordsElement = GetKeyWordsElement("PassStatement"); classStatementKeyWordsElement = GetKeyWordsElement("ClassStatement"); builtInStatementsKeyWordsElement = GetKeyWordsElement("BuiltInStatements"); // Get mark previous. markPreviousElement = syntaxModeDocument.SelectSingleNode("//MarkPrevious") as XmlElement; } // Get line comment span. if (defaultRuleSet != null) { foreach (Span s in defaultRuleSet.Spans) { if (s.Name == "LineComment") { lineCommentSpan = s; } else if (s.Name == "String") { stringSpan = s; } else if (s.Name == "Char") { charSpan = s; } else if (s.Name == "DocComment") { docCommentSpan = s; } else if (s.Name == "SingleQuoteDocComment") { singleQuoteDocCommentSpan = s; } } } } }