public void SetCurrentFile(FileViewContext ctx) { if (ctx != null) { Logger.logDebug("Current file changed to " + ctx.LogView.FileName); lock (this.paintLock) { this.logView = ctx.LogView; this.logPaintContext = ctx.LogPaintContext; } this.SetColumnizer(ctx.LogView.CurrentColumnizer); } else { this.logView = null; this.logPaintContext = null; } UpdateView(); }
internal FileViewContext(ILogPaintContext logPaintContext, ILogView logView) { this.LogPaintContext = logPaintContext; this.LogView = logView; }
public static void CellPainting(ILogPaintContext logPaintCtx, DataGridView gridView, int rowIndex, DataGridViewCellPaintingEventArgs e) { if (rowIndex < 0 || e.ColumnIndex < 0) { e.Handled = false; return; } string line = logPaintCtx.GetLogLine(rowIndex); if (line != null) { HilightEntry entry = logPaintCtx.FindHilightEntry(line, true); e.Graphics.SetClip(e.CellBounds); if ((e.State & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected) { Color backColor = e.CellStyle.SelectionBackColor; Brush brush; if (gridView.Focused) { brush = new SolidBrush(e.CellStyle.SelectionBackColor); } else { Color color = Color.FromArgb(255, 170, 170, 170); brush = new SolidBrush(color); } e.Graphics.FillRectangle(brush, e.CellBounds); brush.Dispose(); } else { Color bgColor = Color.White; if (!DebugOptions.disableWordHighlight) { if (entry != null) { bgColor = entry.BackgroundColor; } } else { if (entry != null) { bgColor = entry.BackgroundColor; } } e.CellStyle.BackColor = bgColor; e.PaintBackground(e.ClipBounds, false); } if (DebugOptions.disableWordHighlight) { e.PaintContent(e.CellBounds); } else { PaintCell(logPaintCtx, e, gridView, false, entry); } if (e.ColumnIndex == 0) { Bookmark bookmark = logPaintCtx.GetBookmarkForLine(rowIndex); if (bookmark != null) { Rectangle r; // = new Rectangle(e.CellBounds.Left + 2, e.CellBounds.Top + 2, 6, 6); r = e.CellBounds; r.Inflate(-2, -2); Brush brush = new SolidBrush(logPaintCtx.BookmarkColor); e.Graphics.FillRectangle(brush, r); brush.Dispose(); if (bookmark.Text.Length > 0) { StringFormat format = new StringFormat(); format.LineAlignment = StringAlignment.Center; format.Alignment = StringAlignment.Center; Brush brush2 = new SolidBrush(Color.FromArgb(255, 190, 100, 0)); Font font = logPaintCtx.MonospacedFont; e.Graphics.DrawString("i", font, brush2, new RectangleF(r.Left, r.Top, r.Width, r.Height), format); brush2.Dispose(); } } } e.Paint(e.CellBounds, DataGridViewPaintParts.Border); e.Handled = true; } }
private static void PaintHighlightedCell(ILogPaintContext logPaintCtx, DataGridViewCellPaintingEventArgs e, DataGridView gridView, bool noBackgroundFill, HilightEntry groundEntry) { object value = e.Value != null ? e.Value : ""; IList <HilightMatchEntry> matchList = logPaintCtx.FindHilightMatches(value as string); // too many entries per line seem to cause problems with the GDI while (matchList.Count > 50) { matchList.RemoveAt(50); } var hme = new HilightMatchEntry(); hme.StartPos = 0; hme.Length = (value as string).Length; hme.HilightEntry = new HilightEntry((value as string), groundEntry != null ? groundEntry.ForegroundColor : Color.FromKnownColor(KnownColor.Black), groundEntry != null ? groundEntry.BackgroundColor : Color.Empty, false); matchList = MergeHighlightMatchEntries(matchList, hme); int leftPad = e.CellStyle.Padding.Left; RectangleF rect = new RectangleF(e.CellBounds.Left + leftPad, e.CellBounds.Top, e.CellBounds.Width, e.CellBounds.Height); Rectangle borderWidths = BorderWidths(e.AdvancedBorderStyle); Rectangle valBounds = e.CellBounds; valBounds.Offset(borderWidths.X, borderWidths.Y); valBounds.Width -= borderWidths.Right; valBounds.Height -= borderWidths.Bottom; if (e.CellStyle.Padding != Padding.Empty) { valBounds.Offset(e.CellStyle.Padding.Left, e.CellStyle.Padding.Top); valBounds.Width -= e.CellStyle.Padding.Horizontal; valBounds.Height -= e.CellStyle.Padding.Vertical; } TextFormatFlags flags = TextFormatFlags.Left | TextFormatFlags.SingleLine | TextFormatFlags.NoPrefix | TextFormatFlags.PreserveGraphicsClipping | TextFormatFlags.NoPadding | TextFormatFlags.VerticalCenter | TextFormatFlags.TextBoxControl ; // | TextFormatFlags.VerticalCenter // | TextFormatFlags.TextBoxControl // TextFormatFlags.SingleLine //TextRenderer.DrawText(e.Graphics, e.Value as String, e.CellStyle.Font, valBounds, Color.FromKnownColor(KnownColor.Black), flags); Point wordPos = valBounds.Location; Size proposedSize = new Size(valBounds.Width, valBounds.Height); Rectangle r = gridView.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true); e.Graphics.SetClip(e.CellBounds); foreach (HilightMatchEntry matchEntry in matchList) { Font font = matchEntry != null && matchEntry.HilightEntry.IsBold ? logPaintCtx.BoldFont : logPaintCtx.NormalFont; Brush bgBrush = matchEntry.HilightEntry.BackgroundColor != Color.Empty ? new SolidBrush(matchEntry.HilightEntry.BackgroundColor) : null; string matchWord = (value as string).Substring(matchEntry.StartPos, matchEntry.Length); Size wordSize = TextRenderer.MeasureText(e.Graphics, matchWord, font, proposedSize, flags); wordSize.Height = e.CellBounds.Height; Rectangle wordRect = new Rectangle(wordPos, wordSize); Color foreColor = matchEntry.HilightEntry.ForegroundColor; if ((e.State & DataGridViewElementStates.Selected) != DataGridViewElementStates.Selected) { if (!noBackgroundFill && bgBrush != null && !matchEntry.HilightEntry.NoBackground) { e.Graphics.FillRectangle(bgBrush, wordRect); } } else { if (foreColor.Equals(Color.Black)) { foreColor = Color.White; } } TextRenderer.DrawText(e.Graphics, matchWord, font, wordRect, foreColor, flags); wordPos.Offset(wordSize.Width, 0); if (bgBrush != null) { bgBrush.Dispose(); } } }
private static void PaintCell(ILogPaintContext logPaintCtx, DataGridViewCellPaintingEventArgs e, DataGridView gridView, bool noBackgroundFill, HilightEntry groundEntry) { PaintHighlightedCell(logPaintCtx, e, gridView, noBackgroundFill, groundEntry); }
public static void CellPaintFilter(ILogPaintContext logPaintCtx, DataGridView gridView, DataGridViewCellPaintingEventArgs e, int lineNum, string line, HilightEntry entry) { e.Graphics.SetClip(e.CellBounds); if ((e.State & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected) { Brush brush; if (gridView.Focused) { brush = new SolidBrush(e.CellStyle.SelectionBackColor); } else { Color color = Color.FromArgb(255, 170, 170, 170); brush = new SolidBrush(color); } e.Graphics.FillRectangle(brush, e.CellBounds); brush.Dispose(); } else { Color bgColor = Color.White; // paint direct filter hits with different bg color //if (this.filterParams.SpreadEnabled && this.filterHitList.Contains(lineNum)) //{ // bgColor = Color.FromArgb(255, 220, 220, 220); //} if (entry != null) { bgColor = entry.BackgroundColor; } e.CellStyle.BackColor = bgColor; e.PaintBackground(e.ClipBounds, false); } if (DebugOptions.disableWordHighlight) { e.PaintContent(e.CellBounds); } else { PaintCell(logPaintCtx, e, gridView, false, entry); } if (e.ColumnIndex == 0) { Bookmark bookmark = logPaintCtx.GetBookmarkForLine(lineNum); if (bookmark != null) { Rectangle r = new Rectangle(e.CellBounds.Left + 2, e.CellBounds.Top + 2, 6, 6); r = e.CellBounds; r.Inflate(-2, -2); Brush brush = new SolidBrush(logPaintCtx.BookmarkColor); e.Graphics.FillRectangle(brush, r); brush.Dispose(); if (bookmark.Text.Length > 0) { StringFormat format = new StringFormat(); format.LineAlignment = StringAlignment.Center; format.Alignment = StringAlignment.Center; Brush brush2 = new SolidBrush(Color.FromArgb(255, 190, 100, 0)); Font font = logPaintCtx.NormalFont; //TODO Zarunbal: Check if settings normal font is the right e.Graphics.DrawString("!", font, brush2, new RectangleF(r.Left, r.Top, r.Width, r.Height), format); font.Dispose(); brush2.Dispose(); } } } e.Paint(e.CellBounds, DataGridViewPaintParts.Border); e.Handled = true; }
public static void PaintHighlightedCell(ILogPaintContext logPaintCtx, DataGridViewCellPaintingEventArgs e, DataGridView gridView, bool noBackgroundFill, HilightEntry groundEntry) { object value = e.Value != null ? e.Value : ""; IList<HilightMatchEntry> matchList = logPaintCtx.FindHilightMatches(value as string); // too many entries per line seem to cause problems with the GDI while (matchList.Count > 50) { matchList.RemoveAt(50); } var hme = new HilightMatchEntry(); hme.StartPos = 0; hme.Length = (value as string).Length; hme.HilightEntry = new HilightEntry((value as string), groundEntry != null ? groundEntry.ForegroundColor : Color.FromKnownColor(KnownColor.Black), groundEntry != null ? groundEntry.BackgroundColor : Color.Empty, false); matchList = MergeHighlightMatchEntries(matchList, hme); Rectangle borderWidths = BorderWidths(e.AdvancedBorderStyle); Rectangle valBounds = e.CellBounds; valBounds.Offset(borderWidths.X, borderWidths.Y); valBounds.Width -= borderWidths.Right; valBounds.Height -= borderWidths.Bottom; if (e.CellStyle.Padding != Padding.Empty) { valBounds.Offset(e.CellStyle.Padding.Left, e.CellStyle.Padding.Top); valBounds.Width -= e.CellStyle.Padding.Horizontal; valBounds.Height -= e.CellStyle.Padding.Vertical; } TextFormatFlags flags = TextFormatFlags.Left | TextFormatFlags.SingleLine | TextFormatFlags.NoPrefix | TextFormatFlags.PreserveGraphicsClipping | TextFormatFlags.NoPadding | TextFormatFlags.VerticalCenter | TextFormatFlags.TextBoxControl ; // | TextFormatFlags.VerticalCenter // | TextFormatFlags.TextBoxControl // TextFormatFlags.SingleLine //TextRenderer.DrawText(e.Graphics, e.Value as String, e.CellStyle.Font, valBounds, Color.FromKnownColor(KnownColor.Black), flags); Point wordPos = valBounds.Location; Size proposedSize = new Size(valBounds.Width, valBounds.Height); e.Graphics.SetClip(e.CellBounds); foreach (HilightMatchEntry matchEntry in matchList) { Font font = matchEntry != null && matchEntry.HilightEntry.IsBold ? logPaintCtx.BoldFont : logPaintCtx.NormalFont; Brush bgBrush = matchEntry.HilightEntry.BackgroundColor != Color.Empty ? new SolidBrush(matchEntry.HilightEntry.BackgroundColor) : null; string matchWord = (value as string).Substring(matchEntry.StartPos, matchEntry.Length); Size wordSize = TextRenderer.MeasureText(e.Graphics, matchWord, font, proposedSize, flags); wordSize.Height = e.CellBounds.Height; Rectangle wordRect = new Rectangle(wordPos, wordSize); Color foreColor = matchEntry.HilightEntry.ForegroundColor; if ((e.State & DataGridViewElementStates.Selected) != DataGridViewElementStates.Selected) { if (!noBackgroundFill && bgBrush != null && !matchEntry.HilightEntry.NoBackground) { e.Graphics.FillRectangle(bgBrush, wordRect); } } else { if (foreColor.Equals(Color.Black)) { foreColor = Color.White; } } TextRenderer.DrawText(e.Graphics, matchWord, font, wordRect, foreColor, flags); wordPos.Offset(wordSize.Width, 0); if (bgBrush != null) { bgBrush.Dispose(); } } }
static void PaintCell(ILogPaintContext logPaintCtx, DataGridViewCellPaintingEventArgs e, DataGridView gridView, bool noBackgroundFill, HilightEntry groundEntry) { PaintHighlightedCell(logPaintCtx, e, gridView, noBackgroundFill, groundEntry); }
public static void CellPainting(ILogPaintContext logPaintCtx, DataGridView gridView, int rowIndex, DataGridViewCellPaintingEventArgs e) { if (rowIndex < 0 || e.ColumnIndex < 0) { e.Handled = false; return; } string line = logPaintCtx.GetLogLine(rowIndex); if (line != null) { HilightEntry entry = logPaintCtx.FindHilightEntry(line, true); e.Graphics.SetClip(e.CellBounds); if ((e.State & DataGridViewElementStates.Selected) == DataGridViewElementStates.Selected) { Brush brush; if (gridView.Focused) { brush = new SolidBrush(e.CellStyle.SelectionBackColor); } else { Color color = Color.FromArgb(255, 170, 170, 170); brush = new SolidBrush(color); } e.Graphics.FillRectangle(brush, e.CellBounds); brush.Dispose(); } else { Color bgColor = Color.White; if (entry != null) { bgColor = entry.BackgroundColor; } e.CellStyle.BackColor = bgColor; e.PaintBackground(e.ClipBounds, false); } if (DebugOptions.disableWordHighlight) { e.PaintContent(e.CellBounds); } else { PaintCell(logPaintCtx, e, gridView, false, entry); } if (e.ColumnIndex == 0) { Bookmark bookmark = logPaintCtx.GetBookmarkForLine(rowIndex); if (bookmark != null) { Rectangle r; // = new Rectangle(e.CellBounds.Left + 2, e.CellBounds.Top + 2, 6, 6); r = e.CellBounds; r.Inflate(-2, -2); Brush brush = new SolidBrush(logPaintCtx.BookmarkColor); e.Graphics.FillRectangle(brush, r); brush.Dispose(); if (bookmark.Text.Length > 0) { StringFormat format = new StringFormat(); format.LineAlignment = StringAlignment.Center; format.Alignment = StringAlignment.Center; Brush brush2 = new SolidBrush(Color.FromArgb(255, 190, 100, 0)); Font font = logPaintCtx.MonospacedFont; e.Graphics.DrawString("i", font, brush2, new RectangleF(r.Left, r.Top, r.Width, r.Height), format); brush2.Dispose(); } } } e.Paint(e.CellBounds, DataGridViewPaintParts.Border); e.Handled = true; } }