From b27408d3231a1279554a958088d2560c06e04cde Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Sun, 25 Oct 2015 10:41:59 +0100 Subject: [PATCH 1/6] PageBuilder - GroupedList --- .../Src/PageBuilder/DataPageBuilder.cs | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs index 66eacf6fa5..1e82738667 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -73,6 +73,24 @@ namespace ICSharpCode.Reporting.PageBuilder } } + void NewMethod(IContainerConverter converter, ref Point pagePosition, ref Point sectionPosition, IGrouping grouping, ExportContainer sectionContainer) + { + foreach (var child in grouping) { + var dataItems = ExtractDataItems(CurrentSection.Items); + List convertedItems = FillAndConvert(sectionContainer, child, dataItems, converter); + AdjustLocationInSection(sectionPosition, convertedItems); + sectionContainer.ExportedItems.AddRange(convertedItems); + MeasureAndArrangeContainer(sectionContainer); + if (PageFull(sectionContainer)) { + PerformPageBreak(); + InsertContainer(sectionContainer); + pagePosition = DetailStart; + sectionContainer.Location = DetailStart; + } + sectionPosition = new Point(CurrentSection.Location.X, sectionPosition.Y + convertedItems[0].DisplayRectangle.Size.Height + 5); + sectionContainer.Size = new Size(sectionContainer.Size.Width, sectionContainer.Size.Height + convertedItems[0].Size.Height); + } + } void BuildGroupedDetails (IContainerConverter converter,Point startPosition) { var pagePosition = startPosition; @@ -89,11 +107,13 @@ namespace ICSharpCode.Reporting.PageBuilder var headerRow = converter.ConvertToExportContainer(groupHeader); headerRow.Location = new Point(headerRow.Location.X,groupHeader.Location.Y); - + Console.WriteLine(headerRow.Location); var headerItems = converter.CreateConvertedList(groupHeader.Items); converter.SetParent(sectionContainer, headerItems); + headerRow.ExportedItems.AddRange(headerItems); + headerRow.Parent = sectionContainer; sectionContainer.ExportedItems.Add(headerRow); @@ -107,7 +127,6 @@ namespace ICSharpCode.Reporting.PageBuilder //Childs foreach (var child in grouping) { -// var dataItems = CurrentSection.Items.Where(p => p.GetType() == typeof(BaseDataItem)).ToList(); var dataItems = ExtractDataItems(CurrentSection.Items); List convertedItems = FillAndConvert(sectionContainer, child, dataItems, converter); @@ -224,7 +243,7 @@ namespace ICSharpCode.Reporting.PageBuilder static void AdjustLocationInSection(Point sectionPosition,List convertedItems){ foreach (var element in convertedItems) { - element.Location = new Point(element.Location.X, sectionPosition.Y); + element.Location = new Point(element.Location.X + sectionPosition.X , sectionPosition.Y); } } From 761f14e419dc96a45c06906cb0f3b9674b6c0c77 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Mon, 2 Nov 2015 17:43:30 +0000 Subject: [PATCH 2/6] Fix WinForms designer not resolving OxyPlot assembly. With an OxyPlot.WindowsForms.PlotView on the form on re-opening the form in the designer you would see the following error message and the form would not be displayed: Could not find type 'OxyPlot.WindowsForms.PlotView' The PlotView type was being resolved correctly by the TypeResolutionService to the OxyPlot.WindowsForms assembly but getting the type required OxyPlot.dll to be resolved which was not being done. Fixes #713 --- .../Project/Designer/TypeResolutionService.cs | 40 +++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/Main/Base/Project/Designer/TypeResolutionService.cs b/src/Main/Base/Project/Designer/TypeResolutionService.cs index dffe5ab729..f69bff6d15 100644 --- a/src/Main/Base/Project/Designer/TypeResolutionService.cs +++ b/src/Main/Base/Project/Designer/TypeResolutionService.cs @@ -411,9 +411,11 @@ namespace ICSharpCode.SharpDevelop.Designer ITypeDefinition definition = ReflectionHelper.ParseReflectionName(name) .Resolve(compilation).GetDefinition(); if (definition != null) { - Assembly assembly = LoadAssembly(definition.ParentAssembly); - if (assembly != null) { - type = assembly.GetType(name, false, ignoreCase); + using (var resolver = new ProjectAssemblyResolver(compilation, this)) { + Assembly assembly = LoadAssembly(definition.ParentAssembly); + if (assembly != null) { + type = assembly.GetType(name, false, ignoreCase); + } } } } @@ -582,5 +584,37 @@ namespace ICSharpCode.SharpDevelop.Designer } return lastAssembly; } + + class ProjectAssemblyResolver : IDisposable + { + readonly ICompilation compilation; + readonly TypeResolutionService typeResolutionService; + + public ProjectAssemblyResolver(ICompilation compilation, TypeResolutionService typeResolutionService) + { + this.compilation = compilation; + this.typeResolutionService = typeResolutionService; + AppDomain.CurrentDomain.AssemblyResolve += AssemblyResolve; + } + + public void Dispose() + { + AppDomain.CurrentDomain.AssemblyResolve -= AssemblyResolve; + } + + Assembly AssemblyResolve(object sender, ResolveEventArgs args) + { + try { + IAssembly assembly = compilation.Assemblies + .FirstOrDefault(asm => asm.FullAssemblyName == args.Name); + if (assembly != null) { + return typeResolutionService.LoadAssembly(assembly); + } + } catch (Exception ex) { + LoggingService.Error(ex); + } + return null; + } + } } } From f1739624fe498753410729dfc7335d8babedcd35 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Mon, 2 Nov 2015 18:38:12 +0000 Subject: [PATCH 3/6] Fix Resource Editor not showing comments Fixes #714 --- .../ResourceEditor/Project/Src/Commands/EditCommentCommand.cs | 1 + .../ResourceEditor/Project/Src/ViewModels/ResourceItem.cs | 1 + 2 files changed, 2 insertions(+) diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/EditCommentCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/EditCommentCommand.cs index 10b3d72c0b..f58c4224cc 100644 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/EditCommentCommand.cs +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/EditCommentCommand.cs @@ -34,6 +34,7 @@ namespace ResourceEditor.Commands selectedItem.Comment); if (newValue != null && newValue != selectedItem.Comment) { selectedItem.Comment = newValue; + selectedItem.RichComment = newValue; } } } diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceItem.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceItem.cs index 87464bea34..d288f41f59 100644 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceItem.cs +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ViewModels/ResourceItem.cs @@ -65,6 +65,7 @@ namespace ResourceEditor.ViewModels this.ResourceValue = resourceValue; this.resourceType = GetResourceTypeFromValue(resourceValue); this.Comment = comment; + this.RichComment = comment; } #region INotifyPropertyChanged implementation From d52a3334e65733cde7149bbd4e480757af839611 Mon Sep 17 00:00:00 2001 From: daniil-tr Date: Tue, 3 Nov 2015 17:21:16 +0300 Subject: [PATCH 4/6] Fixed bug #132 New file not selected in Project Browser --- .../Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs index c8052d4976..6a92448851 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs @@ -365,6 +365,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands FileTemplateResult result = SD.UIService.ShowNewFileDialog(node.Project, node.Directory); if (result != null) { node.RecreateSubNodes(); + ProjectBrowserPad.Instance.ProjectBrowserControl.SelectFile(result.Options.FileName); return result.NewFiles.Select(node.Project.FindFile).Where(f => f != null).ToArray(); } else { return null; From a0acf059ef80f7df0b6cc26db7694f8279560f47 Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Thu, 3 Dec 2015 19:10:40 +0100 Subject: [PATCH 5/6] TextFormatter --- .../Src/Wpf/Visitor/FixedDocumentCreator.cs | 11 ++++++----- .../Src/Wpf/Visitor/WpfVisitor.cs | 10 ++++++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/FixedDocumentCreator.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/FixedDocumentCreator.cs index 53b765f57e..690c1dd360 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/FixedDocumentCreator.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/FixedDocumentCreator.cs @@ -75,15 +75,16 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor formattedText.MaxTextWidth = exportText.DesiredSize.Width ; formattedText.TextAlignment = exportText.TextAlignment; - +// var s = formattedText.Height; if (!exportText.CanGrow) { formattedText.MaxTextHeight = exportText.Size.Height; - } else { - formattedText.MaxTextHeight = ExtensionMethodes.ToPoints(exportText.DesiredSize.Height ); - } + } +// +// else { +//// formattedText.MaxTextHeight = ExtensionMethodes.ToPoints(exportText.DesiredSize.Height ); +// } ApplyPrintStyles(formattedText,exportText); - return formattedText; } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs index 9570791c50..aa51278c9d 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Wpf/Visitor/WpfVisitor.cs @@ -118,15 +118,17 @@ namespace ICSharpCode.Reporting.WpfReportViewer.Visitor // http://stackoverflow.com/questions/25308612/vertical-alignment-with-drawingcontext-drawtext public override void Visit(ExportText exportColumn){ - + if (exportColumn.Text.Equals("BaseTextItem2147483637")) { + Console.WriteLine("stop"); + } var formattedText = FixedDocumentCreator.CreateFormattedText((ExportText)exportColumn); - var location = new Point(exportColumn.Location.X,exportColumn.Location.Y); - var visual = new DrawingVisual(); + using (var drawingContext = visual.RenderOpen()){ - var bachgroundRect = new Rect(location,new Size(exportColumn.DesiredSize.Width,formattedText.MaxTextHeight)); +// var bachgroundRect = new Rect(location,new Size(exportColumn.DesiredSize.Width,formattedText.Height)); if (ShouldSetBackcolor(exportColumn)) { + var bachgroundRect = new Rect(location,new Size(exportColumn.DesiredSize.Width,formattedText.Height)); drawingContext.DrawRectangle(FixedDocumentCreator.ConvertBrush(exportColumn.BackColor), null,bachgroundRect); } From a7924d9bfb1f0a93fcff1f5562af0247cd6a53b8 Mon Sep 17 00:00:00 2001 From: Peter Forstmeier Date: Sun, 6 Dec 2015 20:17:28 +0100 Subject: [PATCH 6/6] =?UTF-8?q?Formatter=20angepa=C3=9Ft,=20DataPageBuilde?= =?UTF-8?q?r=20-=20Locatio=20f=C3=BCr=20GroupItems?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Src/Events/SectionEvent.cs | 4 ++- .../Src/Exporter/Visitors/FormatVisitor.cs | 3 +- .../Src/Globals/StandardFormatter.cs | 9 +++++ .../Src/PageBuilder/BasePageBuilder.cs | 4 ++- .../Src/PageBuilder/DataPageBuilder.cs | 33 +++++++++++++------ 5 files changed, 39 insertions(+), 14 deletions(-) diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Events/SectionEvent.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Events/SectionEvent.cs index 69f415e7dc..43a268c164 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Events/SectionEvent.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Events/SectionEvent.cs @@ -18,13 +18,15 @@ namespace ICSharpCode.Reporting { - public SectionEventArgs(IReportContainer section){ + public SectionEventArgs(IReportContainer section,int pageCount){ if (section == null) throw new ArgumentNullException("section"); Section = section; + PageCount = pageCount; } public IReportContainer Section {get;private set;} + public int PageCount {get; private set;} } } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/FormatVisitor.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/FormatVisitor.cs index 03d7e53fab..17e5607dfb 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/FormatVisitor.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Exporter/Visitors/FormatVisitor.cs @@ -30,8 +30,7 @@ namespace ICSharpCode.Reporting.Exporter.Visitors { - public override void Visit(ExportContainer exportContainer) - { + public override void Visit(ExportContainer exportContainer){ foreach (var element in exportContainer.ExportedItems) { var container = element as ExportContainer; if (container != null) { diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs index be4ded6e59..11114b1d41 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/Globals/StandardFormatter.cs @@ -31,6 +31,9 @@ namespace ICSharpCode.Reporting.Globals if (String.IsNullOrWhiteSpace(textColumn.Text)) { return; } + if (textColumn.Name == "xy") { + Console.WriteLine("stop"); + } if (!String.IsNullOrEmpty(textColumn.FormatString)) { if (textColumn.DataType.ToLower().Contains("timespan")) { textColumn.Text = HandleTimeSpan(textColumn.Text,textColumn.FormatString); @@ -38,6 +41,9 @@ namespace ICSharpCode.Reporting.Globals } else { var typeCode = TypeHelper.TypeCodeFromString(textColumn.DataType); textColumn.Text = FormatItem(textColumn.Text,textColumn.FormatString,typeCode); + if (textColumn.Name == "xy") { + Console.WriteLine("stop {0}",textColumn.Text); + } } } } @@ -156,8 +162,11 @@ namespace ICSharpCode.Reporting.Globals DateTime date; if (DateTime.TryParse(toFormat, out date)) { + string str = date.ToString(format, DateTimeFormatInfo.CurrentInfo); + + Console.WriteLine("---------{0} - {1} - {2}",toFormat,format, str); return str.Trim(); } diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs index 784c15996a..d61931d4a3 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/BasePageBuilder.cs @@ -75,6 +75,7 @@ namespace ICSharpCode.Reporting.PageBuilder void BuildPageHeader(){ var pageHeader = CreateSection(ReportModel.PageHeader,CurrentLocation); DetailStart = new Point(ReportModel.ReportSettings.LeftMargin,pageHeader.Location.Y + pageHeader.DesiredSize.Height +1); +// var xx = pageHeader.ExportedItems.Where(x => x.Name.Contains("xy")).ToList(); AddSectionToPage(pageHeader); } @@ -121,7 +122,7 @@ namespace ICSharpCode.Reporting.PageBuilder #endregion protected IExportContainer CreateSection(IReportContainer container,Point location){ - var sea = new SectionEventArgs(container); + var sea = new SectionEventArgs(container,Pages.Count); Raise (SectionRendering,this,sea); var containerConverter = new ContainerConverter(location); var convertedContainer = containerConverter.ConvertToExportContainer(container); @@ -129,6 +130,7 @@ namespace ICSharpCode.Reporting.PageBuilder var list = containerConverter.CreateConvertedList(container.Items); containerConverter.SetParent(convertedContainer,list); + convertedContainer.ExportedItems.AddRange(list); //Run ExpressionEvaluator for every section, otherwise measure don't work ExpressionRunner.Visitor.Visit(convertedContainer as ExportContainer); diff --git a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs index 1e82738667..dfce0b6bc2 100644 --- a/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs +++ b/src/AddIns/Misc/Reporting/ICSharpCode.Reporting/Src/PageBuilder/DataPageBuilder.cs @@ -73,6 +73,7 @@ namespace ICSharpCode.Reporting.PageBuilder } } + /* void NewMethod(IContainerConverter converter, ref Point pagePosition, ref Point sectionPosition, IGrouping grouping, ExportContainer sectionContainer) { foreach (var child in grouping) { @@ -91,6 +92,7 @@ namespace ICSharpCode.Reporting.PageBuilder sectionContainer.Size = new Size(sectionContainer.Size.Width, sectionContainer.Size.Height + convertedItems[0].Size.Height); } } +*/ void BuildGroupedDetails (IContainerConverter converter,Point startPosition) { var pagePosition = startPosition; @@ -98,22 +100,22 @@ namespace ICSharpCode.Reporting.PageBuilder foreach (IGrouping grouping in DataSource.GroupedList) { - var groupHeader = (BaseRowItem)CurrentSection.Items.Where(p => p.GetType() == typeof(GroupHeader)).FirstOrDefault(); +// var groupHeader = (BaseRowItem)CurrentSection.Items.Where(p => p.GetType() == typeof(GroupHeader)).FirstOrDefault(); + var groupHeader = (BaseRowItem)CurrentSection + .Items. + FirstOrDefault(p => p.GetType() == typeof(GroupHeader)); var sectionContainer = CreateContainerForSection(CurrentPage, pagePosition); - DataSource.Fill(groupHeader.Items,grouping.FirstOrDefault()); var headerRow = converter.ConvertToExportContainer(groupHeader); + headerRow.Location = groupHeader.Location; + - headerRow.Location = new Point(headerRow.Location.X,groupHeader.Location.Y); - Console.WriteLine(headerRow.Location); var headerItems = converter.CreateConvertedList(groupHeader.Items); converter.SetParent(sectionContainer, headerItems); - headerRow.ExportedItems.AddRange(headerItems); - headerRow.Parent = sectionContainer; sectionContainer.ExportedItems.Add(headerRow); @@ -128,7 +130,13 @@ namespace ICSharpCode.Reporting.PageBuilder //Childs foreach (var child in grouping) { var dataItems = ExtractDataItems(CurrentSection.Items); - List convertedItems = FillAndConvert(sectionContainer, child, dataItems, converter); + + var convertedItems = FillAndConvert(sectionContainer, child, dataItems, converter) + .OrderBy(p => p.Location.X).ToList(); + + var xx = convertedItems.FirstOrDefault().Location; + + Console.WriteLine(xx); AdjustLocationInSection(sectionPosition, convertedItems); @@ -242,9 +250,14 @@ namespace ICSharpCode.Reporting.PageBuilder static void AdjustLocationInSection(Point sectionPosition,List convertedItems){ - foreach (var element in convertedItems) { - element.Location = new Point(element.Location.X + sectionPosition.X , sectionPosition.Y); - } + + convertedItems.ForEach(element => {element.Location = new Point(element.Location.X,sectionPosition.Y); }); + + +// foreach (var element in convertedItems) { +//// element.Location = new Point(element.Location.X + sectionPosition.X , sectionPosition.Y); +// element.Location = new Point(element.Location.X , sectionPosition.Y); +// } }