Compare commits
2 Commits
7909f111cb
...
7158a9340a
Author | SHA1 | Date | |
---|---|---|---|
7158a9340a | |||
fffafcd89e |
@ -6,6 +6,13 @@ namespace FireWalletLite;
|
||||
|
||||
public partial class Loader : Form
|
||||
{
|
||||
#region Constants
|
||||
|
||||
private readonly MainForm mainForm = new();
|
||||
private readonly bool hideScreen = true; // Hide screen or not (for debug)
|
||||
private readonly Process HSDProcess;
|
||||
|
||||
#endregion
|
||||
public Loader()
|
||||
{
|
||||
InitializeComponent();
|
||||
@ -62,14 +69,6 @@ public partial class Loader : Form
|
||||
mainForm.Show();
|
||||
}
|
||||
|
||||
#region Constants
|
||||
|
||||
private readonly MainForm mainForm = new();
|
||||
private readonly bool hideScreen = true;
|
||||
private readonly Process HSDProcess;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Git
|
||||
|
||||
public void CloneRepository(string repositoryUrl, string destinationPath)
|
||||
@ -184,30 +183,36 @@ public partial class Loader : Form
|
||||
mainForm.AddLog(ex.Message);
|
||||
if (ex.Message.Contains("to start process 'git'"))
|
||||
{
|
||||
var notifyForm = new NotifyForm("Git needs to be installed\nCheck logs for more details");
|
||||
var notifyForm = new NotifyForm("Git is not installed\nPlease install it to install HSD dependencies",
|
||||
"Install", "https://git-scm.com/download/win");
|
||||
notifyForm.ShowDialog();
|
||||
notifyForm.Dispose();
|
||||
Environment.Exit(21);
|
||||
}
|
||||
else if (ex.Message.Contains("to start process 'node'"))
|
||||
{
|
||||
var notifyForm = new NotifyForm("Node needs to be installed\nCheck logs for more details");
|
||||
var notifyForm = new NotifyForm("Node is not installed\nPlease install it to install HSD dependencies",
|
||||
"Install", "https://nodejs.org/en/download");
|
||||
notifyForm.ShowDialog();
|
||||
notifyForm.Dispose();
|
||||
Environment.Exit(22);
|
||||
}
|
||||
else if (ex.Message.Contains("to start process 'npm'"))
|
||||
{
|
||||
var notifyForm = new NotifyForm("NPM needs to be installed\nCheck logs for more details");
|
||||
var notifyForm = new NotifyForm("NPM is not installed\nPlease install it to install HSD dependencies",
|
||||
"Install", "https://docs.npmjs.com/downloading-and-installing-node-js-and-npm");
|
||||
notifyForm.ShowDialog();
|
||||
notifyForm.Dispose();
|
||||
Environment.Exit(23);
|
||||
}
|
||||
else
|
||||
{
|
||||
var notifyForm = new NotifyForm("Git/NPM Install FAILED\nCheck logs for more details");
|
||||
notifyForm.ShowDialog();
|
||||
notifyForm.Dispose();
|
||||
Environment.Exit(24);
|
||||
}
|
||||
|
||||
Environment.Exit(24);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -8,11 +8,14 @@ public partial class NotifyForm : Form
|
||||
private bool allowClose = true;
|
||||
private readonly string altLink;
|
||||
|
||||
private readonly string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) +
|
||||
"\\FireWallet\\";
|
||||
|
||||
private readonly bool Linkcopy;
|
||||
private Dictionary<string, string> theme;
|
||||
public Dictionary<string, string> Theme { get; set; } = new()
|
||||
{
|
||||
{ "background", "#000000" },
|
||||
{ "foreground", "#8e05c2"},
|
||||
{ "background-alt", "#3e065f"},
|
||||
{ "foreground-alt", "#ffffff"}
|
||||
};
|
||||
|
||||
public NotifyForm(string Message)
|
||||
{
|
||||
@ -100,150 +103,34 @@ public partial class NotifyForm : Form
|
||||
|
||||
private void UpdateTheme()
|
||||
{
|
||||
// Check if file exists
|
||||
if (!Directory.Exists(dir)) CreateConfig(dir);
|
||||
if (!File.Exists(dir + "theme.txt")) CreateConfig(dir);
|
||||
if (!Theme.ContainsKey("background") || !Theme.ContainsKey("background-alt") ||
|
||||
!Theme.ContainsKey("foreground") || !Theme.ContainsKey("foreground-alt")) return;
|
||||
|
||||
// Read file
|
||||
var sr = new StreamReader(dir + "theme.txt");
|
||||
theme = new Dictionary<string, string>();
|
||||
while (!sr.EndOfStream)
|
||||
{
|
||||
var line = sr.ReadLine();
|
||||
var split = line.Split(':');
|
||||
theme.Add(split[0].Trim(), split[1].Trim());
|
||||
}
|
||||
|
||||
sr.Dispose();
|
||||
|
||||
if (!theme.ContainsKey("background") || !theme.ContainsKey("background-alt") ||
|
||||
!theme.ContainsKey("foreground") || !theme.ContainsKey("foreground-alt")) return;
|
||||
|
||||
// Apply theme
|
||||
BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||
// Apply Theme
|
||||
BackColor = ColorTranslator.FromHtml(Theme["background"]);
|
||||
|
||||
// Foreground
|
||||
ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||
ForeColor = ColorTranslator.FromHtml(Theme["foreground"]);
|
||||
|
||||
|
||||
// Need to specify this for each groupbox to override the black text
|
||||
foreach (Control c in Controls) ThemeControl(c);
|
||||
|
||||
|
||||
// Transparancy
|
||||
applyTransparency(theme);
|
||||
}
|
||||
|
||||
private void ThemeControl(Control c)
|
||||
{
|
||||
if (c.GetType() == typeof(GroupBox) || c.GetType() == typeof(Panel))
|
||||
{
|
||||
c.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||
c.ForeColor = ColorTranslator.FromHtml(Theme["foreground"]);
|
||||
foreach (Control sub in c.Controls) ThemeControl(sub);
|
||||
}
|
||||
|
||||
if (c.GetType() == typeof(TextBox) || c.GetType() == typeof(Button)
|
||||
|| c.GetType() == typeof(ComboBox) || c.GetType() == typeof(StatusStrip))
|
||||
{
|
||||
c.ForeColor = ColorTranslator.FromHtml(theme["foreground-alt"]);
|
||||
c.BackColor = ColorTranslator.FromHtml(theme["background-alt"]);
|
||||
c.ForeColor = ColorTranslator.FromHtml(Theme["foreground-alt"]);
|
||||
c.BackColor = ColorTranslator.FromHtml(Theme["background-alt"]);
|
||||
}
|
||||
}
|
||||
|
||||
private void applyTransparency(Dictionary<string, string> theme)
|
||||
{
|
||||
if (theme.ContainsKey("transparent-mode"))
|
||||
switch (theme["transparent-mode"])
|
||||
{
|
||||
case "mica":
|
||||
var accent = new AccentPolicy { AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND };
|
||||
var accentStructSize = Marshal.SizeOf(accent);
|
||||
var accentPtr = Marshal.AllocHGlobal(accentStructSize);
|
||||
Marshal.StructureToPtr(accent, accentPtr, false);
|
||||
var data = new WindowCompositionAttributeData
|
||||
{
|
||||
Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY,
|
||||
SizeOfData = accentStructSize,
|
||||
Data = accentPtr
|
||||
};
|
||||
User32.SetWindowCompositionAttribute(Handle, ref data);
|
||||
Marshal.FreeHGlobal(accentPtr);
|
||||
break;
|
||||
case "key":
|
||||
if (theme.ContainsKey("transparency-key"))
|
||||
switch (theme["transparency-key"])
|
||||
{
|
||||
case "alt":
|
||||
TransparencyKey = ColorTranslator.FromHtml(theme["background-alt"]);
|
||||
break;
|
||||
case "main":
|
||||
TransparencyKey = ColorTranslator.FromHtml(theme["background"]);
|
||||
break;
|
||||
default:
|
||||
TransparencyKey = ColorTranslator.FromHtml(theme["transparency-key"]);
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
case "percent":
|
||||
if (theme.ContainsKey("transparency-percent"))
|
||||
Opacity = Convert.ToDouble(theme["transparency-percent"]) / 100;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateConfig(string dir)
|
||||
{
|
||||
if (!Directory.Exists(dir)) Directory.CreateDirectory(dir);
|
||||
var sw = new StreamWriter(dir + "theme.txt");
|
||||
sw.WriteLine("background: #000000");
|
||||
sw.WriteLine("foreground: #8e05c2");
|
||||
sw.WriteLine("background-alt: #3e065f");
|
||||
sw.WriteLine("foreground-alt: #ffffff");
|
||||
sw.WriteLine("transparent-mode: off");
|
||||
sw.WriteLine("transparency-key: main");
|
||||
sw.WriteLine("transparency-percent: 90");
|
||||
|
||||
sw.Dispose();
|
||||
}
|
||||
|
||||
// Required for mica effect
|
||||
internal enum AccentState
|
||||
{
|
||||
ACCENT_DISABLED = 0,
|
||||
ACCENT_ENABLE_GRADIENT = 1,
|
||||
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2,
|
||||
ACCENT_ENABLE_BLURBEHIND = 3,
|
||||
ACCENT_INVALID_STATE = 4
|
||||
}
|
||||
|
||||
internal enum WindowCompositionAttribute
|
||||
{
|
||||
WCA_ACCENT_POLICY = 19
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct AccentPolicy
|
||||
{
|
||||
public AccentState AccentState;
|
||||
public int AccentFlags;
|
||||
public int GradientColor;
|
||||
public int AnimationId;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct WindowCompositionAttributeData
|
||||
{
|
||||
public WindowCompositionAttribute Attribute;
|
||||
public IntPtr Data;
|
||||
public int SizeOfData;
|
||||
}
|
||||
|
||||
internal static class User32
|
||||
{
|
||||
[DllImport("user32.dll")]
|
||||
internal static extern int SetWindowCompositionAttribute(IntPtr hwnd, ref WindowCompositionAttributeData data);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
@ -37,6 +37,27 @@
|
||||
"PrivateKeyFile" = "8:"
|
||||
"TimeStampServer" = "8:"
|
||||
"InstallerBootstrapper" = "3:2"
|
||||
"BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
|
||||
{
|
||||
"Enabled" = "11:TRUE"
|
||||
"PromptEnabled" = "11:TRUE"
|
||||
"PrerequisitesLocation" = "2:1"
|
||||
"Url" = "8:"
|
||||
"ComponentsUrl" = "8:"
|
||||
"Items"
|
||||
{
|
||||
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
|
||||
{
|
||||
"Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
|
||||
"ProductCode" = "8:.NETFramework,Version=v4.7.2"
|
||||
}
|
||||
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.NetCore.DesktopRuntime.6.0.x64"
|
||||
{
|
||||
"Name" = "8:.NET Desktop Runtime 6.0.18 (x64)"
|
||||
"ProductCode" = "8:Microsoft.NetCore.DesktopRuntime.6.0.x64"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"Release"
|
||||
{
|
||||
@ -53,6 +74,22 @@
|
||||
"PrivateKeyFile" = "8:"
|
||||
"TimeStampServer" = "8:"
|
||||
"InstallerBootstrapper" = "3:2"
|
||||
"BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}"
|
||||
{
|
||||
"Enabled" = "11:TRUE"
|
||||
"PromptEnabled" = "11:TRUE"
|
||||
"PrerequisitesLocation" = "2:1"
|
||||
"Url" = "8:"
|
||||
"ComponentsUrl" = "8:"
|
||||
"Items"
|
||||
{
|
||||
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.7.2"
|
||||
{
|
||||
"Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)"
|
||||
"ProductCode" = "8:.NETFramework,Version=v4.7.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
"Deployable"
|
||||
@ -141,7 +178,7 @@
|
||||
"Name" = "8:Microsoft Visual Studio"
|
||||
"ProductName" = "8:FireWalletLite"
|
||||
"ProductCode" = "8:{23670E44-E1CD-40B5-881D-40657BD30860}"
|
||||
"PackageCode" = "8:{EBE2AF53-E970-4708-9E43-05366A939681}"
|
||||
"PackageCode" = "8:{2CCCD1E4-40D9-4E58-8D3A-2039BD1CD215}"
|
||||
"UpgradeCode" = "8:{6966FD44-6B8C-43C0-981A-E36449BF2DA8}"
|
||||
"AspNetVersion" = "8:"
|
||||
"RestartWWWService" = "11:FALSE"
|
||||
|
14
README.md
14
README.md
@ -1,6 +1,9 @@
|
||||
# FireWalletLite
|
||||
A lite wallet for Handshake.
|
||||
This is aimed to be mainly used for holding HNS and domains without sending anything.
|
||||
This is aimed to be mainly used for holding HNS and domains without sending anything.
|
||||
For example if you want to gift a domain to someone, you can have them use this wallet to store the wallet.
|
||||
You will still need to renew the domains at least every 2 years.
|
||||
|
||||
|
||||
## Features
|
||||
First run flow:
|
||||
@ -28,4 +31,11 @@ This wallet does not (and will never) support
|
||||
- DNS management
|
||||
|
||||
|
||||
If you want to use a wallet with more features, please use [Fire Wallet](https://firewallet.au) or [Bob Wallet](https://bobwallet.io) instead.
|
||||
If you want to use a wallet with more features, please use [Fire Wallet](https://firewallet.au) or [Bob Wallet](https://bobwallet.io) instead.
|
||||
|
||||
## Install
|
||||
FireWalletLite is available for Windows only.
|
||||
You can download the latest prebuilt release from [here](https://git.woodburn.au/nathanwoodburn/FireWalletLite/releases).
|
||||
You should download the `FireWalletLite.zip` file and extract it to a folder then run the `setup.exe` file as this file will install the .net runtime if it is not already installed.
|
||||
|
||||
**You can also build it yourself by cloning this repo and building it in Visual Studio.**
|
Loading…
Reference in New Issue
Block a user