public SensorNode(ISensor sensor, PersistentSettings settings, 
            UnitManager unitManager)
            : base()
        {
            this.sensor = sensor;
              this.settings = settings;
              this.unitManager = unitManager;
              switch (sensor.SensorType) {
            case SensorType.Voltage: format = "{0:F3} V"; break;
            case SensorType.Clock: format = "{0:F0} MHz"; break;
            case SensorType.Load: format = "{0:F1} %"; break;
            case SensorType.Temperature: format = "{0:F1} °C"; break;
            case SensorType.Fan: format = "{0:F0} RPM"; break;
            case SensorType.Flow: format = "{0:F0} L/h"; break;
            case SensorType.Control: format = "{0:F1} %"; break;
            case SensorType.Level: format = "{0:F1} %"; break;
            case SensorType.Power: format = "{0:F1} W"; break;
            case SensorType.Data: format = "{0:F1} GB"; break;
            case SensorType.Factor: format = "{0:F3}"; break;
            case SensorType.DataRate: format = "{0:bf}/s"; break;
              }

              bool hidden = settings.GetValue(new Identifier(sensor.Identifier,
            "hidden").ToString(), sensor.IsDefaultHidden);
              base.IsVisible = !hidden;

              this.Plot = settings.GetValue(new Identifier(sensor.Identifier,
            "plot").ToString(), false);
        }
Esempio n. 2
0
        public SensorNode(ISensor sensor, PersistentSettings settings,
                          UnitManager unitManager)
            : base()
        {
            this.sensor      = sensor;
            this.settings    = settings;
            this.unitManager = unitManager;
            switch (sensor.SensorType)
            {
            case SensorType.Voltage: format = "{0:F3} V"; break;

            case SensorType.Clock: format = "{0:F0} MHz"; break;

            case SensorType.Load: format = "{0:F1} %"; break;

            case SensorType.Temperature: format = "{0:F1} °C"; break;

            case SensorType.Fan: format = "{0:F0} RPM"; break;

            case SensorType.Flow: format = "{0:F0} L/h"; break;

            case SensorType.Control: format = "{0:F1} %"; break;

            case SensorType.Level: format = "{0:F1} %"; break;

            case SensorType.Power: format = "{0:F1} W"; break;

            case SensorType.Data: format = "{0:F1} GB"; break;

            case SensorType.Factor: format = "{0:F3}"; break;
            }

            bool hidden = settings.GetValue(new Identifier(sensor.Identifier,
                                                           "hidden").ToString(), sensor.IsDefaultHidden);

            base.IsVisible = !hidden;

            this.Plot = settings.GetValue(new Identifier(sensor.Identifier,
                                                         "plot").ToString(), false);
        }
Esempio n. 3
0
    public UserOption(string name, bool value,
      MenuItem menuItem, PersistentSettings settings) {

      this.settings = settings;
      this.name = name;
      if (name != null)
        this.value = settings.GetValue(name, value);
      else
        this.value = value;
      this.menuItem = menuItem;
      this.menuItem.Checked = this.value;
      this.menuItem.Click += new EventHandler(menuItem_Click);
    }
Esempio n. 4
0
        private void InitializeCPUTriggers()
        {
            string cpu_threshold_format = "cpu_temperature_threshold_{0:D}";
            string cpu_action_format    = "cpu_temperature_action_{0:D}";
            string cpu_triggers_count   = "cpu_triggers_count";
            int    triggers_count       = settings.GetValue(cpu_triggers_count, 0);

            for (int i = 0; i < triggers_count; ++i)
            {
                Trigger trigger = new Trigger();
                trigger.threshold = settings.GetValue(string.Format(cpu_threshold_format, i), CPU_DEFAULT_THRESHOLD);
                string action = settings.GetValue(string.Format(cpu_action_format, i), "undefined");
                trigger.action = GetTriggerActionFromString(action);
                if (trigger.action != null)
                {
                    cpuTriggers.Add(trigger);
                }
            }
        }
Esempio n. 5
0
        public static void LoadEvent(int id, PersistentSettings settings)
        {
            Event e = new Event(new Identifier("event", id + ""));

            e.Name = settings.GetValue(new Identifier(e.Identifier, "name").ToString(), float.MaxValue.ToString());

            for (int i = 0; i < MAX_TRIGGERS; i++)
            {
                if (settings.Contains(new Identifier(e.Identifier, "trigger", i + "", "type").ToString()))
                {
                    EventTrigger t = EventTrigger.LoadTrigger(e, i, settings);
                }
            }
        }
Esempio n. 6
0
        public Node(string text, Identifier identifier, PersistentSettings settings)
        {
            this.text       = text;
            this.nodes      = new NodeCollection(this);
            this.visible    = true;
            this.identifier = identifier;
            this.settings   = settings;

            if (settings != null)
            {
                this.collapsed = settings.GetValue(new Identifier(identifier,
                                                                  "collapsed").ToString(), false);
            }
        }
Esempio n. 7
0
 private void LoadMonitorSettings()
 {
     computer.CPUEnabled           = settings.GetValue(CPU_ENABLE_KEY, true);
     computer.GPUEnabled           = settings.GetValue(GPU_ENABLE_KEY, true);
     computer.RAMEnabled           = settings.GetValue(RAM_ENABLE_KEY, true);
     computer.HDDEnabled           = settings.GetValue(HDD_ENABLE_KEY, true);
     computer.MainboardEnabled     = settings.GetValue(MAINBOARD_ENABLE_KEY, true);
     computer.FanControllerEnabled = settings.GetValue(FAN_CONTROLLER_ENABLE_KEY, true);
 }
Esempio n. 8
0
        public SensorNode(ISensor sensor, PersistentSettings settings,
                          UnitManager unitManager, ISensorTextManager sensorTextManager) : base()
        {
            this.sensor            = sensor;
            this.settings          = settings;
            this.unitManager       = unitManager;
            this.sensorTextManager = sensorTextManager;


            bool hidden = settings.GetValue(new Identifier(sensor.Identifier,
                                                           "hidden").ToString(), sensor.IsDefaultHidden);

            base.IsVisible = !hidden;

            this.Plot = settings.GetValue(new Identifier(sensor.Identifier,
                                                         "plot").ToString(), false);

            string id = new Identifier(sensor.Identifier, "penColor").ToString();

            if (settings.Contains(id))
            {
                this.PenColor = settings.GetValue(id, Color.Black);
            }
        }
Esempio n. 9
0
 public UserOption(string name, bool value,
                   MenuItem menuItem, PersistentSettings settings)
 {
     this.settings = settings;
     this.name     = name;
     if (name != null)
     {
         this.value = settings.GetValue(name, value);
     }
     else
     {
         this.value = value;
     }
     this.menuItem         = menuItem;
     this.menuItem.Checked = this.value;
     this.menuItem.Click  += new EventHandler(menuItem_Click);
 }
Esempio n. 10
0
        private void InitializePlotForm()
        {
            plotForm = new Form();
            plotForm.FormBorderStyle = FormBorderStyle.SizableToolWindow;
            plotForm.ShowInTaskbar   = false;
            plotForm.StartPosition   = FormStartPosition.Manual;
            this.AddOwnedForm(plotForm);
            plotForm.Bounds = new Rectangle {
                X      = settings.GetValue("plotForm.Location.X", -100000),
                Y      = settings.GetValue("plotForm.Location.Y", 100),
                Width  = settings.GetValue("plotForm.Width", 640),
                Height = settings.GetValue("plotForm.Height", 470)
            };

            EventHandler moveOrResizePlotForm = delegate(object sender, EventArgs e) {
                if (plotForm.WindowState != FormWindowState.Minimized)
                {
                    settings.SetValue("plotForm.Location.X", plotForm.Bounds.X);
                    settings.SetValue("plotForm.Location.Y", plotForm.Bounds.Y);
                    settings.SetValue("plotForm.Width", plotForm.Bounds.Width);
                    settings.SetValue("plotForm.Height", plotForm.Bounds.Height);
                }
            };

            plotForm.Move   += moveOrResizePlotForm;
            plotForm.Resize += moveOrResizePlotForm;

            plotForm.VisibleChanged += delegate(object sender, EventArgs e) {
                Rectangle bounds       = new Rectangle(plotForm.Location, plotForm.Size);
                Screen    screen       = Screen.FromRectangle(bounds);
                Rectangle intersection =
                    Rectangle.Intersect(screen.WorkingArea, bounds);
                if (intersection.Width < Math.Min(16, bounds.Width) ||
                    intersection.Height < Math.Min(16, bounds.Height))
                {
                    plotForm.Location = new Point(
                        screen.WorkingArea.Width / 2 - bounds.Width / 2,
                        screen.WorkingArea.Height / 2 - bounds.Height / 2);
                }
            };
        }
Esempio n. 11
0
    public UserRadioGroup(string name, int value,
      MenuItem[] menuItems, PersistentSettings settings) {
      this.settings = settings;
      this.name = name;
      if (name != null)
        this.value = settings.GetValue(name, value);
      else
        this.value = value;
      this.menuItems = menuItems;
      this.value = Math.Max(Math.Min(this.value, menuItems.Length - 1), 0);

      for (int i = 0; i < this.menuItems.Length; i++) {
        this.menuItems[i].Checked = i == this.value;
        int index = i;
        this.menuItems[i].Click += delegate(object sender, EventArgs e) {
          this.Value = index;
        };
      }      
    }
Esempio n. 12
0
        public UserRadioGroup(string name, int value, MenuItem[] menuItems, PersistentSettings settings)
        {
            _settings = settings;
            _name     = name;
            _value    = name != null?settings.GetValue(name, value) : value;

            _menuItems = menuItems;
            _value     = Math.Max(Math.Min(_value, menuItems.Length - 1), 0);

            for (int i = 0; i < _menuItems.Length; i++)
            {
                _menuItems[i].Checked = i == _value;
                int index = i;
                _menuItems[i].Click += delegate
                {
                    Value = index;
                };
            }
        }
        public UserRadioGroup(string name, int value,
                              MenuItem[] menuItems, PersistentSettings settings)
        {
            this.settings = settings;
            this.name     = name;
            if (name != null)
            {
                this.value = settings.GetValue(name, value);
            }
            else
            {
                this.value = value;
            }
            this.menuItems = menuItems;
            this.value     = Math.Max(Math.Min(this.value, menuItems.Length - 1), 0);

            for (var i = 0; i < this.menuItems.Length; i++)
            {
                this.menuItems[i].Checked = i == this.value;
                var index = i;
                this.menuItems[i].Click += delegate { this.Value = index; };
            }
        }
Esempio n. 14
0
        public HardwareNode(IHardware hardware, PersistentSettings settings, UnitManager unitManager)
        {
            _settings           = settings;
            _unitManager        = unitManager;
            _expandedIdentifier = new Identifier(hardware.Identifier, "expanded").ToString();
            Hardware            = hardware;
            Image = HardwareTypeImage.Instance.GetImage(hardware.HardwareType);

            foreach (SensorType sensorType in Enum.GetValues(typeof(SensorType)))
            {
                _typeNodes.Add(new TypeNode(sensorType, hardware.Identifier, _settings));
            }

            foreach (ISensor sensor in hardware.Sensors)
            {
                SensorAdded(sensor);
            }

            hardware.SensorAdded   += SensorAdded;
            hardware.SensorRemoved += SensorRemoved;

            _expanded = settings.GetValue(_expandedIdentifier, true);
        }
        public MainForm()
        {
            InitializeComponent();

            _settings = new PersistentSettings();
            _settings.Load(Path.ChangeExtension(Application.ExecutablePath, ".config"));

            _unitManager = new UnitManager(_settings);

            // make sure the buffers used for double buffering are not disposed
            // after each draw call
            BufferedGraphicsManager.Current.MaximumBuffer = Screen.PrimaryScreen.Bounds.Size;

            // set the DockStyle here, to avoid conflicts with the MainMenu
            splitContainer.Dock = DockStyle.Fill;

            Font          = SystemFonts.MessageBoxFont;
            treeView.Font = SystemFonts.MessageBoxFont;

            // Set the bounds immediately, so that our child components can be
            // properly placed.
            Bounds = new Rectangle
            {
                X      = _settings.GetValue("mainForm.Location.X", Location.X),
                Y      = _settings.GetValue("mainForm.Location.Y", Location.Y),
                Width  = _settings.GetValue("mainForm.Width", 470),
                Height = _settings.GetValue("mainForm.Height", 640)
            };

            _plotPanel = new PlotPanel(_settings, _unitManager)
            {
                Font = SystemFonts.MessageBoxFont, Dock = DockStyle.Fill
            };

            nodeCheckBox.IsVisibleValueNeeded += NodeCheckBox_IsVisibleValueNeeded;
            nodeTextBoxText.DrawText          += NodeTextBoxText_DrawText;
            nodeTextBoxValue.DrawText         += NodeTextBoxText_DrawText;
            nodeTextBoxMin.DrawText           += NodeTextBoxText_DrawText;
            nodeTextBoxMax.DrawText           += NodeTextBoxText_DrawText;
            nodeTextBoxText.EditorShowing     += NodeTextBoxText_EditorShowing;

            foreach (TreeColumn column in treeView.Columns)
            {
                column.Width = Math.Max(20, Math.Min(400, _settings.GetValue("treeView.Columns." + column.Header + ".Width", column.Width)));
            }

            TreeModel treeModel = new TreeModel();

            _root = new Node(Environment.MachineName)
            {
                Image = EmbeddedResources.GetImage("computer.png")
            };

            treeModel.Nodes.Add(_root);
            treeView.Model = treeModel;

            _computer = new Computer(_settings);

            _systemTray = new SystemTray(_computer, _settings, _unitManager);
            _systemTray.HideShowCommand += HideShowClick;
            _systemTray.ExitCommand     += ExitClick;

            if (Software.OperatingSystem.IsUnix)
            {
                // Unix
                treeView.RowHeight           = Math.Max(treeView.RowHeight, 18);
                splitContainer.BorderStyle   = BorderStyle.None;
                splitContainer.Border3DStyle = Border3DStyle.Adjust;
                splitContainer.SplitterWidth = 4;
                treeView.BorderStyle         = BorderStyle.Fixed3D;
                _plotPanel.BorderStyle       = BorderStyle.Fixed3D;
                gadgetMenuItem.Visible       = false;
                minCloseMenuItem.Visible     = false;
                minTrayMenuItem.Visible      = false;
                startMinMenuItem.Visible     = false;
            }
            else
            { // Windows
                treeView.RowHeight       = Math.Max(treeView.Font.Height + 1, 18);
                _gadget                  = new SensorGadget(_computer, _settings, _unitManager);
                _gadget.HideShowCommand += HideShowClick;
                _wmiProvider             = new WmiProvider(_computer);
            }

            treeView.ShowNodeToolTips = true;
            NodeToolTipProvider tooltipProvider = new();

            nodeTextBoxText.ToolTipProvider  = tooltipProvider;
            nodeTextBoxValue.ToolTipProvider = tooltipProvider;
            _logger = new Logger(_computer);

            _plotColorPalette     = new Color[13];
            _plotColorPalette[0]  = Color.Blue;
            _plotColorPalette[1]  = Color.OrangeRed;
            _plotColorPalette[2]  = Color.Green;
            _plotColorPalette[3]  = Color.LightSeaGreen;
            _plotColorPalette[4]  = Color.Goldenrod;
            _plotColorPalette[5]  = Color.DarkViolet;
            _plotColorPalette[6]  = Color.YellowGreen;
            _plotColorPalette[7]  = Color.SaddleBrown;
            _plotColorPalette[8]  = Color.RoyalBlue;
            _plotColorPalette[9]  = Color.DeepPink;
            _plotColorPalette[10] = Color.MediumSeaGreen;
            _plotColorPalette[11] = Color.Olive;
            _plotColorPalette[12] = Color.Firebrick;

            _computer.HardwareAdded   += HardwareAdded;
            _computer.HardwareRemoved += HardwareRemoved;
            _computer.Open();

            timer.Enabled = true;

            UserOption showHiddenSensors = new UserOption("hiddenMenuItem", false, hiddenMenuItem, _settings);

            showHiddenSensors.Changed += delegate
            {
                treeModel.ForceVisible = showHiddenSensors.Value;
            };

            UserOption showValue = new UserOption("valueMenuItem", true, valueMenuItem, _settings);

            showValue.Changed += delegate
            {
                treeView.Columns[1].IsVisible = showValue.Value;
            };

            UserOption showMin = new UserOption("minMenuItem", false, minMenuItem, _settings);

            showMin.Changed += delegate
            {
                treeView.Columns[2].IsVisible = showMin.Value;
            };

            UserOption showMax = new UserOption("maxMenuItem", true, maxMenuItem, _settings);

            showMax.Changed += delegate
            {
                treeView.Columns[3].IsVisible = showMax.Value;
            };

            var _ = new UserOption("startMinMenuItem", false, startMinMenuItem, _settings);

            _minimizeToTray          = new UserOption("minTrayMenuItem", true, minTrayMenuItem, _settings);
            _minimizeToTray.Changed += delegate
            {
                _systemTray.IsMainIconEnabled = _minimizeToTray.Value;
            };

            _minimizeOnClose = new UserOption("minCloseMenuItem", false, minCloseMenuItem, _settings);

            _autoStart          = new UserOption(null, _startupManager.Startup, startupMenuItem, _settings);
            _autoStart.Changed += delegate
            {
                try
                {
                    _startupManager.Startup = _autoStart.Value;
                }
                catch (InvalidOperationException)
                {
                    MessageBox.Show("Updating the auto-startup option failed.", "Error",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    _autoStart.Value = _startupManager.Startup;
                }
            };

            _readMainboardSensors          = new UserOption("mainboardMenuItem", true, mainboardMenuItem, _settings);
            _readMainboardSensors.Changed += delegate
            {
                _computer.IsMotherboardEnabled = _readMainboardSensors.Value;
            };

            _readCpuSensors          = new UserOption("cpuMenuItem", true, cpuMenuItem, _settings);
            _readCpuSensors.Changed += delegate
            {
                _computer.IsCpuEnabled = _readCpuSensors.Value;
            };

            _readRamSensors          = new UserOption("ramMenuItem", true, ramMenuItem, _settings);
            _readRamSensors.Changed += delegate
            {
                _computer.IsMemoryEnabled = _readRamSensors.Value;
            };

            _readGpuSensors          = new UserOption("gpuMenuItem", true, gpuMenuItem, _settings);
            _readGpuSensors.Changed += delegate
            {
                _computer.IsGpuEnabled = _readGpuSensors.Value;
            };

            _readFanControllersSensors          = new UserOption("fanControllerMenuItem", true, fanControllerMenuItem, _settings);
            _readFanControllersSensors.Changed += delegate
            {
                _computer.IsControllerEnabled = _readFanControllersSensors.Value;
            };

            _readHddSensors          = new UserOption("hddMenuItem", true, hddMenuItem, _settings);
            _readHddSensors.Changed += delegate
            {
                _computer.IsStorageEnabled = _readHddSensors.Value;
            };

            _readNicSensors          = new UserOption("nicMenuItem", true, nicMenuItem, _settings);
            _readNicSensors.Changed += delegate
            {
                _computer.IsNetworkEnabled = _readNicSensors.Value;
            };

            _readPsuSensors          = new UserOption("psuMenuItem", true, psuMenuItem, _settings);
            _readPsuSensors.Changed += delegate
            {
                _computer.IsPsuEnabled = _readPsuSensors.Value;
            };

            _showGadget          = new UserOption("gadgetMenuItem", false, gadgetMenuItem, _settings);
            _showGadget.Changed += delegate
            {
                if (_gadget != null)
                {
                    _gadget.Visible = _showGadget.Value;
                }
            };

            celsiusMenuItem.Checked    = _unitManager.TemperatureUnit == TemperatureUnit.Celsius;
            fahrenheitMenuItem.Checked = !celsiusMenuItem.Checked;

            Server = new HttpServer(_root, _settings.GetValue("listenerPort", 8085), _settings.GetValue("authenticationEnabled", false), _settings.GetValue("authenticationUserName", ""), _settings.GetValue("authenticationPassword", ""));
            if (Server.PlatformNotSupported)
            {
                webMenuItemSeparator.Visible = false;
                webMenuItem.Visible          = false;
            }

            _runWebServer          = new UserOption("runWebServerMenuItem", false, runWebServerMenuItem, _settings);
            _runWebServer.Changed += delegate
            {
                if (_runWebServer.Value)
                {
                    Server.StartHttpListener();
                }
                else
                {
                    Server.StopHttpListener();
                }
            };

            authWebServerMenuItem.Checked = _settings.GetValue("authenticationEnabled", false);

            _logSensors = new UserOption("logSensorsMenuItem", false, logSensorsMenuItem, _settings);

            _loggingInterval = new UserRadioGroup("loggingInterval", 0,
                                                  new[] { log1sMenuItem, log2sMenuItem, log5sMenuItem, log10sMenuItem,
                                                          log30sMenuItem, log1minMenuItem, log2minMenuItem, log5minMenuItem,
                                                          log10minMenuItem, log30minMenuItem, log1hMenuItem, log2hMenuItem,
                                                          log6hMenuItem }, _settings);
            _loggingInterval.Changed += (sender, e) =>
            {
                switch (_loggingInterval.Value)
                {
                case 0: _logger.LoggingInterval = new TimeSpan(0, 0, 1); break;

                case 1: _logger.LoggingInterval = new TimeSpan(0, 0, 2); break;

                case 2: _logger.LoggingInterval = new TimeSpan(0, 0, 5); break;

                case 3: _logger.LoggingInterval = new TimeSpan(0, 0, 10); break;

                case 4: _logger.LoggingInterval = new TimeSpan(0, 0, 30); break;

                case 5: _logger.LoggingInterval = new TimeSpan(0, 1, 0); break;

                case 6: _logger.LoggingInterval = new TimeSpan(0, 2, 0); break;

                case 7: _logger.LoggingInterval = new TimeSpan(0, 5, 0); break;

                case 8: _logger.LoggingInterval = new TimeSpan(0, 10, 0); break;

                case 9: _logger.LoggingInterval = new TimeSpan(0, 30, 0); break;

                case 10: _logger.LoggingInterval = new TimeSpan(1, 0, 0); break;

                case 11: _logger.LoggingInterval = new TimeSpan(2, 0, 0); break;

                case 12: _logger.LoggingInterval = new TimeSpan(6, 0, 0); break;
                }
            };

            _sensorValuesTimeWindow = new UserRadioGroup("sensorValuesTimeWindow", 10,
                                                         new[] { timeWindow30sMenuItem, timeWindow1minMenuItem, timeWindow2minMenuItem,
                                                                 timeWindow5minMenuItem, timeWindow10minMenuItem, timeWindow30minMenuItem,
                                                                 timeWindow1hMenuItem, timeWindow2hMenuItem, timeWindow6hMenuItem,
                                                                 timeWindow12hMenuItem, timeWindow24hMenuItem }, _settings);
            _sensorValuesTimeWindow.Changed += (sender, e) =>
            {
                TimeSpan timeWindow = TimeSpan.Zero;
                switch (_sensorValuesTimeWindow.Value)
                {
                case 0: timeWindow = new TimeSpan(0, 0, 30); break;

                case 1: timeWindow = new TimeSpan(0, 1, 0); break;

                case 2: timeWindow = new TimeSpan(0, 2, 0); break;

                case 3: timeWindow = new TimeSpan(0, 5, 0); break;

                case 4: timeWindow = new TimeSpan(0, 10, 0); break;

                case 5: timeWindow = new TimeSpan(0, 30, 0); break;

                case 6: timeWindow = new TimeSpan(1, 0, 0); break;

                case 7: timeWindow = new TimeSpan(2, 0, 0); break;

                case 8: timeWindow = new TimeSpan(6, 0, 0); break;

                case 9: timeWindow = new TimeSpan(12, 0, 0); break;

                case 10: timeWindow = new TimeSpan(24, 0, 0); break;
                }

                _computer.Accept(new SensorVisitor(delegate(ISensor sensor)
                {
                    sensor.ValuesTimeWindow = timeWindow;
                }));
            };

            InitializePlotForm();
            InitializeSplitter();

            startupMenuItem.Visible = _startupManager.IsAvailable;

            if (startMinMenuItem.Checked)
            {
                if (!minTrayMenuItem.Checked)
                {
                    WindowState = FormWindowState.Minimized;
                    Show();
                }
            }
            else
            {
                Show();
            }

            // Create a handle, otherwise calling Close() does not fire FormClosed

            // Make sure the settings are saved when the user logs off
            Microsoft.Win32.SystemEvents.SessionEnded += delegate
            {
                _computer.Close();
                SaveConfiguration();
                if (_runWebServer.Value)
                {
                    Server.Quit();
                }
            };

            Microsoft.Win32.SystemEvents.PowerModeChanged += PowerModeChanged;
        }
Esempio n. 16
0
 public UnitManager(PersistentSettings settings)
 {
     this.settings = settings;
       this.temperatureUnit = (TemperatureUnit)settings.GetValue("TemperatureUnit",
     (int)TemperatureUnit.Celsius);
 }
Esempio n. 17
0
        public TypeNode(SensorType sensorType, IHardware hardware,
                        PersistentSettings settings) : base()
        {
            this.settings   = settings;
            this.sensorType = sensorType;
            this.hardware   = hardware;

            switch (sensorType)
            {
            case SensorType.Voltage:
                this.Image = Utilities.EmbeddedResources.GetImage("voltage.png");
                this.Text  = "Voltages";
                break;

            case SensorType.Clock:
                this.Image = Utilities.EmbeddedResources.GetImage("clock.png");
                this.Text  = "Clocks";
                break;

            case SensorType.Load:
                this.Image = Utilities.EmbeddedResources.GetImage("load.png");
                this.Text  = "Load";
                break;

            case SensorType.Temperature:
                this.Image = Utilities.EmbeddedResources.GetImage("temperature.png");
                this.Text  = "Temperatures";
                break;

            case SensorType.Fan:
                this.Image = Utilities.EmbeddedResources.GetImage("fan.png");
                this.Text  = "Fans";
                break;

            case SensorType.Flow:
                this.Image = Utilities.EmbeddedResources.GetImage("flow.png");
                this.Text  = "Flows";
                break;

            case SensorType.Control:
                this.Image = Utilities.EmbeddedResources.GetImage("control.png");
                this.Text  = "Controls";
                break;

            case SensorType.Level:
                this.Image = Utilities.EmbeddedResources.GetImage("level.png");
                this.Text  = "Levels";
                break;

            case SensorType.Power:
                this.Image = Utilities.EmbeddedResources.GetImage("power.png");
                this.Text  = "Powers";
                break;

            case SensorType.Data:
                this.Image = Utilities.EmbeddedResources.GetImage("data.png");
                this.Text  = "Data";
                break;

            case SensorType.SmallData:
                this.Image = Utilities.EmbeddedResources.GetImage("data.png");
                this.Text  = "Data";
                break;

            case SensorType.Factor:
                this.Image = Utilities.EmbeddedResources.GetImage("factor.png");
                this.Text  = "Factors";
                break;

            case SensorType.Throughput:
                this.Image = Utilities.EmbeddedResources.GetImage("throughput.png");
                this.Text  = "Throughput";
                break;
            }

            NodeAdded   += new NodeEventHandler(TypeNode_NodeAdded);
            NodeRemoved += new NodeEventHandler(TypeNode_NodeRemoved);

            this.expandedIdentifier = new Identifier(new Identifier(hardware.Identifier,
                                                                    sensorType.ToString().ToLowerInvariant()), "expanded");
            base.IsExpanded =
                settings.GetValue(expandedIdentifier.ToString(), base.IsExpanded);
        }
Esempio n. 18
0
        private PlotModel CreatePlotModel()
        {
            timeAxis.Position               = AxisPosition.Bottom;
            timeAxis.MajorGridlineStyle     = LineStyle.Solid;
            timeAxis.MajorGridlineThickness = 1;
            timeAxis.MajorGridlineColor     = OxyColor.FromRgb(192, 192, 192);
            timeAxis.MinorGridlineStyle     = LineStyle.Solid;
            timeAxis.MinorGridlineThickness = 1;
            timeAxis.MinorGridlineColor     = OxyColor.FromRgb(232, 232, 232);
            timeAxis.StartPosition          = 1;
            timeAxis.EndPosition            = 0;
            timeAxis.MinimumPadding         = 0;
            timeAxis.MaximumPadding         = 0;
            timeAxis.AbsoluteMinimum        = 0;
            timeAxis.Minimum         = 0;
            timeAxis.AbsoluteMaximum = 24 * 60 * 60;
            timeAxis.Zoom(
                settings.GetValue("plotPanel.MinTimeSpan", 0.0f),
                settings.GetValue("plotPanel.MaxTimeSpan", 10.0f * 60));
            timeAxis.StringFormat = "h:mm";

            var units = new Dictionary <SensorType, string>();

            units.Add(SensorType.Voltage, "V");
            units.Add(SensorType.Clock, "MHz");
            units.Add(SensorType.Temperature, "°C");
            units.Add(SensorType.Load, "%");
            units.Add(SensorType.Fan, "RPM");
            units.Add(SensorType.Flow, "L/h");
            units.Add(SensorType.Control, "%");
            units.Add(SensorType.Level, "%");
            units.Add(SensorType.Factor, "1");
            units.Add(SensorType.Power, "W");
            units.Add(SensorType.Data, "GB");
            units.Add(SensorType.Current, "A");
            units.Add(SensorType.KWH, "kWh");

            foreach (SensorType type in Enum.GetValues(typeof(SensorType)))
            {
                var axis = new LinearAxis();
                axis.Position               = AxisPosition.Left;
                axis.MajorGridlineStyle     = LineStyle.Solid;
                axis.MajorGridlineThickness = 1;
                axis.MajorGridlineColor     = timeAxis.MajorGridlineColor;
                axis.MinorGridlineStyle     = LineStyle.Solid;
                axis.MinorGridlineThickness = 1;
                axis.MinorGridlineColor     = timeAxis.MinorGridlineColor;
                axis.AxislineStyle          = LineStyle.Solid;
                axis.Title = type.ToString();
                axis.Key   = type.ToString();

                axis.Zoom(
                    settings.GetValue("plotPanel.Min" + axis.Key, float.NaN),
                    settings.GetValue("plotPanel.Max" + axis.Key, float.NaN));

                if (units.ContainsKey(type))
                {
                    axis.Unit = units[type];
                }
                axes.Add(type, axis);
            }

            var model = new PlotModel();

            model.Axes.Add(timeAxis);
            foreach (var axis in axes.Values)
            {
                model.Axes.Add(axis);
            }
            model.PlotMargins     = new OxyThickness(0);
            model.IsLegendVisible = false;

            return(model);
        }
        private void InitializePlotForm()
        {
            plotForm = new Form
            {
                FormBorderStyle = FormBorderStyle.SizableToolWindow,
                ShowInTaskbar   = false,
                StartPosition   = FormStartPosition.Manual
            };
            this.AddOwnedForm(plotForm);
            plotForm.Bounds = new Rectangle
            {
                X      = settings.GetValue("plotForm.Location.X", -100000),
                Y      = settings.GetValue("plotForm.Location.Y", 100),
                Width  = settings.GetValue("plotForm.Width", 600),
                Height = settings.GetValue("plotForm.Height", 400)
            };

            showPlot     = new UserOption("plotMenuItem", false, plotMenuItem, settings);
            plotLocation = new UserRadioGroup("plotLocation", 0, new[] { plotWindowMenuItem, plotBottomMenuItem, plotRightMenuItem }, settings);

            showPlot.Changed += delegate(object sender, EventArgs e)
            {
                if (plotLocation.Value == 0)
                {
                    if (showPlot.Value && this.Visible)
                    {
                        plotForm.Show();
                    }
                    else
                    {
                        plotForm.Hide();
                    }
                }
                else
                {
                    splitContainer.Panel2Collapsed = !showPlot.Value;
                }

                treeView.Invalidate();
            };
            plotLocation.Changed += delegate(object sender, EventArgs e)
            {
                switch (plotLocation.Value)
                {
                case 0:
                    splitContainer.Panel2.Controls.Clear();
                    splitContainer.Panel2Collapsed = true;
                    plotForm.Controls.Add(plotPanel);

                    if (showPlot.Value && this.Visible)
                    {
                        plotForm.Show();
                    }

                    break;

                case 1:
                    plotForm.Controls.Clear();
                    plotForm.Hide();
                    splitContainer.Orientation = Orientation.Horizontal;
                    splitContainer.Panel2.Controls.Add(plotPanel);
                    splitContainer.Panel2Collapsed = !showPlot.Value;
                    break;

                case 2:
                    plotForm.Controls.Clear();
                    plotForm.Hide();
                    splitContainer.Orientation = Orientation.Vertical;
                    splitContainer.Panel2.Controls.Add(plotPanel);
                    splitContainer.Panel2Collapsed = !showPlot.Value;
                    break;
                }
            };

            plotForm.FormClosing += delegate(object sender, FormClosingEventArgs e)
            {
                if (e.CloseReason == CloseReason.UserClosing)
                {
                    // just switch off the plotting when the user closes the form
                    if (plotLocation.Value == 0)
                    {
                        showPlot.Value = false;
                    }

                    e.Cancel = true;
                }
            };

            void MoveOrResizePlotForm(object sender, EventArgs e)
            {
                if (plotForm.WindowState != FormWindowState.Minimized)
                {
                    settings.SetValue("plotForm.Location.X", plotForm.Bounds.X);
                    settings.SetValue("plotForm.Location.Y", plotForm.Bounds.Y);
                    settings.SetValue("plotForm.Width", plotForm.Bounds.Width);
                    settings.SetValue("plotForm.Height", plotForm.Bounds.Height);
                }
            }

            plotForm.Move   += MoveOrResizePlotForm;
            plotForm.Resize += MoveOrResizePlotForm;

            plotForm.VisibleChanged += delegate(object sender, EventArgs e)
            {
                Rectangle bounds       = new Rectangle(plotForm.Location, plotForm.Size);
                Screen    screen       = Screen.FromRectangle(bounds);
                Rectangle intersection = Rectangle.Intersect(screen.WorkingArea, bounds);

                if (intersection.Width < Math.Min(16, bounds.Width) || intersection.Height < Math.Min(16, bounds.Height))
                {
                    plotForm.Location = new Point(screen.WorkingArea.Width / 2 - bounds.Width / 2, screen.WorkingArea.Height / 2 - bounds.Height / 2);
                }
            };

            this.VisibleChanged += delegate(object sender, EventArgs e)
            {
                if (this.Visible && showPlot.Value && plotLocation.Value == 0)
                {
                    plotForm.Show();
                }
                else
                {
                    plotForm.Hide();
                }
            };
        }
Esempio n. 20
0
        private PlotModel CreatePlotModel()
        {
            _timeAxis.Position               = AxisPosition.Bottom;
            _timeAxis.MajorGridlineStyle     = LineStyle.Solid;
            _timeAxis.MajorGridlineThickness = 1;
            _timeAxis.MajorGridlineColor     = OxyColor.FromRgb(192, 192, 192);
            _timeAxis.MinorGridlineStyle     = LineStyle.Solid;
            _timeAxis.MinorGridlineThickness = 1;
            _timeAxis.MinorGridlineColor     = OxyColor.FromRgb(232, 232, 232);
            _timeAxis.StartPosition          = 1;
            _timeAxis.EndPosition            = 0;
            _timeAxis.MinimumPadding         = 0;
            _timeAxis.MaximumPadding         = 0;
            _timeAxis.AbsoluteMinimum        = 0;
            _timeAxis.Minimum         = 0;
            _timeAxis.AbsoluteMaximum = 24 * 60 * 60;
            _timeAxis.Zoom(
                _settings.GetValue("plotPanel.MinTimeSpan", 0.0f),
                _settings.GetValue("plotPanel.MaxTimeSpan", 10.0f * 60));
            _timeAxis.StringFormat = "h:mm";

            var units = new Dictionary <SensorType, string>
            {
                { SensorType.Voltage, "V" },
                { SensorType.Clock, "MHz" },
                { SensorType.Temperature, "°C" },
                { SensorType.Load, "%" },
                { SensorType.Fan, "RPM" },
                { SensorType.Flow, "L/h" },
                { SensorType.Control, "%" },
                { SensorType.Level, "%" },
                { SensorType.Factor, "1" },
                { SensorType.Power, "W" },
                { SensorType.Data, "GB" },
                { SensorType.Frequency, "Hz" }
            };

            foreach (SensorType type in Enum.GetValues(typeof(SensorType)))
            {
                string typeName = type.ToString();
                var    axis     = new LinearAxis
                {
                    Position               = AxisPosition.Left,
                    MajorGridlineStyle     = LineStyle.Solid,
                    MajorGridlineThickness = 1,
                    MajorGridlineColor     = _timeAxis.MajorGridlineColor,
                    MinorGridlineStyle     = LineStyle.Solid,
                    MinorGridlineThickness = 1,
                    MinorGridlineColor     = _timeAxis.MinorGridlineColor,
                    AxislineStyle          = LineStyle.Solid,
                    Title = typeName,
                    Key   = typeName,
                };

                var annotation = new LineAnnotation
                {
                    Type            = LineAnnotationType.Horizontal,
                    ClipByXAxis     = false,
                    ClipByYAxis     = false,
                    LineStyle       = LineStyle.Solid,
                    Color           = OxyColors.Black,
                    YAxisKey        = typeName,
                    StrokeThickness = 2,
                };

                axis.AxisChanged      += (sender, args) => annotation.Y = axis.ActualMinimum;
                axis.TransformChanged += (sender, args) => annotation.Y = axis.ActualMinimum;

                axis.Zoom(_settings.GetValue("plotPanel.Min" + axis.Key, float.NaN), _settings.GetValue("plotPanel.Max" + axis.Key, float.NaN));

                if (units.ContainsKey(type))
                {
                    axis.Unit = units[type];
                }

                _axes.Add(type, axis);
                _annotations.Add(type, annotation);
            }

            var model = new ScaledPlotModel(_dpiXScale, _dpiYScale);

            model.Axes.Add(_timeAxis);
            foreach (LinearAxis axis in _axes.Values)
            {
                model.Axes.Add(axis);
            }
            model.IsLegendVisible = false;

            return(model);
        }
Esempio n. 21
0
        public DisplayConnector(IHardware[] hardware, List <ISensor> sensors, PersistentSettings settings)
        {
            this.settings = settings;
            this.sensors  = sensors;

            int tmp = 0;

            if (!int.TryParse(settings.GetValue(
                                  new Identifier(identifier, "mode").ToString(), "2"),
                              NumberStyles.Integer, CultureInfo.InvariantCulture,
                              out tmp))
            {
                mode = LCDConnectionMode.NONE;
            }
            else
            {
                mode = (LCDConnectionMode)tmp;
            }


            text = new List <SensorString>();

            this.curText = 0;
            int.TryParse(settings.GetValue(new Identifier(identifier, "curText").ToString(), "0"), out this.curText);

            int curID = 0;

            while (settings.Contains(new Identifier(identifier, curID + "", "text").ToString()))
            {
                text.Add(new SensorString(settings.GetValue(new Identifier(identifier, curID + "", "text").ToString(), "-"), sensors));
                curID++;
            }
            if (text.Count == 0)
            {
                text.Add(new SensorString("-", sensors));
            }

            // this.text = new List<SensorString>(new SensorString(settings.GetValue(new Identifier(identifier, curText + "", "text").ToString(), "-"), sensors);

            if (mode == LCDConnectionMode.SERIAL)
            {
                try
                {
                    //InitSerial(settings.GetValue(new Identifier(identifier, "comport").ToString(), "COM1"));
                } catch (Exception e)
                {
                    Debug.WriteLine(e.ToString());
                    mode = LCDConnectionMode.NONE;
                }
            }
            else if (mode == LCDConnectionMode.ARDUINO)
            {
                // Stupidly pick the first Arduino found
                foreach (IHardware h in hardware)
                {
                    if (h.GetType() == typeof(Arduino))
                    {
                        arduino = (Arduino)h;
                        break;
                    }
                }
                if (arduino == null)
                {
                    mode = LCDConnectionMode.NONE;
                }
                else
                {
                    arduino.SetDisplay(true);
                    settings.hotkeyManager.RegisterHotkey("test", 0x0002 + 0x0004, (int)Keys.P, delegate
                    {
                        ToggleDisplay();
                    });
                    settings.hotkeyManager.RegisterHotkey("next_display_text", 0x0002 + 0x0004, (int)Keys.J, delegate
                    {
                        if (CurText + 1 > text.Count - 1)
                        {
                            CurText = 0;
                        }
                        else
                        {
                            CurText = CurText + 1;
                        }
                    });
                    settings.hotkeyManager.RegisterHotkey("prev_display_text", 0x0002 + 0x0004, (int)Keys.K, delegate
                    {
                        if (CurText - 1 < 0)
                        {
                            CurText = text.Count - 1;
                        }
                        else
                        {
                            CurText = CurText - 1;
                        }
                    });
                }
            }
        }
Esempio n. 22
0
        public TypeNode(SensorType sensorType, Identifier parentId, PersistentSettings settings)
        {
            SensorType          = sensorType;
            _expandedIdentifier = new Identifier(parentId, SensorType.ToString(), ".expanded").ToString();
            _settings           = settings;

            switch (sensorType)
            {
            case SensorType.Voltage:
                Image = Utilities.EmbeddedResources.GetImage("voltage.png");
                Text  = "Voltages";
                break;

            case SensorType.Clock:
                Image = Utilities.EmbeddedResources.GetImage("clock.png");
                Text  = "Clocks";
                break;

            case SensorType.Load:
                Image = Utilities.EmbeddedResources.GetImage("load.png");
                Text  = "Load";
                break;

            case SensorType.Temperature:
                Image = Utilities.EmbeddedResources.GetImage("temperature.png");
                Text  = "Temperatures";
                break;

            case SensorType.Fan:
                Image = Utilities.EmbeddedResources.GetImage("fan.png");
                Text  = "Fans";
                break;

            case SensorType.Flow:
                Image = Utilities.EmbeddedResources.GetImage("flow.png");
                Text  = "Flows";
                break;

            case SensorType.Control:
                Image = Utilities.EmbeddedResources.GetImage("control.png");
                Text  = "Controls";
                break;

            case SensorType.Level:
                Image = Utilities.EmbeddedResources.GetImage("level.png");
                Text  = "Levels";
                break;

            case SensorType.Power:
                Image = Utilities.EmbeddedResources.GetImage("power.png");
                Text  = "Powers";
                break;

            case SensorType.Data:
                Image = Utilities.EmbeddedResources.GetImage("data.png");
                Text  = "Data";
                break;

            case SensorType.SmallData:
                Image = Utilities.EmbeddedResources.GetImage("data.png");
                Text  = "Data";
                break;

            case SensorType.Factor:
                Image = Utilities.EmbeddedResources.GetImage("factor.png");
                Text  = "Factors";
                break;

            case SensorType.Frequency:
                Image = Utilities.EmbeddedResources.GetImage("clock.png");
                Text  = "Frequencies";
                break;

            case SensorType.Throughput:
                Image = Utilities.EmbeddedResources.GetImage("throughput.png");
                Text  = "Throughput";
                break;
            }

            NodeAdded   += TypeNode_NodeAdded;
            NodeRemoved += TypeNode_NodeRemoved;
            _expanded    = settings.GetValue(_expandedIdentifier, true);
        }
        public SensorNotifyIcon(SystemTray sensorSystemTray, ISensor sensor,
            bool balloonTip, PersistentSettings settings)
        {
            this.sensor = sensor;
              this.notifyIcon = new NotifyIcon();

              Color defaultColor = Color.Black;
              if (sensor.SensorType == SensorType.Load ||
              sensor.SensorType == SensorType.Control ||
              sensor.SensorType == SensorType.Level)
              {
            defaultColor = Color.FromArgb(0xff, 0x70, 0x8c, 0xf1);
              }
              Color = settings.GetValue(new Identifier(sensor.Identifier,
            "traycolor").ToString(), defaultColor);

              this.pen = new Pen(Color.FromArgb(96, Color.Black));
              this.font = SystemFonts.MessageBoxFont;

              ContextMenu contextMenu = new ContextMenu();
              MenuItem hideShowItem = new MenuItem("Hide/Show");
              hideShowItem.Click += delegate(object obj, EventArgs args) {
            sensorSystemTray.SendHideShowCommand();
              };
              contextMenu.MenuItems.Add(hideShowItem);
              contextMenu.MenuItems.Add(new MenuItem("-"));
              MenuItem removeItem = new MenuItem("Remove Sensor");
              removeItem.Click += delegate(object obj, EventArgs args) {
            sensorSystemTray.Remove(this.sensor);
              };
              contextMenu.MenuItems.Add(removeItem);
              MenuItem colorItem = new MenuItem("Change Color...");
              colorItem.Click += delegate(object obj, EventArgs args) {
            ColorDialog dialog = new ColorDialog();
            dialog.Color = Color;
            if (dialog.ShowDialog() == DialogResult.OK) {
              Color = dialog.Color;
              settings.SetValue(new Identifier(sensor.Identifier,
            "traycolor").ToString(), Color);
            }
              };
              contextMenu.MenuItems.Add(colorItem);
              contextMenu.MenuItems.Add(new MenuItem("-"));
              MenuItem exitItem = new MenuItem("Exit");
              exitItem.Click += delegate(object obj, EventArgs args) {
            sensorSystemTray.SendExitCommand();
              };
              contextMenu.MenuItems.Add(exitItem);
              this.notifyIcon.ContextMenu = contextMenu;
              this.notifyIcon.DoubleClick += delegate(object obj, EventArgs args) {
            sensorSystemTray.SendHideShowCommand();
              };

              // get the default dpi to create an icon with the correct size
              float dpiX, dpiY;
              using (Bitmap b = new Bitmap(1, 1, PixelFormat.Format32bppArgb)) {
            dpiX = b.HorizontalResolution;
            dpiY = b.VerticalResolution;
              }

              // adjust the size of the icon to current dpi (default is 16x16 at 96 dpi)
              int width = (int)Math.Round(16 * dpiX / 96);
              int height = (int)Math.Round(16 * dpiY / 96);

              // make sure it does never get smaller than 16x16
              width = width < 16 ? 16: width;
              height = height < 16 ? 16: height;

              this.bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb);
              this.graphics = Graphics.FromImage(this.bitmap);

              if (Environment.OSVersion.Version.Major > 5) {
            this.graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
            this.graphics.SmoothingMode = SmoothingMode.HighQuality;
              }
        }
        private void NotificationsForm_Load(object sender, EventArgs e)
        {
            notificationEmailTxtBox.Text    = settings.GetValue(EmailNotificationManager.EmailIdentifier.ToString(), string.Empty);
            GPULoadNumUpDown.Value          = Convert.ToDecimal(settings.GetValue(GPULoadChecker.ThresholdIdentifier.ToString(), 0));
            GPULoadDDL.SelectedIndex        = Convert.ToInt32(settings.GetValue(GPULoadChecker.GraterLessSignIdentifier.ToString(), 0));
            GPUTemperatureNumUpDown.Value   = Convert.ToDecimal(settings.GetValue(GPUTemperatureChecker.ThresholdIdentifier.ToString(), 0));
            GPUTemperatureDDL.SelectedIndex = Convert.ToInt32(settings.GetValue(GPUTemperatureChecker.GraterLessSignIdentifier.ToString(), 0));

            CPULoadNumUpDown.Value          = Convert.ToDecimal(settings.GetValue(CPULoadChecker.ThresholdIdentifier.ToString(), 0));
            CPULoadDDL.SelectedIndex        = Convert.ToInt32(settings.GetValue(CPULoadChecker.GraterLessSignIdentifier.ToString(), 0));
            CPUTemperatureNumUpDown.Value   = Convert.ToDecimal(settings.GetValue(CPUTemperatureChecker.ThresholdIdentifier.ToString(), 0));
            CPUTemperatureDDL.SelectedIndex = Convert.ToInt32(settings.GetValue(CPUTemperatureChecker.GraterLessSignIdentifier.ToString(), 0));

            MemoryUsageNumUpDown.Value   = Convert.ToDecimal(settings.GetValue(MemoryUsageChecker.ThresholdIdentifier.ToString(), 0));
            MemoryUsageDDL.SelectedIndex = Convert.ToInt32(settings.GetValue(MemoryUsageChecker.GraterLessSignIdentifier.ToString(), 0));

            this.SetControlsBehavior();
        }
Esempio n. 25
0
        public SensorNotifyIcon(SystemTray sensorSystemTray, ISensor sensor,
                                bool balloonTip, PersistentSettings settings)
        {
            this.sensor     = sensor;
            this.notifyIcon = new NotifyIcon();

            Color defaultColor = Color.Black;

            if (sensor.SensorType == SensorType.Load)
            {
                defaultColor = Color.FromArgb(0xff, 0x70, 0x8c, 0xf1);
            }
            Color = settings.GetValue(new Identifier(sensor.Identifier,
                                                     "traycolor").ToString(), defaultColor);

            this.pen  = new Pen(Color.FromArgb(96, Color.Black));
            this.font = SystemFonts.MessageBoxFont;

            ContextMenu contextMenu  = new ContextMenu();
            MenuItem    hideShowItem = new MenuItem("Hide/Show");

            hideShowItem.Click += delegate(object obj, EventArgs args) {
                sensorSystemTray.SendHideShowCommand();
            };
            contextMenu.MenuItems.Add(hideShowItem);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem removeItem = new MenuItem("Remove Sensor");

            removeItem.Click += delegate(object obj, EventArgs args) {
                sensorSystemTray.Remove(this.sensor);
            };
            contextMenu.MenuItems.Add(removeItem);
            MenuItem colorItem = new MenuItem("Change Color...");

            colorItem.Click += delegate(object obj, EventArgs args) {
                ColorDialog dialog = new ColorDialog();
                dialog.Color = Color;
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    Color = dialog.Color;
                    settings.SetValue(new Identifier(sensor.Identifier,
                                                     "traycolor").ToString(), Color);
                }
            };
            contextMenu.MenuItems.Add(colorItem);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem exitItem = new MenuItem("Exit");

            exitItem.Click += delegate(object obj, EventArgs args) {
                sensorSystemTray.SendExitCommand();
            };
            contextMenu.MenuItems.Add(exitItem);
            this.notifyIcon.ContextMenu  = contextMenu;
            this.notifyIcon.DoubleClick += delegate(object obj, EventArgs args) {
                sensorSystemTray.SendHideShowCommand();
            };

            this.bitmap   = new Bitmap(16, 16, PixelFormat.Format32bppArgb);
            this.graphics = Graphics.FromImage(this.bitmap);

            if (Environment.OSVersion.Version.Major > 5)
            {
                this.graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
                this.graphics.SmoothingMode     = SmoothingMode.HighQuality;
            }
        }
Esempio n. 26
0
        public SensorNotifyIcon(SystemTray sensorSystemTray, ISensor sensor, PersistentSettings settings, UnitManager unitManager)
        {
            _unitManager = unitManager;
            Sensor       = sensor;
            _notifyIcon  = new NotifyIconAdv();

            Color defaultColor = Color.White;

            if (sensor.SensorType == SensorType.Load || sensor.SensorType == SensorType.Control || sensor.SensorType == SensorType.Level)
            {
                defaultColor = Color.FromArgb(0xff, 0x70, 0x8c, 0xf1);
            }

            Color = settings.GetValue(new Identifier(sensor.Identifier, "traycolor").ToString(), defaultColor);

            _pen = new Pen(Color.FromArgb(96, Color.Black));
            ContextMenu contextMenu  = new ContextMenu();
            MenuItem    hideShowItem = new MenuItem("Hide/Show");

            hideShowItem.Click += delegate
            {
                sensorSystemTray.SendHideShowCommand();
            };
            contextMenu.MenuItems.Add(hideShowItem);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem removeItem = new MenuItem("Remove Sensor");

            removeItem.Click += delegate
            {
                sensorSystemTray.Remove(Sensor);
            };
            contextMenu.MenuItems.Add(removeItem);
            MenuItem colorItem = new MenuItem("Change Color...");

            colorItem.Click += delegate
            {
                ColorDialog dialog = new ColorDialog {
                    Color = Color
                };
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    Color = dialog.Color;
                    settings.SetValue(new Identifier(sensor.Identifier,
                                                     "traycolor").ToString(), Color);
                }
            };
            contextMenu.MenuItems.Add(colorItem);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem exitItem = new MenuItem("Exit");

            exitItem.Click += delegate
            {
                sensorSystemTray.SendExitCommand();
            };
            contextMenu.MenuItems.Add(exitItem);
            _notifyIcon.ContextMenu  = contextMenu;
            _notifyIcon.DoubleClick += delegate
            {
                sensorSystemTray.SendHideShowCommand();
            };

            // get the default dpi to create an icon with the correct size
            float dpiX, dpiY;

            using (Bitmap b = new Bitmap(1, 1, PixelFormat.Format32bppArgb))
            {
                dpiX = b.HorizontalResolution;
                dpiY = b.VerticalResolution;
            }

            // adjust the size of the icon to current dpi (default is 16x16 at 96 dpi)
            int width  = (int)Math.Round(16 * dpiX / 96);
            int height = (int)Math.Round(16 * dpiY / 96);

            // make sure it does never get smaller than 16x16
            width  = width < 16 ? 16 : width;
            height = height < 16 ? 16 : height;

            // adjust the font size to the icon size
            FontFamily family = SystemFonts.MessageBoxFont.FontFamily;
            float      baseSize;

            switch (family.Name)
            {
            case "Segoe UI": baseSize = 12; break;

            case "Tahoma": baseSize = 11; break;

            default: baseSize = 12; break;
            }

            _font      = new Font(family, baseSize * width / 16.0f, GraphicsUnit.Pixel);
            _smallFont = new Font(family, 0.75f * baseSize * width / 16.0f, GraphicsUnit.Pixel);

            _bitmap   = new Bitmap(width, height, PixelFormat.Format32bppArgb);
            _graphics = Graphics.FromImage(_bitmap);
            if (Environment.OSVersion.Version.Major > 5)
            {
                _graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
                _graphics.SmoothingMode     = SmoothingMode.HighQuality;
            }
        }
Esempio n. 27
0
        public SensorNotifyIcon(SystemTray sensorSystemTray, ISensor sensor,
                                bool balloonTip, PersistentSettings settings)
        {
            this.sensor     = sensor;
            this.notifyIcon = new NotifyIcon();

            Color defaultColor = Color.Black;

            if (sensor.SensorType == SensorType.Load ||
                sensor.SensorType == SensorType.Control ||
                sensor.SensorType == SensorType.Level)
            {
                defaultColor = Color.FromArgb(0xff, 0x70, 0x8c, 0xf1);
            }
            Color = settings.GetValue(new Identifier(sensor.Identifier,
                                                     "traycolor").ToString(), defaultColor);

            this.pen  = new Pen(Color.FromArgb(96, Color.Black));
            this.font = SystemFonts.MessageBoxFont;

            ContextMenu contextMenu  = new ContextMenu();
            MenuItem    hideShowItem = new MenuItem("Hide/Show");

            hideShowItem.Click += delegate(object obj, EventArgs args) {
                sensorSystemTray.SendHideShowCommand();
            };
            contextMenu.MenuItems.Add(hideShowItem);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem removeItem = new MenuItem("Remove Sensor");

            removeItem.Click += delegate(object obj, EventArgs args) {
                sensorSystemTray.Remove(this.sensor);
            };
            contextMenu.MenuItems.Add(removeItem);
            MenuItem colorItem = new MenuItem("Change Color...");

            colorItem.Click += delegate(object obj, EventArgs args) {
                ColorDialog dialog = new ColorDialog();
                dialog.Color = Color;
                if (dialog.ShowDialog() == DialogResult.OK)
                {
                    Color = dialog.Color;
                    settings.SetValue(new Identifier(sensor.Identifier,
                                                     "traycolor").ToString(), Color);
                }
            };
            contextMenu.MenuItems.Add(colorItem);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem exitItem = new MenuItem("Exit");

            exitItem.Click += delegate(object obj, EventArgs args) {
                sensorSystemTray.SendExitCommand();
            };
            contextMenu.MenuItems.Add(exitItem);
            this.notifyIcon.ContextMenu  = contextMenu;
            this.notifyIcon.DoubleClick += delegate(object obj, EventArgs args) {
                sensorSystemTray.SendHideShowCommand();
            };

            // get the default dpi to create an icon with the correct size
            float dpiX, dpiY;

            using (Bitmap b = new Bitmap(1, 1, PixelFormat.Format32bppArgb)) {
                dpiX = b.HorizontalResolution;
                dpiY = b.VerticalResolution;
            }

            // adjust the size of the icon to current dpi (default is 16x16 at 96 dpi)
            int width  = (int)Math.Round(16 * dpiX / 96);
            int height = (int)Math.Round(16 * dpiY / 96);

            // make sure it does never get smaller than 16x16
            width  = width < 16 ? 16: width;
            height = height < 16 ? 16: height;

            this.bitmap   = new Bitmap(width, height, PixelFormat.Format32bppArgb);
            this.graphics = Graphics.FromImage(this.bitmap);

            if (Environment.OSVersion.Version.Major > 5)
            {
                this.graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit;
                this.graphics.SmoothingMode     = SmoothingMode.HighQuality;
            }
        }
Esempio n. 28
0
        public SensorGadget(IComputer computer, PersistentSettings settings,
                            UnitManager unitManager)
        {
            this.unitManager          = unitManager;
            this.settings             = settings;
            computer.HardwareAdded   += new HardwareEventHandler(HardwareAdded);
            computer.HardwareRemoved += new HardwareEventHandler(HardwareRemoved);

            this.darkWhite = new SolidBrush(Color.FromArgb(0xF0, 0xF0, 0xF0));

            this.stringFormat             = new StringFormat();
            this.stringFormat.FormatFlags = StringFormatFlags.NoWrap;

            this.trimStringFormat             = new StringFormat();
            this.trimStringFormat.Trimming    = StringTrimming.EllipsisCharacter;
            this.trimStringFormat.FormatFlags = StringFormatFlags.NoWrap;

            this.alignRightStringFormat             = new StringFormat();
            this.alignRightStringFormat.Alignment   = StringAlignment.Far;
            this.alignRightStringFormat.FormatFlags = StringFormatFlags.NoWrap;

            if (File.Exists("gadget_background.png"))
            {
                try {
                    Image newBack = new Bitmap("gadget_background.png");
                    back.Dispose();
                    back = newBack;
                } catch { }
            }

            if (File.Exists("gadget_image.png"))
            {
                try {
                    image = new Bitmap("gadget_image.png");
                } catch {}
            }

            if (File.Exists("gadget_foreground.png"))
            {
                try {
                    fore = new Bitmap("gadget_foreground.png");
                } catch { }
            }

            if (File.Exists("gadget_bar_background.png"))
            {
                try {
                    Image newBarBack = new Bitmap("gadget_bar_background.png");
                    barBack.Dispose();
                    barBack = newBarBack;
                } catch { }
            }

            if (File.Exists("gadget_bar_foreground.png"))
            {
                try {
                    Image newBarColor = new Bitmap("gadget_bar_foreground.png");
                    barFore.Dispose();
                    barFore = newBarColor;
                } catch { }
            }

            this.Location = new Point(
                settings.GetValue("sensorGadget.Location.X", 100),
                settings.GetValue("sensorGadget.Location.Y", 100));
            LocationChanged += delegate(object sender, EventArgs e) {
                settings.SetValue("sensorGadget.Location.X", Location.X);
                settings.SetValue("sensorGadget.Location.Y", Location.Y);
            };

            // get the custom to default dpi ratio
            using (Bitmap b = new Bitmap(1, 1)) {
                scale = b.HorizontalResolution / 96.0f;
            }

            SetFontSize(settings.GetValue("sensorGadget.FontSize", 7.5f));
            Resize(settings.GetValue("sensorGadget.Width", Size.Width));

            ContextMenu contextMenu       = new ContextMenu();
            MenuItem    hardwareNamesItem = new MenuItem("Hardware Names");

            contextMenu.MenuItems.Add(hardwareNamesItem);
            MenuItem fontSizeMenu = new MenuItem("Font Size");

            for (int i = 0; i < 4; i++)
            {
                float  size;
                string name;
                switch (i)
                {
                case 0: size = 6.5f; name = "Small"; break;

                case 1: size = 7.5f; name = "Medium"; break;

                case 2: size = 9f; name = "Large"; break;

                case 3: size = 11f; name = "Very Large"; break;

                default: throw new NotImplementedException();
                }
                MenuItem item = new MenuItem(name);
                item.Checked = fontSize == size;
                item.Click  += delegate(object sender, EventArgs e) {
                    SetFontSize(size);
                    settings.SetValue("sensorGadget.FontSize", size);
                    foreach (MenuItem mi in fontSizeMenu.MenuItems)
                    {
                        mi.Checked = mi == item;
                    }
                };
                fontSizeMenu.MenuItems.Add(item);
            }
            contextMenu.MenuItems.Add(fontSizeMenu);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem lockItem = new MenuItem("Lock Position and Size");

            contextMenu.MenuItems.Add(lockItem);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem alwaysOnTopItem = new MenuItem("Always on Top");

            contextMenu.MenuItems.Add(alwaysOnTopItem);
            MenuItem opacityMenu = new MenuItem("Opacity");

            contextMenu.MenuItems.Add(opacityMenu);
            Opacity = (byte)settings.GetValue("sensorGadget.Opacity", 255);
            for (int i = 0; i < 5; i++)
            {
                MenuItem item = new MenuItem((20 * (i + 1)).ToString() + " %");
                byte     o    = (byte)(51 * (i + 1));
                item.Checked = Opacity == o;
                item.Click  += delegate(object sender, EventArgs e) {
                    Opacity = o;
                    settings.SetValue("sensorGadget.Opacity", Opacity);
                    foreach (MenuItem mi in opacityMenu.MenuItems)
                    {
                        mi.Checked = mi == item;
                    }
                };
                opacityMenu.MenuItems.Add(item);
            }
            this.ContextMenu = contextMenu;

            hardwareNames = new UserOption("sensorGadget.Hardwarenames", true,
                                           hardwareNamesItem, settings);
            hardwareNames.Changed += delegate(object sender, EventArgs e) {
                Resize();
            };

            alwaysOnTop = new UserOption("sensorGadget.AlwaysOnTop", false,
                                         alwaysOnTopItem, settings);
            alwaysOnTop.Changed += delegate(object sender, EventArgs e) {
                this.AlwaysOnTop = alwaysOnTop.Value;
            };
            lockPositionAndSize = new UserOption("sensorGadget.LockPositionAndSize",
                                                 false, lockItem, settings);
            lockPositionAndSize.Changed += delegate(object sender, EventArgs e) {
                this.LockPositionAndSize = lockPositionAndSize.Value;
            };

            HitTest += delegate(object sender, HitTestEventArgs e) {
                if (lockPositionAndSize.Value)
                {
                    return;
                }

                if (e.Location.X < leftBorder)
                {
                    e.HitResult = HitResult.Left;
                    return;
                }
                if (e.Location.X > Size.Width - 1 - rightBorder)
                {
                    e.HitResult = HitResult.Right;
                    return;
                }
            };

            SizeChanged += delegate(object sender, EventArgs e) {
                settings.SetValue("sensorGadget.Width", Size.Width);
                Redraw();
            };

            VisibleChanged += delegate(object sender, EventArgs e) {
                Rectangle bounds       = new Rectangle(Location, Size);
                Screen    screen       = Screen.FromRectangle(bounds);
                Rectangle intersection =
                    Rectangle.Intersect(screen.WorkingArea, bounds);
                if (intersection.Width < Math.Min(16, bounds.Width) ||
                    intersection.Height < Math.Min(16, bounds.Height))
                {
                    Location = new Point(
                        screen.WorkingArea.Width / 2 - bounds.Width / 2,
                        screen.WorkingArea.Height / 2 - bounds.Height / 2);
                }
            };

            MouseDoubleClick += delegate(object obj, MouseEventArgs args) {
                SendHideShowCommand();
            };
        }
        public SensorGadget(IComputer computer, PersistentSettings settings, UnitManager unitManager)
        {
            _unitManager              = unitManager;
            _settings                 = settings;
            computer.HardwareAdded   += HardwareAdded;
            computer.HardwareRemoved += HardwareRemoved;

            _stringFormat = new StringFormat {
                FormatFlags = StringFormatFlags.NoWrap
            };
            _trimStringFormat = new StringFormat {
                Trimming = StringTrimming.EllipsisCharacter, FormatFlags = StringFormatFlags.NoWrap
            };
            _alignRightStringFormat = new StringFormat {
                Alignment = StringAlignment.Far, FormatFlags = StringFormatFlags.NoWrap
            };

            if (File.Exists("gadget_background.png"))
            {
                try
                {
                    Image newBack = new Bitmap("gadget_background.png");
                    _back.Dispose();
                    _back = newBack;
                }
                catch { }
            }

            if (File.Exists("gadget_image.png"))
            {
                try
                {
                    _image = new Bitmap("gadget_image.png");
                }
                catch { }
            }

            if (File.Exists("gadget_foreground.png"))
            {
                try
                {
                    _fore = new Bitmap("gadget_foreground.png");
                }
                catch { }
            }

            if (File.Exists("gadget_bar_background.png"))
            {
                try
                {
                    Image newBarBack = new Bitmap("gadget_bar_background.png");
                    _barBack.Dispose();
                    _barBack = newBarBack;
                }
                catch { }
            }

            if (File.Exists("gadget_bar_foreground.png"))
            {
                try
                {
                    Image newBarColor = new Bitmap("gadget_bar_foreground.png");
                    _barFore.Dispose();
                    _barFore = newBarColor;
                }
                catch { }
            }

            Location         = new Point(settings.GetValue("sensorGadget.Location.X", 100), settings.GetValue("sensorGadget.Location.Y", 100));
            LocationChanged += delegate
            {
                settings.SetValue("sensorGadget.Location.X", Location.X);
                settings.SetValue("sensorGadget.Location.Y", Location.Y);
            };

            // get the custom to default dpi ratio
            using (Bitmap b = new Bitmap(1, 1))
            {
                _scale = b.HorizontalResolution / 96.0f;
            }

            SetFontSize(settings.GetValue("sensorGadget.FontSize", 7.5f));
            Resize(settings.GetValue("sensorGadget.Width", Size.Width));

            ContextMenuStrip  contextMenuStrip  = new ContextMenuStrip();
            ToolStripMenuItem hardwareNamesItem = new ToolStripMenuItem("Hardware Names");

            contextMenuStrip.Items.Add(hardwareNamesItem);
            ToolStripMenuItem fontSizeMenu = new ToolStripMenuItem("Font Size");

            for (int i = 0; i < 4; i++)
            {
                float  size;
                string name;
                switch (i)
                {
                case 0: size = 6.5f; name = "Small"; break;

                case 1: size = 7.5f; name = "Medium"; break;

                case 2: size = 9f; name = "Large"; break;

                case 3: size = 11f; name = "Very Large"; break;

                default: throw new NotImplementedException();
                }

                ToolStripItem item = new ToolStripMenuItem(name)
                {
                    Checked = _fontSize == size
                };
                item.Click += delegate
                {
                    SetFontSize(size);
                    settings.SetValue("sensorGadget.FontSize", size);
                    foreach (ToolStripMenuItem mi in fontSizeMenu.DropDownItems)
                    {
                        mi.Checked = mi == item;
                    }
                };
                fontSizeMenu.DropDownItems.Add(item);
            }
            contextMenuStrip.Items.Add(fontSizeMenu);

            Color fontColor     = settings.GetValue("sensorGadget.FontColor", Color.White);
            int   fontColorArgb = fontColor.ToArgb();

            SetFontColor(fontColor);

            IEnumerable <Color> providedColors = Enum.GetValues(typeof(KnownColor))
                                                 .Cast <KnownColor>()
                                                 .Select(x => Color.FromKnownColor(x))
                                                 .Where(x => !x.IsSystemColor && x.Name.Length < 7);

            ToolStripMenuItem fontColorMenu = new ToolStripMenuItem("Font Color");

            foreach (Color color in providedColors)
            {
                ToolStripItem item = new ToolStripMenuItem(color.Name)
                {
                    Checked = fontColorArgb == color.ToArgb()
                };
                item.Click += delegate
                {
                    SetFontColor(color);
                    settings.SetValue("sensorGadget.FontColor", color);
                    foreach (ToolStripMenuItem mi in fontColorMenu.DropDownItems)
                    {
                        mi.Checked = mi == item;
                    }
                };
                fontColorMenu.DropDownItems.Add(item);
            }
            contextMenuStrip.Items.Add(fontColorMenu);
            contextMenuStrip.Items.Add(new ToolStripSeparator());
            ToolStripMenuItem lockItem = new ToolStripMenuItem("Lock Position and Size");

            contextMenuStrip.Items.Add(lockItem);
            contextMenuStrip.Items.Add(new ToolStripSeparator());
            ToolStripMenuItem alwaysOnTopItem = new ToolStripMenuItem("Always on Top");

            contextMenuStrip.Items.Add(alwaysOnTopItem);
            ToolStripMenuItem opacityMenu = new ToolStripMenuItem("Opacity");

            contextMenuStrip.Items.Add(opacityMenu);
            Opacity = (byte)settings.GetValue("sensorGadget.Opacity", 255);

            for (int i = 0; i < 5; i++)
            {
                ToolStripMenuItem item = new ToolStripMenuItem((20 * (i + 1)).ToString() + " %");
                byte o = (byte)(51 * (i + 1));
                item.Checked = Opacity == o;
                item.Click  += delegate
                {
                    Opacity = o;
                    settings.SetValue("sensorGadget.Opacity", Opacity);
                    foreach (ToolStripMenuItem mi in opacityMenu.DropDownItems)
                    {
                        mi.Checked = mi == item;
                    }
                };
                opacityMenu.DropDownItems.Add(item);
            }
            ContextMenuStrip = contextMenuStrip;

            _hardwareNames          = new UserOption("sensorGadget.Hardwarenames", true, hardwareNamesItem, settings);
            _hardwareNames.Changed += delegate
            {
                Resize();
            };

            UserOption alwaysOnTop = new UserOption("sensorGadget.AlwaysOnTop", false, alwaysOnTopItem, settings);

            alwaysOnTop.Changed += delegate
            {
                AlwaysOnTop = alwaysOnTop.Value;
            };
            UserOption lockPositionAndSize = new UserOption("sensorGadget.LockPositionAndSize", false, lockItem, settings);

            lockPositionAndSize.Changed += delegate
            {
                LockPositionAndSize = lockPositionAndSize.Value;
            };

            HitTest += delegate(object sender, HitTestEventArgs e)
            {
                if (lockPositionAndSize.Value)
                {
                    return;
                }

                if (e.Location.X < LeftBorder)
                {
                    e.HitResult = HitResult.Left;
                    return;
                }
                if (e.Location.X > Size.Width - 1 - RightBorder)
                {
                    e.HitResult = HitResult.Right;
                }
            };

            SizeChanged += delegate
            {
                settings.SetValue("sensorGadget.Width", Size.Width);
                Redraw();
            };

            VisibleChanged += delegate
            {
                Rectangle bounds       = new Rectangle(Location, Size);
                Screen    screen       = Screen.FromRectangle(bounds);
                Rectangle intersection = Rectangle.Intersect(screen.WorkingArea, bounds);
                if (intersection.Width < Math.Min(16, bounds.Width) || intersection.Height < Math.Min(16, bounds.Height))
                {
                    Location = new Point(screen.WorkingArea.Width / 2 - bounds.Width / 2, screen.WorkingArea.Height / 2 - bounds.Height / 2);
                }
            };

            MouseDoubleClick += delegate
            {
                SendHideShowCommand();
            };
        }
Esempio n. 30
0
        public SensorGadget(IComputer computer, PersistentSettings settings,
                            UnitManager unitManager)
        {
            this.unitManager          = unitManager;
            this.settings             = settings;
            computer.HardwareAdded   += new HardwareEventHandler(HardwareAdded);
            computer.HardwareRemoved += new HardwareEventHandler(HardwareRemoved);

            this.darkWhite = new SolidBrush(Color.FromArgb(0xF0, 0xF0, 0xF0));

            this.stringFormat             = new StringFormat();
            this.stringFormat.FormatFlags = StringFormatFlags.NoWrap;

            this.trimStringFormat             = new StringFormat();
            this.trimStringFormat.Trimming    = StringTrimming.EllipsisCharacter;
            this.trimStringFormat.FormatFlags = StringFormatFlags.NoWrap;

            this.alignRightStringFormat             = new StringFormat();
            this.alignRightStringFormat.Alignment   = StringAlignment.Far;
            this.alignRightStringFormat.FormatFlags = StringFormatFlags.NoWrap;

            this.Location = new Point(
                settings.GetValue("sensorGadget.Location.X", 100),
                settings.GetValue("sensorGadget.Location.Y", 100));
            LocationChanged += delegate(object sender, EventArgs e) {
                settings.SetValue("sensorGadget.Location.X", Location.X);
                settings.SetValue("sensorGadget.Location.Y", Location.Y);
            };

            SetFontSize(settings.GetValue("sensorGadget.FontSize", 7.5f));
            Resize(settings.GetValue("sensorGadget.Width", Size.Width));

            ContextMenu contextMenu       = new ContextMenu();
            MenuItem    hardwareNamesItem = new MenuItem("Hardware Names");

            contextMenu.MenuItems.Add(hardwareNamesItem);
            MenuItem fontSizeMenu = new MenuItem("Font Size");

            for (int i = 0; i < 4; i++)
            {
                float  size;
                string name;
                switch (i)
                {
                case 0: size = 6.5f; name = "Small"; break;

                case 1: size = 7.5f; name = "Medium"; break;

                case 2: size = 9f; name = "Large"; break;

                case 3: size = 11f; name = "Very Large"; break;

                default: throw new NotImplementedException();
                }
                MenuItem item = new MenuItem(name);
                item.Checked = fontSize == size;
                item.Click  += delegate(object sender, EventArgs e) {
                    SetFontSize(size);
                    settings.SetValue("sensorGadget.FontSize", size);
                    foreach (MenuItem mi in fontSizeMenu.MenuItems)
                    {
                        mi.Checked = mi == item;
                    }
                };
                fontSizeMenu.MenuItems.Add(item);
            }
            contextMenu.MenuItems.Add(fontSizeMenu);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem lockItem = new MenuItem("Lock Position and Size");

            contextMenu.MenuItems.Add(lockItem);
            contextMenu.MenuItems.Add(new MenuItem("-"));
            MenuItem alwaysOnTopItem = new MenuItem("Always on Top");

            contextMenu.MenuItems.Add(alwaysOnTopItem);
            MenuItem opacityMenu = new MenuItem("Opacity");

            contextMenu.MenuItems.Add(opacityMenu);
            Opacity = (byte)settings.GetValue("sensorGadget.Opacity", 255);
            for (int i = 0; i < 5; i++)
            {
                MenuItem item = new MenuItem((20 * (i + 1)).ToString() + " %");
                byte     o    = (byte)(51 * (i + 1));
                item.Checked = Opacity == o;
                item.Click  += delegate(object sender, EventArgs e) {
                    Opacity = o;
                    settings.SetValue("sensorGadget.Opacity", Opacity);
                    foreach (MenuItem mi in opacityMenu.MenuItems)
                    {
                        mi.Checked = mi == item;
                    }
                };
                opacityMenu.MenuItems.Add(item);
            }
            this.ContextMenu = contextMenu;

            hardwareNames = new UserOption("sensorGadget.Hardwarenames", true,
                                           hardwareNamesItem, settings);
            hardwareNames.Changed += delegate(object sender, EventArgs e) {
                Resize();
            };

            alwaysOnTop = new UserOption("sensorGadget.AlwaysOnTop", false,
                                         alwaysOnTopItem, settings);
            alwaysOnTop.Changed += delegate(object sender, EventArgs e) {
                this.AlwaysOnTop = alwaysOnTop.Value;
            };
            lockPositionAndSize = new UserOption("sensorGadget.LockPositionAndSize",
                                                 false, lockItem, settings);
            lockPositionAndSize.Changed += delegate(object sender, EventArgs e) {
                this.LockPositionAndSize = lockPositionAndSize.Value;
            };

            HitTest += delegate(object sender, HitTestEventArgs e) {
                if (lockPositionAndSize.Value)
                {
                    return;
                }

                if (e.Location.X < leftBorder)
                {
                    e.HitResult = HitResult.Left;
                    return;
                }
                if (e.Location.X > Size.Width - 1 - rightBorder)
                {
                    e.HitResult = HitResult.Right;
                    return;
                }
            };

            SizeChanged += delegate(object sender, EventArgs e) {
                settings.SetValue("sensorGadget.Width", Size.Width);
                Redraw();
            };
        }
Esempio n. 31
0
 public UnitManager(PersistentSettings settings)
 {
     this.settings        = settings;
     this.temperatureUnit = (TemperatureUnit)settings.GetValue("TemperatureUnit",
                                                               (int)TemperatureUnit.Celsius);
 }
Esempio n. 32
0
        public MainForm()
        {
            InitializeComponent();

              // check if the OpenHardwareMonitorLib assembly has the correct version
              if (Assembly.GetAssembly(typeof(Computer)).GetName().Version !=
            Assembly.GetExecutingAssembly().GetName().Version) {
            MessageBox.Show(
              "The version of the file OpenHardwareMonitorLib.dll is incompatible.",
              "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            Environment.Exit(0);
              }

              this.settings = new PersistentSettings();
              this.settings.Load(Path.ChangeExtension(
            Application.ExecutablePath, ".config"));

              this.unitManager = new UnitManager(settings);

              // make sure the buffers used for double buffering are not disposed
              // after each draw call
              BufferedGraphicsManager.Current.MaximumBuffer =
            Screen.PrimaryScreen.Bounds.Size;

              // set the DockStyle here, to avoid conflicts with the MainMenu
              this.splitContainer.Dock = DockStyle.Fill;

              this.Font = SystemFonts.MessageBoxFont;
              treeView.Font = SystemFonts.MessageBoxFont;

              plotPanel = new PlotPanel(settings, unitManager);
              plotPanel.Font = SystemFonts.MessageBoxFont;
              plotPanel.Dock = DockStyle.Fill;

              nodeCheckBox.IsVisibleValueNeeded += nodeCheckBox_IsVisibleValueNeeded;
              nodeTextBoxText.DrawText += nodeTextBoxText_DrawText;
              nodeTextBoxValue.DrawText += nodeTextBoxText_DrawText;
              nodeTextBoxMin.DrawText += nodeTextBoxText_DrawText;
              nodeTextBoxMax.DrawText += nodeTextBoxText_DrawText;
              nodeTextBoxText.EditorShowing += nodeTextBoxText_EditorShowing;

              foreach (TreeColumn column in treeView.Columns)
            column.Width = Math.Max(20, Math.Min(400,
              settings.GetValue("treeView.Columns." + column.Header + ".Width",
              column.Width)));

              treeModel = new TreeModel();
              root = new Node(System.Environment.MachineName);
              root.Image = Utilities.EmbeddedResources.GetImage("computer.png");

              treeModel.Nodes.Add(root);
              treeView.Model = treeModel;

              this.computer = new Computer(settings);

              systemTray = new SystemTray(computer, settings, unitManager);
              systemTray.HideShowCommand += hideShowClick;
              systemTray.ExitCommand += exitClick;

              int p = (int)Environment.OSVersion.Platform;
              if ((p == 4) || (p == 128)) { // Unix
            treeView.RowHeight = Math.Max(treeView.RowHeight, 18);
            splitContainer.BorderStyle = BorderStyle.None;
            splitContainer.Border3DStyle = Border3DStyle.Adjust;
            splitContainer.SplitterWidth = 4;
            treeView.BorderStyle = BorderStyle.Fixed3D;
            plotPanel.BorderStyle = BorderStyle.Fixed3D;
            gadgetMenuItem.Visible = false;
            minCloseMenuItem.Visible = false;
            minTrayMenuItem.Visible = false;
            startMinMenuItem.Visible = false;
              } else { // Windows
            treeView.RowHeight = Math.Max(treeView.Font.Height + 1, 18);

            gadget = new SensorGadget(computer, settings, unitManager);
            gadget.HideShowCommand += hideShowClick;

            wmiProvider = new WmiProvider(computer);
              }

              logger = new Logger(computer);

              plotColorPalette = new Color[13];
              plotColorPalette[0] = Color.Blue;
              plotColorPalette[1] = Color.OrangeRed;
              plotColorPalette[2] = Color.Green;
              plotColorPalette[3] = Color.LightSeaGreen;
              plotColorPalette[4] = Color.Goldenrod;
              plotColorPalette[5] = Color.DarkViolet;
              plotColorPalette[6] = Color.YellowGreen;
              plotColorPalette[7] = Color.SaddleBrown;
              plotColorPalette[8] = Color.RoyalBlue;
              plotColorPalette[9] = Color.DeepPink;
              plotColorPalette[10] = Color.MediumSeaGreen;
              plotColorPalette[11] = Color.Olive;
              plotColorPalette[12] = Color.Firebrick;

              computer.HardwareAdded += new HardwareEventHandler(HardwareAdded);
              computer.HardwareRemoved += new HardwareEventHandler(HardwareRemoved);

              computer.Open();

              timer.Enabled = true;

              showHiddenSensors = new UserOption("hiddenMenuItem", false,
            hiddenMenuItem, settings);
              showHiddenSensors.Changed += delegate(object sender, EventArgs e) {
            treeModel.ForceVisible = showHiddenSensors.Value;
              };

              showValue = new UserOption("valueMenuItem", true, valueMenuItem,
            settings);
              showValue.Changed += delegate(object sender, EventArgs e) {
            treeView.Columns[1].IsVisible = showValue.Value;
              };

              showMin = new UserOption("minMenuItem", false, minMenuItem, settings);
              showMin.Changed += delegate(object sender, EventArgs e) {
            treeView.Columns[2].IsVisible = showMin.Value;
              };

              showMax = new UserOption("maxMenuItem", true, maxMenuItem, settings);
              showMax.Changed += delegate(object sender, EventArgs e) {
            treeView.Columns[3].IsVisible = showMax.Value;
              };

              startMinimized = new UserOption("startMinMenuItem", false,
            startMinMenuItem, settings);

              minimizeToTray = new UserOption("minTrayMenuItem", true,
            minTrayMenuItem, settings);
              minimizeToTray.Changed += delegate(object sender, EventArgs e) {
            systemTray.IsMainIconEnabled = minimizeToTray.Value;
              };

              minimizeOnClose = new UserOption("minCloseMenuItem", false,
            minCloseMenuItem, settings);

              autoStart = new UserOption(null, startupManager.Startup,
            startupMenuItem, settings);
              autoStart.Changed += delegate(object sender, EventArgs e) {
            try {
              startupManager.Startup = autoStart.Value;
            } catch (InvalidOperationException) {
              MessageBox.Show("Updating the auto-startup option failed.", "Error",
            MessageBoxButtons.OK, MessageBoxIcon.Error);
              autoStart.Value = startupManager.Startup;
            }
              };

              readMainboardSensors = new UserOption("mainboardMenuItem", true,
            mainboardMenuItem, settings);
              readMainboardSensors.Changed += delegate(object sender, EventArgs e) {
            computer.MainboardEnabled = readMainboardSensors.Value;
              };

              readCpuSensors = new UserOption("cpuMenuItem", true,
            cpuMenuItem, settings);
              readCpuSensors.Changed += delegate(object sender, EventArgs e) {
            computer.CPUEnabled = readCpuSensors.Value;
              };

              readRamSensors = new UserOption("ramMenuItem", true,
            ramMenuItem, settings);
              readRamSensors.Changed += delegate(object sender, EventArgs e) {
            computer.RAMEnabled = readRamSensors.Value;
              };

              readGpuSensors = new UserOption("gpuMenuItem", true,
            gpuMenuItem, settings);
              readGpuSensors.Changed += delegate(object sender, EventArgs e) {
            computer.GPUEnabled = readGpuSensors.Value;
              };

              readFanControllersSensors = new UserOption("fanControllerMenuItem", true,
            fanControllerMenuItem, settings);
              readFanControllersSensors.Changed += delegate(object sender, EventArgs e) {
            computer.FanControllerEnabled = readFanControllersSensors.Value;
              };

              readHddSensors = new UserOption("hddMenuItem", true, hddMenuItem,
            settings);
              readHddSensors.Changed += delegate(object sender, EventArgs e) {
            computer.HDDEnabled = readHddSensors.Value;
              };

              showGadget = new UserOption("gadgetMenuItem", false, gadgetMenuItem,
            settings);
              showGadget.Changed += delegate(object sender, EventArgs e) {
            if (gadget != null)
              gadget.Visible = showGadget.Value;
              };

              celsiusMenuItem.Checked =
            unitManager.TemperatureUnit == TemperatureUnit.Celsius;
              fahrenheitMenuItem.Checked = !celsiusMenuItem.Checked;

              server = new HttpServer(root, this.settings.GetValue("listenerPort", 8085));
              if (server.PlatformNotSupported) {
            webMenuItemSeparator.Visible = false;
            webMenuItem.Visible = false;
              }

              runWebServer = new UserOption("runWebServerMenuItem", false,
            runWebServerMenuItem, settings);
              runWebServer.Changed += delegate(object sender, EventArgs e) {
            if (runWebServer.Value)
              server.StartHTTPListener();
            else
              server.StopHTTPListener();
              };

              logSensors = new UserOption("logSensorsMenuItem", false, logSensorsMenuItem,
            settings);

              loggingInterval = new UserRadioGroup("loggingInterval", 0,
            new[] { log1sMenuItem, log2sMenuItem, log5sMenuItem, log10sMenuItem,
            log30sMenuItem, log1minMenuItem, log2minMenuItem, log5minMenuItem,
            log10minMenuItem, log30minMenuItem, log1hMenuItem, log2hMenuItem,
            log6hMenuItem},
            settings);
              loggingInterval.Changed += (sender, e) => {
            switch (loggingInterval.Value) {
              case 0: logger.LoggingInterval = new TimeSpan(0, 0, 1); break;
              case 1: logger.LoggingInterval = new TimeSpan(0, 0, 2); break;
              case 2: logger.LoggingInterval = new TimeSpan(0, 0, 5); break;
              case 3: logger.LoggingInterval = new TimeSpan(0, 0, 10); break;
              case 4: logger.LoggingInterval = new TimeSpan(0, 0, 30); break;
              case 5: logger.LoggingInterval = new TimeSpan(0, 1, 0); break;
              case 6: logger.LoggingInterval = new TimeSpan(0, 2, 0); break;
              case 7: logger.LoggingInterval = new TimeSpan(0, 5, 0); break;
              case 8: logger.LoggingInterval = new TimeSpan(0, 10, 0); break;
              case 9: logger.LoggingInterval = new TimeSpan(0, 30, 0); break;
              case 10: logger.LoggingInterval = new TimeSpan(1, 0, 0); break;
              case 11: logger.LoggingInterval = new TimeSpan(2, 0, 0); break;
              case 12: logger.LoggingInterval = new TimeSpan(6, 0, 0); break;
            }
              };

              InitializePlotForm();

              startupMenuItem.Visible = startupManager.IsAvailable;

              if (startMinMenuItem.Checked) {
            if (!minTrayMenuItem.Checked) {
              WindowState = FormWindowState.Minimized;
              Show();
            }
              } else {
            Show();
              }

              // Create a handle, otherwise calling Close() does not fire FormClosed
              IntPtr handle = Handle;

              // Make sure the settings are saved when the user logs off
              Microsoft.Win32.SystemEvents.SessionEnded += delegate {
            computer.Close();
            SaveConfiguration();
            if (runWebServer.Value)
              server.Quit();
              };
        }
Esempio n. 33
0
        public MainForm()
        {
            InitializeComponent();

            this.settings = new PersistentSettings();
            this.settings.Load(Path.ChangeExtension(Application.ExecutablePath, ".config"));

            // make sure the buffers used for double buffering are not disposed
            // after each draw call
            BufferedGraphicsManager.Current.MaximumBuffer = Screen.PrimaryScreen.Bounds.Size;

            // set the DockStyle here, to avoid conflicts with the MainMenu
            this.splitContainer.Dock = DockStyle.Fill;

            this.Font = SystemFonts.MessageBoxFont;
            treeView.Font = SystemFonts.MessageBoxFont;

            nodeTextBoxText.DrawText += nodeTextBoxText_DrawText;
            nodeTextBoxACValue.DrawText += nodeTextBoxText_DrawText;
            nodeTextBoxDCValue.DrawText += nodeTextBoxText_DrawText;
            nodeTextBoxUnit.DrawText += nodeTextBoxText_DrawText;
            nodeTextBoxText.EditorShowing += nodeTextBoxText_EditorShowing;

            foreach (TreeColumn column in treeView.Columns)
            {
                column.Width = Math.Max(20, Math.Min(400,
                    settings.GetValue("treeView.Columns." + column.Header + ".Width",
                    column.Width)));
            }

            treeView.RowHeight = Math.Max(treeView.Font.Height + 1, 18);

            treeModel = new TreeModel();

            showHiddenSettings = new UserOption("hiddenMenuItem", false,
                hiddenMenuItem, settings);
            showHiddenSettings.Changed += delegate(object sender, EventArgs e)
            {
                treeModel.ForceVisible = showHiddenSettings.Value;
            };

            applyChanges = new UserOption("applyMenuItem", false,
                applyMenuItem, settings);

            forcePowerManager = new UserOption("forceMenuItem", false,
                forceMenuItem, settings);

            root = new ComputerNode(System.Environment.MachineName, settings);
            treeModel.Root = root;
            treeView.Model = treeModel;

            nodeTextBoxACValue.IsVisibleValueNeeded += nodeTextBoxAC_IsVisibleValueNeeded;
            nodeComboBoxACValue.IsVisibleValueNeeded += nodeComboBoxAC_IsVisibleValueNeeded;

            nodeComboBoxACValue.DrawText += nodeTextBoxText_DrawText;
            nodeTextBoxACValue.DataPropertyName = "AcValue";
            nodeComboBoxACValue.DataPropertyName = "AcValue";

            nodeTextBoxDCValue.IsVisibleValueNeeded += nodeTextBoxAC_IsVisibleValueNeeded;
            nodeComboBoxDCValue.IsVisibleValueNeeded += nodeComboBoxAC_IsVisibleValueNeeded;

            nodeComboBoxDCValue.DrawText += nodeTextBoxText_DrawText;
            nodeTextBoxDCValue.DataPropertyName = "DcValue";
            nodeComboBoxDCValue.DataPropertyName = "DcValue";

            Show();

            // Create a handle, otherwise calling Close() does not fire FormClosed
            IntPtr handle = Handle;

            // Make sure the settings are saved when the user logs off
            Microsoft.Win32.SystemEvents.SessionEnded += delegate
            {
                SaveConfiguration();
            };
        }
        public SensorNode(ISensor sensor, PersistentSettings settings, UnitManager unitManager)
        {
            Sensor       = sensor;
            _settings    = settings;
            _unitManager = unitManager;

            switch (sensor.SensorType)
            {
            case SensorType.Voltage:
                Format = "{0:F3} V";
                break;

            case SensorType.Current:
                Format = "{0:F3} A";
                break;

            case SensorType.Clock:
                Format = "{0:F1} MHz";
                break;

            case SensorType.Load:
                Format = "{0:F1} %";
                break;

            case SensorType.Temperature:
                Format = "{0:F1} °C";
                break;

            case SensorType.Fan:
                Format = "{0:F0} RPM";
                break;

            case SensorType.Flow:
                Format = "{0:F1} L/h";
                break;

            case SensorType.Control:
                Format = "{0:F1} %";
                break;

            case SensorType.Level:
                Format = "{0:F1} %";
                break;

            case SensorType.Power:
                Format = "{0:F1} W";
                break;

            case SensorType.Data:
                Format = "{0:F1} GB";
                break;

            case SensorType.SmallData:
                Format = "{0:F1} MB";
                break;

            case SensorType.Factor:
                Format = "{0:F3}";
                break;

            case SensorType.Frequency:
                Format = "{0:F1} Hz";
                break;

            case SensorType.Throughput:
                Format = "{0:F1} B/s";
                break;

            case SensorType.TimeSpan:
                Format = "{0:g}";
                break;

            case SensorType.Energy:
                Format = "{0:F0} mWh";
                break;
            }

            bool hidden = settings.GetValue(new Identifier(sensor.Identifier, "hidden").ToString(), sensor.IsDefaultHidden);

            base.IsVisible = !hidden;
            Plot           = settings.GetValue(new Identifier(sensor.Identifier, "plot").ToString(), false);
            string id = new Identifier(sensor.Identifier, "penColor").ToString();

            if (settings.Contains(id))
            {
                PenColor = settings.GetValue(id, Color.Black);
            }
        }
Esempio n. 35
0
        public FanController(byte id, List <ISensor> sensors, PersistentSettings settings)
        {
            this.id       = id;
            this.sensors  = sensors;
            this.settings = settings;

            identifier = new Identifier("FanController", id + "");


            if (!settings.Contains(new Identifier(identifier, "name").ToString()))
            {
                // Create new instsance
                Name  = "FanController " + id;
                value = new ValueString("", sensors);

                // Select the first IControl available
                foreach (ISensor s in sensors)
                {
                    if (s.Control == null)
                    {
                        continue;
                    }
                    else
                    {
                        Controlled = s.Control;
                        break;
                    }
                }
                sourceSensor = sensors[0];
            }
            else
            {
                // Load instance
                name  = settings.GetValue(new Identifier(identifier, "name").ToString(), "FanController " + id);
                value = new ValueString(settings.GetValue(new Identifier(identifier, "valueString").ToString(), "0"), sensors);

                string c = settings.GetValue(new Identifier(identifier, "controlled").ToString(), null);
                foreach (ISensor s in sensors)
                {
                    if (s.Control == null)
                    {
                        continue;
                    }
                    if (s.Control.Identifier.ToString() == c)
                    {
                        controlled = s.Control;
                        break;
                    }
                }
            }

            if (controlled == null)
            {
                throw new Exception("No supported fan control found");
            }

            curve        = new FanControlCurve(new Identifier(identifier, "curve"), settings);
            enabled      = bool.Parse(settings.GetValue(new Identifier(identifier, "enabled").ToString(), "false"));
            hysteresis   = float.Parse(settings.GetValue(new Identifier(identifier, "hysteresis").ToString(), "1").Replace('.', ','));
            sourceSensor = SharedData.AllSensors.GetByIdentifier(settings.GetValue(new Identifier(identifier, "sourceSensor").ToString(), "0"));
            if (sourceSensor == null)
            {
                sourceSensor = sensors[0];
            }
            source     = (InputSource)int.Parse(settings.GetValue(new Identifier(identifier, "inputSource").ToString(), "0"));
            tryRestart = bool.Parse(settings.GetValue(new Identifier(identifier, "tryRestart").ToString(), "true"));
        }
Esempio n. 36
0
        public MainForm()
        {
            InitializeComponent();

            // check if the OpenHardwareMonitorLib assembly has the correct version
            if (Assembly.GetAssembly(typeof(Computer)).GetName().Version !=
                Assembly.GetExecutingAssembly().GetName().Version)
            {
                MessageBox.Show(
                    "The version of the file OpenHardwareMonitorLib.dll is incompatible.",
                    "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Environment.Exit(0);
            }

            this.settings = new PersistentSettings();
            this.settings.Load(Path.ChangeExtension(
                                   Application.ExecutablePath, ".config"));

            this.unitManager = new UnitManager(settings);

            // make sure the buffers used for double buffering are not disposed
            // after each draw call
            BufferedGraphicsManager.Current.MaximumBuffer =
                Screen.PrimaryScreen.Bounds.Size;

            // set the DockStyle here, to avoid conflicts with the MainMenu
            this.splitContainer.Dock = DockStyle.Fill;

            this.Font     = SystemFonts.MessageBoxFont;
            treeView.Font = SystemFonts.MessageBoxFont;

            // Set the bounds immediately, so that our child components can be
            // properly placed.
            this.Bounds = new Rectangle {
                X      = settings.GetValue("mainForm.Location.X", Location.X),
                Y      = settings.GetValue("mainForm.Location.Y", Location.Y),
                Width  = settings.GetValue("mainForm.Width", 470),
                Height = settings.GetValue("mainForm.Height", 640)
            };

            plotPanel      = new PlotPanel(settings, unitManager);
            plotPanel.Font = SystemFonts.MessageBoxFont;
            plotPanel.Dock = DockStyle.Fill;

            nodeCheckBox.IsVisibleValueNeeded += nodeCheckBox_IsVisibleValueNeeded;
            nodeTextBoxText.DrawText          += nodeTextBoxText_DrawText;
            nodeTextBoxValue.DrawText         += nodeTextBoxText_DrawText;
            nodeTextBoxMin.DrawText           += nodeTextBoxText_DrawText;
            nodeTextBoxMax.DrawText           += nodeTextBoxText_DrawText;
            nodeTextBoxText.EditorShowing     += nodeTextBoxText_EditorShowing;

            foreach (TreeColumn column in treeView.Columns)
            {
                column.Width = Math.Max(20, Math.Min(400,
                                                     settings.GetValue("treeView.Columns." + column.Header + ".Width",
                                                                       column.Width)));
            }

            treeModel  = new TreeModel();
            root       = new Node(System.Environment.MachineName);
            root.Image = Utilities.EmbeddedResources.GetImage("computer.png");

            treeModel.Nodes.Add(root);
            treeView.Model = treeModel;

            this.computer = new Computer(settings);

            systemTray = new SystemTray(computer, settings, unitManager);
            systemTray.HideShowCommand += hideShowClick;
            systemTray.ExitCommand     += exitClick;

            int p = (int)Environment.OSVersion.Platform;

            if ((p == 4) || (p == 128)) // Unix
            {
                treeView.RowHeight           = Math.Max(treeView.RowHeight, 18);
                splitContainer.BorderStyle   = BorderStyle.None;
                splitContainer.Border3DStyle = Border3DStyle.Adjust;
                splitContainer.SplitterWidth = 4;
                treeView.BorderStyle         = BorderStyle.Fixed3D;
                plotPanel.BorderStyle        = BorderStyle.Fixed3D;
                gadgetMenuItem.Visible       = false;
                minCloseMenuItem.Visible     = false;
                minTrayMenuItem.Visible      = false;
                startMinMenuItem.Visible     = false;
            }
            else // Windows
            {
                treeView.RowHeight = Math.Max(treeView.Font.Height + 1, 18);

                gadget = new SensorGadget(computer, settings, unitManager);
                gadget.HideShowCommand += hideShowClick;

                wmiProvider = new WmiProvider(computer);
            }

            logger = new Logger(computer);

            plotColorPalette     = new Color[13];
            plotColorPalette[0]  = Color.Blue;
            plotColorPalette[1]  = Color.OrangeRed;
            plotColorPalette[2]  = Color.Green;
            plotColorPalette[3]  = Color.LightSeaGreen;
            plotColorPalette[4]  = Color.Goldenrod;
            plotColorPalette[5]  = Color.DarkViolet;
            plotColorPalette[6]  = Color.YellowGreen;
            plotColorPalette[7]  = Color.SaddleBrown;
            plotColorPalette[8]  = Color.RoyalBlue;
            plotColorPalette[9]  = Color.DeepPink;
            plotColorPalette[10] = Color.MediumSeaGreen;
            plotColorPalette[11] = Color.Olive;
            plotColorPalette[12] = Color.Firebrick;

            computer.HardwareAdded   += new HardwareEventHandler(HardwareAdded);
            computer.HardwareRemoved += new HardwareEventHandler(HardwareRemoved);

            computer.Open();

            timer.Enabled = true;

            showHiddenSensors = new UserOption("hiddenMenuItem", false,
                                               hiddenMenuItem, settings);
            showHiddenSensors.Changed += delegate(object sender, EventArgs e) {
                treeModel.ForceVisible = showHiddenSensors.Value;
            };

            showValue = new UserOption("valueMenuItem", true, valueMenuItem,
                                       settings);
            showValue.Changed += delegate(object sender, EventArgs e) {
                treeView.Columns[1].IsVisible = showValue.Value;
            };

            showMin          = new UserOption("minMenuItem", false, minMenuItem, settings);
            showMin.Changed += delegate(object sender, EventArgs e) {
                treeView.Columns[2].IsVisible = showMin.Value;
            };

            showMax          = new UserOption("maxMenuItem", true, maxMenuItem, settings);
            showMax.Changed += delegate(object sender, EventArgs e) {
                treeView.Columns[3].IsVisible = showMax.Value;
            };

            startMinimized = new UserOption("startMinMenuItem", false,
                                            startMinMenuItem, settings);

            minimizeToTray = new UserOption("minTrayMenuItem", true,
                                            minTrayMenuItem, settings);
            minimizeToTray.Changed += delegate(object sender, EventArgs e) {
                systemTray.IsMainIconEnabled = minimizeToTray.Value;
            };

            minimizeOnClose = new UserOption("minCloseMenuItem", false,
                                             minCloseMenuItem, settings);

            autoStart = new UserOption(null, startupManager.Startup,
                                       startupMenuItem, settings);
            autoStart.Changed += delegate(object sender, EventArgs e) {
                try {
                    startupManager.Startup = autoStart.Value;
                } catch (InvalidOperationException) {
                    MessageBox.Show("Updating the auto-startup option failed.", "Error",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    autoStart.Value = startupManager.Startup;
                }
            };

            readMainboardSensors = new UserOption("mainboardMenuItem", true,
                                                  mainboardMenuItem, settings);
            readMainboardSensors.Changed += delegate(object sender, EventArgs e) {
                computer.MainboardEnabled = readMainboardSensors.Value;
            };

            readCpuSensors = new UserOption("cpuMenuItem", true,
                                            cpuMenuItem, settings);
            readCpuSensors.Changed += delegate(object sender, EventArgs e) {
                computer.CPUEnabled = readCpuSensors.Value;
            };

            readRamSensors = new UserOption("ramMenuItem", true,
                                            ramMenuItem, settings);
            readRamSensors.Changed += delegate(object sender, EventArgs e) {
                computer.RAMEnabled = readRamSensors.Value;
            };

            readGpuSensors = new UserOption("gpuMenuItem", true,
                                            gpuMenuItem, settings);
            readGpuSensors.Changed += delegate(object sender, EventArgs e) {
                computer.GPUEnabled = readGpuSensors.Value;
            };

            readFanControllersSensors = new UserOption("fanControllerMenuItem", true,
                                                       fanControllerMenuItem, settings);
            readFanControllersSensors.Changed += delegate(object sender, EventArgs e) {
                computer.FanControllerEnabled = readFanControllersSensors.Value;
            };

            readHddSensors = new UserOption("hddMenuItem", true, hddMenuItem,
                                            settings);
            readHddSensors.Changed += delegate(object sender, EventArgs e) {
                computer.HDDEnabled = readHddSensors.Value;
            };

            readNicSensors = new UserOption("nicMenuItem", true, nicMenuItem,
                                            settings);
            readNicSensors.Changed += delegate(object sender, EventArgs e) {
                computer.NICEnabled = readNicSensors.Value;
            };

            showGadget = new UserOption("gadgetMenuItem", false, gadgetMenuItem,
                                        settings);
            showGadget.Changed += delegate(object sender, EventArgs e) {
                if (gadget != null)
                {
                    gadget.Visible = showGadget.Value;
                }
            };

            celsiusMenuItem.Checked =
                unitManager.TemperatureUnit == TemperatureUnit.Celsius;
            fahrenheitMenuItem.Checked = !celsiusMenuItem.Checked;

            server = new HttpServer(root, this.settings.GetValue("listenerPort", 8085));
            if (server.PlatformNotSupported)
            {
                webMenuItemSeparator.Visible = false;
                webMenuItem.Visible          = false;
            }

            runWebServer = new UserOption("runWebServerMenuItem", false,
                                          runWebServerMenuItem, settings);
            runWebServer.Changed += delegate(object sender, EventArgs e) {
                if (runWebServer.Value)
                {
                    server.StartHTTPListener();
                }
                else
                {
                    server.StopHTTPListener();
                }
            };

            logSensors = new UserOption("logSensorsMenuItem", false, logSensorsMenuItem,
                                        settings);

            loggingInterval = new UserRadioGroup("loggingInterval", 0,
                                                 new[] { log1sMenuItem, log2sMenuItem, log5sMenuItem, log10sMenuItem,
                                                         log30sMenuItem, log1minMenuItem, log2minMenuItem, log5minMenuItem,
                                                         log10minMenuItem, log30minMenuItem, log1hMenuItem, log2hMenuItem,
                                                         log6hMenuItem },
                                                 settings);
            loggingInterval.Changed += (sender, e) => {
                switch (loggingInterval.Value)
                {
                case 0: logger.LoggingInterval = new TimeSpan(0, 0, 1); break;

                case 1: logger.LoggingInterval = new TimeSpan(0, 0, 2); break;

                case 2: logger.LoggingInterval = new TimeSpan(0, 0, 5); break;

                case 3: logger.LoggingInterval = new TimeSpan(0, 0, 10); break;

                case 4: logger.LoggingInterval = new TimeSpan(0, 0, 30); break;

                case 5: logger.LoggingInterval = new TimeSpan(0, 1, 0); break;

                case 6: logger.LoggingInterval = new TimeSpan(0, 2, 0); break;

                case 7: logger.LoggingInterval = new TimeSpan(0, 5, 0); break;

                case 8: logger.LoggingInterval = new TimeSpan(0, 10, 0); break;

                case 9: logger.LoggingInterval = new TimeSpan(0, 30, 0); break;

                case 10: logger.LoggingInterval = new TimeSpan(1, 0, 0); break;

                case 11: logger.LoggingInterval = new TimeSpan(2, 0, 0); break;

                case 12: logger.LoggingInterval = new TimeSpan(6, 0, 0); break;
                }
            };

            sensorValuesTimeWindow = new UserRadioGroup("sensorValuesTimeWindow", 10,
                                                        new[] { timeWindow30sMenuItem, timeWindow1minMenuItem, timeWindow2minMenuItem,
                                                                timeWindow5minMenuItem, timeWindow10minMenuItem, timeWindow30minMenuItem,
                                                                timeWindow1hMenuItem, timeWindow2hMenuItem, timeWindow6hMenuItem,
                                                                timeWindow12hMenuItem, timeWindow24hMenuItem },
                                                        settings);
            sensorValuesTimeWindow.Changed += (sender, e) => {
                TimeSpan timeWindow = TimeSpan.Zero;
                switch (sensorValuesTimeWindow.Value)
                {
                case 0: timeWindow = new TimeSpan(0, 0, 30); break;

                case 1: timeWindow = new TimeSpan(0, 1, 0); break;

                case 2: timeWindow = new TimeSpan(0, 2, 0); break;

                case 3: timeWindow = new TimeSpan(0, 5, 0); break;

                case 4: timeWindow = new TimeSpan(0, 10, 0); break;

                case 5: timeWindow = new TimeSpan(0, 30, 0); break;

                case 6: timeWindow = new TimeSpan(1, 0, 0); break;

                case 7: timeWindow = new TimeSpan(2, 0, 0); break;

                case 8: timeWindow = new TimeSpan(6, 0, 0); break;

                case 9: timeWindow = new TimeSpan(12, 0, 0); break;

                case 10: timeWindow = new TimeSpan(24, 0, 0); break;
                }

                computer.Accept(new SensorVisitor(delegate(ISensor sensor) {
                    sensor.ValuesTimeWindow = timeWindow;
                }));
            };

            InitializePlotForm();
            InitializeSplitter();

            startupMenuItem.Visible = startupManager.IsAvailable;

            if (startMinMenuItem.Checked)
            {
                if (!minTrayMenuItem.Checked)
                {
                    WindowState = FormWindowState.Minimized;
                    Show();
                }
            }
            else
            {
                Show();
            }

            // Create a handle, otherwise calling Close() does not fire FormClosed
            IntPtr handle = Handle;

            // Make sure the settings are saved when the user logs off
            Microsoft.Win32.SystemEvents.SessionEnded += delegate {
                computer.Close();
                SaveConfiguration();
                if (runWebServer.Value)
                {
                    server.Quit();
                }
            };
        }
Esempio n. 37
0
        public MainForm()
        {
            InitializeComponent();

            this.settings = new PersistentSettings();
            this.settings.Load(Path.ChangeExtension(
                                   Application.ExecutablePath, ".config"));

            this.unitManager = new UnitManager(settings);

            // set the DockStyle here, to avoid conflicts with the MainMenu
            this.splitContainer.Dock = DockStyle.Fill;

            this.Font      = SystemFonts.MessageBoxFont;
            treeView.Font  = SystemFonts.MessageBoxFont;
            plotPanel.Font = SystemFonts.MessageBoxFont;

            nodeCheckBox.IsVisibleValueNeeded += nodeCheckBox_IsVisibleValueNeeded;
            nodeCheckBox.CheckStateChanged    += UpdatePlotSelection;
            nodeTextBoxText.DrawText          += nodeTextBoxText_DrawText;
            nodeTextBoxValue.DrawText         += nodeTextBoxText_DrawText;
            nodeTextBoxMin.DrawText           += nodeTextBoxText_DrawText;
            nodeTextBoxMax.DrawText           += nodeTextBoxText_DrawText;
            nodeTextBoxText.EditorShowing     += nodeTextBoxText_EditorShowing;

            foreach (TreeColumn column in treeView.Columns)
            {
                column.Width = Math.Max(20, Math.Min(400,
                                                     settings.GetValue("treeView.Columns." + column.Header + ".Width",
                                                                       column.Width)));
            }

            treeModel  = new TreeModel();
            root       = new Node(System.Environment.MachineName);
            root.Image = Utilities.EmbeddedResources.GetImage("computer.png");

            treeModel.Nodes.Add(root);
            treeView.Model = treeModel;

            this.computer = new Computer(settings);

            systemTray = new SystemTray(computer, settings);
            systemTray.HideShowCommand += hideShowClick;
            systemTray.ExitCommand     += exitClick;

            int p = (int)Environment.OSVersion.Platform;

            if ((p == 4) || (p == 128)) // Unix
            {
                treeView.RowHeight           = Math.Max(treeView.RowHeight, 17);
                splitContainer.BorderStyle   = BorderStyle.None;
                splitContainer.Border3DStyle = Border3DStyle.Adjust;
                splitContainer.SplitterWidth = 4;
                treeView.BorderStyle         = BorderStyle.Fixed3D;
                plotPanel.BorderStyle        = BorderStyle.Fixed3D;
                gadgetMenuItem.Visible       = false;
                minCloseMenuItem.Visible     = false;
                minTrayMenuItem.Visible      = false;
                startMinMenuItem.Visible     = false;
            }
            else // Windows
            {
                treeView.RowHeight = Math.Max(treeView.Font.Height + 1, 17);

                gadget = new SensorGadget(computer, settings, unitManager);
                gadget.HideShowCommand += hideShowClick;

                wmiProvider = new WmiProvider(computer);
            }

            computer.HardwareAdded   += new HardwareEventHandler(HardwareAdded);
            computer.HardwareRemoved += new HardwareEventHandler(HardwareRemoved);

            computer.Open();

            timer.Enabled = true;

            plotColorPalette     = new Color[13];
            plotColorPalette[0]  = Color.Blue;
            plotColorPalette[1]  = Color.OrangeRed;
            plotColorPalette[2]  = Color.Green;
            plotColorPalette[3]  = Color.LightSeaGreen;
            plotColorPalette[4]  = Color.Goldenrod;
            plotColorPalette[5]  = Color.DarkViolet;
            plotColorPalette[6]  = Color.YellowGreen;
            plotColorPalette[7]  = Color.SaddleBrown;
            plotColorPalette[8]  = Color.RoyalBlue;
            plotColorPalette[9]  = Color.DeepPink;
            plotColorPalette[10] = Color.MediumSeaGreen;
            plotColorPalette[11] = Color.Olive;
            plotColorPalette[12] = Color.Firebrick;

            showHiddenSensors = new UserOption("hiddenMenuItem", false,
                                               hiddenMenuItem, settings);
            showHiddenSensors.Changed += delegate(object sender, EventArgs e) {
                treeModel.ForceVisible = showHiddenSensors.Value;
            };

            showPlot          = new UserOption("plotMenuItem", false, plotMenuItem, settings);
            showPlot.Changed += delegate(object sender, EventArgs e) {
                splitContainer.Panel2Collapsed = !showPlot.Value;
                treeView.Invalidate();
            };

            showValue = new UserOption("valueMenuItem", true, valueMenuItem,
                                       settings);
            showValue.Changed += delegate(object sender, EventArgs e) {
                treeView.Columns[1].IsVisible = showValue.Value;
            };

            showMin          = new UserOption("minMenuItem", false, minMenuItem, settings);
            showMin.Changed += delegate(object sender, EventArgs e) {
                treeView.Columns[2].IsVisible = showMin.Value;
            };

            showMax          = new UserOption("maxMenuItem", true, maxMenuItem, settings);
            showMax.Changed += delegate(object sender, EventArgs e) {
                treeView.Columns[3].IsVisible = showMax.Value;
            };

            startMinimized = new UserOption("startMinMenuItem", false,
                                            startMinMenuItem, settings);

            minimizeToTray = new UserOption("minTrayMenuItem", true,
                                            minTrayMenuItem, settings);
            minimizeToTray.Changed += delegate(object sender, EventArgs e) {
                systemTray.IsMainIconEnabled = minimizeToTray.Value;
            };

            minimizeOnClose = new UserOption("minCloseMenuItem", false,
                                             minCloseMenuItem, settings);

            autoStart = new UserOption(null, startupManager.Startup,
                                       startupMenuItem, settings);
            autoStart.Changed += delegate(object sender, EventArgs e) {
                try {
                    startupManager.Startup = autoStart.Value;
                } catch (InvalidOperationException) {
                    MessageBox.Show("Updating the auto-startup option failed.", "Error",
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                    autoStart.Value = startupManager.Startup;
                }
            };

            readHddSensors = new UserOption("hddMenuItem", true, hddMenuItem,
                                            settings);
            readHddSensors.Changed += delegate(object sender, EventArgs e) {
                computer.HDDEnabled = readHddSensors.Value;
                UpdatePlotSelection(null, null);
            };

            showGadget = new UserOption("gadgetMenuItem", false, gadgetMenuItem,
                                        settings);
            showGadget.Changed += delegate(object sender, EventArgs e) {
                if (gadget != null)
                {
                    gadget.Visible = showGadget.Value;
                }
            };

            celciusMenuItem.Checked =
                unitManager.TemperatureUnit == TemperatureUnit.Celcius;
            fahrenheitMenuItem.Checked = !celciusMenuItem.Checked;

            startupMenuItem.Visible = startupManager.IsAvailable;

            if (startMinMenuItem.Checked)
            {
                if (!minTrayMenuItem.Checked)
                {
                    WindowState = FormWindowState.Minimized;
                    Show();
                }
            }
            else
            {
                Show();
            }

            // Create a handle, otherwise calling Close() does not fire FormClosed
            IntPtr handle = Handle;

            // Make sure the settings are saved when the user logs off
            Microsoft.Win32.SystemEvents.SessionEnded += delegate {
                SaveConfiguration();
            };
        }