Decrypt form: remove debug window
This commit is contained in:
parent
01de928b7a
commit
6ba8c0ca91
@ -248,23 +248,29 @@ namespace FileManager
|
|||||||
// Directory.Delete(AppDir);
|
// Directory.Delete(AppDir);
|
||||||
//}
|
//}
|
||||||
|
|
||||||
|
|
||||||
libationFilesPathCache = null;
|
libationFilesPathCache = null;
|
||||||
|
|
||||||
|
|
||||||
var startingContents = File.ReadAllText(APPSETTINGS_JSON);
|
var startingContents = File.ReadAllText(APPSETTINGS_JSON);
|
||||||
var jObj = JObject.Parse(startingContents);
|
var jObj = JObject.Parse(startingContents);
|
||||||
|
|
||||||
jObj[LIBATION_FILES_KEY] = directory;
|
jObj[LIBATION_FILES_KEY] = directory;
|
||||||
|
|
||||||
var endingContents = JsonConvert.SerializeObject(jObj, Formatting.Indented);
|
var endingContents = JsonConvert.SerializeObject(jObj, Formatting.Indented);
|
||||||
if (startingContents != endingContents)
|
if (startingContents == endingContents)
|
||||||
{
|
return true;
|
||||||
try { Serilog.Log.Logger.Information("Libation files changed {@DebugInfo}", new { APPSETTINGS_JSON, LIBATION_FILES_KEY, directory }); }
|
|
||||||
catch { }
|
|
||||||
File.WriteAllText(APPSETTINGS_JSON, endingContents);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Serilog.Log.Logger.Information("Libation files changed {@DebugInfo}", new { APPSETTINGS_JSON, LIBATION_FILES_KEY, directory });
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
|
||||||
|
// now it's set in the file again but no settings have moved yet
|
||||||
|
File.WriteAllText(APPSETTINGS_JSON, endingContents);
|
||||||
|
|
||||||
|
//// attempting this will try to change the settings file which has not yet been moved
|
||||||
|
// var logPath = Path.Combine(LibationFiles, "Log.log");
|
||||||
|
// SetWithJsonPath("Serilog.WriteTo[1].Args", "path", logPath);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@
|
|||||||
<!-- <PublishSingleFile>true</PublishSingleFile> -->
|
<!-- <PublishSingleFile>true</PublishSingleFile> -->
|
||||||
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
|
||||||
|
|
||||||
<Version>5.2.2.1</Version>
|
<Version>5.2.2.47</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|||||||
@ -4,6 +4,7 @@ using System.Linq;
|
|||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using AudibleApi;
|
using AudibleApi;
|
||||||
using AudibleApi.Authorization;
|
using AudibleApi.Authorization;
|
||||||
|
using Dinah.Core.IO;
|
||||||
using Dinah.Core.Logging;
|
using Dinah.Core.Logging;
|
||||||
using FileManager;
|
using FileManager;
|
||||||
using InternalUtilities;
|
using InternalUtilities;
|
||||||
@ -18,9 +19,16 @@ namespace LibationLauncher
|
|||||||
{
|
{
|
||||||
static class Program
|
static class Program
|
||||||
{
|
{
|
||||||
|
[System.Runtime.InteropServices.DllImport("kernel32.dll", SetLastError = true)]
|
||||||
|
[return: System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.Bool)]
|
||||||
|
static extern bool AllocConsole();
|
||||||
|
|
||||||
[STAThread]
|
[STAThread]
|
||||||
static void Main()
|
static void Main()
|
||||||
{
|
{
|
||||||
|
//// uncomment to see Console. MUST be called before anything writes to Console. Might only work from VS
|
||||||
|
//AllocConsole();
|
||||||
|
|
||||||
Application.SetHighDpiMode(HighDpiMode.SystemAware);
|
Application.SetHighDpiMode(HighDpiMode.SystemAware);
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
@ -47,8 +55,8 @@ namespace LibationLauncher
|
|||||||
|
|
||||||
ensureSerilogConfig(config);
|
ensureSerilogConfig(config);
|
||||||
configureLogging(config);
|
configureLogging(config);
|
||||||
checkForUpdate(config);
|
|
||||||
logStartupState(config);
|
logStartupState(config);
|
||||||
|
checkForUpdate(config);
|
||||||
|
|
||||||
Application.Run(new Form1());
|
Application.Run(new Form1());
|
||||||
}
|
}
|
||||||
@ -257,7 +265,7 @@ namespace LibationLauncher
|
|||||||
new JObject
|
new JObject
|
||||||
{
|
{
|
||||||
// for this sink to work, a path must be provided. we override this below
|
// for this sink to work, a path must be provided. we override this below
|
||||||
{ "path", Path.Combine(Configuration.Instance.LibationFiles, "_Log.log") },
|
{ "path", Path.Combine(config.LibationFiles, "_Log.log") },
|
||||||
{ "rollingInterval", "Month" },
|
{ "rollingInterval", "Month" },
|
||||||
// Serilog template formatting examples
|
// Serilog template formatting examples
|
||||||
// - default: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
|
// - default: "{Timestamp:yyyy-MM-dd HH:mm:ss.fff zzz} [{Level:u3}] {Message:lj}{NewLine}{Exception}"
|
||||||
@ -276,109 +284,35 @@ namespace LibationLauncher
|
|||||||
config.SetObject("Serilog", serilogObj);
|
config.SetObject("Serilog", serilogObj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// to restore original: Console.SetOut(origOut);
|
||||||
|
private static System.IO.TextWriter origOut { get; } = Console.Out;
|
||||||
|
|
||||||
private static void configureLogging(Configuration config)
|
private static void configureLogging(Configuration config)
|
||||||
{
|
{
|
||||||
// override path. always use current libation files
|
{
|
||||||
var logPath = Path.Combine(Configuration.Instance.LibationFiles, "Log.log");
|
// always override path here.
|
||||||
config.SetWithJsonPath("Serilog.WriteTo[1].Args", "path", logPath);
|
// init in ensureSerilogConfig() only happens when serilog setting is first created (prob on 1st run).
|
||||||
|
// the override here uses current libation files every time we restart libation
|
||||||
|
var logPath = Path.Combine(config.LibationFiles, "Log.log");
|
||||||
|
config.SetWithJsonPath("Serilog.WriteTo[1].Args", "path", logPath);
|
||||||
|
}
|
||||||
|
|
||||||
//// hack which achieves the same
|
|
||||||
//configuration["Serilog:WriteTo:1:Args:path"] = logPath;
|
|
||||||
|
|
||||||
// CONFIGURATION-DRIVEN (json)
|
|
||||||
var configuration = new ConfigurationBuilder()
|
var configuration = new ConfigurationBuilder()
|
||||||
.AddJsonFile(config.SettingsFilePath)
|
.AddJsonFile(config.SettingsFilePath, optional: false, reloadOnChange: true)
|
||||||
.Build();
|
.Build();
|
||||||
Log.Logger = new LoggerConfiguration()
|
Log.Logger = new LoggerConfiguration()
|
||||||
.ReadFrom.Configuration(configuration)
|
.ReadFrom.Configuration(configuration)
|
||||||
.CreateLogger();
|
.CreateLogger();
|
||||||
|
|
||||||
//// MANUAL HARD CODED
|
// Fwd Console to serilog. Serilog also write to Console (should probably change this) so it might be asking for trouble.
|
||||||
//Log.Logger = new LoggerConfiguration()
|
// First SerilogTextWriter needs to be more robust and tested. Esp the Write() methods
|
||||||
// // requires: using Dinah.Core.Logging;
|
Console.SetOut(new MultiTextWriter(origOut, new SerilogTextWriter()));
|
||||||
// .Enrich.WithCaller()
|
|
||||||
// .MinimumLevel.Information()
|
|
||||||
// .WriteTo.File(logPath,
|
|
||||||
// rollingInterval: RollingInterval.Month,
|
|
||||||
// outputTemplate: code_outputTemplate)
|
|
||||||
// .CreateLogger();
|
|
||||||
|
|
||||||
// .Here() captures debug info via System.Runtime.CompilerServices attributes. Warning: expensive
|
// .Here() captures debug info via System.Runtime.CompilerServices attributes. Warning: expensive
|
||||||
//var withLineNumbers_outputTemplate = "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message}{NewLine}in method {MemberName} at {FilePath}:{LineNumber}{NewLine}{Exception}{NewLine}";
|
//var withLineNumbers_outputTemplate = "[{Timestamp:HH:mm:ss} {Level}] {SourceContext}{NewLine}{Message}{NewLine}in method {MemberName} at {FilePath}:{LineNumber}{NewLine}{Exception}{NewLine}";
|
||||||
//Log.Logger.Here().Debug("Begin Libation. Debug with line numbers");
|
//Log.Logger.Here().Debug("Begin Libation. Debug with line numbers");
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void checkForUpdate(Configuration config)
|
|
||||||
{
|
|
||||||
string zipUrl;
|
|
||||||
string selectedPath;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
// timed out
|
|
||||||
var latest = getLatestRelease(TimeSpan.FromSeconds(30));
|
|
||||||
if (latest is null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var latestVersionString = latest.TagName.Trim('v');
|
|
||||||
if (!Version.TryParse(latestVersionString, out var latestRelease))
|
|
||||||
return;
|
|
||||||
|
|
||||||
// we're up to date
|
|
||||||
if (latestRelease <= BuildVersion)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// we have an update
|
|
||||||
var zip = latest.Assets.FirstOrDefault(a => a.BrowserDownloadUrl.EndsWith(".zip"));
|
|
||||||
zipUrl = zip?.BrowserDownloadUrl;
|
|
||||||
if (zipUrl is null)
|
|
||||||
{
|
|
||||||
MessageBox.Show(latest.HtmlUrl, "New version available");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var result = MessageBox.Show($"New version available @ {latest.HtmlUrl}\r\nDownload the zip file?", "New version available", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
|
||||||
if (result != DialogResult.Yes)
|
|
||||||
return;
|
|
||||||
|
|
||||||
using var fileSelector = new SaveFileDialog { FileName = zip.Name, Filter = "Zip Files (*.zip)|*.zip|All files (*.*)|*.*" };
|
|
||||||
if (fileSelector.ShowDialog() != DialogResult.OK)
|
|
||||||
return;
|
|
||||||
selectedPath = fileSelector.FileName;
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBoxAlertAdmin.Show("Error checking for update", "Error checking for update", ex);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
LibationWinForms.BookLiberation.ProcessorAutomationController.DownloadFile(zipUrl, selectedPath, true);
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
MessageBoxAlertAdmin.Show("Error downloading update", "Error downloading update", ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Octokit.Release getLatestRelease(TimeSpan timeout)
|
|
||||||
{
|
|
||||||
var task = System.Threading.Tasks.Task.Run(() => getLatestRelease());
|
|
||||||
if (task.Wait(timeout))
|
|
||||||
return task.Result;
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
private static Octokit.Release getLatestRelease()
|
|
||||||
{
|
|
||||||
var gitHubClient = new Octokit.GitHubClient(new Octokit.ProductHeaderValue("Libation"));
|
|
||||||
|
|
||||||
// https://octokitnet.readthedocs.io/en/latest/releases/
|
|
||||||
var releases = gitHubClient.Repository.Release.GetAll("rmcrackan", "Libation").GetAwaiter().GetResult();
|
|
||||||
var latest = releases.First(r => !r.Draft && !r.Prerelease);
|
|
||||||
return latest;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void logStartupState(Configuration config)
|
private static void logStartupState(Configuration config)
|
||||||
{
|
{
|
||||||
// begin logging session with a form feed
|
// begin logging session with a form feed
|
||||||
@ -421,6 +355,86 @@ Libation.
|
|||||||
".Trim(), "Verbose logging enabled", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
".Trim(), "Verbose logging enabled", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void checkForUpdate(Configuration config)
|
||||||
|
{
|
||||||
|
string zipUrl;
|
||||||
|
string selectedPath;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// timed out
|
||||||
|
var latest = getLatestRelease(TimeSpan.FromSeconds(30));
|
||||||
|
if (latest is null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var latestVersionString = latest.TagName.Trim('v');
|
||||||
|
if (!Version.TryParse(latestVersionString, out var latestRelease))
|
||||||
|
return;
|
||||||
|
|
||||||
|
// we're up to date
|
||||||
|
if (latestRelease <= BuildVersion)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// we have an update
|
||||||
|
var zip = latest.Assets.FirstOrDefault(a => a.BrowserDownloadUrl.EndsWith(".zip"));
|
||||||
|
zipUrl = zip?.BrowserDownloadUrl;
|
||||||
|
|
||||||
|
Log.Logger.Information("Update available: {@DebugInfo}", new {
|
||||||
|
latestRelease = latestRelease.ToString(),
|
||||||
|
latest.HtmlUrl,
|
||||||
|
zipUrl
|
||||||
|
});
|
||||||
|
|
||||||
|
if (zipUrl is null)
|
||||||
|
{
|
||||||
|
MessageBox.Show(latest.HtmlUrl, "New version available");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var result = MessageBox.Show($"New version available @ {latest.HtmlUrl}\r\nDownload the zip file?", "New version available", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
|
||||||
|
if (result != DialogResult.Yes)
|
||||||
|
return;
|
||||||
|
|
||||||
|
using var fileSelector = new SaveFileDialog { FileName = zip.Name, Filter = "Zip Files (*.zip)|*.zip|All files (*.*)|*.*" };
|
||||||
|
if (fileSelector.ShowDialog() != DialogResult.OK)
|
||||||
|
return;
|
||||||
|
selectedPath = fileSelector.FileName;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBoxAlertAdmin.Show("Error checking for update", "Error checking for update", ex);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
LibationWinForms.BookLiberation.ProcessorAutomationController.DownloadFile(zipUrl, selectedPath, true);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBoxAlertAdmin.Show("Error downloading update", "Error downloading update", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Octokit.Release getLatestRelease(TimeSpan timeout)
|
||||||
|
{
|
||||||
|
var task = System.Threading.Tasks.Task.Run(() => getLatestRelease());
|
||||||
|
if (task.Wait(timeout))
|
||||||
|
return task.Result;
|
||||||
|
|
||||||
|
Log.Logger.Information("Timed out");
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
private static Octokit.Release getLatestRelease()
|
||||||
|
{
|
||||||
|
var gitHubClient = new Octokit.GitHubClient(new Octokit.ProductHeaderValue("Libation"));
|
||||||
|
|
||||||
|
// https://octokitnet.readthedocs.io/en/latest/releases/
|
||||||
|
var releases = gitHubClient.Repository.Release.GetAll("rmcrackan", "Libation").GetAwaiter().GetResult();
|
||||||
|
var latest = releases.First(r => !r.Draft && !r.Prerelease);
|
||||||
|
return latest;
|
||||||
|
}
|
||||||
|
|
||||||
private static Version BuildVersion => System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
private static Version BuildVersion => System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -31,7 +31,6 @@
|
|||||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||||
this.bookInfoLbl = new System.Windows.Forms.Label();
|
this.bookInfoLbl = new System.Windows.Forms.Label();
|
||||||
this.progressBar1 = new System.Windows.Forms.ProgressBar();
|
this.progressBar1 = new System.Windows.Forms.ProgressBar();
|
||||||
this.rtbLog = new System.Windows.Forms.RichTextBox();
|
|
||||||
this.remainingTimeLbl = new System.Windows.Forms.Label();
|
this.remainingTimeLbl = new System.Windows.Forms.Label();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
@ -60,28 +59,16 @@
|
|||||||
//
|
//
|
||||||
this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
this.progressBar1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.progressBar1.Location = new System.Drawing.Point(14, 607);
|
this.progressBar1.Location = new System.Drawing.Point(14, 143);
|
||||||
this.progressBar1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
|
this.progressBar1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
|
||||||
this.progressBar1.Name = "progressBar1";
|
this.progressBar1.Name = "progressBar1";
|
||||||
this.progressBar1.Size = new System.Drawing.Size(611, 27);
|
this.progressBar1.Size = new System.Drawing.Size(611, 27);
|
||||||
this.progressBar1.TabIndex = 2;
|
this.progressBar1.TabIndex = 2;
|
||||||
//
|
//
|
||||||
// rtbLog
|
|
||||||
//
|
|
||||||
this.rtbLog.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Left)
|
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.rtbLog.Location = new System.Drawing.Point(14, 136);
|
|
||||||
this.rtbLog.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
|
|
||||||
this.rtbLog.Name = "rtbLog";
|
|
||||||
this.rtbLog.Size = new System.Drawing.Size(678, 463);
|
|
||||||
this.rtbLog.TabIndex = 1;
|
|
||||||
this.rtbLog.Text = "";
|
|
||||||
//
|
|
||||||
// remainingTimeLbl
|
// remainingTimeLbl
|
||||||
//
|
//
|
||||||
this.remainingTimeLbl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
this.remainingTimeLbl.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.remainingTimeLbl.Location = new System.Drawing.Point(632, 607);
|
this.remainingTimeLbl.Location = new System.Drawing.Point(632, 143);
|
||||||
this.remainingTimeLbl.Name = "remainingTimeLbl";
|
this.remainingTimeLbl.Name = "remainingTimeLbl";
|
||||||
this.remainingTimeLbl.Size = new System.Drawing.Size(60, 31);
|
this.remainingTimeLbl.Size = new System.Drawing.Size(60, 31);
|
||||||
this.remainingTimeLbl.TabIndex = 3;
|
this.remainingTimeLbl.TabIndex = 3;
|
||||||
@ -92,9 +79,8 @@
|
|||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(707, 647);
|
this.ClientSize = new System.Drawing.Size(707, 183);
|
||||||
this.Controls.Add(this.remainingTimeLbl);
|
this.Controls.Add(this.remainingTimeLbl);
|
||||||
this.Controls.Add(this.rtbLog);
|
|
||||||
this.Controls.Add(this.progressBar1);
|
this.Controls.Add(this.progressBar1);
|
||||||
this.Controls.Add(this.bookInfoLbl);
|
this.Controls.Add(this.bookInfoLbl);
|
||||||
this.Controls.Add(this.pictureBox1);
|
this.Controls.Add(this.pictureBox1);
|
||||||
@ -102,8 +88,6 @@
|
|||||||
this.Name = "DecryptForm";
|
this.Name = "DecryptForm";
|
||||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
this.Text = "DecryptForm";
|
this.Text = "DecryptForm";
|
||||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.DecryptForm_FormClosing);
|
|
||||||
this.Load += new System.EventHandler(this.DecryptForm_Load);
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
@ -115,7 +99,6 @@
|
|||||||
private System.Windows.Forms.PictureBox pictureBox1;
|
private System.Windows.Forms.PictureBox pictureBox1;
|
||||||
private System.Windows.Forms.Label bookInfoLbl;
|
private System.Windows.Forms.Label bookInfoLbl;
|
||||||
private System.Windows.Forms.ProgressBar progressBar1;
|
private System.Windows.Forms.ProgressBar progressBar1;
|
||||||
private System.Windows.Forms.RichTextBox rtbLog;
|
|
||||||
private System.Windows.Forms.Label remainingTimeLbl;
|
private System.Windows.Forms.Label remainingTimeLbl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,43 +1,21 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Dinah.Core.Drawing;
|
|
||||||
using Dinah.Core.IO;
|
|
||||||
using Dinah.Core.Windows.Forms;
|
using Dinah.Core.Windows.Forms;
|
||||||
|
|
||||||
namespace LibationWinForms.BookLiberation
|
namespace LibationWinForms.BookLiberation
|
||||||
{
|
{
|
||||||
public partial class DecryptForm : Form
|
public partial class DecryptForm : Form
|
||||||
{
|
{
|
||||||
public DecryptForm()
|
public DecryptForm() => InitializeComponent();
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
|
|
||||||
System.IO.TextWriter origOut { get; } = Console.Out;
|
|
||||||
private void DecryptForm_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// redirect Console.WriteLine to console, textbox
|
|
||||||
var multiLogger = new MultiTextWriter(
|
|
||||||
origOut,
|
|
||||||
new RichTextBoxTextWriter(this.rtbLog),
|
|
||||||
new SerilogTextWriter());
|
|
||||||
Console.SetOut(multiLogger);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void DecryptForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
||||||
{
|
|
||||||
// restore original
|
|
||||||
Console.SetOut(origOut);
|
|
||||||
}
|
|
||||||
|
|
||||||
// book info
|
// book info
|
||||||
string title;
|
private string title;
|
||||||
string authorNames;
|
private string authorNames;
|
||||||
string narratorNames;
|
private string narratorNames;
|
||||||
|
|
||||||
public void SetTitle(string title)
|
public void SetTitle(string title)
|
||||||
{
|
{
|
||||||
this.UIThread(() => this.Text = " Decrypting " + title);
|
this.UIThread(() => this.Text = "Decrypting " + title);
|
||||||
this.title = title;
|
this.title = title;
|
||||||
updateBookInfo();
|
updateBookInfo();
|
||||||
}
|
}
|
||||||
@ -62,15 +40,15 @@ namespace LibationWinForms.BookLiberation
|
|||||||
public void UpdateProgress(int percentage)
|
public void UpdateProgress(int percentage)
|
||||||
{
|
{
|
||||||
if (percentage == 0)
|
if (percentage == 0)
|
||||||
remainingTimeLbl.UIThread(() => remainingTimeLbl.Text = "ETA:\r\n0 sec");
|
updateRemainingTime(0);
|
||||||
|
|
||||||
else
|
else
|
||||||
progressBar1.UIThread(() => progressBar1.Value = percentage);
|
progressBar1.UIThread(() => progressBar1.Value = percentage);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void UpdateRemainingTime(TimeSpan remaining)
|
public void UpdateRemainingTime(TimeSpan remaining)
|
||||||
{
|
=> updateRemainingTime((int)remaining.TotalSeconds);
|
||||||
remainingTimeLbl.UIThread(() => remainingTimeLbl.Text = $"ETA:\r\n{(int)remaining.TotalSeconds} sec");
|
|
||||||
}
|
private void updateRemainingTime(int remaining)
|
||||||
|
=> remainingTimeLbl.UIThread(() => remainingTimeLbl.Text = $"ETA:\r\n{remaining} sec");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user