public override XamlTypeFinder Clone() { MyTypeFinder copy = new MyTypeFinder(); copy.file = this.file; copy.ImportFrom(this); return copy; }
public static MyTypeFinder Create(OpenedFile file) { MyTypeFinder f = new MyTypeFinder(); f.file = file; f.ImportFrom(CreateWpfTypeFinder()); // DO NOT USE Assembly.LoadFrom! // use the special handling logic defined in TypeResolutionService! var compilation = SD.ParserService.GetCompilationForFile(file.FileName); foreach (var referencedAssembly in compilation.ReferencedAssemblies) { try { var assembly = f.typeResolutionService.LoadAssembly(referencedAssembly); if (assembly != null) { f.RegisterAssembly(assembly); } } catch (Exception ex) { ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex); } } return(f); }
public static MyTypeFinder Create(OpenedFile file) { MyTypeFinder f = new MyTypeFinder(); f.file = file; f.ImportFrom(CreateWpfTypeFinder()); return f; }
public static MyTypeFinder Create(OpenedFile file) { MyTypeFinder f = new MyTypeFinder(); f.file = file; f.ImportFrom(CreateWpfTypeFinder()); var pc = MyTypeFinder.GetProjectContent(file); foreach (var referencedProjectContent in pc.ThreadSafeGetReferencedContents()) { string fileName = null; try{ if (referencedProjectContent is ParseProjectContent) { var prj = ((ParseProjectContent)referencedProjectContent).Project as AbstractProject; if (prj != null) fileName = prj.OutputAssemblyFullPath; } else if (referencedProjectContent is ReflectionProjectContent) { fileName = ((ReflectionProjectContent) referencedProjectContent).AssemblyLocation; } var assembly = Assembly.LoadFrom(fileName); f.RegisterAssembly(assembly); } catch (Exception ex) { ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : "+ (fileName ?? ""), ex); } } return f; }
public static MyTypeFinder Create(OpenedFile file) { MyTypeFinder f = new MyTypeFinder(); f.file = file; f.ImportFrom(CreateWpfTypeFinder()); var pc = MyTypeFinder.GetProjectContent(file); foreach (var referencedProjectContent in pc.ThreadSafeGetReferencedContents()) { string fileName = null; try{ if (referencedProjectContent is ParseProjectContent) { var prj = ((ParseProjectContent)referencedProjectContent).Project as AbstractProject; if (prj != null) { fileName = prj.OutputAssemblyFullPath; } } else if (referencedProjectContent is ReflectionProjectContent) { fileName = ((ReflectionProjectContent)referencedProjectContent).AssemblyLocation; } var assembly = Assembly.LoadFrom(fileName); f.RegisterAssembly(assembly); } catch (Exception ex) { ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + (fileName ?? ""), ex); } } return(f); }
public object GetDescription(DesignItemProperty property) { IProjectContent pc = MyTypeFinder.GetProjectContent(file); if (pc != null) { // For attached Properties if (property.DependencyFullName != null && property.Name.Contains(".")) { IClass c = pc.GetClassByReflectionName(property.DependencyProperty.OwnerType.FullName, true); if (c != null) { IMember m = DefaultProjectContent.GetMemberByReflectionName(c, property.DependencyProperty.Name + "Property"); if (m != null) { return(CodeCompletionItem.ConvertDocumentation(m.Documentation)); } } } else { IClass c = pc.GetClassByReflectionName(property.DeclaringType.FullName, true); if (c != null) { IMember m = DefaultProjectContent.GetMemberByReflectionName(c, property.Name); if (m != null) { return(CodeCompletionItem.ConvertDocumentation(m.Documentation)); } } } } return(null); }
public override XamlTypeFinder Clone() { MyTypeFinder copy = new MyTypeFinder(); copy.file = this.file; copy.ImportFrom(this); return(copy); }
public static MyTypeFinder Create(OpenedFile file) { MyTypeFinder f = new MyTypeFinder(); f.file = file; f.ImportFrom(CreateWpfTypeFinder()); return(f); }
public void AddProjectDlls(OpenedFile file) { var pc = MyTypeFinder.GetProjectContent(file); foreach (var referencedProjectContent in pc.ThreadSafeGetReferencedContents()) { string f = null; if (referencedProjectContent is ParseProjectContent) { var prj = ((ParseProjectContent)referencedProjectContent).Project as AbstractProject; if (prj != null) { f = prj.OutputAssemblyFullPath; } } else if (referencedProjectContent is ReflectionProjectContent) { f = ((ReflectionProjectContent)referencedProjectContent).AssemblyLocation; } if (f != null && !addedAssemblys.Contains(f)) { try { var assembly = Assembly.LoadFrom(f); SideTab sideTab = new SideTab(sideBar, assembly.FullName.Split(new[] { ',' })[0]); sideTab.DisplayName = StringParser.Parse(sideTab.Name); sideTab.CanBeDeleted = false; sideTab.ChoosedItemChanged += OnChoosedItemChanged; sideTab.Items.Add(new WpfSideTabItem()); foreach (var t in assembly.GetExportedTypes()) { if (IsControl(t)) { sideTab.Items.Add(new WpfSideTabItem(t)); } } if (sideTab.Items.Count > 1) { sideBar.Tabs.Add(sideTab); } addedAssemblys.Add(f); } catch (Exception ex) { WpfViewContent.DllLoadErrors.Add( new Task(new BuildError(f, ex.Message))); } } } }
protected override void LoadInternal(OpenedFile file, System.IO.Stream stream) { wasChangedInDesigner = false; Debug.Assert(file == this.PrimaryFile); SD.AnalyticsMonitor.TrackFeature(typeof(WpfViewContent), "Load"); _stream = new MemoryStream(); stream.CopyTo(_stream); stream.Position = 0; if (designer == null) { // initialize designer on first load designer = new DesignSurface(); this.UserContent = designer; InitPropertyEditor(); InitWpfToolbox(); } this.UserContent = designer; if (outline != null) { outline.Root = null; } using (XmlTextReader r = new XmlTextReader(stream)) { XamlLoadSettings settings = new XamlLoadSettings(); settings.DesignerAssemblies.Add(typeof(WpfViewContent).Assembly); settings.CustomServiceRegisterFunctions.Add( delegate(XamlDesignContext context) { context.Services.AddService(typeof(IUriContext), new FileUriContext(this.PrimaryFile)); context.Services.AddService(typeof(IPropertyDescriptionService), new PropertyDescriptionService(this.PrimaryFile)); context.Services.AddService(typeof(IEventHandlerService), new SharpDevelopEventHandlerService(this)); context.Services.AddService(typeof(ITopLevelWindowService), new WpfAndWinFormsTopLevelWindowService()); context.Services.AddService(typeof(ChooseClassServiceBase), new IdeChooseClassService()); }); settings.TypeFinder = MyTypeFinder.Create(this.PrimaryFile); try { settings.ReportErrors = UpdateTasks; designer.LoadDesigner(r, settings); designer.ContextMenuOpening += (sender, e) => MenuService.ShowContextMenu(e.OriginalSource as UIElement, designer, "/AddIns/WpfDesign/Designer/ContextMenu"); if (outline != null && designer.DesignContext != null && designer.DesignContext.RootItem != null) { outline.Root = OutlineNode.Create(designer.DesignContext.RootItem); } propertyGridView.PropertyGrid.SelectedItems = null; designer.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged; designer.DesignContext.Services.GetService <UndoService>().UndoStackChanged += OnUndoStackChanged; } catch (Exception e) { this.UserContent = new WpfDocumentError(e); } } }
public static MyTypeFinder Create(OpenedFile file) { MyTypeFinder f = new MyTypeFinder(); f.file = file; f.ImportFrom(CreateWpfTypeFinder()); var compilation = SD.ParserService.GetCompilationForFile(file.FileName); foreach (var referencedAssembly in compilation.ReferencedAssemblies) { try { var assembly = Assembly.LoadFrom(referencedAssembly.GetReferenceAssemblyLocation()); f.RegisterAssembly(assembly); } catch (Exception ex) { ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex); } } return f; }
public static MyTypeFinder Create(OpenedFile file) { MyTypeFinder f = new MyTypeFinder(); f.file = file; f.ImportFrom(CreateWpfTypeFinder()); // DO NOT USE Assembly.LoadFrom! // use the special handling logic defined in TypeResolutionService! var compilation = SD.ParserService.GetCompilationForFile(file.FileName); foreach (var referencedAssembly in compilation.ReferencedAssemblies) { try { var assembly = f.typeResolutionService.LoadAssembly(referencedAssembly); if (assembly != null) f.RegisterAssembly(assembly); } catch (Exception ex) { ICSharpCode.Core.LoggingService.Warn("Error loading Assembly : " + referencedAssembly.FullAssemblyName, ex); } } return f; }
protected override void LoadInternal(OpenedFile file, System.IO.Stream stream) { wasChangedInDesigner = false; Debug.Assert(file == this.PrimaryFile); SD.AnalyticsMonitor.TrackFeature(typeof(WpfViewContent), "Load"); _stream = new MemoryStream(); stream.CopyTo(_stream); stream.Position = 0; if (designer == null) { // initialize designer on first load designer = new DesignSurface(); this.UserContent = designer; InitPropertyEditor(); InitWpfToolbox(); } this.UserContent = designer; if (outline != null) { outline.Root = null; } using (XmlTextReader r = new XmlTextReader(stream)) { XamlLoadSettings settings = new XamlLoadSettings(); settings.DesignerAssemblies.Add(typeof(WpfViewContent).Assembly); settings.CustomServiceRegisterFunctions.Add( delegate(XamlDesignContext context) { context.Services.AddService(typeof(IUriContext), new FileUriContext(this.PrimaryFile)); context.Services.AddService(typeof(IPropertyDescriptionService), new PropertyDescriptionService(this.PrimaryFile)); context.Services.AddService(typeof(IEventHandlerService), new SharpDevelopEventHandlerService(this)); context.Services.AddService(typeof(ITopLevelWindowService), new WpfAndWinFormsTopLevelWindowService()); context.Services.AddService(typeof(ChooseClassServiceBase), new IdeChooseClassService()); }); settings.TypeFinder = MyTypeFinder.Create(this.PrimaryFile); try { settings.ReportErrors = UpdateTasks; designer.LoadDesigner(r, settings); designer.DesignPanel.ContextMenuHandler = (contextMenu) => { var newContextmenu = new ContextMenu(); var sdContextMenuItems = MenuService.CreateMenuItems(newContextmenu, designer, "/AddIns/WpfDesign/Designer/ContextMenu", "ContextMenu"); foreach (var entry in sdContextMenuItems) { newContextmenu.Items.Add(entry); } newContextmenu.Items.Add(new Separator()); var items = contextMenu.Items.Cast <Object>().ToList(); contextMenu.Items.Clear(); foreach (var entry in items) { newContextmenu.Items.Add(entry); } designer.DesignPanel.ContextMenu = newContextmenu; }; if (outline != null && designer.DesignContext != null && designer.DesignContext.RootItem != null) { outline.Root = OutlineNode.Create(designer.DesignContext.RootItem); } propertyGridView.PropertyGrid.SelectedItems = null; designer.DesignContext.Services.Selection.SelectionChanged += OnSelectionChanged; designer.DesignContext.Services.GetService <UndoService>().UndoStackChanged += OnUndoStackChanged; } catch (Exception e) { this.UserContent = new WpfDocumentError(e); } try{ var appXaml = SD.ProjectService.CurrentProject.Items.FirstOrDefault(x => x.FileName.GetFileName().ToLower() == ("app.xaml")); if (appXaml != null) { var f = appXaml as FileProjectItem; OpenedFile a = SD.FileService.GetOrCreateOpenedFile(f.FileName); var xml = XmlReader.Create(a.OpenRead()); var doc = new XmlDocument(); doc.Load(xml); var node = doc.FirstChild.ChildNodes.Cast <XmlNode>().FirstOrDefault(x => x.Name == "Application.Resources"); foreach (XmlAttribute att in doc.FirstChild.Attributes.Cast <XmlAttribute>().ToList()) { if (att.Name.StartsWith("xmlns")) { node.Attributes.Append(att); } } var appXamlXml = XmlReader.Create(new StringReader(node.InnerXml)); var parsed = XamlParser.Parse(appXamlXml, ((XamlDesignContext)designer.DesignContext).ParserSettings); var dict = (ResourceDictionary)parsed.RootInstance; designer.DesignPanel.Resources.MergedDictionaries.Add(dict); } } catch (Exception ex) { LoggingService.Error("Error in loading app.xaml", ex); } } }