From 7d14daf1d5fce4d09471a3abe2aca49cf7680816 Mon Sep 17 00:00:00 2001
From: a1xd <68629610+a1xd@users.noreply.github.com>
Date: Wed, 2 Dec 2020 05:25:19 -0500
Subject: embed version info into assemblies
check app versions against lib, lib against driver
add an 'about' dialog which displays version details, accessible from menu
refactor error handling + add check for negative offset
---
grapher/AboutBox.Designer.cs | 138 ++++++++++++++++
grapher/AboutBox.cs | 51 ++++++
grapher/AboutBox.resx | 225 +++++++++++++++++++++++++++
grapher/Form1.cs | 21 ++-
grapher/Models/AccelGUI.cs | 2 +-
grapher/Models/Serialized/SettingsManager.cs | 29 ----
grapher/Properties/AssemblyInfo.cs | 10 +-
grapher/grapher.csproj | 9 ++
8 files changed, 445 insertions(+), 40 deletions(-)
create mode 100644 grapher/AboutBox.Designer.cs
create mode 100644 grapher/AboutBox.cs
create mode 100644 grapher/AboutBox.resx
(limited to 'grapher')
diff --git a/grapher/AboutBox.Designer.cs b/grapher/AboutBox.Designer.cs
new file mode 100644
index 0000000..d5ab082
--- /dev/null
+++ b/grapher/AboutBox.Designer.cs
@@ -0,0 +1,138 @@
+
+namespace grapher
+{
+ partial class AboutBox
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutBox));
+ this.tableLayoutPanel = new System.Windows.Forms.TableLayoutPanel();
+ this.logoPictureBox = new System.Windows.Forms.PictureBox();
+ this.labelVersion = new System.Windows.Forms.Label();
+ this.okButton = new System.Windows.Forms.Button();
+ this.labelDriverVersion = new System.Windows.Forms.Label();
+ this.tableLayoutPanel.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).BeginInit();
+ this.SuspendLayout();
+ //
+ // tableLayoutPanel
+ //
+ this.tableLayoutPanel.ColumnCount = 2;
+ this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel.Controls.Add(this.logoPictureBox, 0, 0);
+ this.tableLayoutPanel.Controls.Add(this.labelVersion, 1, 1);
+ this.tableLayoutPanel.Controls.Add(this.okButton, 1, 4);
+ this.tableLayoutPanel.Controls.Add(this.labelDriverVersion, 1, 2);
+ this.tableLayoutPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tableLayoutPanel.Location = new System.Drawing.Point(9, 9);
+ this.tableLayoutPanel.Name = "tableLayoutPanel";
+ this.tableLayoutPanel.RowCount = 5;
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
+ this.tableLayoutPanel.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
+ this.tableLayoutPanel.Size = new System.Drawing.Size(280, 133);
+ this.tableLayoutPanel.TabIndex = 0;
+ //
+ // logoPictureBox
+ //
+ this.logoPictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.logoPictureBox.Image = ((System.Drawing.Image)(resources.GetObject("logoPictureBox.Image")));
+ this.logoPictureBox.Location = new System.Drawing.Point(3, 3);
+ this.logoPictureBox.Name = "logoPictureBox";
+ this.tableLayoutPanel.SetRowSpan(this.logoPictureBox, 5);
+ this.logoPictureBox.Size = new System.Drawing.Size(134, 127);
+ this.logoPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
+ this.logoPictureBox.TabIndex = 12;
+ this.logoPictureBox.TabStop = false;
+ //
+ // labelVersion
+ //
+ this.labelVersion.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelVersion.Location = new System.Drawing.Point(146, 26);
+ this.labelVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+ this.labelVersion.MaximumSize = new System.Drawing.Size(0, 17);
+ this.labelVersion.Name = "labelVersion";
+ this.labelVersion.Size = new System.Drawing.Size(131, 17);
+ this.labelVersion.TabIndex = 0;
+ this.labelVersion.Text = "GUI Version";
+ this.labelVersion.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // okButton
+ //
+ this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.okButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this.okButton.Location = new System.Drawing.Point(202, 107);
+ this.okButton.Name = "okButton";
+ this.okButton.Size = new System.Drawing.Size(75, 23);
+ this.okButton.TabIndex = 24;
+ this.okButton.Text = "&OK";
+ //
+ // labelDriverVersion
+ //
+ this.labelDriverVersion.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.labelDriverVersion.Location = new System.Drawing.Point(146, 52);
+ this.labelDriverVersion.Margin = new System.Windows.Forms.Padding(6, 0, 3, 0);
+ this.labelDriverVersion.MaximumSize = new System.Drawing.Size(0, 17);
+ this.labelDriverVersion.Name = "labelDriverVersion";
+ this.labelDriverVersion.Size = new System.Drawing.Size(131, 17);
+ this.labelDriverVersion.TabIndex = 25;
+ this.labelDriverVersion.Text = "Driver Version";
+ this.labelDriverVersion.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ //
+ // AboutBox
+ //
+ this.AcceptButton = this.okButton;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(298, 151);
+ this.Controls.Add(this.tableLayoutPanel);
+ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
+ this.MaximizeBox = false;
+ this.MinimizeBox = false;
+ this.Name = "AboutBox";
+ this.Padding = new System.Windows.Forms.Padding(9);
+ this.ShowIcon = false;
+ this.ShowInTaskbar = false;
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "AboutBox";
+ this.tableLayoutPanel.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.logoPictureBox)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel;
+ private System.Windows.Forms.PictureBox logoPictureBox;
+ private System.Windows.Forms.Label labelVersion;
+ private System.Windows.Forms.Button okButton;
+ private System.Windows.Forms.Label labelDriverVersion;
+ }
+}
diff --git a/grapher/AboutBox.cs b/grapher/AboutBox.cs
new file mode 100644
index 0000000..5547c59
--- /dev/null
+++ b/grapher/AboutBox.cs
@@ -0,0 +1,51 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Linq;
+using System.Reflection;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace grapher
+{
+ partial class AboutBox : Form
+ {
+ public AboutBox(Version driver)
+ {
+ InitializeComponent();
+ this.Text = String.Format("About {0}", AssemblyTitle);
+ this.labelVersion.Text = String.Format("GUI Version {0}", AssemblyVersion);
+ this.labelDriverVersion.Text = String.Format("Driver Version {0}", driver.ToString());
+ }
+
+ #region Assembly Attribute Accessors
+
+ public string AssemblyTitle
+ {
+ get
+ {
+ object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
+ if (attributes.Length > 0)
+ {
+ AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
+ if (titleAttribute.Title != "")
+ {
+ return titleAttribute.Title;
+ }
+ }
+ return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
+ }
+ }
+
+ public string AssemblyVersion
+ {
+ get
+ {
+ return Assembly.GetExecutingAssembly().GetName().Version.ToString();
+ }
+ }
+
+ #endregion
+ }
+}
diff --git a/grapher/AboutBox.resx b/grapher/AboutBox.resx
new file mode 100644
index 0000000..e073ca0
--- /dev/null
+++ b/grapher/AboutBox.resx
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+
+ 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
+
+
+
\ No newline at end of file
diff --git a/grapher/Form1.cs b/grapher/Form1.cs
index d62ed6d..0c12b86 100644
--- a/grapher/Form1.cs
+++ b/grapher/Form1.cs
@@ -13,6 +13,8 @@ using grapher.Models.Calculations;
using grapher.Models.Options;
using grapher.Models.Serialized;
using grapher.Models;
+using System.Reflection;
+using System.Diagnostics;
namespace grapher
{
@@ -26,21 +28,30 @@ namespace grapher
{
InitializeComponent();
- ManagedAccel activeAccel = null;
+ Version assemVersion = typeof(RawAcceleration).Assembly.GetName().Version;
+ Version driverVersion = null;
try
{
- activeAccel = ManagedAccel.GetActiveAccel();
+ driverVersion = VersionHelper.ValidateAndGetDriverVersion(assemVersion);
}
- catch (DriverNotInstalledException ex)
+ catch (VersionException ex)
{
- MessageBox.Show($"Driver not installed.\n\n {ex.ToString()}");
+ MessageBox.Show(ex.Message);
throw;
}
+
+ ToolStripMenuItem HelpMenuItem = new ToolStripMenuItem("&Help");
+
+ HelpMenuItem.DropDownItems.AddRange(new ToolStripItem[] {
+ new ToolStripMenuItem("&About", null, (s, e) => new AboutBox(driverVersion).ShowDialog())
+ });
+
+ menuStrip1.Items.AddRange(new ToolStripItem[] { HelpMenuItem });
AccelGUI = AccelGUIFactory.Construct(
this,
- activeAccel,
+ ManagedAccel.GetActiveAccel(),
AccelerationChart,
AccelerationChartY,
VelocityChart,
diff --git a/grapher/Models/AccelGUI.cs b/grapher/Models/AccelGUI.cs
index c08313b..f9291c1 100644
--- a/grapher/Models/AccelGUI.cs
+++ b/grapher/Models/AccelGUI.cs
@@ -153,7 +153,7 @@ namespace grapher
}
else
{
- throw new Exception($"Bad arguments: \n {SettingsManager.ErrorStringFrom(errors)}");
+ throw new Exception($"Bad arguments:\n\n{errors}");
}
}
diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs
index f13ba81..f5bb1f1 100644
--- a/grapher/Models/Serialized/SettingsManager.cs
+++ b/grapher/Models/Serialized/SettingsManager.cs
@@ -47,35 +47,6 @@ namespace grapher.Models.Serialized
#endregion Properties
#region Methods
-
- public static string ErrorStringFrom(SettingsErrors errors)
- {
- StringBuilder builder = new StringBuilder();
- bool yPresent = errors.y?.Count > 0;
-
- if (yPresent)
- {
- builder.AppendLine("\nx:");
- }
-
- foreach (var error in errors.x)
- {
- builder.AppendLine(error);
- }
-
- if (yPresent)
- {
- builder.AppendLine("\ny:");
-
- foreach (var error in errors.y)
- {
- builder.AppendLine(error);
- }
- }
-
- return builder.ToString();
- }
-
public SettingsErrors TryUpdateActiveSettings(DriverSettings settings)
{
var errors = TryUpdateAccel(settings);
diff --git a/grapher/Properties/AssemblyInfo.cs b/grapher/Properties/AssemblyInfo.cs
index 939f98a..a46d6b3 100644
--- a/grapher/Properties/AssemblyInfo.cs
+++ b/grapher/Properties/AssemblyInfo.cs
@@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
-[assembly: AssemblyTitle("grapher")]
+[assembly: AssemblyTitle("Raw Accel GUI")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("grapher")]
-[assembly: AssemblyCopyright("Copyright © 2020")]
+[assembly: AssemblyProduct("Raw Accel")]
+[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyVersion(RawAccelVersion.value)]
+[assembly: AssemblyFileVersion(RawAccelVersion.value)]
diff --git a/grapher/grapher.csproj b/grapher/grapher.csproj
index a3e63ad..f6bdcb9 100644
--- a/grapher/grapher.csproj
+++ b/grapher/grapher.csproj
@@ -71,6 +71,12 @@
+
+ Form
+
+
+ AboutBox.cs
+
@@ -122,6 +128,9 @@
+
+ AboutBox.cs
+
Form1.cs
--
cgit v1.2.3