# HG changeset patch
# User moel.mich
# Date 1273876206 0
# Node ID 2b8a8cf92c3a1188560a16b29d262b3febd282ab
# Parent 411b72b73d8f22cffa73ac738fb7517aff2c4f5f
Added a user interface to configure certain sensors as hidden. This fixed Issue 53.
diff -r 411b72b73d8f -r 2b8a8cf92c3a GUI/HardwareNode.cs
--- a/GUI/HardwareNode.cs Sun May 09 16:22:13 2010 +0000
+++ b/GUI/HardwareNode.cs Fri May 14 22:30:06 2010 +0000
@@ -38,7 +38,6 @@
using System;
using System.Collections.Generic;
using System.Drawing;
-using Aga.Controls.Tree;
using OpenHardwareMonitor.Hardware;
namespace OpenHardwareMonitor.GUI {
@@ -71,16 +70,8 @@
get { return hardware; }
}
- public void SetVisible(SensorType sensorType, bool visible) {
- foreach (TypeNode node in typeNodes)
- if (node.SensorType == sensorType) {
- node.IsVisible = visible;
- UpdateNode(node);
- }
- }
-
- private void UpdateNode(TypeNode node) {
- if (node.IsVisible && node.Nodes.Count > 0) {
+ private void UpdateNode(TypeNode node) {
+ if (node.Nodes.Count > 0) {
if (!Nodes.Contains(node)) {
int i = 0;
while (i < Nodes.Count &&
@@ -95,10 +86,16 @@
}
private void SensorRemoved(ISensor sensor) {
- foreach (TypeNode node in typeNodes)
- if (node.SensorType == sensor.SensorType) {
- node.Nodes.Remove(new SensorNode(sensor));
- UpdateNode(node);
+ foreach (TypeNode typeNode in typeNodes)
+ if (typeNode.SensorType == sensor.SensorType) {
+ SensorNode sensorNode = null;
+ foreach (Node node in typeNode.Nodes) {
+ SensorNode n = node as SensorNode;
+ if (n != null && n.Sensor == sensor)
+ sensorNode = n;
+ }
+ typeNode.Nodes.Remove(sensorNode);
+ UpdateNode(typeNode);
}
}
@@ -107,15 +104,16 @@
while (i < node.Nodes.Count &&
((SensorNode)node.Nodes[i]).Sensor.Index < sensor.Index)
i++;
- node.Nodes.Insert(i, new SensorNode(sensor));
+ SensorNode sensorNode = new SensorNode(sensor);
+ node.Nodes.Insert(i, sensorNode);
}
private void SensorAdded(ISensor sensor) {
- foreach (TypeNode node in typeNodes)
- if (node.SensorType == sensor.SensorType) {
- InsertSorted(node, sensor);
- UpdateNode(node);
+ foreach (TypeNode typeNode in typeNodes)
+ if (typeNode.SensorType == sensor.SensorType) {
+ InsertSorted(typeNode, sensor);
+ UpdateNode(typeNode);
}
- }
+ }
}
}
diff -r 411b72b73d8f -r 2b8a8cf92c3a GUI/MainForm.Designer.cs
--- a/GUI/MainForm.Designer.cs Sun May 09 16:22:13 2010 +0000
+++ b/GUI/MainForm.Designer.cs Fri May 14 22:30:06 2010 +0000
@@ -75,25 +75,19 @@
this.nodeTextBoxMin = new Aga.Controls.Tree.NodeControls.NodeTextBox();
this.nodeTextBoxMax = new Aga.Controls.Tree.NodeControls.NodeTextBox();
this.nodeTextBoxLimit = new Aga.Controls.Tree.NodeControls.NodeTextBox();
- this.columnsContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.valueToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.minMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.maxMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.limitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.menuStrip = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.saveReportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.sensorsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.voltMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.clocksMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.tempMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.loadMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.fansMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this.flowsMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.hiddenMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.plotMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
- this.plotMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.columnsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.valueMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.minMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.maxMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.limitMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.startMinMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.minTrayMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -111,7 +105,6 @@
this.sensorContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
this.timer = new System.Windows.Forms.Timer(this.components);
- this.columnsContextMenuStrip.SuspendLayout();
this.menuStrip.SuspendLayout();
this.splitContainer.Panel1.SuspendLayout();
this.splitContainer.Panel2.SuspendLayout();
@@ -239,56 +232,6 @@
this.nodeTextBoxLimit.LeftMargin = 3;
this.nodeTextBoxLimit.ParentColumn = this.limit;
//
- // columnsContextMenuStrip
- //
- this.columnsContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.valueToolStripMenuItem,
- this.minMenuItem,
- this.maxMenuItem,
- this.limitMenuItem});
- this.columnsContextMenuStrip.Name = "columnsContextMenuStrip";
- this.columnsContextMenuStrip.Size = new System.Drawing.Size(104, 92);
- //
- // valueToolStripMenuItem
- //
- this.valueToolStripMenuItem.Checked = true;
- this.valueToolStripMenuItem.CheckOnClick = true;
- this.valueToolStripMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.valueToolStripMenuItem.Name = "valueToolStripMenuItem";
- this.valueToolStripMenuItem.Size = new System.Drawing.Size(103, 22);
- this.valueToolStripMenuItem.Text = "Value";
- this.valueToolStripMenuItem.CheckedChanged += new System.EventHandler(this.valueToolStripMenuItem_CheckedChanged);
- //
- // minMenuItem
- //
- this.minMenuItem.Checked = true;
- this.minMenuItem.CheckOnClick = true;
- this.minMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.minMenuItem.Name = "minMenuItem";
- this.minMenuItem.Size = new System.Drawing.Size(103, 22);
- this.minMenuItem.Text = "Min";
- this.minMenuItem.CheckedChanged += new System.EventHandler(this.minToolStripMenuItem_CheckedChanged);
- //
- // maxMenuItem
- //
- this.maxMenuItem.Checked = true;
- this.maxMenuItem.CheckOnClick = true;
- this.maxMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.maxMenuItem.Name = "maxMenuItem";
- this.maxMenuItem.Size = new System.Drawing.Size(103, 22);
- this.maxMenuItem.Text = "Max";
- this.maxMenuItem.CheckedChanged += new System.EventHandler(this.maxToolStripMenuItem_CheckedChanged);
- //
- // limitMenuItem
- //
- this.limitMenuItem.Checked = true;
- this.limitMenuItem.CheckOnClick = true;
- this.limitMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.limitMenuItem.Name = "limitMenuItem";
- this.limitMenuItem.Size = new System.Drawing.Size(103, 22);
- this.limitMenuItem.Text = "Limit";
- this.limitMenuItem.CheckedChanged += new System.EventHandler(this.limitToolStripMenuItem_CheckedChanged);
- //
// menuStrip
//
this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -329,90 +272,21 @@
// viewToolStripMenuItem
//
this.viewToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.sensorsToolStripMenuItem,
+ this.hiddenMenuItem,
+ this.plotMenuItem,
this.toolStripMenuItem1,
- this.plotMenuItem});
+ this.columnsToolStripMenuItem});
this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
this.viewToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.viewToolStripMenuItem.Text = "View";
//
- // sensorsToolStripMenuItem
+ // hiddenMenuItem
//
- this.sensorsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.voltMenuItem,
- this.clocksMenuItem,
- this.tempMenuItem,
- this.loadMenuItem,
- this.fansMenuItem,
- this.flowsMenuItem});
- this.sensorsToolStripMenuItem.Name = "sensorsToolStripMenuItem";
- this.sensorsToolStripMenuItem.Size = new System.Drawing.Size(114, 22);
- this.sensorsToolStripMenuItem.Text = "Sensors";
- //
- // voltMenuItem
- //
- this.voltMenuItem.Checked = true;
- this.voltMenuItem.CheckOnClick = true;
- this.voltMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.voltMenuItem.Name = "voltMenuItem";
- this.voltMenuItem.Size = new System.Drawing.Size(147, 22);
- this.voltMenuItem.Text = "Voltages";
- this.voltMenuItem.CheckedChanged += new System.EventHandler(this.UpdateSensorTypeChecked);
- //
- // clocksMenuItem
- //
- this.clocksMenuItem.Checked = true;
- this.clocksMenuItem.CheckOnClick = true;
- this.clocksMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.clocksMenuItem.Name = "clocksMenuItem";
- this.clocksMenuItem.Size = new System.Drawing.Size(147, 22);
- this.clocksMenuItem.Text = "Clocks";
- this.clocksMenuItem.CheckedChanged += new System.EventHandler(this.UpdateSensorTypeChecked);
- //
- // tempMenuItem
- //
- this.tempMenuItem.Checked = true;
- this.tempMenuItem.CheckOnClick = true;
- this.tempMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.tempMenuItem.Name = "tempMenuItem";
- this.tempMenuItem.Size = new System.Drawing.Size(147, 22);
- this.tempMenuItem.Text = "Temperatures";
- this.tempMenuItem.CheckedChanged += new System.EventHandler(this.UpdateSensorTypeChecked);
- //
- // loadMenuItem
- //
- this.loadMenuItem.Checked = true;
- this.loadMenuItem.CheckOnClick = true;
- this.loadMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.loadMenuItem.Name = "loadMenuItem";
- this.loadMenuItem.Size = new System.Drawing.Size(147, 22);
- this.loadMenuItem.Text = "Load";
- this.loadMenuItem.CheckedChanged += new System.EventHandler(this.UpdateSensorTypeChecked);
- //
- // fansMenuItem
- //
- this.fansMenuItem.Checked = true;
- this.fansMenuItem.CheckOnClick = true;
- this.fansMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.fansMenuItem.Name = "fansMenuItem";
- this.fansMenuItem.Size = new System.Drawing.Size(147, 22);
- this.fansMenuItem.Text = "Fans";
- this.fansMenuItem.CheckedChanged += new System.EventHandler(this.UpdateSensorTypeChecked);
- //
- // flowsMenuItem
- //
- this.flowsMenuItem.Checked = true;
- this.flowsMenuItem.CheckOnClick = true;
- this.flowsMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
- this.flowsMenuItem.Name = "flowsMenuItem";
- this.flowsMenuItem.Size = new System.Drawing.Size(147, 22);
- this.flowsMenuItem.Text = "Flows";
- this.flowsMenuItem.CheckedChanged += new System.EventHandler(this.UpdateSensorTypeChecked);
- //
- // toolStripMenuItem1
- //
- this.toolStripMenuItem1.Name = "toolStripMenuItem1";
- this.toolStripMenuItem1.Size = new System.Drawing.Size(111, 6);
+ this.hiddenMenuItem.CheckOnClick = true;
+ this.hiddenMenuItem.Name = "hiddenMenuItem";
+ this.hiddenMenuItem.Size = new System.Drawing.Size(188, 22);
+ this.hiddenMenuItem.Text = "Show Hidden Sensors";
+ this.hiddenMenuItem.CheckedChanged += new System.EventHandler(this.hiddenSensorsMenuItem_CheckedChanged);
//
// plotMenuItem
//
@@ -420,10 +294,66 @@
this.plotMenuItem.CheckOnClick = true;
this.plotMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
this.plotMenuItem.Name = "plotMenuItem";
- this.plotMenuItem.Size = new System.Drawing.Size(114, 22);
- this.plotMenuItem.Text = "Plot";
+ this.plotMenuItem.Size = new System.Drawing.Size(188, 22);
+ this.plotMenuItem.Text = "Show Plot";
this.plotMenuItem.CheckedChanged += new System.EventHandler(this.plotToolStripMenuItem_CheckedChanged);
//
+ // toolStripMenuItem1
+ //
+ this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(185, 6);
+ //
+ // columnsToolStripMenuItem
+ //
+ this.columnsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.valueMenuItem,
+ this.minMenuItem,
+ this.maxMenuItem,
+ this.limitMenuItem});
+ this.columnsToolStripMenuItem.Name = "columnsToolStripMenuItem";
+ this.columnsToolStripMenuItem.Size = new System.Drawing.Size(188, 22);
+ this.columnsToolStripMenuItem.Text = "Columns";
+ //
+ // valueMenuItem
+ //
+ this.valueMenuItem.Checked = true;
+ this.valueMenuItem.CheckOnClick = true;
+ this.valueMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.valueMenuItem.Name = "valueMenuItem";
+ this.valueMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.valueMenuItem.Text = "Value";
+ this.valueMenuItem.CheckedChanged += new System.EventHandler(this.valueMenuItem_CheckedChanged);
+ //
+ // minMenuItem
+ //
+ this.minMenuItem.Checked = true;
+ this.minMenuItem.CheckOnClick = true;
+ this.minMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.minMenuItem.Name = "minMenuItem";
+ this.minMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.minMenuItem.Text = "Min";
+ this.minMenuItem.CheckedChanged += new System.EventHandler(this.minMenuItem_CheckedChanged);
+ //
+ // maxMenuItem
+ //
+ this.maxMenuItem.Checked = true;
+ this.maxMenuItem.CheckOnClick = true;
+ this.maxMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.maxMenuItem.Name = "maxMenuItem";
+ this.maxMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.maxMenuItem.Text = "Max";
+ this.maxMenuItem.CheckedChanged += new System.EventHandler(this.maxMenuItem_CheckedChanged);
+ //
+ // limitMenuItem
+ //
+ this.limitMenuItem.Checked = true;
+ this.limitMenuItem.CheckOnClick = true;
+ this.limitMenuItem.CheckState = System.Windows.Forms.CheckState.Checked;
+ this.limitMenuItem.Name = "limitMenuItem";
+ this.limitMenuItem.Size = new System.Drawing.Size(152, 22);
+ this.limitMenuItem.Text = "Limit";
+ this.limitMenuItem.CheckedChanged += new System.EventHandler(this.limitMenuItem_CheckedChanged);
+ //
// optionsToolStripMenuItem
//
this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -578,7 +508,6 @@
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.Text = "Open Hardware Monitor";
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.MainForm_FormClosed);
- this.columnsContextMenuStrip.ResumeLayout(false);
this.menuStrip.ResumeLayout(false);
this.menuStrip.PerformLayout();
this.splitContainer.Panel1.ResumeLayout(false);
@@ -614,21 +543,9 @@
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private Aga.Controls.Tree.TreeColumn limit;
private Aga.Controls.Tree.NodeControls.NodeTextBox nodeTextBoxLimit;
- private System.Windows.Forms.ContextMenuStrip columnsContextMenuStrip;
- private System.Windows.Forms.ToolStripMenuItem minMenuItem;
- private System.Windows.Forms.ToolStripMenuItem maxMenuItem;
- private System.Windows.Forms.ToolStripMenuItem limitMenuItem;
- private System.Windows.Forms.ToolStripMenuItem valueToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem saveReportToolStripMenuItem;
- private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem sensorsToolStripMenuItem;
- private System.Windows.Forms.ToolStripMenuItem clocksMenuItem;
- private System.Windows.Forms.ToolStripMenuItem tempMenuItem;
- private System.Windows.Forms.ToolStripMenuItem fansMenuItem;
- private System.Windows.Forms.ToolStripMenuItem voltMenuItem;
private System.Windows.Forms.ToolStripMenuItem hddMenuItem;
- private System.Windows.Forms.ToolStripMenuItem loadMenuItem;
private System.Windows.Forms.ContextMenuStrip notifyContextMenuStrip;
private System.Windows.Forms.ToolStripMenuItem hideShowToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
@@ -637,10 +554,16 @@
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem3;
private System.Windows.Forms.ContextMenuStrip sensorContextMenuStrip;
private System.Windows.Forms.ToolStripMenuItem startMinMenuItem;
- private System.Windows.Forms.ToolStripMenuItem flowsMenuItem;
private System.Windows.Forms.ToolStripMenuItem startupMenuItem;
private System.Windows.Forms.SaveFileDialog saveFileDialog;
private System.Windows.Forms.Timer timer;
+ private System.Windows.Forms.ToolStripMenuItem hiddenMenuItem;
+ private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem columnsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem valueMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem minMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem maxMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem limitMenuItem;
}
}
diff -r 411b72b73d8f -r 2b8a8cf92c3a GUI/MainForm.cs
--- a/GUI/MainForm.cs Sun May 09 16:22:13 2010 +0000
+++ b/GUI/MainForm.cs Fri May 14 22:30:06 2010 +0000
@@ -60,7 +60,6 @@
private SensorSystemTray sensorSystemTray;
private NotifyIcon notifyIcon;
private StartupManager startupManager = new StartupManager();
- private SensorProperties sensorProperties = new SensorProperties();
private UpdateVisitor updateVisitor = new UpdateVisitor();
public MainForm() {
@@ -119,7 +118,7 @@
timer.Enabled = true;
- plotColorPalette = new Color[14];
+ plotColorPalette = new Color[13];
plotColorPalette[0] = Color.Blue;
plotColorPalette[1] = Color.OrangeRed;
plotColorPalette[2] = Color.Green;
@@ -128,14 +127,16 @@
plotColorPalette[5] = Color.DarkViolet;
plotColorPalette[6] = Color.YellowGreen;
plotColorPalette[7] = Color.SaddleBrown;
- plotColorPalette[8] = Color.Gray;
- plotColorPalette[9] = Color.RoyalBlue;
- plotColorPalette[10] = Color.DeepPink;
- plotColorPalette[11] = Color.MediumSeaGreen;
- plotColorPalette[12] = Color.Olive;
- plotColorPalette[13] = Color.Firebrick;
+ plotColorPalette[8] = Color.RoyalBlue;
+ plotColorPalette[9] = Color.DeepPink;
+ plotColorPalette[10] = Color.MediumSeaGreen;
+ plotColorPalette[11] = Color.Olive;
+ plotColorPalette[12] = Color.Firebrick;
+ hiddenMenuItem.Checked = Config.Get(hiddenMenuItem.Name, false);
plotMenuItem.Checked = Config.Get(plotMenuItem.Name, false);
+
+ valueMenuItem.Checked = Config.Get(valueMenuItem.Name, true);
minMenuItem.Checked = Config.Get(minMenuItem.Name, false);
maxMenuItem.Checked = Config.Get(maxMenuItem.Name, true);
limitMenuItem.Checked = Config.Get(limitMenuItem.Name, false);
@@ -143,14 +144,7 @@
startMinMenuItem.Checked = Config.Get(startMinMenuItem.Name, false);
minTrayMenuItem.Checked = Config.Get(minTrayMenuItem.Name, true);
startupMenuItem.Checked = startupManager.Startup;
- hddMenuItem.Checked = Config.Get(hddMenuItem.Name, true);
-
- voltMenuItem.Checked = Config.Get(voltMenuItem.Name, true);
- clocksMenuItem.Checked = Config.Get(clocksMenuItem.Name, true);
- loadMenuItem.Checked = Config.Get(loadMenuItem.Name, true);
- tempMenuItem.Checked = Config.Get(tempMenuItem.Name, true);
- fansMenuItem.Checked = Config.Get(fansMenuItem.Name, true);
- flowsMenuItem.Checked = Config.Get(flowsMenuItem.Name, true);
+ hddMenuItem.Checked = Config.Get(hddMenuItem.Name, true);
if (startMinMenuItem.Checked) {
if (!minTrayMenuItem.Checked) {
@@ -196,15 +190,18 @@
e.Text = sensorNode.ValueToString(sensorNode.Sensor.Limit);
}
- private void nodeTextBoxText_DrawText(object sender, DrawEventArgs e) {
- if (!plotMenuItem.Checked)
- return;
-
- SensorNode sensorNode = e.Node.Tag as SensorNode;
- if (sensorNode != null) {
+ private void nodeTextBoxText_DrawText(object sender, DrawEventArgs e) {
+ Node node = e.Node.Tag as Node;
+ if (node != null) {
Color color;
- if (sensorPlotColors.TryGetValue(sensorNode.Sensor, out color))
- e.TextColor = color;
+ if (node.IsVisible) {
+ SensorNode sensorNode = node as SensorNode;
+ if (plotMenuItem.Checked && sensorNode != null &&
+ sensorPlotColors.TryGetValue(sensorNode.Sensor, out color))
+ e.TextColor = color;
+ } else {
+ e.TextColor = Color.DarkGray;
+ }
}
}
@@ -250,22 +247,18 @@
}
private void MainForm_FormClosed(object sender, FormClosedEventArgs e) {
-
+
+ Config.Set(hiddenMenuItem.Name, hiddenMenuItem.Checked);
Config.Set(plotMenuItem.Name, plotMenuItem.Checked);
+
+ Config.Set(valueMenuItem.Name, valueMenuItem.Checked);
Config.Set(minMenuItem.Name, minMenuItem.Checked);
Config.Set(maxMenuItem.Name, maxMenuItem.Checked);
Config.Set(limitMenuItem.Name, limitMenuItem.Checked);
Config.Set(startMinMenuItem.Name, startMinMenuItem.Checked);
Config.Set(minTrayMenuItem.Name, minTrayMenuItem.Checked);
- Config.Set(hddMenuItem.Name, hddMenuItem.Checked);
-
- Config.Set(voltMenuItem.Name, voltMenuItem.Checked);
- Config.Set(clocksMenuItem.Name, clocksMenuItem.Checked);
- Config.Set(loadMenuItem.Name, loadMenuItem.Checked);
- Config.Set(tempMenuItem.Name, tempMenuItem.Checked);
- Config.Set(fansMenuItem.Name, fansMenuItem.Checked);
- Config.Set(flowsMenuItem.Name, flowsMenuItem.Checked);
+ Config.Set(hddMenuItem.Name, hddMenuItem.Checked);
if (WindowState != FormWindowState.Minimized) {
Config.Set("mainForm.Location.X", Location.X);
@@ -292,27 +285,6 @@
treeView.Invalidate();
}
- private void valueToolStripMenuItem_CheckedChanged(object sender,
- EventArgs e)
- {
- treeView.Columns[1].IsVisible = valueToolStripMenuItem.Checked;
- }
-
- private void minToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
- {
- treeView.Columns[2].IsVisible = minMenuItem.Checked;
- }
-
- private void maxToolStripMenuItem_CheckedChanged(object sender, EventArgs e)
- {
- treeView.Columns[3].IsVisible = maxMenuItem.Checked;
- }
-
- private void limitToolStripMenuItem_CheckedChanged(object sender,
- EventArgs e) {
- treeView.Columns[4].IsVisible = limitMenuItem.Checked;
- }
-
private void treeView_Click(object sender, EventArgs e) {
MouseEventArgs m = e as MouseEventArgs;
@@ -320,9 +292,7 @@
return;
NodeControlInfo info = treeView.GetNodeControlInfoAt(new Point(m.X, m.Y));
- if (info.Control == null) {
- columnsContextMenuStrip.Show(treeView, m.X, m.Y);
- } else {
+ if (info.Control != null) {
SensorNode node = info.Node.Tag as SensorNode;
if (node != null && node.Sensor != null) {
@@ -334,6 +304,19 @@
};
sensorContextMenuStrip.Items.Add(item);
}
+ if (node.IsVisible) {
+ ToolStripMenuItem item = new ToolStripMenuItem("Hide");
+ item.Click += delegate(object obj, EventArgs args) {
+ node.IsVisible = false;
+ };
+ sensorContextMenuStrip.Items.Add(item);
+ } else {
+ ToolStripMenuItem item = new ToolStripMenuItem("Unhide");
+ item.Click += delegate(object obj, EventArgs args) {
+ node.IsVisible = true;
+ };
+ sensorContextMenuStrip.Items.Add(item);
+ }
if (sensorSystemTray.Contains(node.Sensor)) {
ToolStripMenuItem item = new ToolStripMenuItem("Remove From Tray");
item.Click += delegate(object obj, EventArgs args) {
@@ -365,31 +348,9 @@
EventArgs e)
{
computer.HDDEnabled = hddMenuItem.Checked;
- UpdateSensorTypeChecked(null, null);
UpdatePlotSelection(null, null);
}
- private void UpdateSensorTypeVisible(Node node) {
- HardwareNode hardwareNode = node as HardwareNode;
- if (hardwareNode == null)
- return;
-
- hardwareNode.SetVisible(SensorType.Voltage, voltMenuItem.Checked);
- hardwareNode.SetVisible(SensorType.Clock, clocksMenuItem.Checked);
- hardwareNode.SetVisible(SensorType.Load, loadMenuItem.Checked);
- hardwareNode.SetVisible(SensorType.Temperature, tempMenuItem.Checked);
- hardwareNode.SetVisible(SensorType.Fan, fansMenuItem.Checked);
- hardwareNode.SetVisible(SensorType.Flow, flowsMenuItem.Checked);
-
- foreach (Node n in node.Nodes)
- UpdateSensorTypeVisible(n);
- }
-
- private void UpdateSensorTypeChecked(object sender, EventArgs e) {
- foreach (HardwareNode node in root.Nodes)
- UpdateSensorTypeVisible(node);
- }
-
private void SysTrayHideShow() {
Visible = !Visible;
if (Visible)
@@ -448,5 +409,26 @@
private void minTrayMenuItem_CheckedChanged(object sender, EventArgs e) {
notifyIcon.Visible = minTrayMenuItem.Checked;
}
+
+ private void hiddenSensorsMenuItem_CheckedChanged(object sender,
+ EventArgs e) {
+ treeModel.ForceVisible = hiddenMenuItem.Checked;
+ }
+
+ private void valueMenuItem_CheckedChanged(object sender, EventArgs e) {
+ treeView.Columns[1].IsVisible = valueMenuItem.Checked;
+ }
+
+ private void minMenuItem_CheckedChanged(object sender, EventArgs e) {
+ treeView.Columns[2].IsVisible = minMenuItem.Checked;
+ }
+
+ private void maxMenuItem_CheckedChanged(object sender, EventArgs e) {
+ treeView.Columns[3].IsVisible = maxMenuItem.Checked;
+ }
+
+ private void limitMenuItem_CheckedChanged(object sender, EventArgs e) {
+ treeView.Columns[4].IsVisible = limitMenuItem.Checked;
+ }
}
}
diff -r 411b72b73d8f -r 2b8a8cf92c3a GUI/MainForm.resx
--- a/GUI/MainForm.resx Sun May 09 16:22:13 2010 +0000
+++ b/GUI/MainForm.resx Fri May 14 22:30:06 2010 +0000
@@ -117,9 +117,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 125, 17
-
17, 17
diff -r 411b72b73d8f -r 2b8a8cf92c3a GUI/Node.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GUI/Node.cs Fri May 14 22:30:06 2010 +0000
@@ -0,0 +1,199 @@
+/*
+
+ Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+ The contents of this file are subject to the Mozilla Public License Version
+ 1.1 (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis,
+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ for the specific language governing rights and limitations under the License.
+
+ The Original Code is the Open Hardware Monitor code.
+
+ The Initial Developer of the Original Code is
+ Michael Möller .
+ Portions created by the Initial Developer are Copyright (C) 2009-2010
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+
+ Alternatively, the contents of this file may be used under the terms of
+ either the GNU General Public License Version 2 or later (the "GPL"), or
+ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ in which case the provisions of the GPL or the LGPL are applicable instead
+ of those above. If you wish to allow use of your version of this file only
+ under the terms of either the GPL or the LGPL, and not to allow others to
+ use your version of this file under the terms of the MPL, indicate your
+ decision by deleting the provisions above and replace them with the notice
+ and other provisions required by the GPL or the LGPL. If you do not delete
+ the provisions above, a recipient may use your version of this file under
+ the terms of any one of the MPL, the GPL or the LGPL.
+
+*/
+
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Drawing;
+using Aga.Controls.Tree;
+
+namespace OpenHardwareMonitor.GUI {
+ public class Node {
+
+ private TreeModel treeModel;
+ private Node parent;
+ private NodeCollection nodes;
+
+ private string text;
+ private Image image;
+ private bool visible;
+
+ private TreeModel RootTreeModel() {
+ Node node = this;
+ while (node != null) {
+ if (node.Model != null)
+ return node.Model;
+ node = node.parent;
+ }
+ return null;
+ }
+
+ public Node() : this(string.Empty) { }
+
+ public Node(string text) {
+ this.text = text;
+ this.nodes = new NodeCollection(this);
+ this.visible = true;
+ }
+
+ public TreeModel Model {
+ get { return treeModel; }
+ set { treeModel = value; }
+ }
+
+ public Node Parent {
+ get { return parent; }
+ set {
+ if (value != parent) {
+ if (parent != null)
+ parent.nodes.Remove(this);
+ if (value != null)
+ value.nodes.Add(this);
+ }
+ }
+ }
+
+ public Collection Nodes {
+ get { return nodes; }
+ }
+
+ public virtual string Text {
+ get { return text; }
+ set {
+ if (text != value) {
+ text = value;
+ }
+ }
+ }
+
+ public Image Image {
+ get { return image; }
+ set {
+ if (image != value) {
+ image = value;
+ }
+ }
+ }
+
+ public virtual bool IsVisible {
+ get { return visible; }
+ set {
+ if (value != visible) {
+ visible = value;
+ TreeModel model = RootTreeModel();
+ if (model != null && parent != null) {
+ int index = 0;
+ for (int i = 0; i < parent.nodes.Count; i++) {
+ Node node = parent.nodes[i];
+ if (node == this)
+ break;
+ if (node.IsVisible || model.ForceVisible)
+ index++;
+ }
+ if (model.ForceVisible) {
+ model.OnNodeChanged(parent, index, this);
+ } else {
+ if (value)
+ model.OnNodeInserted(parent, index, this);
+ else
+ model.OnNodeRemoved(parent, index, this);
+ }
+ }
+ if (IsVisibleChanged != null)
+ IsVisibleChanged(this);
+ }
+ }
+ }
+
+ public delegate void NodeEventHandler(Node node);
+
+ public event NodeEventHandler IsVisibleChanged;
+ public event NodeEventHandler NodeAdded;
+ public event NodeEventHandler NodeRemoved;
+
+ private class NodeCollection : Collection {
+ private Node owner;
+
+ public NodeCollection(Node owner) {
+ this.owner = owner;
+ }
+
+ protected override void ClearItems() {
+ while (this.Count != 0)
+ this.RemoveAt(this.Count - 1);
+ }
+
+ protected override void InsertItem(int index, Node item) {
+ if (item == null)
+ throw new ArgumentNullException();
+
+ if (item.parent != owner) {
+ if (item.parent != null)
+ item.parent.nodes.Remove(item);
+ item.parent = owner;
+ base.InsertItem(index, item);
+
+ TreeModel model = owner.RootTreeModel();
+ if (model != null)
+ model.OnStructureChanged(owner);
+ if (owner.NodeAdded != null)
+ owner.NodeAdded(item);
+ }
+ }
+
+ protected override void RemoveItem(int index) {
+ Node item = this[index];
+ item.parent = null;
+ base.RemoveItem(index);
+
+ TreeModel model = owner.RootTreeModel();
+ if (model != null)
+ model.OnStructureChanged(owner);
+ if (owner.NodeRemoved != null)
+ owner.NodeRemoved(item);
+ }
+
+ protected override void SetItem(int index, Node item) {
+ if (item == null)
+ throw new ArgumentNullException();
+
+ RemoveAt(index);
+ InsertItem(index, item);
+ }
+ }
+ }
+}
diff -r 411b72b73d8f -r 2b8a8cf92c3a GUI/SensorNode.cs
--- a/GUI/SensorNode.cs Sun May 09 16:22:13 2010 +0000
+++ b/GUI/SensorNode.cs Fri May 14 22:30:06 2010 +0000
@@ -37,8 +37,8 @@
using System;
using System.Collections.Generic;
-using Aga.Controls.Tree;
using OpenHardwareMonitor.Hardware;
+using OpenHardwareMonitor.Utilities;
namespace OpenHardwareMonitor.GUI {
public class SensorNode : Node {
@@ -54,7 +54,7 @@
return "-";
}
- public SensorNode(ISensor sensor) {
+ public SensorNode(ISensor sensor) : base() {
this.sensor = sensor;
switch (sensor.SensorType) {
case SensorType.Voltage: format = "{0:F2} V"; break;
@@ -63,13 +63,26 @@
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;
- }
+ }
+
+ bool hidden = Config.Get(new Identifier(sensor.Identifier,
+ "hidden").ToString(), sensor.IsDefaultHidden);
+ IsVisible = !hidden;
}
public override string Text {
get { return sensor.Name; }
set { sensor.Name = value; }
- }
+ }
+
+ public override bool IsVisible {
+ get { return base.IsVisible; }
+ set {
+ base.IsVisible = value;
+ Config.Set(new Identifier(sensor.Identifier,
+ "hidden").ToString(), !value);
+ }
+ }
public bool Plot {
get { return plot; }
diff -r 411b72b73d8f -r 2b8a8cf92c3a GUI/SensorProperties.cs
--- a/GUI/SensorProperties.cs Sun May 09 16:22:13 2010 +0000
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,76 +0,0 @@
-/*
-
- Version: MPL 1.1/GPL 2.0/LGPL 2.1
-
- The contents of this file are subject to the Mozilla Public License Version
- 1.1 (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.mozilla.org/MPL/
-
- Software distributed under the License is distributed on an "AS IS" basis,
- WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- for the specific language governing rights and limitations under the License.
-
- The Original Code is the Open Hardware Monitor code.
-
- The Initial Developer of the Original Code is
- Michael Möller .
- Portions created by the Initial Developer are Copyright (C) 2009-2010
- the Initial Developer. All Rights Reserved.
-
- Contributor(s):
-
- Alternatively, the contents of this file may be used under the terms of
- either the GNU General Public License Version 2 or later (the "GPL"), or
- the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- in which case the provisions of the GPL or the LGPL are applicable instead
- of those above. If you wish to allow use of your version of this file only
- under the terms of either the GPL or the LGPL, and not to allow others to
- use your version of this file under the terms of the MPL, indicate your
- decision by deleting the provisions above and replace them with the notice
- and other provisions required by the GPL or the LGPL. If you do not delete
- the provisions above, a recipient may use your version of this file under
- the terms of any one of the MPL, the GPL or the LGPL.
-
-*/
-
-using System;
-using System.Collections.Generic;
-using OpenHardwareMonitor.Hardware;
-using OpenHardwareMonitor.Utilities;
-
-namespace OpenHardwareMonitor.GUI {
- public class SensorProperties {
-
- private IDictionary properties =
- new Dictionary();
-
- private Properties GetProperties(ISensor sensor) {
- Properties value;
- if (!properties.TryGetValue(sensor.Identifier, out value)) {
- value = new Properties(sensor.Identifier, sensor.IsDefaultHidden);
- properties.Add(sensor.Identifier, value);
- }
- return value;
- }
-
- public bool IsHidden(ISensor sensor) {
- return GetProperties(sensor).IsHidden;
- }
-
- private class Properties {
- private Identifier identifier;
- private bool hidden;
-
- public Properties(Identifier identifier, bool defaultHidden) {
- this.identifier = identifier;
-
- hidden = Config.Get(new Identifier(identifier, "hidden").ToString(),
- defaultHidden);
- }
-
- public bool IsHidden { get { return hidden; } }
- }
- }
-}
diff -r 411b72b73d8f -r 2b8a8cf92c3a GUI/TreeModel.cs
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/GUI/TreeModel.cs Fri May 14 22:30:06 2010 +0000
@@ -0,0 +1,150 @@
+/*
+
+ Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+ The contents of this file are subject to the Mozilla Public License Version
+ 1.1 (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.mozilla.org/MPL/
+
+ Software distributed under the License is distributed on an "AS IS" basis,
+ WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ for the specific language governing rights and limitations under the License.
+
+ The Original Code is the Open Hardware Monitor code.
+
+ The Initial Developer of the Original Code is
+ Michael Möller .
+ Portions created by the Initial Developer are Copyright (C) 2009-2010
+ the Initial Developer. All Rights Reserved.
+
+ Contributor(s):
+
+ Alternatively, the contents of this file may be used under the terms of
+ either the GNU General Public License Version 2 or later (the "GPL"), or
+ the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ in which case the provisions of the GPL or the LGPL are applicable instead
+ of those above. If you wish to allow use of your version of this file only
+ under the terms of either the GPL or the LGPL, and not to allow others to
+ use your version of this file under the terms of the MPL, indicate your
+ decision by deleting the provisions above and replace them with the notice
+ and other provisions required by the GPL or the LGPL. If you do not delete
+ the provisions above, a recipient may use your version of this file under
+ the terms of any one of the MPL, the GPL or the LGPL.
+
+*/
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using Aga.Controls.Tree;
+
+namespace OpenHardwareMonitor.GUI {
+ public class TreeModel : ITreeModel {
+
+ private Node root;
+ private bool forceVisible = false;
+
+ public TreeModel() {
+ root = new Node();
+ root.Model = this;
+ }
+
+ public TreePath GetPath(Node node) {
+ if (node == root)
+ return TreePath.Empty;
+ else {
+ Stack