// Show variable type in row header and highlight AVGPR watches private void ReplaceDefaultRowHeaderBitmap(object sender, DataGridViewRowPostPaintEventArgs e) { if (e.RowIndex == _table.NewWatchRowIndex) { return; } var selectedWatch = VisualizerTable.GetRowWatchState(_table.Rows[e.RowIndex]); if (selectedWatch.IsAVGPR) { var highlightedRect = new Rectangle(e.RowBounds.Left + 3, e.RowBounds.Top + 3, _table.RowHeadersWidth - 6, e.RowBounds.Height - 6); e.Graphics.FillRectangle(_avgprColor, highlightedRect); } e.PaintHeader( DataGridViewPaintParts.Background | DataGridViewPaintParts.Border | DataGridViewPaintParts.Focus | DataGridViewPaintParts.SelectionBackground | DataGridViewPaintParts.ContentForeground ); if (!selectedWatch.IsEmpty) { var typeTextPos = new PointF((float)e.RowBounds.Left + 7, (float)e.RowBounds.Top + 4); e.Graphics.DrawString(selectedWatch.Type.ShortName(), _table.RowHeadersDefaultCellStyle.Font, new SolidBrush(_table.RowHeadersDefaultCellStyle.ForeColor), typeTextPos); } }
public void Setup(VisualizerTable table) { Child = table; using (var graphics = Graphics.FromHwnd(IntPtr.Zero)) { var scaleFactor = graphics.DpiY / 96; table.ScaleControls(scaleFactor); } }
public VisualizerControl(IToolWindowIntegration integration, ActivateWindow activateWindow) { _context = integration.GetVisualizerContext(); _context.PropertyChanged += ContextPropertyChanged; _context.GroupFetched += GroupFetched; _context.GroupFetching += SetupDataFetch; _context.CellSelectionEvent += CellSelected; DataContext = _context; InitializeComponent(); _wavemap = new WavemapImage(HeaderHost.WavemapImage, _context); _wavemap.NavigationRequested += NavigateToWave; HeaderHost.WavemapSelector.Setup(_context, _wavemap); _activateWindow = activateWindow; _integration = integration; _integration.AddWatch += AddWatch; PropertyChangedEventManager.AddHandler(_context.Options.VisualizerOptions, OptionsChanged, ""); PropertyChangedEventManager.AddHandler(_context.Options.DebuggerOptions, OptionsChanged, ""); PropertyChangedEventManager.AddHandler(_context.Options.VisualizerAppearance, OptionsChanged, ""); PropertyChangedEventManager.AddHandler(_context.Options.VisualizerColumnStyling, VisualizerColumnStylingPropertyChanged, ""); _fontAndColorProvider = new FontAndColorProvider(); _fontAndColorProvider.FontAndColorInfoChanged += RefreshDataStyling; _table = new VisualizerTable( _context.Options, _fontAndColorProvider, getValidWatches: () => _context?.BreakData?.Watches); _table.WatchStateChanged += (newWatchState, invalidatedRows) => { _context.Options.DebuggerOptions.Watches.Clear(); _context.Options.DebuggerOptions.Watches.AddRange(newWatchState); if (invalidatedRows != null) { foreach (var row in invalidatedRows) { SetRowContentsFromBreakState(row); } } }; _table.SetScalingMode(_context.Options.VisualizerAppearance.ScalingMode); TableHost.Setup(_table); RestoreSavedState(); }
public CustomTableGraphics(VisualizerTable table) { _table = table; _table.RowPostPaint += ReplaceDefaultRowHeaderBitmap; }