GUI/MainForm.cs
changeset 223 39f73ac8c2f4
parent 214 9ddbb54998ac
child 225 04dbd92d1116
     1.1 --- a/GUI/MainForm.cs	Thu Oct 14 17:30:51 2010 +0000
     1.2 +++ b/GUI/MainForm.cs	Sat Oct 16 13:29:06 2010 +0000
     1.3 @@ -19,7 +19,7 @@
     1.4    Portions created by the Initial Developer are Copyright (C) 2009-2010
     1.5    the Initial Developer. All Rights Reserved.
     1.6  
     1.7 -  Contributor(s):
     1.8 +  Contributor(s): Paul Werelds
     1.9  
    1.10    Alternatively, the contents of this file may be used under the terms of
    1.11    either the GNU General Public License Version 2 or later (the "GPL"), or
    1.12 @@ -38,15 +38,13 @@
    1.13  using System;
    1.14  using System.Collections.Generic;
    1.15  using System.ComponentModel;
    1.16 -using System.Configuration;
    1.17  using System.Drawing;
    1.18  using System.IO;
    1.19 -using System.Text;
    1.20  using System.Windows.Forms;
    1.21  using Aga.Controls.Tree;
    1.22  using Aga.Controls.Tree.NodeControls;
    1.23  using OpenHardwareMonitor.Hardware;
    1.24 -using OpenHardwareMonitor.Utilities;
    1.25 +using OpenHardwareMonitor.WMIProvider;
    1.26  
    1.27  namespace OpenHardwareMonitor.GUI {
    1.28    public partial class MainForm : Form {
    1.29 @@ -75,6 +73,9 @@
    1.30      private UserOption autoStart;
    1.31      private UserOption readHddSensors;
    1.32      private UserOption showGadget;
    1.33 +    private UserOption enableWmiProvider;
    1.34 +
    1.35 +    private WmiProvider wmiProvider;
    1.36  
    1.37      public MainForm() {      
    1.38        InitializeComponent();
    1.39 @@ -133,6 +134,10 @@
    1.40  
    1.41        computer.HardwareAdded += new HardwareEventHandler(HardwareAdded);
    1.42        computer.HardwareRemoved += new HardwareEventHandler(HardwareRemoved);
    1.43 +
    1.44 +      if (settings.GetValue("enableWmiProvider", false))
    1.45 +        wmiProvider = new WmiProvider(computer);
    1.46 +
    1.47        computer.Open();
    1.48  
    1.49        timer.Enabled = true;
    1.50 @@ -152,7 +157,8 @@
    1.51        plotColorPalette[11] = Color.Olive;
    1.52        plotColorPalette[12] = Color.Firebrick;
    1.53  
    1.54 -      showHiddenSensors = new UserOption("hiddenMenuItem", false, hiddenMenuItem, settings);
    1.55 +      showHiddenSensors = new UserOption("hiddenMenuItem", false,
    1.56 +        hiddenMenuItem, settings);
    1.57        showHiddenSensors.Changed += delegate(object sender, EventArgs e) {
    1.58          treeModel.ForceVisible = showHiddenSensors.Value;
    1.59        };
    1.60 @@ -163,7 +169,8 @@
    1.61          treeView.Invalidate();
    1.62        };
    1.63  
    1.64 -      showValue = new UserOption("valueMenuItem", true, valueMenuItem, settings);
    1.65 +      showValue = new UserOption("valueMenuItem", true, valueMenuItem,
    1.66 +        settings);
    1.67        showValue.Changed += delegate(object sender, EventArgs e) {
    1.68          treeView.Columns[1].IsVisible = showValue.Value;
    1.69        };
    1.70 @@ -178,16 +185,20 @@
    1.71          treeView.Columns[3].IsVisible = showMax.Value;
    1.72        };
    1.73  
    1.74 -      startMinimized = new UserOption("startMinMenuItem", false, startMinMenuItem, settings);
    1.75 +      startMinimized = new UserOption("startMinMenuItem", false,
    1.76 +        startMinMenuItem, settings);
    1.77  
    1.78 -      minimizeToTray = new UserOption("minTrayMenuItem", true, minTrayMenuItem, settings);
    1.79 +      minimizeToTray = new UserOption("minTrayMenuItem", true,
    1.80 +        minTrayMenuItem, settings);
    1.81        minimizeToTray.Changed += delegate(object sender, EventArgs e) {
    1.82          systemTray.IsMainIconEnabled = minimizeToTray.Value;
    1.83        };
    1.84  
    1.85 -      minimizeOnClose = new UserOption("minCloseMenuItem", false, minCloseMenuItem, settings);
    1.86 +      minimizeOnClose = new UserOption("minCloseMenuItem", false,
    1.87 +        minCloseMenuItem, settings);
    1.88  
    1.89 -      autoStart = new UserOption(null, startupManager.Startup, startupMenuItem, settings);
    1.90 +      autoStart = new UserOption(null, startupManager.Startup,
    1.91 +        startupMenuItem, settings);
    1.92        autoStart.Changed += delegate(object sender, EventArgs e) {
    1.93          try {
    1.94            startupManager.Startup = autoStart.Value;
    1.95 @@ -198,18 +209,31 @@
    1.96          }
    1.97        };
    1.98  
    1.99 -      readHddSensors = new UserOption("hddMenuItem", true, hddMenuItem, settings);
   1.100 +      readHddSensors = new UserOption("hddMenuItem", true, hddMenuItem,
   1.101 +        settings);
   1.102        readHddSensors.Changed += delegate(object sender, EventArgs e) {
   1.103          computer.HDDEnabled = readHddSensors.Value;
   1.104          UpdatePlotSelection(null, null);
   1.105        };
   1.106  
   1.107 -      showGadget = new UserOption("gadgetMenuItem", false, gadgetMenuItem, settings);
   1.108 +      showGadget = new UserOption("gadgetMenuItem", false, gadgetMenuItem,
   1.109 +        settings);
   1.110        showGadget.Changed += delegate(object sender, EventArgs e) {
   1.111          if (gadget != null) 
   1.112            gadget.Visible = showGadget.Value;
   1.113        };
   1.114  
   1.115 +      enableWmiProvider = new UserOption("enableWmiProvider", false,
   1.116 +        wmiMenuItem, settings);
   1.117 +      enableWmiProvider.Changed += delegate {
   1.118 +        if (enableWmiProvider.Value && wmiProvider == null)
   1.119 +          wmiProvider = new WmiProvider(computer);
   1.120 +        else if (!enableWmiProvider.Value && wmiProvider != null) {
   1.121 +          wmiProvider.Dispose();
   1.122 +          wmiProvider = null;
   1.123 +        }
   1.124 +      };
   1.125 +
   1.126        celciusMenuItem.Checked = 
   1.127          unitManager.TemperatureUnit == TemperatureUnit.Celcius;
   1.128        fahrenheitMenuItem.Checked = !celciusMenuItem.Checked;
   1.129 @@ -229,10 +253,9 @@
   1.130        IntPtr handle = Handle;
   1.131  
   1.132        // Make sure the settings are saved when the user logs off
   1.133 -      Microsoft.Win32.SystemEvents.SessionEnded +=
   1.134 -        delegate(object sender, Microsoft.Win32.SessionEndedEventArgs e) {
   1.135 -          SaveConfiguration();
   1.136 -        };  
   1.137 +      Microsoft.Win32.SystemEvents.SessionEnded += delegate {
   1.138 +        SaveConfiguration();
   1.139 +      };  
   1.140      }
   1.141      
   1.142      private void SubHardwareAdded(IHardware hardware, Node node) {
   1.143 @@ -297,7 +320,8 @@
   1.144        plotPanel.SetSensors(selected, colors);
   1.145      }
   1.146  
   1.147 -    private void nodeTextBoxText_EditorShowing(object sender, CancelEventArgs e) 
   1.148 +    private void nodeTextBoxText_EditorShowing(object sender,
   1.149 +      CancelEventArgs e) 
   1.150      {
   1.151        e.Cancel = !(treeView.CurrentNode != null &&
   1.152          treeView.CurrentNode.Tag is SensorNode);
   1.153 @@ -319,9 +343,12 @@
   1.154        computer.Accept(updateVisitor);
   1.155        treeView.Invalidate();
   1.156        plotPanel.Invalidate();
   1.157 -      systemTray.Redraw(); 
   1.158 +      systemTray.Redraw();
   1.159        if (gadget != null)
   1.160          gadget.Redraw();
   1.161 +
   1.162 +      if (wmiProvider != null)
   1.163 +        wmiProvider.Update();
   1.164      }
   1.165  
   1.166      private void SaveConfiguration() {
   1.167 @@ -355,13 +382,13 @@
   1.168          Height = settings.GetValue("mainForm.Height", 640)
   1.169        };
   1.170  
   1.171 -      Rectangle totalWorkingArea = new Rectangle(int.MaxValue, int.MaxValue,
   1.172 +      Rectangle fullWorkingArea = new Rectangle(int.MaxValue, int.MaxValue,
   1.173          int.MinValue, int.MinValue);
   1.174  
   1.175        foreach (Screen screen in Screen.AllScreens)
   1.176 -        totalWorkingArea = Rectangle.Union(totalWorkingArea, screen.Bounds);
   1.177 +        fullWorkingArea = Rectangle.Union(fullWorkingArea, screen.Bounds);
   1.178  
   1.179 -      Rectangle intersection = Rectangle.Intersect(totalWorkingArea, newBounds);
   1.180 +      Rectangle intersection = Rectangle.Intersect(fullWorkingArea, newBounds);
   1.181        if (intersection.Width < 20 || intersection.Height < 20 ||
   1.182          !settings.Contains("mainForm.Location.X")
   1.183        ) {
   1.184 @@ -394,7 +421,9 @@
   1.185        if (m == null || m.Button != MouseButtons.Right)
   1.186          return;
   1.187  
   1.188 -      NodeControlInfo info = treeView.GetNodeControlInfoAt(new Point(m.X, m.Y));
   1.189 +      NodeControlInfo info = treeView.GetNodeControlInfoAt(
   1.190 +        new Point(m.X, m.Y)
   1.191 +      );
   1.192        treeView.SelectedNode = info.Node;
   1.193        if (info.Node != null) {
   1.194          SensorNode node = info.Node.Tag as SensorNode;