mirror of
https://github.com/openhardwaremonitor/openhardwaremonitor
synced 2025-09-04 00:05:27 +00:00
Refactoring and fine tuning for Linux GUI.
This commit is contained in:
2
GUI/MainForm.Designer.cs
generated
2
GUI/MainForm.Designer.cs
generated
@@ -440,7 +440,7 @@ namespace OpenHardwareMonitor.GUI {
|
|||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(418, 596);
|
this.ClientSize = new System.Drawing.Size(418, 554);
|
||||||
this.Controls.Add(this.splitContainer);
|
this.Controls.Add(this.splitContainer);
|
||||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
this.Menu = this.mainMenu;
|
this.Menu = this.mainMenu;
|
||||||
|
@@ -77,6 +77,15 @@ namespace OpenHardwareMonitor.GUI {
|
|||||||
// set the DockStyle here, to avoid conflicts with the MainMenu
|
// set the DockStyle here, to avoid conflicts with the MainMenu
|
||||||
this.splitContainer.Dock = DockStyle.Fill;
|
this.splitContainer.Dock = DockStyle.Fill;
|
||||||
|
|
||||||
|
int p = (int)System.Environment.OSVersion.Platform;
|
||||||
|
if ((p == 4) || (p == 128)) {
|
||||||
|
splitContainer.BorderStyle = BorderStyle.None;
|
||||||
|
splitContainer.Border3DStyle = Border3DStyle.Adjust;
|
||||||
|
splitContainer.SplitterWidth = 4;
|
||||||
|
treeView.BorderStyle = BorderStyle.Fixed3D;
|
||||||
|
plotPanel.BorderStyle = BorderStyle.Fixed3D;
|
||||||
|
}
|
||||||
|
|
||||||
this.Font = SystemFonts.MessageBoxFont;
|
this.Font = SystemFonts.MessageBoxFont;
|
||||||
treeView.Font = SystemFonts.MessageBoxFont;
|
treeView.Font = SystemFonts.MessageBoxFont;
|
||||||
plotPanel.Font = SystemFonts.MessageBoxFont;
|
plotPanel.Font = SystemFonts.MessageBoxFont;
|
||||||
@@ -459,8 +468,10 @@ namespace OpenHardwareMonitor.GUI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void resetMinMaxMenuItem_Click(object sender, EventArgs e) {
|
private void resetMinMaxMenuItem_Click(object sender, EventArgs e) {
|
||||||
IVisitor visitor = new ResetMinMaxVisitor();
|
computer.Accept(new SensorVisitor(delegate(ISensor sensor) {
|
||||||
computer.Accept(visitor);
|
sensor.ResetMin();
|
||||||
|
sensor.ResetMax();
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -86,12 +86,12 @@ namespace OpenHardwareMonitor.GUI {
|
|||||||
float? minTempNullable = null;
|
float? minTempNullable = null;
|
||||||
float? maxTempNullable = null;
|
float? maxTempNullable = null;
|
||||||
foreach (ISensor sensor in temperatures) {
|
foreach (ISensor sensor in temperatures) {
|
||||||
IEnumerable<ISensorEntry> graph = sensor.Plot;
|
IEnumerable<SensorValue> values = sensor.Values;
|
||||||
foreach (ISensorEntry entry in graph) {
|
foreach (SensorValue value in values) {
|
||||||
if (!minTempNullable.HasValue || minTempNullable > entry.Value)
|
if (!minTempNullable.HasValue || minTempNullable > value.Value)
|
||||||
minTempNullable = entry.Value;
|
minTempNullable = value.Value;
|
||||||
if (!maxTempNullable.HasValue || maxTempNullable < entry.Value)
|
if (!maxTempNullable.HasValue || maxTempNullable < value.Value)
|
||||||
maxTempNullable = entry.Value;
|
maxTempNullable = value.Value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!minTempNullable.HasValue) {
|
if (!minTempNullable.HasValue) {
|
||||||
@@ -125,8 +125,8 @@ namespace OpenHardwareMonitor.GUI {
|
|||||||
|
|
||||||
float maxTime = 5;
|
float maxTime = 5;
|
||||||
if (temperatures.Count > 0) {
|
if (temperatures.Count > 0) {
|
||||||
IEnumerator<ISensorEntry> enumerator =
|
IEnumerator<SensorValue> enumerator =
|
||||||
temperatures[0].Plot.GetEnumerator();
|
temperatures[0].Values.GetEnumerator();
|
||||||
if (enumerator.MoveNext()) {
|
if (enumerator.MoveNext()) {
|
||||||
maxTime = (float)(now - enumerator.Current.Time).TotalMinutes;
|
maxTime = (float)(now - enumerator.Current.Time).TotalMinutes;
|
||||||
}
|
}
|
||||||
@@ -193,13 +193,13 @@ namespace OpenHardwareMonitor.GUI {
|
|||||||
float deltaTime = timeGrid[timeGrid.Count - 1];
|
float deltaTime = timeGrid[timeGrid.Count - 1];
|
||||||
foreach (ISensor sensor in temperatures) {
|
foreach (ISensor sensor in temperatures) {
|
||||||
using (Pen pen = new Pen(colors[sensor])) {
|
using (Pen pen = new Pen(colors[sensor])) {
|
||||||
IEnumerable<ISensorEntry> graph = sensor.Plot;
|
IEnumerable<SensorValue> values = sensor.Values;
|
||||||
PointF last = new PointF();
|
PointF last = new PointF();
|
||||||
bool first = true;
|
bool first = true;
|
||||||
foreach (ISensorEntry entry in graph) {
|
foreach (SensorValue value in values) {
|
||||||
PointF point = new PointF(
|
PointF point = new PointF(
|
||||||
x0 + w - w * (float)(now - entry.Time).TotalMinutes / deltaTime,
|
x0 + w - w * (float)(now - value.Time).TotalMinutes / deltaTime,
|
||||||
y0 + h - h * (entry.Value - tempGrid[0]) / deltaTemp);
|
y0 + h - h * (value.Value - tempGrid[0]) / deltaTemp);
|
||||||
if (!first)
|
if (!first)
|
||||||
g.DrawLine(pen, last, point);
|
g.DrawLine(pen, last, point);
|
||||||
last = point;
|
last = point;
|
||||||
|
@@ -1,59 +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 <m.moeller@gmx.ch>.
|
|
||||||
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;
|
|
||||||
|
|
||||||
namespace OpenHardwareMonitor.GUI {
|
|
||||||
public class ResetMinMaxVisitor : IVisitor {
|
|
||||||
public void VisitComputer(IComputer computer) {
|
|
||||||
computer.Traverse(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void VisitHardware(IHardware hardware) {
|
|
||||||
hardware.Traverse(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void VisitSensor(ISensor sensor) {
|
|
||||||
sensor.ResetMin();
|
|
||||||
sensor.ResetMax();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void VisitParameter(IParameter parameter) { }
|
|
||||||
}
|
|
||||||
}
|
|
@@ -51,9 +51,17 @@ namespace OpenHardwareMonitor.Hardware {
|
|||||||
Control
|
Control
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ISensorEntry {
|
public struct SensorValue {
|
||||||
float Value { get; }
|
private float value;
|
||||||
DateTime Time { get; }
|
private DateTime time;
|
||||||
|
|
||||||
|
public SensorValue(float value, DateTime time) {
|
||||||
|
this.value = value;
|
||||||
|
this.time = time;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float Value { get { return value; } }
|
||||||
|
public DateTime Time { get { return time; } }
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface ISensor : IElement {
|
public interface ISensor : IElement {
|
||||||
@@ -77,7 +85,7 @@ namespace OpenHardwareMonitor.Hardware {
|
|||||||
void ResetMin();
|
void ResetMin();
|
||||||
void ResetMax();
|
void ResetMax();
|
||||||
|
|
||||||
IEnumerable<ISensorEntry> Plot { get; }
|
IEnumerable<SensorValue> Values { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -53,8 +53,8 @@ namespace OpenHardwareMonitor.Hardware {
|
|||||||
private float? value;
|
private float? value;
|
||||||
private float? min;
|
private float? min;
|
||||||
private float? max;
|
private float? max;
|
||||||
private Queue<ISensorEntry> entries =
|
private Queue<SensorValue> values =
|
||||||
new Queue<ISensorEntry>(MAX_MINUTES * 15);
|
new Queue<SensorValue>(MAX_MINUTES * 15);
|
||||||
|
|
||||||
private float sum = 0;
|
private float sum = 0;
|
||||||
private int count = 0;
|
private int count = 0;
|
||||||
@@ -138,15 +138,15 @@ namespace OpenHardwareMonitor.Hardware {
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
set {
|
set {
|
||||||
while (entries.Count > 0 &&
|
while (values.Count > 0 &&
|
||||||
(DateTime.Now - entries.Peek().Time).TotalMinutes > MAX_MINUTES)
|
(DateTime.Now - values.Peek().Time).TotalMinutes > MAX_MINUTES)
|
||||||
entries.Dequeue();
|
values.Dequeue();
|
||||||
|
|
||||||
if (value.HasValue) {
|
if (value.HasValue) {
|
||||||
sum += value.Value;
|
sum += value.Value;
|
||||||
count++;
|
count++;
|
||||||
if (count == 4) {
|
if (count == 4) {
|
||||||
entries.Enqueue(new Entry(sum / count, DateTime.Now));
|
values.Enqueue(new SensorValue(sum / count, DateTime.Now));
|
||||||
sum = 0;
|
sum = 0;
|
||||||
count = 0;
|
count = 0;
|
||||||
}
|
}
|
||||||
@@ -171,22 +171,9 @@ namespace OpenHardwareMonitor.Hardware {
|
|||||||
max = null;
|
max = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<ISensorEntry> Plot {
|
public IEnumerable<SensorValue> Values {
|
||||||
get { return entries; }
|
get { return values; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct Entry : ISensorEntry {
|
|
||||||
private float value;
|
|
||||||
private DateTime time;
|
|
||||||
|
|
||||||
public Entry(float value, DateTime time) {
|
|
||||||
this.value = value;
|
|
||||||
this.time = time;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float Value { get { return value; } }
|
|
||||||
public DateTime Time { get { return time; } }
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Accept(IVisitor visitor) {
|
public void Accept(IVisitor visitor) {
|
||||||
visitor.VisitSensor(this);
|
visitor.VisitSensor(this);
|
||||||
|
@@ -83,7 +83,7 @@
|
|||||||
<Compile Include="GUI\ParameterForm.Designer.cs">
|
<Compile Include="GUI\ParameterForm.Designer.cs">
|
||||||
<DependentUpon>ParameterForm.cs</DependentUpon>
|
<DependentUpon>ParameterForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="GUI\ResetMinMaxVisitor.cs" />
|
<Compile Include="Hardware\SensorVisitor.cs" />
|
||||||
<Compile Include="GUI\SensorNotifyIcon.cs" />
|
<Compile Include="GUI\SensorNotifyIcon.cs" />
|
||||||
<Compile Include="GUI\SplitContainerAdv.cs">
|
<Compile Include="GUI\SplitContainerAdv.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
|
Reference in New Issue
Block a user