diff --git a/Source/LibationAvalonia/App.axaml b/Source/LibationAvalonia/App.axaml
index 7677075b..9c4b6240 100644
--- a/Source/LibationAvalonia/App.axaml
+++ b/Source/LibationAvalonia/App.axaml
@@ -72,7 +72,9 @@
-
+
+
+
\ No newline at end of file
diff --git a/Source/LibationAvalonia/Assets/LibationVectorIcons.xaml b/Source/LibationAvalonia/Assets/LibationVectorIcons.xaml
index d2e2d278..9c9d7ec2 100644
--- a/Source/LibationAvalonia/Assets/LibationVectorIcons.xaml
+++ b/Source/LibationAvalonia/Assets/LibationVectorIcons.xaml
@@ -64,6 +64,33 @@
M7.2,0.8 a 0.8,0.8 0 0 1 1.6,0 v8 l0.9929,-0.9929 a 0.8,0.8 0 0 1 1.1314,1.1314 l-2.3586,2.3586
a 0.8,0.8 0 0 1 -1.1314,0 l-2.3586,-2.3586 a 0.8,0.8 0 0 1 1.1314,-1.1314 l0.9929,0.9929 v8
+
+
+ M139,2
+ A 192,200 0 0 0 103,84
+ A 222,334 41 0 0 241,320
+ V478
+ H160
+ A 16,16 0 0 0 160,510
+ H352
+ A16 16 0 0 0 352,478
+ H271
+ V320
+ A 222,334 -41 0 0 409,84
+ A 192,200 0 0 0 373,2
+ M355,32
+ A 192,200 0 0 1 381,127
+ A 187.5,334 -35 0 1 256,286
+ A 187.5,334 35 0 1 131,127
+ A 192,200 0 0 1 157,32
+ H355
+ M146,147
+ A 168,300 35 0 0 256,270
+ A 168,300 -35 0 0 366,128
+ S 360,50 280,110
+ S 192,128 147,147
+
+
diff --git a/Source/LibationAvalonia/Dialogs/AboutDialog.axaml b/Source/LibationAvalonia/Dialogs/AboutDialog.axaml
index 0468bebb..b41144df 100644
--- a/Source/LibationAvalonia/Dialogs/AboutDialog.axaml
+++ b/Source/LibationAvalonia/Dialogs/AboutDialog.axaml
@@ -2,12 +2,65 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- mc:Ignorable="d" d:DesignWidth="550" d:DesignHeight="450"
- MinWidth="550" MinHeight="450"
- Width="650" Height="500"
+ mc:Ignorable="d" d:DesignWidth="450" d:DesignHeight="600"
+ MinWidth="450" MinHeight="550"
+ Width="450" Height="600"
x:Class="LibationAvalonia.Dialogs.AboutDialog"
xmlns:controls="clr-namespace:LibationAvalonia.Controls"
Title="About Libation"
Icon="/Assets/libation.ico">
- Welcome to Avalonia!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/LibationAvalonia/Dialogs/AboutDialog.axaml.cs b/Source/LibationAvalonia/Dialogs/AboutDialog.axaml.cs
index cf508104..7c2da171 100644
--- a/Source/LibationAvalonia/Dialogs/AboutDialog.axaml.cs
+++ b/Source/LibationAvalonia/Dialogs/AboutDialog.axaml.cs
@@ -1,12 +1,78 @@
+using Avalonia.Collections;
using Avalonia.Controls;
+using LibationAvalonia.ViewModels;
+using LibationFileManager;
+using LibationUiBase;
+using ReactiveUI;
+using System;
+using System.Linq;
+using System.Reflection;
+using System.Threading.Tasks;
namespace LibationAvalonia.Dialogs
{
public partial class AboutDialog : DialogWindow
{
- public AboutDialog()
+ private readonly AboutVM _viewModel;
+ public AboutDialog() : base(saveAndRestorePosition:false)
{
+ if (Design.IsDesignMode)
+ _ = Configuration.Instance.LibationFiles;
+
InitializeComponent();
+
+ DataContext = _viewModel = new AboutVM();
+ }
+
+ private async void CheckForUpgrade_Click(object sender, Avalonia.Interactivity.RoutedEventArgs e)
+ {
+ var mainWindow = Owner as Views.MainWindow;
+
+ var upgrader = new Upgrader();
+ upgrader.DownloadProgress += async (_, e) => await Avalonia.Threading.Dispatcher.UIThread.InvokeAsync(() => mainWindow.ViewModel.DownloadProgress = e.ProgressPercentage);
+ upgrader.DownloadCompleted += async (_, _) => await Avalonia.Threading.Dispatcher.UIThread.InvokeAsync(() => mainWindow.ViewModel.DownloadProgress = null);
+
+ _viewModel.CanCheckForUpgrade = false;
+ Version latestVersion = null;
+ await upgrader.CheckForUpgradeAsync(OnUpgradeAvailable);
+
+ _viewModel.CanCheckForUpgrade = latestVersion is null;
+
+ _viewModel.UpgradeButtonText = latestVersion is null ? "Libation is up to date. Check Again." : $"Version {latestVersion:3} is available";
+
+ async Task OnUpgradeAvailable(UpgradeEventArgs e)
+ {
+ var notificationResult = await new UpgradeNotificationDialog(e.UpgradeProperties, e.CapUpgrade).ShowDialogAsync(this);
+
+ e.Ignore = notificationResult == DialogResult.Ignore;
+ e.InstallUpgrade = notificationResult == DialogResult.OK;
+ latestVersion = e.UpgradeProperties.LatestRelease;
+ }
+ }
+
+ private void ViewReleaseNotes_Tapped(object sender, Avalonia.Input.TappedEventArgs e)
+ {
+ Dinah.Core.Go.To.Url($"{AppScaffolding.LibationScaffolding.RepositoryUrl}/releases/tag/v{AppScaffolding.LibationScaffolding.BuildVersion.ToString(3)}");
}
}
+
+ public class AboutVM : ViewModelBase
+ {
+ public string Version { get; }
+ public AvaloniaList Assemblies { get; } = new();
+ public bool CanCheckForUpgrade { get => canCheckForUpgrade; set => this.RaiseAndSetIfChanged(ref canCheckForUpgrade, value); }
+ public string UpgradeButtonText { get => upgradeButtonText; set => this.RaiseAndSetIfChanged(ref upgradeButtonText, value); }
+
+
+ private bool canCheckForUpgrade = true;
+ private string upgradeButtonText = "Check for Upgrade";
+
+ public AboutVM()
+ {
+ Version = $"Libation {AppScaffolding.LibationScaffolding.Variety} v{AppScaffolding.LibationScaffolding.BuildVersion}";
+ Assemblies.AddRange(AppDomain.CurrentDomain.GetAssemblies().Select(a => new AssemblyName(a.FullName)).Where(a => a.Version.Major + a.Version.Minor + a.Version.Build + a.Version.Revision > 0).OrderBy(a => a.Name));
+ }
+
+ public async Task CopyAssembliesAsync() => await App.Current.Clipboard.SetTextAsync(string.Join(Environment.NewLine, Assemblies.Select(a => $"{a.Name}\t{a.Version}")));
+ }
}
diff --git a/Source/LibationAvalonia/ViewModels/MainVM.Settings.cs b/Source/LibationAvalonia/ViewModels/MainVM.Settings.cs
index 58897954..715eabc8 100644
--- a/Source/LibationAvalonia/ViewModels/MainVM.Settings.cs
+++ b/Source/LibationAvalonia/ViewModels/MainVM.Settings.cs
@@ -1,4 +1,5 @@
-using LibationFileManager;
+using Avalonia.Controls;
+using LibationFileManager;
using ReactiveUI;
using System;
using System.Threading.Tasks;
@@ -9,9 +10,12 @@ namespace LibationAvalonia.ViewModels
{
private bool _menuBarVisible = !Configuration.IsMacOs;
public bool MenuBarVisible { get => _menuBarVisible; set => this.RaiseAndSetIfChanged(ref _menuBarVisible, value); }
- private void Configure_Settings() { }
+ private void Configure_Settings()
+ {
+ ((NativeMenuItem)NativeMenu.GetMenu(App.Current).Items[0]).Command = ReactiveCommand.Create(ShowAboutAsync);
+ }
- public Task ShowAboutAsync() => MessageBox.Show(MainWindow, $"Libation {AppScaffolding.LibationScaffolding.Variety}{Environment.NewLine}Version {AppScaffolding.LibationScaffolding.BuildVersion}", $"Libation v{AppScaffolding.LibationScaffolding.BuildVersion}");
+ public Task ShowAboutAsync() => new LibationAvalonia.Dialogs.AboutDialog().ShowDialog(MainWindow);
public Task ShowAccountsAsync() => new LibationAvalonia.Dialogs.AccountsDialog().ShowDialog(MainWindow);
public Task ShowSettingsAsync() => new LibationAvalonia.Dialogs.SettingsDialog().ShowDialog(MainWindow);
public Task ShowTrashBinAsync() => new LibationAvalonia.Dialogs.TrashBinDialog().ShowDialog(MainWindow);
diff --git a/Source/LibationAvalonia/Views/MainWindow.axaml.cs b/Source/LibationAvalonia/Views/MainWindow.axaml.cs
index 21e2b87a..ab1e5569 100644
--- a/Source/LibationAvalonia/Views/MainWindow.axaml.cs
+++ b/Source/LibationAvalonia/Views/MainWindow.axaml.cs
@@ -87,10 +87,10 @@ namespace LibationAvalonia.Views
private void Configure_Upgrade()
{
setProgressVisible(false);
-#if DEBUG
+#if !DEBUG
async System.Threading.Tasks.Task upgradeAvailable(LibationUiBase.UpgradeEventArgs e)
{
- var notificationResult = await new LibationAvalonia.Dialogs.UpgradeNotificationDialog(e.UpgradeProperties, e.CapUpgrade).ShowDialogAsync(this);
+ var notificationResult = await new Dialogs.UpgradeNotificationDialog(e.UpgradeProperties, e.CapUpgrade).ShowDialogAsync(this);
e.Ignore = notificationResult == DialogResult.Ignore;
e.InstallUpgrade = notificationResult == DialogResult.OK;
diff --git a/Source/LibationWinForms/Dialogs/AboutDialog.Designer.cs b/Source/LibationWinForms/Dialogs/AboutDialog.Designer.cs
new file mode 100644
index 00000000..8087f575
--- /dev/null
+++ b/Source/LibationWinForms/Dialogs/AboutDialog.Designer.cs
@@ -0,0 +1,161 @@
+namespace LibationWinForms.Dialogs
+{
+ partial class AboutDialog
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ 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()
+ {
+ pictureBox1 = new System.Windows.Forms.PictureBox();
+ versionLbl = new System.Windows.Forms.Label();
+ releaseNotesLbl = new System.Windows.Forms.LinkLabel();
+ checkForUpgradeBtn = new System.Windows.Forms.Button();
+ listView1 = new System.Windows.Forms.ListView();
+ columnHeader1 = new System.Windows.Forms.ColumnHeader();
+ columnHeader2 = new System.Windows.Forms.ColumnHeader();
+ copyBtn = new System.Windows.Forms.Button();
+ label2 = new System.Windows.Forms.Label();
+ ((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
+ SuspendLayout();
+ //
+ // pictureBox1
+ //
+ pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
+ pictureBox1.Image = Properties.Resources.cheers;
+ pictureBox1.Location = new System.Drawing.Point(12, 105);
+ pictureBox1.Name = "pictureBox1";
+ pictureBox1.Size = new System.Drawing.Size(410, 283);
+ pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
+ pictureBox1.TabIndex = 0;
+ pictureBox1.TabStop = false;
+ //
+ // versionLbl
+ //
+ versionLbl.AutoSize = true;
+ versionLbl.Font = new System.Drawing.Font("Segoe UI", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point);
+ versionLbl.Location = new System.Drawing.Point(12, 9);
+ versionLbl.Name = "versionLbl";
+ versionLbl.Size = new System.Drawing.Size(198, 21);
+ versionLbl.TabIndex = 1;
+ versionLbl.Text = "Libation Classic v11.0.0.0";
+ //
+ // releaseNotesLbl
+ //
+ releaseNotesLbl.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
+ releaseNotesLbl.AutoSize = true;
+ releaseNotesLbl.Font = new System.Drawing.Font("Segoe UI", 11F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ releaseNotesLbl.Location = new System.Drawing.Point(319, 10);
+ releaseNotesLbl.Name = "releaseNotesLbl";
+ releaseNotesLbl.Size = new System.Drawing.Size(103, 20);
+ releaseNotesLbl.TabIndex = 2;
+ releaseNotesLbl.TabStop = true;
+ releaseNotesLbl.Text = "Release Notes";
+ releaseNotesLbl.LinkClicked += releaseNotesLbl_LinkClicked;
+ //
+ // checkForUpgradeBtn
+ //
+ checkForUpgradeBtn.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
+ checkForUpgradeBtn.Font = new System.Drawing.Font("Segoe UI", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point);
+ checkForUpgradeBtn.Location = new System.Drawing.Point(12, 54);
+ checkForUpgradeBtn.Name = "checkForUpgradeBtn";
+ checkForUpgradeBtn.Size = new System.Drawing.Size(410, 31);
+ checkForUpgradeBtn.TabIndex = 3;
+ checkForUpgradeBtn.Text = "Check for Upgrade";
+ checkForUpgradeBtn.UseVisualStyleBackColor = true;
+ checkForUpgradeBtn.Click += checkForUpgradeBtn_Click;
+ //
+ // listView1
+ //
+ listView1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
+ listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { columnHeader1, columnHeader2 });
+ listView1.Location = new System.Drawing.Point(12, 444);
+ listView1.Name = "listView1";
+ listView1.Size = new System.Drawing.Size(410, 105);
+ listView1.TabIndex = 4;
+ listView1.UseCompatibleStateImageBehavior = false;
+ listView1.View = System.Windows.Forms.View.Details;
+ //
+ // columnHeader1
+ //
+ columnHeader1.Text = "Assembly";
+ //
+ // columnHeader2
+ //
+ columnHeader2.Text = "Version";
+ //
+ // copyBtn
+ //
+ copyBtn.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
+ copyBtn.Location = new System.Drawing.Point(304, 415);
+ copyBtn.Name = "copyBtn";
+ copyBtn.Size = new System.Drawing.Size(118, 23);
+ copyBtn.TabIndex = 5;
+ copyBtn.Text = "Copy to Clipboard";
+ copyBtn.UseVisualStyleBackColor = true;
+ copyBtn.Click += copyBtn_Click;
+ //
+ // label2
+ //
+ label2.AutoSize = true;
+ label2.Location = new System.Drawing.Point(12, 419);
+ label2.Name = "label2";
+ label2.Size = new System.Drawing.Size(108, 15);
+ label2.TabIndex = 6;
+ label2.Text = "Loaded Assemblies";
+ //
+ // AboutDialog
+ //
+ AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
+ AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ ClientSize = new System.Drawing.Size(434, 561);
+ Controls.Add(label2);
+ Controls.Add(copyBtn);
+ Controls.Add(listView1);
+ Controls.Add(checkForUpgradeBtn);
+ Controls.Add(releaseNotesLbl);
+ Controls.Add(versionLbl);
+ Controls.Add(pictureBox1);
+ MinimumSize = new System.Drawing.Size(450, 600);
+ Name = "AboutDialog";
+ StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ Text = "About Libation";
+ ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
+ ResumeLayout(false);
+ PerformLayout();
+ }
+
+ #endregion
+
+ private System.Windows.Forms.PictureBox pictureBox1;
+ private System.Windows.Forms.Label versionLbl;
+ private System.Windows.Forms.LinkLabel releaseNotesLbl;
+ private System.Windows.Forms.Button checkForUpgradeBtn;
+ private System.Windows.Forms.ListView listView1;
+ private System.Windows.Forms.Button copyBtn;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.ColumnHeader columnHeader1;
+ private System.Windows.Forms.ColumnHeader columnHeader2;
+ }
+}
\ No newline at end of file
diff --git a/Source/LibationWinForms/Dialogs/AboutDialog.cs b/Source/LibationWinForms/Dialogs/AboutDialog.cs
new file mode 100644
index 00000000..709a620f
--- /dev/null
+++ b/Source/LibationWinForms/Dialogs/AboutDialog.cs
@@ -0,0 +1,66 @@
+using LibationUiBase;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace LibationWinForms.Dialogs
+{
+ public partial class AboutDialog : Form
+ {
+ public AboutDialog()
+ {
+ InitializeComponent();
+ this.SetLibationIcon();
+ versionLbl.Text = $"Libation {AppScaffolding.LibationScaffolding.Variety} v{AppScaffolding.LibationScaffolding.BuildVersion}";
+ var asmNames = AppDomain.CurrentDomain.GetAssemblies().Select(a => new AssemblyName(a.FullName)).Where(a => a.Version.Major + a.Version.Minor + a.Version.Build + a.Version.Revision > 0).OrderBy(a => a.Name).ToList();
+
+ listView1.Items.AddRange(asmNames.Select(a => new ListViewItem(new string[] { a.Name, a.Version.ToString() })).ToArray());
+ listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
+ Resize += (_, _) => listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
+ }
+
+ private void releaseNotesLbl_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
+ => Dinah.Core.Go.To.Url($"{AppScaffolding.LibationScaffolding.RepositoryUrl}/releases/tag/v{AppScaffolding.LibationScaffolding.BuildVersion.ToString(3)}");
+
+ private async void checkForUpgradeBtn_Click(object sender, EventArgs e)
+ {
+ var form1 = Owner as Form1;
+ var upgrader = new Upgrader();
+ upgrader.DownloadBegin += (_, _) => form1.Invoke(() => form1.upgradeLbl.Visible = form1.upgradePb.Visible = true);
+ upgrader.DownloadProgress += (_, e) => form1.Invoke(() => form1.upgradePb.Value = int.Max(0, int.Min(100, (int)(e.ProgressPercentage ?? 0))));
+ upgrader.DownloadCompleted += (_, _) => form1.Invoke(() => form1.upgradeLbl.Visible = form1.upgradePb.Visible = false);
+
+ checkForUpgradeBtn.Enabled = false;
+ Version latestVersion = null;
+ await upgrader.CheckForUpgradeAsync(OnUpgradeAvailable);
+
+ checkForUpgradeBtn.Enabled = latestVersion is null;
+
+ checkForUpgradeBtn.Text = latestVersion is null ? "Libation is up to date. Check Again." : $"Version {latestVersion:3} is available";
+
+ Task OnUpgradeAvailable(UpgradeEventArgs e)
+ {
+ var notificationResult = new UpgradeNotificationDialog(e.UpgradeProperties).ShowDialog(this);
+
+ e.Ignore = notificationResult == DialogResult.Ignore;
+ e.InstallUpgrade = notificationResult == DialogResult.Yes;
+ latestVersion = e.UpgradeProperties.LatestRelease;
+
+ return Task.CompletedTask;
+ }
+ }
+
+ private void copyBtn_Click(object sender, EventArgs e)
+ {
+ var text = string.Join(Environment.NewLine, listView1.Items.OfType().Select(i => $"{i.SubItems[0].Text}\t{i.SubItems[1].Text}"));
+ Clipboard.SetDataObject(text, false, 5, 150);
+ }
+ }
+}
diff --git a/Source/LibationWinForms/Dialogs/AboutDialog.resx b/Source/LibationWinForms/Dialogs/AboutDialog.resx
new file mode 100644
index 00000000..f298a7be
--- /dev/null
+++ b/Source/LibationWinForms/Dialogs/AboutDialog.resx
@@ -0,0 +1,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/Source/LibationWinForms/Form1.Designer.cs b/Source/LibationWinForms/Form1.Designer.cs
index 7546ae76..bf6eb017 100644
--- a/Source/LibationWinForms/Form1.Designer.cs
+++ b/Source/LibationWinForms/Form1.Designer.cs
@@ -697,7 +697,7 @@
private System.Windows.Forms.Button removeBooksBtn;
private System.Windows.Forms.Button doneRemovingBtn;
private System.Windows.Forms.ToolStripMenuItem setPdfDownloadedManualToolStripMenuItem;
- private System.Windows.Forms.ToolStripProgressBar upgradePb;
- private System.Windows.Forms.ToolStripStatusLabel upgradeLbl;
+ public System.Windows.Forms.ToolStripProgressBar upgradePb;
+ public System.Windows.Forms.ToolStripStatusLabel upgradeLbl;
}
}
diff --git a/Source/LibationWinForms/Form1.Settings.cs b/Source/LibationWinForms/Form1.Settings.cs
index ce8b61c5..07ce09c0 100644
--- a/Source/LibationWinForms/Form1.Settings.cs
+++ b/Source/LibationWinForms/Form1.Settings.cs
@@ -12,9 +12,7 @@ namespace LibationWinForms
private void basicSettingsToolStripMenuItem_Click(object sender, EventArgs e) => new SettingsDialog().ShowDialog();
- private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
- => MessageBox.Show($"Libation {AppScaffolding.LibationScaffolding.Variety}{Environment.NewLine}Version {AppScaffolding.LibationScaffolding.BuildVersion}", $"Libation v{AppScaffolding.LibationScaffolding.BuildVersion}");
-
+ private void aboutToolStripMenuItem_Click(object sender, EventArgs e) => new AboutDialog().ShowDialog(this);
private async void tourToolStripMenuItem_Click(object sender, EventArgs e)
=> await new Walkthrough(this).RunAsync();
diff --git a/Source/LibationWinForms/Properties/Resources.Designer.cs b/Source/LibationWinForms/Properties/Resources.Designer.cs
index 280a5d69..a86128bc 100644
--- a/Source/LibationWinForms/Properties/Resources.Designer.cs
+++ b/Source/LibationWinForms/Properties/Resources.Designer.cs
@@ -60,6 +60,16 @@ namespace LibationWinForms.Properties {
}
}
+ ///
+ /// Looks up a localized resource of type System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap cheers {
+ get {
+ object obj = ResourceManager.GetObject("cheers", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Looks up a localized resource of type System.Drawing.Bitmap.
///
diff --git a/Source/LibationWinForms/Properties/Resources.resx b/Source/LibationWinForms/Properties/Resources.resx
index a78be5b3..d970d5e6 100644
--- a/Source/LibationWinForms/Properties/Resources.resx
+++ b/Source/LibationWinForms/Properties/Resources.resx
@@ -118,6 +118,9 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\cheers.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\img-coverart-prod-unavailable_300x300.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
diff --git a/Source/LibationWinForms/Resources/cheers.png b/Source/LibationWinForms/Resources/cheers.png
new file mode 100644
index 00000000..2a1930f4
Binary files /dev/null and b/Source/LibationWinForms/Resources/cheers.png differ