コード例 #1
0
        private void SetColourScheme(object sender, EventArgs e)
        {
            var menuItem = (MenuItem)sender;
            var scheme   = (ColourScheme)menuItem.Header;

            _colourScheme = scheme;
            foreach (MenuItem menu in _colourSchemeMenu.Items)
            {
                menu.IsChecked = menu.Header == scheme;
            }
        }
コード例 #2
0
        public MainWindow()
        {
            InitializeComponent();

            _cpuUsage = new CpuUsage();

            var(cols, rows) = CalculateDimensions(_cpuUsage.CoreCount);

            _rowCount = rows;
            _colCount = cols;

            // build the grid
            for (int c = 0; c < cols; c++)
            {
                ProcessorGrid.ColumnDefinitions.Add(new ColumnDefinition()
                {
                    Width = new GridLength(1, GridUnitType.Star)
                });
            }
            for (int r = 0; r < rows; r++)
            {
                ProcessorGrid.RowDefinitions.Add(new RowDefinition()
                {
                    Height = new GridLength(1, GridUnitType.Star)
                });
            }

            // generate the labels
            var blockList = new List <Label>();

            for (int p = 0; p < _cpuUsage.CoreCount; p++)
            {
                int col   = p % cols;
                int row   = (p - col) / cols;
                var block = new Label()
                {
                    Name = $"CpuCell{p:d4}", Content = "0%", HorizontalContentAlignment = HorizontalAlignment.Center, VerticalContentAlignment = VerticalAlignment.Center
                };
                blockList.Add(block);
                ProcessorGrid.Children.Add(block);
                Grid.SetColumn(block, col);
                Grid.SetRow(block, row);
            }
            _blocks = blockList.ToArray();

            // set the default colour scheme
            _colourScheme = ColourScheme.Schemes.First(cs => cs.Name == "Red");

            // create the context menu
            _contextMenu = new ContextMenu();
            foreach (var block in _blocks)
            {
                block.ContextMenu = _contextMenu;
            }
            // set up colour schemes menu
            _colourSchemeMenu = new MenuItem()
            {
                Header = "Colour Scheme"
            };
            foreach (var scheme in ColourScheme.Schemes)
            {
                var menuItem = new MenuItem()
                {
                    Header      = scheme,
                    IsCheckable = true,
                    IsChecked   = scheme.Name == "Red",
                };
                menuItem.Click += SetColourScheme;
                _colourSchemeMenu.Items.Add(menuItem);
            }
            _contextMenu.Items.Add(_colourSchemeMenu);
            // set up the timer menu
            _refreshRateMenu = new MenuItem()
            {
                Header = "Refresh Rate"
            };
            double[] times = new double[] { 0.5, 1.0, 2.0, 3.0, 4.0, 5.0, 10.0 };
            foreach (double time in times)
            {
                var menuItem = new MenuItem()
                {
                    Header      = time,
                    IsCheckable = true,
                    IsChecked   = time == 1.0
                };
                menuItem.Click += SetRefreshRate;
                _refreshRateMenu.Items.Add(menuItem);
            }
            _contextMenu.Items.Add(_refreshRateMenu);

            // set up the refresh timer
            _refreshTimer = new DispatcherTimer()
            {
                Interval = TimeSpan.FromSeconds(1.0),
            };
            _refreshTimer.Tick += UpdateValues;
            _refreshTimer.Start();
        }