Added download/install log coloring

This commit is contained in:
pointfeev 2021-07-30 04:54:09 -05:00
parent 37d7efc36e
commit a50eafb689
5 changed files with 64 additions and 39 deletions

View file

@ -6,7 +6,7 @@
<UseWindowsForms>true</UseWindowsForms>
<ApplicationIcon>ini.ico</ApplicationIcon>
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
<Version>1.0.2</Version>
<Version>1.0.3</Version>
<PackageIcon>ini.ico</PackageIcon>
<PackageIconUrl />
<Description>Automatically downloads and installs CreamAPI files for programs/games.</Description>

View file

@ -32,10 +32,10 @@ namespace CreamInstaller
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(InstallForm));
this.userProgressBar = new System.Windows.Forms.ProgressBar();
this.userInfoLabel = new System.Windows.Forms.Label();
this.logTextBox = new System.Windows.Forms.TextBox();
this.acceptButton = new System.Windows.Forms.Button();
this.retryButton = new System.Windows.Forms.Button();
this.cancelButton = new System.Windows.Forms.Button();
this.logTextBox = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
//
// userProgressBar
@ -57,22 +57,6 @@ namespace CreamInstaller
this.userInfoLabel.TabIndex = 2;
this.userInfoLabel.Text = "Loading . . . ";
//
// logTextBox
//
this.logTextBox.AcceptsReturn = true;
this.logTextBox.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.logTextBox.Location = new System.Drawing.Point(12, 56);
this.logTextBox.Multiline = true;
this.logTextBox.Name = "logTextBox";
this.logTextBox.ReadOnly = true;
this.logTextBox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
this.logTextBox.Size = new System.Drawing.Size(460, 164);
this.logTextBox.TabIndex = 3;
this.logTextBox.TabStop = false;
this.logTextBox.WordWrap = false;
//
// acceptButton
//
this.acceptButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
@ -108,14 +92,30 @@ namespace CreamInstaller
this.cancelButton.UseVisualStyleBackColor = true;
this.cancelButton.Click += new System.EventHandler(this.OnCancel);
//
// logTextBox
//
this.logTextBox.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.logTextBox.HideSelection = false;
this.logTextBox.Location = new System.Drawing.Point(12, 56);
this.logTextBox.Name = "logTextBox";
this.logTextBox.ReadOnly = true;
this.logTextBox.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.ForcedBoth;
this.logTextBox.Size = new System.Drawing.Size(460, 164);
this.logTextBox.TabIndex = 4;
this.logTextBox.TabStop = false;
this.logTextBox.Text = "";
this.logTextBox.WordWrap = false;
//
// InstallForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(484, 261);
this.Controls.Add(this.logTextBox);
this.Controls.Add(this.cancelButton);
this.Controls.Add(this.retryButton);
this.Controls.Add(this.logTextBox);
this.Controls.Add(this.acceptButton);
this.Controls.Add(this.userProgressBar);
this.Controls.Add(this.userInfoLabel);
@ -131,17 +131,16 @@ namespace CreamInstaller
this.TopMost = true;
this.Load += new System.EventHandler(this.OnLoad);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.ProgressBar userProgressBar;
private System.Windows.Forms.Label userInfoLabel;
private System.Windows.Forms.TextBox logTextBox;
private System.Windows.Forms.Button acceptButton;
private System.Windows.Forms.Button retryButton;
private System.Windows.Forms.Button cancelButton;
private System.Windows.Forms.RichTextBox logTextBox;
}
}

View file

@ -6,6 +6,7 @@ using System.Threading;
using System.IO.Compression;
using System.Collections.Generic;
using System.Linq;
using System.Drawing;
namespace CreamInstaller
{
@ -17,6 +18,7 @@ namespace CreamInstaller
InitializeComponent();
Program.InstallForm = this;
Text = Program.ApplicationName;
logTextBox.BackColor = LogColor.Background;
}
public void UpdateProgress(int progress)
@ -24,16 +26,14 @@ namespace CreamInstaller
Program.UpdateProgressInstantly(userProgressBar, progress);
}
public void UpdateUser(string text, bool log = true)
public void UpdateUser(string text, Color color, bool log = true)
{
userInfoLabel.Text = text;
if (log && !logTextBox.IsDisposed)
{
if (logTextBox.Text.Length > 0)
{
logTextBox.AppendText(Environment.NewLine);
}
logTextBox.AppendText(userInfoLabel.Text);
logTextBox.AppendText(Environment.NewLine, color);
logTextBox.AppendText(userInfoLabel.Text, color);
}
}
@ -47,7 +47,7 @@ namespace CreamInstaller
Program.Cleanup(cancel: false, logout: false);
UpdateProgress(0);
UpdateUser("Downloading CreamAPI files for " + selection.ProgramName + " . . . ");
UpdateUser("Downloading CreamAPI files for " + selection.ProgramName + " . . . ", LogColor.Operation);
Program.OutputFile = selection.ProgramDirectory + "\\" + selection.DownloadNode.Name;
if (File.Exists(Program.OutputFile))
{
@ -64,7 +64,7 @@ namespace CreamInstaller
{
if (!Program.Canceled)
{
UpdateUser($"Downloading CreamAPI files for {selection.ProgramName} . . . {(int)progress}%", log: false);
UpdateUser($"Downloading CreamAPI files for {selection.ProgramName} . . . {(int)progress}%", LogColor.Operation, log: false);
UpdateProgress((int)progress);
}
});
@ -74,7 +74,7 @@ namespace CreamInstaller
UpdateProgress(100);
UpdateProgress(0);
UpdateUser("Searching for CreamAPI files in downloaded archive . . . ");
UpdateUser("Searching for CreamAPI files in downloaded archive . . . ", LogColor.Operation);
string resourcePath = null;
List<ZipArchiveEntry> resources = new List<ZipArchiveEntry>();
Program.OutputArchive = ZipFile.OpenRead(Program.OutputFile);
@ -85,7 +85,7 @@ namespace CreamInstaller
if (entry.Name == "steam_api64.dll")
{
resourcePath = Path.GetDirectoryName(entry.FullName);
UpdateUser("Got CreamAPI file path: " + resourcePath);
UpdateUser("Got CreamAPI file path: " + resourcePath, LogColor.Resource);
}
UpdateProgress((currentEntryCount / (Program.OutputArchive.Entries.Count * 2)) * 100);
}
@ -95,7 +95,7 @@ namespace CreamInstaller
if (!string.IsNullOrEmpty(entry.Name) && Path.GetDirectoryName(entry.FullName) == resourcePath)
{
resources.Add(entry);
UpdateUser("Found CreamAPI file: " + entry.Name);
UpdateUser("Found CreamAPI file: " + entry.Name, LogColor.Resource);
}
UpdateProgress((currentEntryCount / (Program.OutputArchive.Entries.Count * 2)) * 100);
}
@ -106,7 +106,7 @@ namespace CreamInstaller
UpdateProgress(100);
UpdateProgress(0);
UpdateUser("Installing CreamAPI files for " + selection.ProgramName + " . . . ");
UpdateUser("Installing CreamAPI files for " + selection.ProgramName + " . . . ", LogColor.Operation);
int currentFileCount = 0;
foreach (string directory in selection.SteamApiDllDirectories)
{
@ -114,7 +114,7 @@ namespace CreamInstaller
{
currentFileCount++;
string file = directory + "\\" + entry.Name;
UpdateUser(file);
UpdateUser(file, LogColor.Resource);
if (File.Exists(file))
{
try
@ -132,7 +132,7 @@ namespace CreamInstaller
}
UpdateProgress(100);
UpdateUser("CreamAPI successfully downloaded and installed for " + selection.ProgramName);
UpdateUser("CreamAPI successfully downloaded and installed for " + selection.ProgramName, LogColor.Success);
Program.ProgramSelections.Remove(selection);
}
}
@ -149,12 +149,12 @@ namespace CreamInstaller
{
await Install();
Program.Cleanup();
UpdateUser("CreamAPI successfully downloaded and installed for " + ProgramCount + " program(s)");
UpdateUser("CreamAPI successfully downloaded and installed for " + ProgramCount + " program(s)", LogColor.Success);
}
catch (Exception exception)
{
Program.Cleanup(logout: false);
UpdateUser("Operation failed: " + exception.Message);
UpdateUser("Operation failed: " + exception.Message, LogColor.Error);
retryButton.Enabled = true;
}
acceptButton.Enabled = true;

View file

@ -0,0 +1,25 @@
using System.Drawing;
using System.Windows.Forms;
namespace CreamInstaller
{
public static class LogColor
{
public static Color Background => Color.DarkSlateGray;
public static Color Operation => Color.LightGray;
public static Color Resource => Color.LightBlue;
public static Color Success => Color.LightGreen;
public static Color Cleanup => Color.YellowGreen;
public static Color Warning => Color.Yellow;
public static Color Error => Color.DarkOrange;
public static void AppendText(this RichTextBox logTextBox, string text, Color color)
{
logTextBox.SelectionStart = logTextBox.TextLength;
logTextBox.SelectionLength = 0;
logTextBox.SelectionColor = color;
logTextBox.AppendText(text);
logTextBox.SelectionColor = logTextBox.ForeColor;
}
}
}

View file

@ -75,7 +75,7 @@ namespace CreamInstaller
if (OutputArchive != null || CancellationTokenSource != null || OutputTask != null || OutputFile != null)
{
InstallForm?.UpdateProgress(0);
InstallForm?.UpdateUser("Cleaning up . . . ");
InstallForm?.UpdateUser("Cleaning up . . . ", LogColor.Cleanup);
}
if (OutputArchive != null)
{
@ -113,15 +113,16 @@ namespace CreamInstaller
}
catch (UnauthorizedAccessException)
{
InstallForm?.UpdateUser($"WARNING: Couldn't clean up downloaded archive ({OutputFile})");
InstallForm?.UpdateUser($"WARNING: Couldn't clean up downloaded archive ({OutputFile})", LogColor.Warning);
}
InstallForm?.UpdateUser($"WARNING: Couldn't clean up downloaded archive ({OutputFile})", LogColor.Warning);
OutputFile = null;
}
InstallForm?.UpdateProgress(100);
if (logout && MegaApiClient != null && MegaApiClient.IsLoggedIn)
{
InstallForm?.UpdateProgress(0);
InstallForm?.UpdateUser("Logging out of MEGA . . . ");
InstallForm?.UpdateUser("Logging out of MEGA . . . ", LogColor.Cleanup);
MegaApiClient.Logout();
InstallForm?.UpdateProgress(100);
}