private void OptionsChanged(object sender, PropertyChangedEventArgs e) { switch (e.PropertyName) { case nameof(Options.DebuggerOptions.Counter): GrayOutWatches(); break; case nameof(Options.VisualizerOptions.ShowSystemVariable): _table.ShowSystemRow = _context.Options.VisualizerOptions.ShowSystemVariable; break; case nameof(Options.VisualizerAppearance.ScalingMode): _table.SetScalingMode(_context.Options.VisualizerAppearance.ScalingMode); break; case nameof(Options.DebuggerOptions.GroupSize): case nameof(Options.VisualizerOptions.MaskLanes): case nameof(Options.VisualizerOptions.CheckMagicNumber): case nameof(Options.VisualizerAppearance.LaneGrouping): case nameof(Options.VisualizerAppearance.VerticalSplit): case nameof(Options.VisualizerAppearance.LaneSeparatorWidth): case nameof(Options.VisualizerAppearance.HiddenColumnSeparatorWidth): case nameof(Options.VisualizerAppearance.DarkenAlternatingRowsBy): RefreshDataStyling(); break; case nameof(Options.DebuggerOptions.WaveSize): RefreshDataStyling(); _wavemap.View = _context.BreakData?.GetWavemapView(); break; case nameof(Options.VisualizerOptions.MagicNumber): if (_context.Options.VisualizerOptions.CheckMagicNumber) { RefreshDataStyling(); } break; case nameof(Options.VisualizerAppearance.NameColumnAlignment): case nameof(Options.VisualizerAppearance.DataColumnAlignment): case nameof(Options.VisualizerAppearance.HeadersAlignment): _table.AlignmentChanged( _context.Options.VisualizerAppearance.NameColumnAlignment, _context.Options.VisualizerAppearance.DataColumnAlignment, _context.Options.VisualizerAppearance.HeadersAlignment ); break; case nameof(Options.VisualizerAppearance.BinHexSeparator): case nameof(Options.VisualizerAppearance.IntUintSeparator): case nameof(Options.VisualizerAppearance.BinHexLeadingZeroes): foreach (System.Windows.Forms.DataGridViewRow row in _table.Rows) { SetRowContentsFromBreakState(row); } break; } }
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(); }