71 lines
2.3 KiB
C#
71 lines
2.3 KiB
C#
using System;
|
|
using System.Windows.Forms;
|
|
using Dinah.Core.Drawing;
|
|
using Dinah.Core.IO;
|
|
using Dinah.Core.Windows.Forms;
|
|
|
|
namespace LibationWinForm.BookLiberation
|
|
{
|
|
public partial class DecryptForm : Form
|
|
{
|
|
public DecryptForm()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
System.IO.TextWriter origOut = Console.Out;
|
|
private void DecryptForm_Load(object sender, EventArgs e)
|
|
{
|
|
// redirect Console.WriteLine to console, textbox
|
|
System.IO.TextWriter origOut = Console.Out;
|
|
var controlWriter = new RichTextBoxTextWriter(this.rtbLog);
|
|
var multiLogger = new MultiTextWriter(origOut, controlWriter);
|
|
Console.SetOut(multiLogger);
|
|
}
|
|
|
|
private void DecryptForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
// restore original
|
|
Console.SetOut(origOut);
|
|
}
|
|
|
|
// book info
|
|
string title;
|
|
string authorNames;
|
|
string narratorNames;
|
|
|
|
public void SetTitle(string title)
|
|
{
|
|
this.UIThread(() => this.Text = " Decrypting " + title);
|
|
this.title = title;
|
|
updateBookInfo();
|
|
}
|
|
public void SetAuthorNames(string authorNames)
|
|
{
|
|
this.authorNames = authorNames;
|
|
updateBookInfo();
|
|
}
|
|
public void SetNarratorNames(string narratorNames)
|
|
{
|
|
this.narratorNames = narratorNames;
|
|
updateBookInfo();
|
|
}
|
|
|
|
// thread-safe UI updates
|
|
private void updateBookInfo()
|
|
=> bookInfoLbl.UIThread(() => bookInfoLbl.Text = $"{title}\r\nBy {authorNames}\r\nNarrated by {narratorNames}");
|
|
|
|
public void SetCoverImage(byte[] coverBytes)
|
|
=> pictureBox1.UIThread(() => pictureBox1.Image = ImageReader.ToImage(coverBytes));
|
|
|
|
public static void AppendError(Exception ex) => AppendText("ERROR: " + ex.Message);
|
|
public static void AppendText(string text) =>
|
|
// redirected to log textbox
|
|
Console.WriteLine($"{DateTime.Now} {text}")
|
|
//logTb.UIThread(() => logTb.AppendText($"{DateTime.Now} {text}{Environment.NewLine}"))
|
|
;
|
|
|
|
public void UpdateProgress(int percentage) => progressBar1.UIThread(() => progressBar1.Value = percentage);
|
|
}
|
|
}
|