コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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();
        }