public override void UpdateUIOverride(WorksheetUIUpdateContextBase updateContext) { this.Clear(); WorksheetUIUpdateContext worksheetUIUpdateContext = updateContext as WorksheetUIUpdateContext; if (worksheetUIUpdateContext == null || !worksheetUIUpdateContext.WorksheetEditor.Selection.IsCellSelection) { return; } SheetViewport viewport = updateContext.SheetViewport; for (int paneIndex = 0; paneIndex < viewport.ViewportPanesCount; paneIndex++) { var pane = viewport.ViewportPanes[paneIndex]; CellRange visibleRange = pane.VisibleRange; for (int i = visibleRange.FromIndex.RowIndex; i <= visibleRange.ToIndex.RowIndex; i++) { CellIndex cellIndex = new CellIndex(i, Constants.ButtonColumnIndex); if (this.Worksheet.UsedCellRange.Contains(cellIndex)) { RadButton button = this.GetElementFromPool <RadButton>(pane.ViewportPaneType); button.Content = "Show age"; button.Click += this.Button_Click; button.Tag = cellIndex; this.CalculateCellEditorSize(button, updateContext.GetVisibleCellBox(cellIndex)); } } } }
public void UnregisterDataProvider(DataProvider dataprovider) { SheetViewport stport = (this.viewportController as NormalViewportController).View.Children.FirstOrDefault(x => x is SheetViewport) as SheetViewport; if (stport == null) { return; } CellsViewport cvport = stport.Children.FirstOrDefault(x => x is CellsViewport) as CellsViewport; if (cvport == null) { return; } cvport.UnregisterDataProvider(dataprovider); }
internal void NextPage(PlatformGraphics pg) { this.hasMorePages = false; var sheet = this.CurrentWorksheet; if (sheet == null) { return; } // out of print areas if (this.CurrentRowIndex >= sheet.pageBreakRows.Count && this.CurrentColIndex >= sheet.pageBreakCols.Count) { return; } int row = sheet.pageBreakRows[this.CurrentRowIndex]; int col = sheet.pageBreakCols[this.CurrentColIndex]; int endRow = sheet.pageBreakRows[this.CurrentRowIndex + 1]; int endCol = sheet.pageBreakCols[this.CurrentColIndex + 1]; switch (this.CurrentPrintSettings.PageOrder) { default: case PrintPageOrder.DownThenOver: { if (this.CurrentRowIndex < sheet.pageBreakRows.Count - 2) { this.CurrentRowIndex++; this.hasMorePages = true; } else { if (this.CurrentColIndex < sheet.pageBreakCols.Count - 2) { this.CurrentRowIndex = 0; this.CurrentColIndex++; this.hasMorePages = true; } else { this.hasMorePages = false; } } } break; case PrintPageOrder.OverThenDown: { if (this.CurrentColIndex < sheet.pageBreakCols.Count - 2) { this.CurrentColIndex++; this.hasMorePages = true; } else { if (this.CurrentRowIndex < sheet.pageBreakRows.Count - 2) { this.CurrentColIndex = 0; this.CurrentRowIndex++; this.hasMorePages = true; } else { this.hasMorePages = false; } } } break; } if (this.DrawingContext.Graphics == null) { #if WINFORM this.DrawingContext.Graphics = new unvell.ReoGrid.WinForm.GDIRenderer(pg); #endif // WINFORM } else { this.DrawingContext.Graphics.Reset(); } var ig = this.DrawingContext.Renderer; ig.PlatformGraphics = pg; #if DEBUG Debug.WriteLine(string.Format("print page {0,3},{1,3} - {2,3},{3,3}", row, col, endRow, endCol)); #endif // DEBUG GridRegion gr = new GridRegion(row, col, endRow, endCol); if (this.printViewportController == null) { this.printViewportController = new ViewportController(sheet); } else { this.printViewportController.worksheet = sheet; } this.PrintViewport = new SheetViewport(this.printViewportController); this.PrintViewport.Bounds = this.CurrentPaperBounds; // refresh cells text boundary sheet.IterateCells(gr.ToRange(), (_unused_r, _unused_c, cell) => { sheet.UpdateCellTextBounds(ig, cell, DrawMode.Print, this.CurrentPrintSettings.PageScaling, Core.UpdateFontReason.ScaleChanged); return(true); }); this.PrintViewport.VisibleRegion = gr; this.PrintViewport.ScaleFactor = this.CurrentPrintSettings.PageScaling; this.PrintViewport.ViewStart = new Point(sheet.cols[col].Left, sheet.rows[row].Top); this.PrintViewport.UpdateView(); this.PrintViewport.Draw(this.DrawingContext); if (this.CurrentPrintSettings.ShowMargins) { var m = this.CurrentPaperBounds; var p = this.DrawingContext.Renderer.GetPen(SolidColor.Gray); lock (p) { ig.DrawLine(p, m.X - 50, m.Y, m.X, m.Y); ig.DrawLine(p, m.Right + 50, m.Y, m.Right, m.Y); ig.DrawLine(p, m.X - 50, m.Bottom, m.X, m.Bottom); ig.DrawLine(p, m.Right + 50, m.Bottom, m.Right, m.Bottom); ig.DrawLine(p, m.X, m.Y - 50, m.X, m.Y); ig.DrawLine(p, m.X, m.Bottom + 50, m.X, m.Bottom); ig.DrawLine(p, m.Right, m.Y - 50, m.Right, m.Y); ig.DrawLine(p, m.Right, m.Bottom + 50, m.Right, m.Bottom); } } if (!this.hasMorePages) { this.NextWorksheet(); this.hasMorePages = this.CurrentWorksheet != null; } }
internal void NextPage(PlatformGraphics pg) { this.hasMorePages = false; var sheet = this.CurrentWorksheet; if (sheet == null) { return; } // out of print areas if (this.CurrentRowIndex >= sheet.pageBreakRows.Count && this.CurrentColIndex >= sheet.pageBreakCols.Count) { return; } int row = sheet.pageBreakRows[this.CurrentRowIndex]; int col = sheet.pageBreakCols[this.CurrentColIndex]; int endRow = sheet.pageBreakRows[this.CurrentRowIndex + 1]; int endCol = sheet.pageBreakCols[this.CurrentColIndex + 1]; switch (this.CurrentPrintSettings.PageOrder) { default: case PrintPageOrder.DownThenOver: { if (this.CurrentRowIndex < sheet.pageBreakRows.Count - 2) { this.CurrentRowIndex++; this.hasMorePages = true; } else { if (this.CurrentColIndex < sheet.pageBreakCols.Count - 2) { this.CurrentRowIndex = 0; this.CurrentColIndex++; this.hasMorePages = true; } else { this.hasMorePages = false; } } } break; case PrintPageOrder.OverThenDown: { if (this.CurrentColIndex < sheet.pageBreakCols.Count - 2) { this.CurrentColIndex++; this.hasMorePages = true; } else { if (this.CurrentRowIndex < sheet.pageBreakRows.Count - 2) { this.CurrentColIndex = 0; this.CurrentRowIndex++; this.hasMorePages = true; } else { this.hasMorePages = false; } } } break; } #if WINFORM // Always need a fresh GDIRenderer because the cachedGraphics of the used one is disposed if (this.DrawingContext.Graphics is WinForm.GDIRenderer renderer) { renderer.Dispose(); } this.DrawingContext.Graphics = new WinForm.GDIRenderer(pg); #else if (this.DrawingContext.Graphics != null) #endif // WINFORM { this.DrawingContext.Graphics.Reset(); } var ig = this.DrawingContext.Renderer; ig.PlatformGraphics = pg; #if DEBUG Debug.WriteLine(string.Format("print page {0,3},{1,3} - {2,3},{3,3}", row, col, endRow, endCol)); #endif // DEBUG GridRegion gr = new GridRegion(row, col, endRow, endCol); if (this.printViewportController == null) { this.printViewportController = new ViewportController(sheet); } else { this.printViewportController.worksheet = sheet; } this.PrintViewport = new SheetViewport(this.printViewportController); this.PrintViewport.Bounds = this.CurrentPaperBounds; this.PrintViewport.VisibleRegion = gr; this.PrintViewport.ScaleFactor = this.CurrentPrintSettings.PageScaling; this.PrintViewport.ViewStart = new Point(sheet.cols[col].Left, sheet.rows[row].Top); this.PrintViewport.UpdateView(); this.PrintViewport.Draw(this.DrawingContext); if (this.CurrentPrintSettings.ShowMargins) { var m = this.CurrentPaperBounds; var p = this.DrawingContext.Renderer.GetPen(SolidColor.Gray); lock (p) { ig.DrawLine(p, m.X - 50, m.Y, m.X, m.Y); ig.DrawLine(p, m.Right + 50, m.Y, m.Right, m.Y); ig.DrawLine(p, m.X - 50, m.Bottom, m.X, m.Bottom); ig.DrawLine(p, m.Right + 50, m.Bottom, m.Right, m.Bottom); ig.DrawLine(p, m.X, m.Y - 50, m.X, m.Y); ig.DrawLine(p, m.X, m.Bottom + 50, m.X, m.Bottom); ig.DrawLine(p, m.Right, m.Y - 50, m.Right, m.Y); ig.DrawLine(p, m.Right, m.Bottom + 50, m.Right, m.Bottom); } } if (!this.hasMorePages) { this.NextWorksheet(); this.hasMorePages = this.CurrentWorksheet != null; } }