mirror of
https://github.com/Nathanwoodburn/FireWallet.git
synced 2025-12-06 08:33:00 +11:00
Compare commits
61 Commits
v2.5
...
newBrandin
| Author | SHA1 | Date | |
|---|---|---|---|
|
d41c72faff
|
|||
|
a4a35ad62e
|
|||
|
9f0f7214e2
|
|||
|
742cd9bafd
|
|||
|
9f33c74bb0
|
|||
|
8f241fc90a
|
|||
|
dc09194759
|
|||
|
638a367029
|
|||
|
026849575d
|
|||
|
d1a150114e
|
|||
|
5d59bdee64
|
|||
|
74548a22e2
|
|||
|
ac2aa06888
|
|||
|
429cf0d67b
|
|||
|
38838096d6
|
|||
|
fae4bff32b
|
|||
|
df8c675588
|
|||
|
de7109eddc
|
|||
|
1a98a6a1c6
|
|||
|
859562ac22
|
|||
|
0a5412478c
|
|||
|
90cc614ebf
|
|||
|
a024ce7afc
|
|||
|
88ee50f4a6
|
|||
|
23cbace1ea
|
|||
|
6894e9c079
|
|||
|
95d0498672
|
|||
|
88c6b5afe0
|
|||
|
f06bc5b711
|
|||
|
42536e47bb
|
|||
|
404a47ec79
|
|||
|
c3abd0b4de
|
|||
|
41a38e2af1
|
|||
|
699b1051d4
|
|||
|
14cb5453dc
|
|||
|
5323a8ff0d
|
|||
|
2572b17898
|
|||
|
a8f425434e
|
|||
|
07c9618837
|
|||
|
eccc584b2c
|
|||
|
cf2f68f2b3
|
|||
|
5eb80bcd06
|
|||
|
7c38bfc755
|
|||
|
d4620af384
|
|||
|
15cb4efaf1
|
|||
|
18607358bf
|
|||
|
6db6d02e9e
|
|||
|
3eda3d7419
|
|||
|
3f6c2bdded
|
|||
|
2bfca908a9
|
|||
|
531d41a413
|
|||
|
960af0b169
|
|||
|
14a685690c
|
|||
|
816e16a9aa
|
|||
|
036819169d
|
|||
|
1675ac48f3
|
|||
|
f44aac35f0
|
|||
|
bf2e41058d
|
|||
|
2109879f93
|
|||
|
112b719d78
|
|||
|
2395c4ca29
|
@@ -1,12 +1,11 @@
|
|||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Security.Principal;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Microsoft.VisualBasic;
|
using System.Windows.Forms.VisualStyles;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
using ContentAlignment = System.Drawing.ContentAlignment;
|
||||||
using Point = System.Drawing.Point;
|
using Point = System.Drawing.Point;
|
||||||
|
|
||||||
namespace FireWallet
|
namespace FireWallet
|
||||||
@@ -60,7 +59,7 @@ namespace FireWallet
|
|||||||
List<Batch> temp = new List<Batch>();
|
List<Batch> temp = new List<Batch>();
|
||||||
foreach (Batch batch in batches)
|
foreach (Batch batch in batches)
|
||||||
{
|
{
|
||||||
if (batch.domain != domain && batch.method != operation)
|
if (batch.domain != domain || batch.method != operation)
|
||||||
{
|
{
|
||||||
temp.Add(batch);
|
temp.Add(batch);
|
||||||
}
|
}
|
||||||
@@ -124,7 +123,7 @@ namespace FireWallet
|
|||||||
List<Batch> temp = new List<Batch>();
|
List<Batch> temp = new List<Batch>();
|
||||||
foreach (Batch batch in batches)
|
foreach (Batch batch in batches)
|
||||||
{
|
{
|
||||||
if (batch.domain != domain && batch.method != operation)
|
if (batch.domain != domain || batch.method != operation)
|
||||||
{
|
{
|
||||||
temp.Add(batch);
|
temp.Add(batch);
|
||||||
}
|
}
|
||||||
@@ -184,7 +183,7 @@ namespace FireWallet
|
|||||||
List<Batch> temp = new List<Batch>();
|
List<Batch> temp = new List<Batch>();
|
||||||
foreach (Batch batch in batches)
|
foreach (Batch batch in batches)
|
||||||
{
|
{
|
||||||
if (batch.domain != domain && batch.method != operation)
|
if (batch.domain != domain || batch.method != operation)
|
||||||
{
|
{
|
||||||
temp.Add(batch);
|
temp.Add(batch);
|
||||||
}
|
}
|
||||||
@@ -240,7 +239,7 @@ namespace FireWallet
|
|||||||
List<Batch> temp = new List<Batch>();
|
List<Batch> temp = new List<Batch>();
|
||||||
foreach (Batch batch in batches)
|
foreach (Batch batch in batches)
|
||||||
{
|
{
|
||||||
if (batch.domain != domain && batch.method != operation)
|
if (batch.domain != domain || batch.method != operation)
|
||||||
{
|
{
|
||||||
temp.Add(batch);
|
temp.Add(batch);
|
||||||
}
|
}
|
||||||
@@ -465,7 +464,7 @@ namespace FireWallet
|
|||||||
HttpClient httpClient = new HttpClient();
|
HttpClient httpClient = new HttpClient();
|
||||||
private async void buttonSend_Click(object sender, EventArgs e)
|
private async void buttonSend_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!mainForm.watchOnly)
|
if (!mainForm.WatchOnly)
|
||||||
{
|
{
|
||||||
string batchTX = "[" + string.Join(", ", batches.Select(batch => batch.ToString())) + "]";
|
string batchTX = "[" + string.Join(", ", batches.Select(batch => batch.ToString())) + "]";
|
||||||
string content = "{\"method\": \"sendbatch\",\"params\":[ " + batchTX + "]}";
|
string content = "{\"method\": \"sendbatch\",\"params\":[ " + batchTX + "]}";
|
||||||
@@ -508,7 +507,7 @@ namespace FireWallet
|
|||||||
JObject result = JObject.Parse(jObject["result"].ToString());
|
JObject result = JObject.Parse(jObject["result"].ToString());
|
||||||
string hash = result["hash"].ToString();
|
string hash = result["hash"].ToString();
|
||||||
AddLog("Batch sent with hash: " + hash);
|
AddLog("Batch sent with hash: " + hash);
|
||||||
NotifyForm notifyForm2 = new NotifyForm("Batch sent\nThis might take a while to mine.", "Explorer", mainForm.userSettings["explorer-tx"] + hash);
|
NotifyForm notifyForm2 = new NotifyForm("Batch sent\nThis might take a while to mine.", "Explorer", mainForm.UserSettings["explorer-tx"] + hash);
|
||||||
notifyForm2.ShowDialog();
|
notifyForm2.ShowDialog();
|
||||||
notifyForm2.Dispose();
|
notifyForm2.Dispose();
|
||||||
this.Close();
|
this.Close();
|
||||||
@@ -539,13 +538,7 @@ namespace FireWallet
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
StreamWriter sw = new StreamWriter(dir + "hsd-ledger/bin/names.txt");
|
string domainslist = string.Join(",", batches.Select(batch => "\\\"" + batch.domain + "\\\""));
|
||||||
string domainslist = string.Join(",", batches.Select(batch => batch.domain));
|
|
||||||
sw.Write(domainslist);
|
|
||||||
sw.Dispose();
|
|
||||||
StreamWriter sw2 = new StreamWriter(dir + "hsd-ledger/bin/batch.json");
|
|
||||||
sw2.Write(response);
|
|
||||||
sw2.Dispose();
|
|
||||||
|
|
||||||
NotifyForm notify = new NotifyForm("Please confirm the transaction on your Ledger device", false);
|
NotifyForm notify = new NotifyForm("Please confirm the transaction on your Ledger device", false);
|
||||||
notify.Show();
|
notify.Show();
|
||||||
@@ -558,7 +551,9 @@ namespace FireWallet
|
|||||||
proc.StartInfo.RedirectStandardError = true;
|
proc.StartInfo.RedirectStandardError = true;
|
||||||
proc.StartInfo.FileName = "node.exe";
|
proc.StartInfo.FileName = "node.exe";
|
||||||
proc.StartInfo.WorkingDirectory = dir + "hsd-ledger/bin/";
|
proc.StartInfo.WorkingDirectory = dir + "hsd-ledger/bin/";
|
||||||
proc.StartInfo.Arguments = dir + "hsd-ledger/bin/hsd-ledger sendraw batch.json names.txt --api-key " + mainForm.nodeSettings["Key"] + " -w " + mainForm.account;
|
string args = "hsd-ledger/bin/hsd-ledger sendraw \"\"" + response.Replace("\"","\\\"") + "\"\" [" + domainslist + "] --api-key " + mainForm.NodeSettings["Key"] + " -w " + mainForm.Account;
|
||||||
|
|
||||||
|
proc.StartInfo.Arguments = dir + args;
|
||||||
var outputBuilder = new StringBuilder();
|
var outputBuilder = new StringBuilder();
|
||||||
|
|
||||||
// Event handler for capturing output data
|
// Event handler for capturing output data
|
||||||
@@ -582,7 +577,7 @@ namespace FireWallet
|
|||||||
if (output.Contains("Submitted TXID"))
|
if (output.Contains("Submitted TXID"))
|
||||||
{
|
{
|
||||||
string hash = output.Substring(output.IndexOf("Submitted TXID") + 16, 64);
|
string hash = output.Substring(output.IndexOf("Submitted TXID") + 16, 64);
|
||||||
string link = mainForm.userSettings["explorer-tx"] + hash;
|
string link = mainForm.UserSettings["explorer-tx"] + hash;
|
||||||
NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine",
|
NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine",
|
||||||
"Explorer", link);
|
"Explorer", link);
|
||||||
notifySuccess.ShowDialog();
|
notifySuccess.ShowDialog();
|
||||||
@@ -590,6 +585,8 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
AddLog(args);
|
||||||
|
AddLog(proc.StandardError.ReadToEnd());
|
||||||
NotifyForm notifyError = new NotifyForm("Error Transaction Failed\nCheck logs for more details");
|
NotifyForm notifyError = new NotifyForm("Error Transaction Failed\nCheck logs for more details");
|
||||||
notifyError.ShowDialog();
|
notifyError.ShowDialog();
|
||||||
notifyError.Dispose();
|
notifyError.Dispose();
|
||||||
@@ -622,7 +619,7 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
else if (b.method == "UPDATE")
|
else if (b.method == "UPDATE")
|
||||||
{
|
{
|
||||||
sw.WriteLine(b.domain + "," + b.method + ",[" + string.Join(", ", b.update.Select(record => record.ToString())) + "]");
|
sw.WriteLine(b.domain + "," + b.method + ",[" + string.Join(";", b.update.Select(record => record.ToString())) + "]");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -639,6 +636,8 @@ namespace FireWallet
|
|||||||
openFileDialog.Filter = "All Files|*.*";
|
openFileDialog.Filter = "All Files|*.*";
|
||||||
openFileDialog.Title = "Open Batch";
|
openFileDialog.Title = "Open Batch";
|
||||||
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
if (openFileDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
StreamReader sr = new StreamReader(openFileDialog.FileName);
|
StreamReader sr = new StreamReader(openFileDialog.FileName);
|
||||||
string line;
|
string line;
|
||||||
@@ -652,14 +651,54 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
if (split[1] == "UPDATE")
|
if (split[1] == "UPDATE")
|
||||||
{
|
{
|
||||||
// Select operation and import domains
|
// Join the rest of the line
|
||||||
string[] newDomains = new string[domains.Length + 1];
|
string[] updateArray = new string[split.Length - 2];
|
||||||
for (int i = 0; i < domains.Length; i++)
|
for (int i = 0; i < updateArray.Length; i++)
|
||||||
{
|
{
|
||||||
newDomains[i] = domains[i];
|
updateArray[i] = split[i + 2];
|
||||||
}
|
}
|
||||||
newDomains[domains.Length] = split[0];
|
string updateString = string.Join(",", updateArray);
|
||||||
domains = newDomains;
|
updateString.TrimStart('[');
|
||||||
|
updateString.TrimEnd(']');
|
||||||
|
|
||||||
|
string[] updateSplit = updateString.Split(';');
|
||||||
|
DNS[] UpdateRecords = new DNS[updateSplit.Length];
|
||||||
|
int r = 0;
|
||||||
|
foreach (string update in updateSplit)
|
||||||
|
{
|
||||||
|
string[] updateRecord = update.Split(',');
|
||||||
|
string type = updateRecord[0];
|
||||||
|
type = type.Split(':')[1].Replace("\"","").Trim();
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case "NS":
|
||||||
|
string ns = updateRecord[1].Split(':')[1].Replace("\"","").Replace("}","").Trim();
|
||||||
|
UpdateRecords[r] = new DNS(type, ns);
|
||||||
|
break;
|
||||||
|
case "DS":
|
||||||
|
int keyTag = int.Parse(updateRecord[1].Split(':')[1]);
|
||||||
|
int algorithm = int.Parse(updateRecord[2].Split(':')[1]);
|
||||||
|
int digestType = int.Parse(updateRecord[3].Split(':')[1]);
|
||||||
|
string digest = updateRecord[4].Split(':')[1].Replace("\"", "").Replace("}", "");
|
||||||
|
|
||||||
|
UpdateRecords[r] = new DNS(type, keyTag, algorithm, digestType, digest);
|
||||||
|
break;
|
||||||
|
case "TXT":
|
||||||
|
string txt = updateRecord[1].Split(':')[1].Replace("\"", "").Replace("}", "");
|
||||||
|
txt = txt.Replace("[", "");
|
||||||
|
txt = txt.Replace("]", "");
|
||||||
|
UpdateRecords[r] = new DNS(type, new string[] { txt.Trim() });
|
||||||
|
break;
|
||||||
|
case "GLUE4":
|
||||||
|
case "GLUE6":
|
||||||
|
string nsGlue = updateRecord[1].Split(':')[1].Replace("\"", "").Trim();
|
||||||
|
string address = updateRecord[2].Split(':')[1].Replace("\"", "").Replace("}", "").Trim();
|
||||||
|
UpdateRecords[r] = new DNS(type, nsGlue, address);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
r++;
|
||||||
|
}
|
||||||
|
AddBatch(split[0], split[1], UpdateRecords);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -712,6 +751,10 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
AddBatch(b.domain, b.method, b.toAddress);
|
AddBatch(b.domain, b.method, b.toAddress);
|
||||||
}
|
}
|
||||||
|
else if (b.method == "UPDATE")
|
||||||
|
{
|
||||||
|
AddBatch(b.domain, b.method, b.update);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
AddBatch(b.domain, b.method);
|
AddBatch(b.domain, b.method);
|
||||||
@@ -720,6 +763,13 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sr.Dispose();
|
sr.Dispose();
|
||||||
|
} catch (Exception ex)
|
||||||
|
{
|
||||||
|
AddLog("Error importing batch: " + ex.Message);
|
||||||
|
NotifyForm notifyForm = new NotifyForm("Error importing batch\nMake sure the file is in not in use");
|
||||||
|
notifyForm.ShowDialog();
|
||||||
|
notifyForm.Dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -732,10 +782,10 @@ namespace FireWallet
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private async Task<string> APIPost(string path, bool wallet, string content)
|
private async Task<string> APIPost(string path, bool wallet, string content)
|
||||||
{
|
{
|
||||||
string key = mainForm.nodeSettings["Key"];
|
string key = mainForm.NodeSettings["Key"];
|
||||||
string ip = mainForm.nodeSettings["IP"];
|
string ip = mainForm.NodeSettings["IP"];
|
||||||
string port = "1203";
|
string port = "1203";
|
||||||
if (mainForm.network == 1)
|
if (mainForm.HSDNetwork == 1)
|
||||||
{
|
{
|
||||||
port = "1303";
|
port = "1303";
|
||||||
}
|
}
|
||||||
@@ -747,22 +797,27 @@ namespace FireWallet
|
|||||||
req.Content = new StringContent(content);
|
req.Content = new StringContent(content);
|
||||||
|
|
||||||
// Send request
|
// Send request
|
||||||
HttpResponseMessage resp = await httpClient.SendAsync(req);
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
resp.EnsureSuccessStatusCode();
|
HttpResponseMessage resp = await httpClient.SendAsync(req);
|
||||||
}
|
if (resp.StatusCode != HttpStatusCode.OK)
|
||||||
catch (Exception ex)
|
|
||||||
{
|
{
|
||||||
AddLog("Post Error: " + ex.Message);
|
AddLog("Post Error: " + resp.StatusCode.ToString());
|
||||||
AddLog(await resp.Content.ReadAsStringAsync());
|
AddLog(await resp.Content.ReadAsStringAsync());
|
||||||
AddLog(content);
|
AddLog(content);
|
||||||
return "Error";
|
return "Error";
|
||||||
}
|
}
|
||||||
|
|
||||||
return await resp.Content.ReadAsStringAsync();
|
return await resp.Content.ReadAsStringAsync();
|
||||||
}
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
AddLog("Post Error: " + ex.Message);
|
||||||
|
return "Error";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public class Batch
|
public class Batch
|
||||||
{
|
{
|
||||||
@@ -823,6 +878,10 @@ namespace FireWallet
|
|||||||
return "[\"UPDATE\", \"" + domain + "\", " + records + "]";
|
return "[\"UPDATE\", \"" + domain + "\", " + records + "]";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if (method == "UPDATE")
|
||||||
|
{
|
||||||
|
return "[\"UPDATE\", \"" + domain + "\", {\"records\":[]}]";
|
||||||
|
}
|
||||||
return "[\"" + method + "\", \"" + domain + "\"]";
|
return "[\"" + method + "\", \"" + domain + "\"]";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2
FireWallet/BatchImportForm.Designer.cs
generated
2
FireWallet/BatchImportForm.Designer.cs
generated
@@ -72,7 +72,7 @@
|
|||||||
comboBoxMode.FlatStyle = FlatStyle.Flat;
|
comboBoxMode.FlatStyle = FlatStyle.Flat;
|
||||||
comboBoxMode.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
comboBoxMode.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
comboBoxMode.FormattingEnabled = true;
|
comboBoxMode.FormattingEnabled = true;
|
||||||
comboBoxMode.Items.AddRange(new object[] { "OPEN", "BID", "REVEAL", "REDEEM", "RENEW", "TRANSFER", "FINALIZE", "CANCEL" });
|
comboBoxMode.Items.AddRange(new object[] { "OPEN", "BID", "REVEAL", "REDEEM", "REGISTER", "RENEW", "TRANSFER", "FINALIZE", "CANCEL" });
|
||||||
comboBoxMode.Location = new Point(346, 42);
|
comboBoxMode.Location = new Point(346, 42);
|
||||||
comboBoxMode.Name = "comboBoxMode";
|
comboBoxMode.Name = "comboBoxMode";
|
||||||
comboBoxMode.Size = new Size(226, 29);
|
comboBoxMode.Size = new Size(226, 29);
|
||||||
|
|||||||
@@ -263,6 +263,21 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
else if (comboBoxMode.Text == "REGISTER")
|
||||||
|
{
|
||||||
|
batches = new Batch[0];
|
||||||
|
foreach (string domain in listBoxDomains.Items)
|
||||||
|
{
|
||||||
|
if (domain != "")
|
||||||
|
{
|
||||||
|
Batch[] newBatch = new Batch[batches.Length + 1];
|
||||||
|
Array.Copy(batches, newBatch, batches.Length);
|
||||||
|
newBatch[newBatch.Length - 1] = new Batch(domain,"UPDATE",new DNS[0]);
|
||||||
|
batches = newBatch;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
else if (comboBoxMode.Text == "TRANSFER")
|
else if (comboBoxMode.Text == "TRANSFER")
|
||||||
{
|
{
|
||||||
batches = new Batch[0];
|
batches = new Batch[0];
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ namespace FireWallet
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
this.domain = domain;
|
this.domain = domain;
|
||||||
this.mainForm = mainForm;
|
this.mainForm = mainForm;
|
||||||
nodeSettings = mainForm.nodeSettings;
|
nodeSettings = mainForm.NodeSettings;
|
||||||
|
|
||||||
cancel = true;
|
cancel = true;
|
||||||
this.Text = domain + "/ DNS | FireWallet";
|
this.Text = domain + "/ DNS | FireWallet";
|
||||||
@@ -363,6 +363,12 @@ namespace FireWallet
|
|||||||
string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}";
|
string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}";
|
||||||
string responseDNS = await APIPost("", false, contentDNS);
|
string responseDNS = await APIPost("", false, contentDNS);
|
||||||
JObject jObjectDNS = JObject.Parse(responseDNS);
|
JObject jObjectDNS = JObject.Parse(responseDNS);
|
||||||
|
|
||||||
|
if (jObjectDNS["result"].ToString() == "")
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
JObject result = (JObject)jObjectDNS["result"];
|
JObject result = (JObject)jObjectDNS["result"];
|
||||||
JArray records = (JArray)result["records"];
|
JArray records = (JArray)result["records"];
|
||||||
// For each record
|
// For each record
|
||||||
@@ -439,7 +445,7 @@ namespace FireWallet
|
|||||||
string key = nodeSettings["Key"];
|
string key = nodeSettings["Key"];
|
||||||
string ip = nodeSettings["IP"];
|
string ip = nodeSettings["IP"];
|
||||||
string port = "1203";
|
string port = "1203";
|
||||||
if (mainForm.network == 1)
|
if (mainForm.HSDNetwork == 1)
|
||||||
{
|
{
|
||||||
port = "1303";
|
port = "1303";
|
||||||
}
|
}
|
||||||
@@ -478,7 +484,7 @@ namespace FireWallet
|
|||||||
string ip = nodeSettings["IP"];
|
string ip = nodeSettings["IP"];
|
||||||
|
|
||||||
string port = "1203";
|
string port = "1203";
|
||||||
if (mainForm.network == 1)
|
if (mainForm.HSDNetwork == 1)
|
||||||
{
|
{
|
||||||
port = "1303";
|
port = "1303";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,36 +32,7 @@ namespace FireWallet
|
|||||||
this.explorerTX = explorerTX;
|
this.explorerTX = explorerTX;
|
||||||
this.explorerName = explorerName;
|
this.explorerName = explorerName;
|
||||||
this.mainForm = mainForm;
|
this.mainForm = mainForm;
|
||||||
}
|
this.theme = mainForm.Theme;
|
||||||
|
|
||||||
#region Theming
|
|
||||||
private void UpdateTheme()
|
|
||||||
{
|
|
||||||
// Check if file exists
|
|
||||||
if (!Directory.Exists(dir))
|
|
||||||
{
|
|
||||||
CreateConfig(dir);
|
|
||||||
}
|
|
||||||
if (!File.Exists(dir + "theme.txt"))
|
|
||||||
{
|
|
||||||
CreateConfig(dir);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Read file
|
|
||||||
StreamReader sr = new StreamReader(dir + "theme.txt");
|
|
||||||
theme = new Dictionary<string, string>();
|
|
||||||
while (!sr.EndOfStream)
|
|
||||||
{
|
|
||||||
string line = sr.ReadLine();
|
|
||||||
string[] 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
|
// Apply theme
|
||||||
this.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
this.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
@@ -73,35 +44,12 @@ namespace FireWallet
|
|||||||
// Need to specify this for each groupbox to override the black text
|
// Need to specify this for each groupbox to override the black text
|
||||||
foreach (Control c in Controls)
|
foreach (Control c in Controls)
|
||||||
{
|
{
|
||||||
ThemeControl(c);
|
mainForm.ThemeControl(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
applyTransparency(mainForm.Theme);
|
||||||
|
|
||||||
|
|
||||||
// Transparancy
|
|
||||||
applyTransparency(theme);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
private void ThemeControl(Control c)
|
#region Theme
|
||||||
{
|
|
||||||
if (c.GetType() == typeof(GroupBox) || c.GetType() == typeof(Panel))
|
|
||||||
{
|
|
||||||
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"]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void applyTransparency(Dictionary<string, string> theme)
|
private void applyTransparency(Dictionary<string, string> theme)
|
||||||
{
|
{
|
||||||
if (theme.ContainsKey("transparent-mode"))
|
if (theme.ContainsKey("transparent-mode"))
|
||||||
@@ -148,26 +96,6 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateConfig(string dir)
|
|
||||||
{
|
|
||||||
if (!Directory.Exists(dir))
|
|
||||||
{
|
|
||||||
Directory.CreateDirectory(dir);
|
|
||||||
}
|
|
||||||
StreamWriter 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
|
// Required for mica effect
|
||||||
internal enum AccentState
|
internal enum AccentState
|
||||||
{
|
{
|
||||||
@@ -209,7 +137,6 @@ namespace FireWallet
|
|||||||
|
|
||||||
private void DomainForm_Load(object sender, EventArgs e)
|
private void DomainForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
UpdateTheme();
|
|
||||||
own = false;
|
own = false;
|
||||||
StreamReader sr = new StreamReader(dir + "node.txt");
|
StreamReader sr = new StreamReader(dir + "node.txt");
|
||||||
nodeSettings = new Dictionary<string, string>();
|
nodeSettings = new Dictionary<string, string>();
|
||||||
@@ -230,7 +157,7 @@ namespace FireWallet
|
|||||||
network = Convert.ToInt32(nodeSettings["Network"]);
|
network = Convert.ToInt32(nodeSettings["Network"]);
|
||||||
GetName();
|
GetName();
|
||||||
|
|
||||||
if (mainForm.watchOnly)
|
if (mainForm.WatchOnly)
|
||||||
{
|
{
|
||||||
buttonActionMain.Enabled = false; // Only allow sending in batches for ledger
|
buttonActionMain.Enabled = false; // Only allow sending in batches for ledger
|
||||||
}
|
}
|
||||||
@@ -330,6 +257,14 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
labelStatusMain.Text = "Error";
|
labelStatusMain.Text = "Error";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (labelStatusReserved.Text == "True")
|
||||||
|
{
|
||||||
|
buttonActionAlt.Hide();
|
||||||
|
buttonActionMain.Hide();
|
||||||
|
groupBoxAction.Text = "Reserved";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -344,6 +279,14 @@ namespace FireWallet
|
|||||||
string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}";
|
string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}";
|
||||||
string responseDNS = await APIPost("", false, contentDNS);
|
string responseDNS = await APIPost("", false, contentDNS);
|
||||||
JObject jObjectDNS = JObject.Parse(responseDNS);
|
JObject jObjectDNS = JObject.Parse(responseDNS);
|
||||||
|
|
||||||
|
if (jObjectDNS["result"].ToString() == "")
|
||||||
|
{
|
||||||
|
// Not registered
|
||||||
|
groupBoxDNS.Visible = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
JObject result = (JObject)jObjectDNS["result"];
|
JObject result = (JObject)jObjectDNS["result"];
|
||||||
JArray records = (JArray)result["records"];
|
JArray records = (JArray)result["records"];
|
||||||
// For each record
|
// For each record
|
||||||
@@ -879,7 +822,14 @@ namespace FireWallet
|
|||||||
|
|
||||||
if (!DNSEdit.cancel)
|
if (!DNSEdit.cancel)
|
||||||
{
|
{
|
||||||
string records = string.Join(", ", DNSEdit.DNSrecords.Select(record => record.ToString()));
|
string records = "";
|
||||||
|
if (DNSEdit.DNSrecords != null)
|
||||||
|
{
|
||||||
|
if (DNSEdit.DNSrecords.Count() > 0)
|
||||||
|
{
|
||||||
|
records = string.Join(", ", DNSEdit.DNSrecords.Select(record => record.ToString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
string content = "{\"method\": \"sendupdate\", \"params\": [\"" + domain + "\", {\"records\": [" + records + "]}]}";
|
string content = "{\"method\": \"sendupdate\", \"params\": [\"" + domain + "\", {\"records\": [" + records + "]}]}";
|
||||||
string response = await APIPost("", true, content);
|
string response = await APIPost("", true, content);
|
||||||
|
|||||||
BIN
FireWallet/FW.ico
Normal file
BIN
FireWallet/FW.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
@@ -6,17 +6,17 @@
|
|||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<UseWindowsForms>true</UseWindowsForms>
|
<UseWindowsForms>true</UseWindowsForms>
|
||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
<ApplicationIcon>FW2.ico</ApplicationIcon>
|
<ApplicationIcon>FW.ico</ApplicationIcon>
|
||||||
<Title>FireWallet</Title>
|
<Title>FireWallet</Title>
|
||||||
<PackageProjectUrl>https://l.woodburn.au</PackageProjectUrl>
|
<PackageProjectUrl>https://l.woodburn.au</PackageProjectUrl>
|
||||||
<PackageIcon>HSDBatcher.png</PackageIcon>
|
<PackageIcon>HSDBatcher.png</PackageIcon>
|
||||||
<RepositoryUrl>https://github.com/Nathanwoodburn/FireWallet</RepositoryUrl>
|
<RepositoryUrl>https://github.com/Nathanwoodburn/FireWallet</RepositoryUrl>
|
||||||
<RepositoryType>git</RepositoryType>
|
<RepositoryType>git</RepositoryType>
|
||||||
<Version>2.5</Version>
|
<Version>3.3</Version>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="FW2.ico" />
|
<Content Include="FW.ico" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -27,6 +27,7 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="DnsClient" Version="1.7.0" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="QRCoder" Version="1.4.3" />
|
<PackageReference Include="QRCoder" Version="1.4.3" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
190
FireWallet/MainForm.Designer.cs
generated
190
FireWallet/MainForm.Designer.cs
generated
@@ -41,6 +41,12 @@ namespace FireWallet
|
|||||||
toolStripStatusLabelaccount = new ToolStripStatusLabel();
|
toolStripStatusLabelaccount = new ToolStripStatusLabel();
|
||||||
toolStripStatusLabelLedger = new ToolStripStatusLabel();
|
toolStripStatusLabelLedger = new ToolStripStatusLabel();
|
||||||
toolStripSplitButtonlogout = new ToolStripSplitButton();
|
toolStripSplitButtonlogout = new ToolStripSplitButton();
|
||||||
|
toolStripDropDownButtonHelp = new ToolStripDropDownButton();
|
||||||
|
githubToolStripMenuItem = new ToolStripMenuItem();
|
||||||
|
websiteToolStripMenuItem = new ToolStripMenuItem();
|
||||||
|
supportDiscordServerToolStripMenuItem = new ToolStripMenuItem();
|
||||||
|
toolStripSeparator1 = new ToolStripSeparator();
|
||||||
|
otherProjectsToolStripMenuItem = new ToolStripMenuItem();
|
||||||
timerNodeStatus = new System.Windows.Forms.Timer(components);
|
timerNodeStatus = new System.Windows.Forms.Timer(components);
|
||||||
panelaccount = new Panel();
|
panelaccount = new Panel();
|
||||||
groupBoxaccount = new GroupBox();
|
groupBoxaccount = new GroupBox();
|
||||||
@@ -59,7 +65,7 @@ namespace FireWallet
|
|||||||
buttonNavSend = new Button();
|
buttonNavSend = new Button();
|
||||||
buttonNavPortfolio = new Button();
|
buttonNavPortfolio = new Button();
|
||||||
panelPortfolio = new Panel();
|
panelPortfolio = new Panel();
|
||||||
buttonRenewAll = new Button();
|
buttonRedeemAll = new Button();
|
||||||
buttonRevealAll = new Button();
|
buttonRevealAll = new Button();
|
||||||
groupBoxTransactions = new GroupBox();
|
groupBoxTransactions = new GroupBox();
|
||||||
groupBoxinfo = new GroupBox();
|
groupBoxinfo = new GroupBox();
|
||||||
@@ -70,7 +76,9 @@ namespace FireWallet
|
|||||||
labelBalanceTotal = new Label();
|
labelBalanceTotal = new Label();
|
||||||
labelLocked = new Label();
|
labelLocked = new Label();
|
||||||
labelBalance = new Label();
|
labelBalance = new Label();
|
||||||
|
buttonRenewAll = new Button();
|
||||||
panelSend = new Panel();
|
panelSend = new Panel();
|
||||||
|
labelSendingHIPAddress = new Label();
|
||||||
checkBoxSendSubFee = new CheckBox();
|
checkBoxSendSubFee = new CheckBox();
|
||||||
buttonSendMax = new Button();
|
buttonSendMax = new Button();
|
||||||
buttonSendHNS = new Button();
|
buttonSendHNS = new Button();
|
||||||
@@ -82,6 +90,7 @@ namespace FireWallet
|
|||||||
labelSendingAmount = new Label();
|
labelSendingAmount = new Label();
|
||||||
labelSendingTo = new Label();
|
labelSendingTo = new Label();
|
||||||
labelSendPrompt = new Label();
|
labelSendPrompt = new Label();
|
||||||
|
labelHIPArrow = new Label();
|
||||||
panelRecieve = new Panel();
|
panelRecieve = new Panel();
|
||||||
buttonAddressVerify = new Button();
|
buttonAddressVerify = new Button();
|
||||||
pictureBoxReceiveQR = new PictureBox();
|
pictureBoxReceiveQR = new PictureBox();
|
||||||
@@ -89,6 +98,8 @@ namespace FireWallet
|
|||||||
textBoxReceiveAddress = new TextBox();
|
textBoxReceiveAddress = new TextBox();
|
||||||
labelReceive1 = new Label();
|
labelReceive1 = new Label();
|
||||||
panelDomains = new Panel();
|
panelDomains = new Panel();
|
||||||
|
labelDomainSort = new Label();
|
||||||
|
comboBoxDomainSort = new ComboBox();
|
||||||
buttonExportDomains = new Button();
|
buttonExportDomains = new Button();
|
||||||
groupBoxDomains = new GroupBox();
|
groupBoxDomains = new GroupBox();
|
||||||
panelDomainList = new Panel();
|
panelDomainList = new Panel();
|
||||||
@@ -116,6 +127,7 @@ namespace FireWallet
|
|||||||
textBoxExAddr = new TextBox();
|
textBoxExAddr = new TextBox();
|
||||||
labelSettings4 = new Label();
|
labelSettings4 = new Label();
|
||||||
textBoxExTX = new TextBox();
|
textBoxExTX = new TextBox();
|
||||||
|
buttonSendAll = new Button();
|
||||||
statusStripmain.SuspendLayout();
|
statusStripmain.SuspendLayout();
|
||||||
panelaccount.SuspendLayout();
|
panelaccount.SuspendLayout();
|
||||||
groupBoxaccount.SuspendLayout();
|
groupBoxaccount.SuspendLayout();
|
||||||
@@ -139,7 +151,7 @@ namespace FireWallet
|
|||||||
// statusStripmain
|
// statusStripmain
|
||||||
//
|
//
|
||||||
statusStripmain.Dock = DockStyle.Top;
|
statusStripmain.Dock = DockStyle.Top;
|
||||||
statusStripmain.Items.AddRange(new ToolStripItem[] { toolStripStatusLabelNetwork, toolStripStatusLabelstatus, toolStripStatusLabelaccount, toolStripStatusLabelLedger, toolStripSplitButtonlogout });
|
statusStripmain.Items.AddRange(new ToolStripItem[] { toolStripStatusLabelNetwork, toolStripStatusLabelstatus, toolStripStatusLabelaccount, toolStripStatusLabelLedger, toolStripSplitButtonlogout, toolStripDropDownButtonHelp });
|
||||||
statusStripmain.Location = new Point(0, 0);
|
statusStripmain.Location = new Point(0, 0);
|
||||||
statusStripmain.Name = "statusStripmain";
|
statusStripmain.Name = "statusStripmain";
|
||||||
statusStripmain.Size = new Size(1152, 22);
|
statusStripmain.Size = new Size(1152, 22);
|
||||||
@@ -190,6 +202,51 @@ namespace FireWallet
|
|||||||
toolStripSplitButtonlogout.Visible = false;
|
toolStripSplitButtonlogout.Visible = false;
|
||||||
toolStripSplitButtonlogout.ButtonClick += Logout;
|
toolStripSplitButtonlogout.ButtonClick += Logout;
|
||||||
//
|
//
|
||||||
|
// toolStripDropDownButtonHelp
|
||||||
|
//
|
||||||
|
toolStripDropDownButtonHelp.DisplayStyle = ToolStripItemDisplayStyle.Text;
|
||||||
|
toolStripDropDownButtonHelp.DropDownItems.AddRange(new ToolStripItem[] { githubToolStripMenuItem, websiteToolStripMenuItem, supportDiscordServerToolStripMenuItem, toolStripSeparator1, otherProjectsToolStripMenuItem });
|
||||||
|
toolStripDropDownButtonHelp.Image = (Image)resources.GetObject("toolStripDropDownButtonHelp.Image");
|
||||||
|
toolStripDropDownButtonHelp.ImageTransparentColor = Color.Magenta;
|
||||||
|
toolStripDropDownButtonHelp.Margin = new Padding(20, 2, 0, 0);
|
||||||
|
toolStripDropDownButtonHelp.Name = "toolStripDropDownButtonHelp";
|
||||||
|
toolStripDropDownButtonHelp.Size = new Size(45, 20);
|
||||||
|
toolStripDropDownButtonHelp.Text = "Help";
|
||||||
|
toolStripDropDownButtonHelp.ToolTipText = "Help";
|
||||||
|
//
|
||||||
|
// githubToolStripMenuItem
|
||||||
|
//
|
||||||
|
githubToolStripMenuItem.Name = "githubToolStripMenuItem";
|
||||||
|
githubToolStripMenuItem.Size = new Size(194, 22);
|
||||||
|
githubToolStripMenuItem.Text = "Github";
|
||||||
|
githubToolStripMenuItem.Click += githubToolStripMenuItem_Click;
|
||||||
|
//
|
||||||
|
// websiteToolStripMenuItem
|
||||||
|
//
|
||||||
|
websiteToolStripMenuItem.Name = "websiteToolStripMenuItem";
|
||||||
|
websiteToolStripMenuItem.Size = new Size(194, 22);
|
||||||
|
websiteToolStripMenuItem.Text = "Website";
|
||||||
|
websiteToolStripMenuItem.Click += websiteToolStripMenuItem_Click;
|
||||||
|
//
|
||||||
|
// supportDiscordServerToolStripMenuItem
|
||||||
|
//
|
||||||
|
supportDiscordServerToolStripMenuItem.Name = "supportDiscordServerToolStripMenuItem";
|
||||||
|
supportDiscordServerToolStripMenuItem.Size = new Size(194, 22);
|
||||||
|
supportDiscordServerToolStripMenuItem.Text = "Support Discord Server";
|
||||||
|
supportDiscordServerToolStripMenuItem.Click += supportDiscordServerToolStripMenuItem_Click;
|
||||||
|
//
|
||||||
|
// toolStripSeparator1
|
||||||
|
//
|
||||||
|
toolStripSeparator1.Name = "toolStripSeparator1";
|
||||||
|
toolStripSeparator1.Size = new Size(191, 6);
|
||||||
|
//
|
||||||
|
// otherProjectsToolStripMenuItem
|
||||||
|
//
|
||||||
|
otherProjectsToolStripMenuItem.Name = "otherProjectsToolStripMenuItem";
|
||||||
|
otherProjectsToolStripMenuItem.Size = new Size(194, 22);
|
||||||
|
otherProjectsToolStripMenuItem.Text = "Other Projects";
|
||||||
|
otherProjectsToolStripMenuItem.Click += otherProjectsToolStripMenuItem_Click;
|
||||||
|
//
|
||||||
// timerNodeStatus
|
// timerNodeStatus
|
||||||
//
|
//
|
||||||
timerNodeStatus.Enabled = true;
|
timerNodeStatus.Enabled = true;
|
||||||
@@ -390,27 +447,29 @@ namespace FireWallet
|
|||||||
//
|
//
|
||||||
// panelPortfolio
|
// panelPortfolio
|
||||||
//
|
//
|
||||||
|
panelPortfolio.Controls.Add(buttonSendAll);
|
||||||
|
panelPortfolio.Controls.Add(buttonRedeemAll);
|
||||||
panelPortfolio.Controls.Add(buttonRevealAll);
|
panelPortfolio.Controls.Add(buttonRevealAll);
|
||||||
panelPortfolio.Controls.Add(groupBoxTransactions);
|
panelPortfolio.Controls.Add(groupBoxTransactions);
|
||||||
panelPortfolio.Controls.Add(groupBoxinfo);
|
panelPortfolio.Controls.Add(groupBoxinfo);
|
||||||
panelPortfolio.Controls.Add(groupBoxbalance);
|
panelPortfolio.Controls.Add(groupBoxbalance);
|
||||||
panelPortfolio.Location = new Point(1065, 80);
|
panelPortfolio.Location = new Point(140, 35);
|
||||||
panelPortfolio.Name = "panelPortfolio";
|
panelPortfolio.Name = "panelPortfolio";
|
||||||
panelPortfolio.Size = new Size(956, 538);
|
panelPortfolio.Size = new Size(956, 538);
|
||||||
panelPortfolio.TabIndex = 7;
|
panelPortfolio.TabIndex = 7;
|
||||||
panelPortfolio.Visible = false;
|
panelPortfolio.Visible = false;
|
||||||
//
|
//
|
||||||
// buttonRenewAll
|
// buttonRedeemAll
|
||||||
//
|
//
|
||||||
buttonRenewAll.FlatStyle = FlatStyle.Flat;
|
buttonRedeemAll.FlatStyle = FlatStyle.Flat;
|
||||||
buttonRenewAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
buttonRedeemAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
buttonRenewAll.Location = new Point(813, 9);
|
buttonRedeemAll.Location = new Point(649, 12);
|
||||||
buttonRenewAll.Name = "buttonRenewAll";
|
buttonRedeemAll.Name = "buttonRedeemAll";
|
||||||
buttonRenewAll.Size = new Size(89, 32);
|
buttonRedeemAll.Size = new Size(106, 44);
|
||||||
buttonRenewAll.TabIndex = 10;
|
buttonRedeemAll.TabIndex = 9;
|
||||||
buttonRenewAll.Text = "Renew All";
|
buttonRedeemAll.Text = "Redeem All";
|
||||||
buttonRenewAll.UseVisualStyleBackColor = true;
|
buttonRedeemAll.UseVisualStyleBackColor = true;
|
||||||
buttonRenewAll.Click += buttonRenewAll_Click;
|
buttonRedeemAll.Click += buttonRedeemAll_Click;
|
||||||
//
|
//
|
||||||
// buttonRevealAll
|
// buttonRevealAll
|
||||||
//
|
//
|
||||||
@@ -418,7 +477,7 @@ namespace FireWallet
|
|||||||
buttonRevealAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
buttonRevealAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
buttonRevealAll.Location = new Point(537, 12);
|
buttonRevealAll.Location = new Point(537, 12);
|
||||||
buttonRevealAll.Name = "buttonRevealAll";
|
buttonRevealAll.Name = "buttonRevealAll";
|
||||||
buttonRevealAll.Size = new Size(89, 44);
|
buttonRevealAll.Size = new Size(106, 44);
|
||||||
buttonRevealAll.TabIndex = 9;
|
buttonRevealAll.TabIndex = 9;
|
||||||
buttonRevealAll.Text = "Reveal All";
|
buttonRevealAll.Text = "Reveal All";
|
||||||
buttonRevealAll.UseVisualStyleBackColor = true;
|
buttonRevealAll.UseVisualStyleBackColor = true;
|
||||||
@@ -518,8 +577,21 @@ namespace FireWallet
|
|||||||
labelBalance.TabIndex = 0;
|
labelBalance.TabIndex = 0;
|
||||||
labelBalance.Text = "labelBalance";
|
labelBalance.Text = "labelBalance";
|
||||||
//
|
//
|
||||||
|
// buttonRenewAll
|
||||||
|
//
|
||||||
|
buttonRenewAll.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonRenewAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonRenewAll.Location = new Point(813, 9);
|
||||||
|
buttonRenewAll.Name = "buttonRenewAll";
|
||||||
|
buttonRenewAll.Size = new Size(89, 32);
|
||||||
|
buttonRenewAll.TabIndex = 10;
|
||||||
|
buttonRenewAll.Text = "Renew All";
|
||||||
|
buttonRenewAll.UseVisualStyleBackColor = true;
|
||||||
|
buttonRenewAll.Click += buttonRenewAll_Click;
|
||||||
|
//
|
||||||
// panelSend
|
// panelSend
|
||||||
//
|
//
|
||||||
|
panelSend.Controls.Add(labelSendingHIPAddress);
|
||||||
panelSend.Controls.Add(checkBoxSendSubFee);
|
panelSend.Controls.Add(checkBoxSendSubFee);
|
||||||
panelSend.Controls.Add(buttonSendMax);
|
panelSend.Controls.Add(buttonSendMax);
|
||||||
panelSend.Controls.Add(buttonSendHNS);
|
panelSend.Controls.Add(buttonSendHNS);
|
||||||
@@ -531,12 +603,23 @@ namespace FireWallet
|
|||||||
panelSend.Controls.Add(labelSendingAmount);
|
panelSend.Controls.Add(labelSendingAmount);
|
||||||
panelSend.Controls.Add(labelSendingTo);
|
panelSend.Controls.Add(labelSendingTo);
|
||||||
panelSend.Controls.Add(labelSendPrompt);
|
panelSend.Controls.Add(labelSendPrompt);
|
||||||
panelSend.Location = new Point(1113, 42);
|
panelSend.Controls.Add(labelHIPArrow);
|
||||||
|
panelSend.Location = new Point(1041, 235);
|
||||||
panelSend.Name = "panelSend";
|
panelSend.Name = "panelSend";
|
||||||
panelSend.Size = new Size(974, 521);
|
panelSend.Size = new Size(974, 521);
|
||||||
panelSend.TabIndex = 2;
|
panelSend.TabIndex = 2;
|
||||||
panelSend.Visible = false;
|
panelSend.Visible = false;
|
||||||
//
|
//
|
||||||
|
// labelSendingHIPAddress
|
||||||
|
//
|
||||||
|
labelSendingHIPAddress.AutoSize = true;
|
||||||
|
labelSendingHIPAddress.Location = new Point(375, 130);
|
||||||
|
labelSendingHIPAddress.Name = "labelSendingHIPAddress";
|
||||||
|
labelSendingHIPAddress.Size = new Size(64, 15);
|
||||||
|
labelSendingHIPAddress.TabIndex = 17;
|
||||||
|
labelSendingHIPAddress.Text = "To Address";
|
||||||
|
labelSendingHIPAddress.Visible = false;
|
||||||
|
//
|
||||||
// checkBoxSendSubFee
|
// checkBoxSendSubFee
|
||||||
//
|
//
|
||||||
checkBoxSendSubFee.AutoSize = true;
|
checkBoxSendSubFee.AutoSize = true;
|
||||||
@@ -579,11 +662,11 @@ namespace FireWallet
|
|||||||
//
|
//
|
||||||
labelSendingError.AutoSize = true;
|
labelSendingError.AutoSize = true;
|
||||||
labelSendingError.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
labelSendingError.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
labelSendingError.Location = new Point(615, 131);
|
labelSendingError.Location = new Point(679, 130);
|
||||||
labelSendingError.Name = "labelSendingError";
|
labelSendingError.Name = "labelSendingError";
|
||||||
labelSendingError.Size = new Size(52, 21);
|
labelSendingError.Size = new Size(78, 21);
|
||||||
labelSendingError.TabIndex = 13;
|
labelSendingError.TabIndex = 13;
|
||||||
labelSendingError.Text = "label1";
|
labelSendingError.Text = "labelError";
|
||||||
labelSendingError.Visible = false;
|
labelSendingError.Visible = false;
|
||||||
//
|
//
|
||||||
// labelSendingFee
|
// labelSendingFee
|
||||||
@@ -654,6 +737,17 @@ namespace FireWallet
|
|||||||
labelSendPrompt.TabIndex = 0;
|
labelSendPrompt.TabIndex = 0;
|
||||||
labelSendPrompt.Text = "Send HNS";
|
labelSendPrompt.Text = "Send HNS";
|
||||||
//
|
//
|
||||||
|
// labelHIPArrow
|
||||||
|
//
|
||||||
|
labelHIPArrow.AutoSize = true;
|
||||||
|
labelHIPArrow.Font = new Font("Segoe UI", 18F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
labelHIPArrow.Location = new Point(346, 119);
|
||||||
|
labelHIPArrow.Name = "labelHIPArrow";
|
||||||
|
labelHIPArrow.Size = new Size(32, 32);
|
||||||
|
labelHIPArrow.TabIndex = 18;
|
||||||
|
labelHIPArrow.Text = "⮡ ";
|
||||||
|
labelHIPArrow.Visible = false;
|
||||||
|
//
|
||||||
// panelRecieve
|
// panelRecieve
|
||||||
//
|
//
|
||||||
panelRecieve.Controls.Add(buttonAddressVerify);
|
panelRecieve.Controls.Add(buttonAddressVerify);
|
||||||
@@ -721,17 +815,42 @@ namespace FireWallet
|
|||||||
//
|
//
|
||||||
// panelDomains
|
// panelDomains
|
||||||
//
|
//
|
||||||
|
panelDomains.Controls.Add(labelDomainSort);
|
||||||
|
panelDomains.Controls.Add(comboBoxDomainSort);
|
||||||
panelDomains.Controls.Add(buttonRenewAll);
|
panelDomains.Controls.Add(buttonRenewAll);
|
||||||
panelDomains.Controls.Add(buttonExportDomains);
|
panelDomains.Controls.Add(buttonExportDomains);
|
||||||
panelDomains.Controls.Add(groupBoxDomains);
|
panelDomains.Controls.Add(groupBoxDomains);
|
||||||
panelDomains.Controls.Add(labelDomainSearch);
|
panelDomains.Controls.Add(labelDomainSearch);
|
||||||
panelDomains.Controls.Add(textBoxDomainSearch);
|
panelDomains.Controls.Add(textBoxDomainSearch);
|
||||||
panelDomains.Location = new Point(120, 48);
|
panelDomains.Location = new Point(1122, 35);
|
||||||
panelDomains.Name = "panelDomains";
|
panelDomains.Name = "panelDomains";
|
||||||
panelDomains.Size = new Size(920, 536);
|
panelDomains.Size = new Size(920, 536);
|
||||||
panelDomains.TabIndex = 18;
|
panelDomains.TabIndex = 18;
|
||||||
panelDomains.Visible = false;
|
panelDomains.Visible = false;
|
||||||
//
|
//
|
||||||
|
// labelDomainSort
|
||||||
|
//
|
||||||
|
labelDomainSort.AutoSize = true;
|
||||||
|
labelDomainSort.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
labelDomainSort.Location = new Point(638, 15);
|
||||||
|
labelDomainSort.Name = "labelDomainSort";
|
||||||
|
labelDomainSort.Size = new Size(42, 21);
|
||||||
|
labelDomainSort.TabIndex = 12;
|
||||||
|
labelDomainSort.Text = "Sort:";
|
||||||
|
//
|
||||||
|
// comboBoxDomainSort
|
||||||
|
//
|
||||||
|
comboBoxDomainSort.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||||
|
comboBoxDomainSort.FlatStyle = FlatStyle.Flat;
|
||||||
|
comboBoxDomainSort.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
comboBoxDomainSort.FormattingEnabled = true;
|
||||||
|
comboBoxDomainSort.Items.AddRange(new object[] { "Default", "Alphabetical", "Expiring", "Value" });
|
||||||
|
comboBoxDomainSort.Location = new Point(686, 12);
|
||||||
|
comboBoxDomainSort.Name = "comboBoxDomainSort";
|
||||||
|
comboBoxDomainSort.Size = new Size(121, 29);
|
||||||
|
comboBoxDomainSort.TabIndex = 11;
|
||||||
|
comboBoxDomainSort.DropDownClosed += comboBoxDomainSort_DropDownClosed;
|
||||||
|
//
|
||||||
// buttonExportDomains
|
// buttonExportDomains
|
||||||
//
|
//
|
||||||
buttonExportDomains.FlatStyle = FlatStyle.Flat;
|
buttonExportDomains.FlatStyle = FlatStyle.Flat;
|
||||||
@@ -792,7 +911,7 @@ namespace FireWallet
|
|||||||
panelSettings.Controls.Add(buttonSettingsSave);
|
panelSettings.Controls.Add(buttonSettingsSave);
|
||||||
panelSettings.Controls.Add(groupBoxSettingsExplorer);
|
panelSettings.Controls.Add(groupBoxSettingsExplorer);
|
||||||
panelSettings.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
panelSettings.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
panelSettings.Location = new Point(1065, 211);
|
panelSettings.Location = new Point(1065, 51);
|
||||||
panelSettings.Name = "panelSettings";
|
panelSettings.Name = "panelSettings";
|
||||||
panelSettings.Size = new Size(930, 550);
|
panelSettings.Size = new Size(930, 550);
|
||||||
panelSettings.TabIndex = 19;
|
panelSettings.TabIndex = 19;
|
||||||
@@ -1002,25 +1121,38 @@ namespace FireWallet
|
|||||||
textBoxExTX.Size = new Size(307, 29);
|
textBoxExTX.Size = new Size(307, 29);
|
||||||
textBoxExTX.TabIndex = 1;
|
textBoxExTX.TabIndex = 1;
|
||||||
//
|
//
|
||||||
|
// buttonSendAll
|
||||||
|
//
|
||||||
|
buttonSendAll.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonSendAll.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonSendAll.Location = new Point(761, 12);
|
||||||
|
buttonSendAll.Name = "buttonSendAll";
|
||||||
|
buttonSendAll.Size = new Size(106, 44);
|
||||||
|
buttonSendAll.TabIndex = 9;
|
||||||
|
buttonSendAll.Text = "Send All TXs";
|
||||||
|
buttonSendAll.UseVisualStyleBackColor = true;
|
||||||
|
buttonSendAll.Click += buttonSendAll_Click;
|
||||||
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
ClientSize = new Size(1152, 575);
|
ClientSize = new Size(1152, 575);
|
||||||
|
Controls.Add(panelDomains);
|
||||||
|
Controls.Add(panelSend);
|
||||||
|
Controls.Add(panelSettings);
|
||||||
Controls.Add(panelaccount);
|
Controls.Add(panelaccount);
|
||||||
Controls.Add(panelPortfolio);
|
Controls.Add(panelPortfolio);
|
||||||
Controls.Add(panelRecieve);
|
Controls.Add(panelRecieve);
|
||||||
Controls.Add(panelDomains);
|
|
||||||
Controls.Add(panelSend);
|
|
||||||
Controls.Add(panelNav);
|
Controls.Add(panelNav);
|
||||||
Controls.Add(statusStripmain);
|
Controls.Add(statusStripmain);
|
||||||
Controls.Add(panelSettings);
|
|
||||||
Icon = (Icon)resources.GetObject("$this.Icon");
|
Icon = (Icon)resources.GetObject("$this.Icon");
|
||||||
Name = "MainForm";
|
Name = "MainForm";
|
||||||
Opacity = 0D;
|
Opacity = 0D;
|
||||||
Text = "FireWallet";
|
Text = "FireWallet";
|
||||||
FormClosing += MainForm_Closing;
|
FormClosing += MainForm_Closing;
|
||||||
Load += MainForm_Load;
|
Load += MainForm_Load;
|
||||||
|
ResizeEnd += MainForm_ResizeEnd;
|
||||||
Resize += Form1_Resize;
|
Resize += Form1_Resize;
|
||||||
statusStripmain.ResumeLayout(false);
|
statusStripmain.ResumeLayout(false);
|
||||||
statusStripmain.PerformLayout();
|
statusStripmain.PerformLayout();
|
||||||
@@ -1137,5 +1269,17 @@ namespace FireWallet
|
|||||||
private Button buttonRevealAll;
|
private Button buttonRevealAll;
|
||||||
private Button buttonExportDomains;
|
private Button buttonExportDomains;
|
||||||
private Button buttonRenewAll;
|
private Button buttonRenewAll;
|
||||||
|
private ToolStripDropDownButton toolStripDropDownButtonHelp;
|
||||||
|
private ToolStripMenuItem githubToolStripMenuItem;
|
||||||
|
private ToolStripMenuItem websiteToolStripMenuItem;
|
||||||
|
private ToolStripMenuItem supportDiscordServerToolStripMenuItem;
|
||||||
|
private Label labelHIPArrow;
|
||||||
|
private Label labelSendingHIPAddress;
|
||||||
|
private ComboBox comboBoxDomainSort;
|
||||||
|
private Label labelDomainSort;
|
||||||
|
private ToolStripSeparator toolStripSeparator1;
|
||||||
|
private ToolStripMenuItem otherProjectsToolStripMenuItem;
|
||||||
|
private Button buttonRedeemAll;
|
||||||
|
private Button buttonSendAll;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -27,7 +27,7 @@ namespace FireWallet
|
|||||||
private void NewAccountForm_Load(object sender, EventArgs e)
|
private void NewAccountForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
page = 0;
|
page = 0;
|
||||||
Dictionary<string, string> theme = mainForm.theme;
|
Dictionary<string, string> theme = mainForm.Theme;
|
||||||
this.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
this.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
this.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
this.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
foreach (Control c in Controls)
|
foreach (Control c in Controls)
|
||||||
@@ -208,7 +208,7 @@ namespace FireWallet
|
|||||||
proc.StartInfo.UseShellExecute = false;
|
proc.StartInfo.UseShellExecute = false;
|
||||||
proc.StartInfo.RedirectStandardError = true;
|
proc.StartInfo.RedirectStandardError = true;
|
||||||
proc.StartInfo.FileName = "node.exe";
|
proc.StartInfo.FileName = "node.exe";
|
||||||
proc.StartInfo.Arguments = mainForm.dir + "hsd-ledger/bin/hsd-ledger createwallet " + textBoxNewPass1.Text + " --api-key " + mainForm.nodeSettings["Key"];
|
proc.StartInfo.Arguments = mainForm.dir + "hsd-ledger/bin/hsd-ledger createwallet " + textBoxNewPass1.Text + " --api-key " + mainForm.NodeSettings["Key"];
|
||||||
var outputBuilder = new StringBuilder();
|
var outputBuilder = new StringBuilder();
|
||||||
|
|
||||||
// Event handler for capturing output data
|
// Event handler for capturing output data
|
||||||
@@ -243,10 +243,10 @@ namespace FireWallet
|
|||||||
HttpClient httpClient = new HttpClient();
|
HttpClient httpClient = new HttpClient();
|
||||||
private async Task<string> APIPut(string path, bool wallet, string content)
|
private async Task<string> APIPut(string path, bool wallet, string content)
|
||||||
{
|
{
|
||||||
string key = mainForm.nodeSettings["Key"];
|
string key = mainForm.NodeSettings["Key"];
|
||||||
string ip = mainForm.nodeSettings["IP"];
|
string ip = mainForm.NodeSettings["IP"];
|
||||||
string port = "1203";
|
string port = "1203";
|
||||||
if (mainForm.network == 1)
|
if (mainForm.HSDNetwork == 1)
|
||||||
{
|
{
|
||||||
port = "1303";
|
port = "1303";
|
||||||
}
|
}
|
||||||
|
|||||||
10
FireWallet/Properties/Resources.Designer.cs
generated
10
FireWallet/Properties/Resources.Designer.cs
generated
@@ -59,5 +59,15 @@ namespace FireWallet.Properties {
|
|||||||
resourceCulture = value;
|
resourceCulture = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap FWSplash {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("FWSplash", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,4 +117,8 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
|
<data name="FWSplash" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\FWSplash.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
BIN
FireWallet/Resources/FWSplash.png
Normal file
BIN
FireWallet/Resources/FWSplash.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 50 KiB |
57
FireWallet/SplashScreen.Designer.cs
generated
57
FireWallet/SplashScreen.Designer.cs
generated
@@ -30,19 +30,18 @@
|
|||||||
{
|
{
|
||||||
components = new System.ComponentModel.Container();
|
components = new System.ComponentModel.Container();
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashScreen));
|
||||||
timerSplashDelay = new System.Windows.Forms.Timer(components);
|
|
||||||
label1 = new Label();
|
label1 = new Label();
|
||||||
pictureBox1 = new PictureBox();
|
pictureBox1 = new PictureBox();
|
||||||
label2 = new Label();
|
label2 = new Label();
|
||||||
|
panelNew = new Panel();
|
||||||
|
pictureBoxNew = new PictureBox();
|
||||||
|
timerIn = new System.Windows.Forms.Timer(components);
|
||||||
|
timerOut = new System.Windows.Forms.Timer(components);
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
|
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
|
||||||
|
panelNew.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureBoxNew).BeginInit();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// timerSplashDelay
|
|
||||||
//
|
|
||||||
timerSplashDelay.Enabled = true;
|
|
||||||
timerSplashDelay.Interval = 3000;
|
|
||||||
timerSplashDelay.Tick += timerSplashDelay_Tick;
|
|
||||||
//
|
|
||||||
// label1
|
// label1
|
||||||
//
|
//
|
||||||
label1.AutoSize = true;
|
label1.AutoSize = true;
|
||||||
@@ -75,12 +74,45 @@
|
|||||||
label2.Text = "Nathan.Woodburn/";
|
label2.Text = "Nathan.Woodburn/";
|
||||||
label2.Click += label2_Click;
|
label2.Click += label2_Click;
|
||||||
//
|
//
|
||||||
|
// panelNew
|
||||||
|
//
|
||||||
|
panelNew.Controls.Add(pictureBoxNew);
|
||||||
|
panelNew.Dock = DockStyle.Fill;
|
||||||
|
panelNew.Location = new Point(0, 0);
|
||||||
|
panelNew.Name = "panelNew";
|
||||||
|
panelNew.Size = new Size(450, 450);
|
||||||
|
panelNew.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// pictureBoxNew
|
||||||
|
//
|
||||||
|
pictureBoxNew.BackColor = Color.Black;
|
||||||
|
pictureBoxNew.Dock = DockStyle.Fill;
|
||||||
|
pictureBoxNew.Image = Properties.Resources.FWSplash;
|
||||||
|
pictureBoxNew.InitialImage = null;
|
||||||
|
pictureBoxNew.Location = new Point(0, 0);
|
||||||
|
pictureBoxNew.Name = "pictureBoxNew";
|
||||||
|
pictureBoxNew.Size = new Size(450, 450);
|
||||||
|
pictureBoxNew.SizeMode = PictureBoxSizeMode.Zoom;
|
||||||
|
pictureBoxNew.TabIndex = 0;
|
||||||
|
pictureBoxNew.TabStop = false;
|
||||||
|
pictureBoxNew.Visible = false;
|
||||||
|
//
|
||||||
|
// timerIn
|
||||||
|
//
|
||||||
|
timerIn.Enabled = true;
|
||||||
|
timerIn.Tick += timerIn_Tick;
|
||||||
|
//
|
||||||
|
// timerOut
|
||||||
|
//
|
||||||
|
timerOut.Tick += timerOut_Tick;
|
||||||
|
//
|
||||||
// SplashScreen
|
// SplashScreen
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
BackColor = Color.Black;
|
BackColor = Color.Black;
|
||||||
ClientSize = new Size(444, 435);
|
ClientSize = new Size(450, 450);
|
||||||
|
Controls.Add(panelNew);
|
||||||
Controls.Add(label2);
|
Controls.Add(label2);
|
||||||
Controls.Add(pictureBox1);
|
Controls.Add(pictureBox1);
|
||||||
Controls.Add(label1);
|
Controls.Add(label1);
|
||||||
@@ -93,16 +125,21 @@
|
|||||||
Text = "FireWallet";
|
Text = "FireWallet";
|
||||||
TopMost = true;
|
TopMost = true;
|
||||||
FormClosing += SplashScreen_FormClosing;
|
FormClosing += SplashScreen_FormClosing;
|
||||||
|
Load += SplashScreen_Load;
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
|
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
|
||||||
|
panelNew.ResumeLayout(false);
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureBoxNew).EndInit();
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.Timer timerSplashDelay;
|
|
||||||
private Label label1;
|
private Label label1;
|
||||||
private PictureBox pictureBox1;
|
private PictureBox pictureBox1;
|
||||||
private Label label2;
|
private Label label2;
|
||||||
|
private Panel panelNew;
|
||||||
|
private PictureBox pictureBoxNew;
|
||||||
|
private System.Windows.Forms.Timer timerIn;
|
||||||
|
private System.Windows.Forms.Timer timerOut;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,35 +1,35 @@
|
|||||||
using System;
|
using System.Diagnostics;
|
||||||
using System.Collections.Generic;
|
using System.Drawing.Imaging;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.Data;
|
|
||||||
using System.Diagnostics;
|
|
||||||
using System.Drawing;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace FireWallet
|
namespace FireWallet
|
||||||
{
|
{
|
||||||
public partial class SplashScreen : Form
|
public partial class SplashScreen : Form
|
||||||
{
|
{
|
||||||
public SplashScreen()
|
public SplashScreen(bool timer)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
close = false;
|
close = false;
|
||||||
|
IsClosed = false;
|
||||||
}
|
}
|
||||||
bool close;
|
bool close;
|
||||||
private void timerSplashDelay_Tick(object sender, EventArgs e)
|
float opacity = 0.0f;
|
||||||
{
|
|
||||||
close = true;
|
|
||||||
this.Close();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
|
private void SplashScreen_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
{
|
{
|
||||||
|
if (!close)
|
||||||
|
{
|
||||||
|
e.Cancel = true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
public bool IsClosed { get; set; }
|
||||||
|
public void CloseSplash()
|
||||||
|
{
|
||||||
|
close = true;
|
||||||
|
|
||||||
|
// Fade out
|
||||||
|
timerIn.Stop();
|
||||||
|
timerOut.Start();
|
||||||
|
}
|
||||||
private void label2_Click(object sender, EventArgs e)
|
private void label2_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ProcessStartInfo psi = new ProcessStartInfo
|
ProcessStartInfo psi = new ProcessStartInfo
|
||||||
@@ -39,5 +39,56 @@ namespace FireWallet
|
|||||||
};
|
};
|
||||||
Process.Start(psi);
|
Process.Start(psi);
|
||||||
}
|
}
|
||||||
|
Bitmap splash = new Bitmap(Properties.Resources.FWSplash);
|
||||||
|
private void SplashScreen_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
pictureBoxNew.Visible = true;
|
||||||
|
this.TransparencyKey = Color.FromArgb(0, 0, 0);
|
||||||
|
pictureBoxNew.Invalidate();
|
||||||
|
}
|
||||||
|
public Image SetImageOpacity(Image image, float opacity)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Bitmap bmp = new Bitmap(image.Width, image.Height);
|
||||||
|
using (Graphics gfx = Graphics.FromImage(bmp))
|
||||||
|
{
|
||||||
|
ColorMatrix matrix = new ColorMatrix();
|
||||||
|
matrix.Matrix33 = opacity;
|
||||||
|
ImageAttributes attributes = new ImageAttributes();
|
||||||
|
attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap);
|
||||||
|
gfx.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes);
|
||||||
|
}
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void timerIn_Tick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (opacity >= 1)
|
||||||
|
{
|
||||||
|
timerIn.Stop();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
opacity += 0.05f;
|
||||||
|
pictureBoxNew.Image = SetImageOpacity(splash, opacity);
|
||||||
|
pictureBoxNew.Invalidate();
|
||||||
|
}
|
||||||
|
private void timerOut_Tick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (opacity <= 0)
|
||||||
|
{
|
||||||
|
timerOut.Stop();
|
||||||
|
IsClosed = true;
|
||||||
|
this.Close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
opacity -= 0.05f;
|
||||||
|
pictureBoxNew.Image = SetImageOpacity(splash, opacity);
|
||||||
|
pictureBoxNew.Invalidate();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,9 +117,6 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<metadata name="timerSplashDelay.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
|
||||||
<value>17, 17</value>
|
|
||||||
</metadata>
|
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="pictureBox1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
@@ -901,6 +898,12 @@
|
|||||||
AAAAAAAAAAAAAADQwWbM+D8RAPjBClJL0gAAAABJRU5ErkJggg==
|
AAAAAAAAAAAAAADQwWbM+D8RAPjBClJL0gAAAABJRU5ErkJggg==
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
|
<metadata name="timerIn.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="timerOut.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>104, 17</value>
|
||||||
|
</metadata>
|
||||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
AAABAAEAAAAAAAEAIAB2pAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAOEAAADAAgGAAAAfG+p9QAAIABJ
|
AAABAAEAAAAAAAEAIAB2pAAAFgAAAIlQTkcNChoKAAAADUlIRFIAAAOEAAADAAgGAAAAfG+p9QAAIABJ
|
||||||
|
|||||||
@@ -17,28 +17,33 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
MainForm mainForm;
|
MainForm mainForm;
|
||||||
JObject tx;
|
JObject tx;
|
||||||
public TXForm(MainForm mainForm, JObject tx)
|
string txid;
|
||||||
|
public TXForm(MainForm mainForm, string txid)
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
// Theme
|
// Theme
|
||||||
this.BackColor = ColorTranslator.FromHtml(mainForm.theme["background"]);
|
this.BackColor = ColorTranslator.FromHtml(mainForm.Theme["background"]);
|
||||||
this.ForeColor = ColorTranslator.FromHtml(mainForm.theme["foreground"]);
|
this.ForeColor = ColorTranslator.FromHtml(mainForm.Theme["foreground"]);
|
||||||
foreach (Control c in Controls)
|
foreach (Control c in Controls)
|
||||||
{
|
{
|
||||||
mainForm.ThemeControl(c);
|
mainForm.ThemeControl(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.mainForm = mainForm;
|
this.mainForm = mainForm;
|
||||||
this.tx = tx;
|
this.txid = txid;
|
||||||
|
|
||||||
this.Text = "TX: " + tx["hash"].ToString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void TXForm_Load(object sender, EventArgs e)
|
private async void TXForm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
tx = JObject.Parse(await mainForm.APIGet("wallet/"+mainForm.Account+"/tx/" + txid,true));
|
||||||
|
|
||||||
|
this.Text = "TX: " + tx["hash"].ToString();
|
||||||
labelHash.Text = "Hash: " + tx["hash"].ToString();
|
labelHash.Text = "Hash: " + tx["hash"].ToString();
|
||||||
mainForm.AddLog("Viewing TX: " + tx["hash"].ToString());
|
mainForm.AddLog("Viewing TX: " + tx["hash"].ToString());
|
||||||
|
|
||||||
|
// Disable scrolling on the panels until they are populated
|
||||||
|
panelInputs.Visible = false;
|
||||||
|
panelOutputs.Visible = false;
|
||||||
|
|
||||||
// For each input
|
// For each input
|
||||||
JArray inputs = (JArray)tx["inputs"];
|
JArray inputs = (JArray)tx["inputs"];
|
||||||
@@ -74,7 +79,7 @@ namespace FireWallet
|
|||||||
|
|
||||||
panelInputs.Controls.Add(PanelInput);
|
panelInputs.Controls.Add(PanelInput);
|
||||||
}
|
}
|
||||||
|
panelInputs.Visible = true;
|
||||||
// For each output
|
// For each output
|
||||||
JArray outputs = (JArray)tx["outputs"];
|
JArray outputs = (JArray)tx["outputs"];
|
||||||
foreach (JObject output in outputs)
|
foreach (JObject output in outputs)
|
||||||
@@ -131,12 +136,13 @@ namespace FireWallet
|
|||||||
|
|
||||||
panelOutputs.Controls.Add(PanelOutput);
|
panelOutputs.Controls.Add(PanelOutput);
|
||||||
}
|
}
|
||||||
|
panelOutputs.Visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Explorer_Click(object sender, EventArgs e)
|
private void Explorer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
// Open the transaction in a browser
|
// Open the transaction in a browser
|
||||||
string url = mainForm.userSettings["explorer-tx"] + tx["hash"].ToString();
|
string url = mainForm.UserSettings["explorer-tx"] + tx["hash"].ToString();
|
||||||
ProcessStartInfo psi = new ProcessStartInfo
|
ProcessStartInfo psi = new ProcessStartInfo
|
||||||
{
|
{
|
||||||
FileName = url,
|
FileName = url,
|
||||||
|
|||||||
29
FireWallet/TransferForm.Designer.cs
generated
29
FireWallet/TransferForm.Designer.cs
generated
@@ -36,6 +36,8 @@
|
|||||||
label2 = new Label();
|
label2 = new Label();
|
||||||
textBoxAddress = new TextBox();
|
textBoxAddress = new TextBox();
|
||||||
labelError = new Label();
|
labelError = new Label();
|
||||||
|
labelSendingHIPAddress = new Label();
|
||||||
|
labelHIPArrow = new Label();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// buttonTransfer
|
// buttonTransfer
|
||||||
@@ -105,18 +107,41 @@
|
|||||||
// labelError
|
// labelError
|
||||||
//
|
//
|
||||||
labelError.AutoSize = true;
|
labelError.AutoSize = true;
|
||||||
labelError.Location = new Point(46, 139);
|
labelError.Location = new Point(492, 139);
|
||||||
labelError.Name = "labelError";
|
labelError.Name = "labelError";
|
||||||
labelError.Size = new Size(98, 15);
|
labelError.Size = new Size(98, 15);
|
||||||
labelError.TabIndex = 6;
|
labelError.TabIndex = 6;
|
||||||
labelError.Text = "Address not valid";
|
labelError.Text = "Address not valid";
|
||||||
labelError.Visible = false;
|
labelError.Visible = false;
|
||||||
//
|
//
|
||||||
|
// labelSendingHIPAddress
|
||||||
|
//
|
||||||
|
labelSendingHIPAddress.AutoSize = true;
|
||||||
|
labelSendingHIPAddress.Location = new Point(75, 150);
|
||||||
|
labelSendingHIPAddress.Name = "labelSendingHIPAddress";
|
||||||
|
labelSendingHIPAddress.Size = new Size(64, 15);
|
||||||
|
labelSendingHIPAddress.TabIndex = 19;
|
||||||
|
labelSendingHIPAddress.Text = "To Address";
|
||||||
|
labelSendingHIPAddress.Visible = false;
|
||||||
|
//
|
||||||
|
// labelHIPArrow
|
||||||
|
//
|
||||||
|
labelHIPArrow.AutoSize = true;
|
||||||
|
labelHIPArrow.Font = new Font("Segoe UI", 18F, FontStyle.Bold, GraphicsUnit.Point);
|
||||||
|
labelHIPArrow.Location = new Point(46, 139);
|
||||||
|
labelHIPArrow.Name = "labelHIPArrow";
|
||||||
|
labelHIPArrow.Size = new Size(32, 32);
|
||||||
|
labelHIPArrow.TabIndex = 20;
|
||||||
|
labelHIPArrow.Text = "⮡ ";
|
||||||
|
labelHIPArrow.Visible = false;
|
||||||
|
//
|
||||||
// TransferForm
|
// TransferForm
|
||||||
//
|
//
|
||||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
AutoScaleMode = AutoScaleMode.Font;
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
ClientSize = new Size(602, 340);
|
ClientSize = new Size(602, 340);
|
||||||
|
Controls.Add(labelSendingHIPAddress);
|
||||||
|
Controls.Add(labelHIPArrow);
|
||||||
Controls.Add(labelError);
|
Controls.Add(labelError);
|
||||||
Controls.Add(textBoxAddress);
|
Controls.Add(textBoxAddress);
|
||||||
Controls.Add(label2);
|
Controls.Add(label2);
|
||||||
@@ -143,5 +168,7 @@
|
|||||||
private Label label2;
|
private Label label2;
|
||||||
private TextBox textBoxAddress;
|
private TextBox textBoxAddress;
|
||||||
private Label labelError;
|
private Label labelError;
|
||||||
|
private Label labelSendingHIPAddress;
|
||||||
|
private Label labelHIPArrow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -8,6 +8,8 @@ using System.Net;
|
|||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using DnsClient.Protocol;
|
||||||
|
using DnsClient;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
namespace FireWallet
|
namespace FireWallet
|
||||||
@@ -23,18 +25,18 @@ namespace FireWallet
|
|||||||
Domain = domain;
|
Domain = domain;
|
||||||
this.Text = "Transfer " + Domain + " | FireWallet";
|
this.Text = "Transfer " + Domain + " | FireWallet";
|
||||||
label1.Text = "Transfer " + Domain;
|
label1.Text = "Transfer " + Domain;
|
||||||
if (MainForm.theme.ContainsKey("error"))
|
if (MainForm.Theme.ContainsKey("error"))
|
||||||
{
|
{
|
||||||
labelError.ForeColor = ColorTranslator.FromHtml(MainForm.theme["error"]);
|
labelError.ForeColor = ColorTranslator.FromHtml(MainForm.Theme["error"]);
|
||||||
}
|
}
|
||||||
if (MainForm.watchOnly)
|
if (MainForm.WatchOnly)
|
||||||
{
|
{
|
||||||
buttonTransfer.Enabled = false; // watch only wallet only batch
|
buttonTransfer.Enabled = false; // watch only wallet only batch
|
||||||
}
|
}
|
||||||
|
|
||||||
// Theme
|
// Theme
|
||||||
this.BackColor = ColorTranslator.FromHtml(MainForm.theme["background"]);
|
this.BackColor = ColorTranslator.FromHtml(MainForm.Theme["background"]);
|
||||||
this.ForeColor = ColorTranslator.FromHtml(MainForm.theme["foreground"]);
|
this.ForeColor = ColorTranslator.FromHtml(MainForm.Theme["foreground"]);
|
||||||
foreach (Control c in Controls)
|
foreach (Control c in Controls)
|
||||||
{
|
{
|
||||||
MainForm.ThemeControl(c);
|
MainForm.ThemeControl(c);
|
||||||
@@ -46,16 +48,19 @@ namespace FireWallet
|
|||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
string address = "";
|
||||||
private async void buttonTransfer_Click(object sender, EventArgs e)
|
private async void buttonTransfer_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!await MainForm.ValidAddress(textBoxAddress.Text))
|
updateAddress();
|
||||||
|
|
||||||
|
if (!await MainForm.ValidAddress(address))
|
||||||
{
|
{
|
||||||
labelError.Show();
|
labelError.Show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
string content = "{\"method\": \"sendtransfer\",\"params\": [ \"" + Domain + "\", \"" +
|
string content = "{\"method\": \"sendtransfer\",\"params\": [ \"" + Domain + "\", \"" +
|
||||||
textBoxAddress.Text + "\"]}";
|
address + "\"]}";
|
||||||
string output = await MainForm.APIPost("", true, content);
|
string output = await MainForm.APIPost("", true, content);
|
||||||
JObject APIresp = JObject.Parse(output);
|
JObject APIresp = JObject.Parse(output);
|
||||||
if (APIresp["error"].ToString() != "")
|
if (APIresp["error"].ToString() != "")
|
||||||
@@ -68,7 +73,7 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
JObject result = JObject.Parse(APIresp["result"].ToString());
|
JObject result = JObject.Parse(APIresp["result"].ToString());
|
||||||
string hash = result["hash"].ToString();
|
string hash = result["hash"].ToString();
|
||||||
string link = MainForm.userSettings["explorer-tx"] + hash;
|
string link = MainForm.UserSettings["explorer-tx"] + hash;
|
||||||
NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine",
|
NotifyForm notifySuccess = new NotifyForm("Transaction Sent\nThis transaction could take up to 20 minutes to mine",
|
||||||
"Explorer", link);
|
"Explorer", link);
|
||||||
notifySuccess.ShowDialog();
|
notifySuccess.ShowDialog();
|
||||||
@@ -78,14 +83,113 @@ namespace FireWallet
|
|||||||
|
|
||||||
private async void buttonBatch_Click(object sender, EventArgs e)
|
private async void buttonBatch_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (!await MainForm.ValidAddress(textBoxAddress.Text))
|
updateAddress();
|
||||||
|
|
||||||
|
if (!await MainForm.ValidAddress(address))
|
||||||
{
|
{
|
||||||
labelError.Show();
|
labelError.Show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MainForm.AddBatch(Domain, "TRANSFER", textBoxAddress.Text);
|
MainForm.AddBatch(Domain, "TRANSFER", address);
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateAddress()
|
||||||
|
{
|
||||||
|
labelError.Hide();
|
||||||
|
|
||||||
|
if (textBoxAddress.Text.Length < 1)
|
||||||
|
{
|
||||||
|
address = "";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (textBoxAddress.Text.Substring(0, 1) == "@")
|
||||||
|
{
|
||||||
|
string domain = textBoxAddress.Text.Substring(1);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IPAddress iPAddress = null;
|
||||||
|
|
||||||
|
|
||||||
|
// Create an instance of LookupClient using the custom options
|
||||||
|
NameServer nameServer = new NameServer(IPAddress.Parse("127.0.0.1"), 5350);
|
||||||
|
var options = new LookupClientOptions(nameServer);
|
||||||
|
options.EnableAuditTrail = true;
|
||||||
|
options.UseTcpOnly = true;
|
||||||
|
options.Recursion = true;
|
||||||
|
options.UseCache = false;
|
||||||
|
options.RequestDnsSecRecords = true;
|
||||||
|
options.Timeout = TimeSpan.FromSeconds(5);
|
||||||
|
|
||||||
|
|
||||||
|
var client = new LookupClient(options);
|
||||||
|
|
||||||
|
|
||||||
|
// Perform the DNS lookup for the specified domain using DNSSec
|
||||||
|
|
||||||
|
var result = client.Query(domain, QueryType.A);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Display the DNS lookup results
|
||||||
|
foreach (var record in result.Answers.OfType<ARecord>())
|
||||||
|
{
|
||||||
|
iPAddress = record.Address;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iPAddress == null)
|
||||||
|
{
|
||||||
|
labelError.Show();
|
||||||
|
labelError.Text = "HIP-02 lookup failed";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get TLSA record
|
||||||
|
var resultTLSA = client.Query("_443._tcp." + domain, QueryType.TLSA);
|
||||||
|
foreach (var record in resultTLSA.Answers.OfType<TlsaRecord>())
|
||||||
|
{
|
||||||
|
MainForm.TLSA = record.CertificateAssociationDataAsString;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
string url = "https://" + iPAddress.ToString() + "/.well-known/wallets/HNS";
|
||||||
|
var handler = new HttpClientHandler();
|
||||||
|
|
||||||
|
handler.ServerCertificateCustomValidationCallback = MainForm.ValidateServerCertificate;
|
||||||
|
|
||||||
|
// Create an instance of HttpClient with the custom handler
|
||||||
|
using (var httpclient = new HttpClient(handler))
|
||||||
|
{
|
||||||
|
httpclient.DefaultRequestHeaders.Add("Host", domain);
|
||||||
|
// Send a GET request to the specified URL
|
||||||
|
HttpResponseMessage response = httpclient.GetAsync(url).Result;
|
||||||
|
|
||||||
|
// Response
|
||||||
|
string address = response.Content.ReadAsStringAsync().Result;
|
||||||
|
|
||||||
|
labelSendingHIPAddress.Text = address;
|
||||||
|
this.address = address;
|
||||||
|
labelSendingHIPAddress.Show();
|
||||||
|
labelHIPArrow.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MainForm.AddLog(ex.Message);
|
||||||
|
labelError.Show();
|
||||||
|
labelError.Text = "HIP-02 lookup failed";
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
address = textBoxAddress.Text;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
FireWallet/favicon.ico
Normal file
BIN
FireWallet/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 43 KiB |
@@ -224,15 +224,15 @@
|
|||||||
{
|
{
|
||||||
"Name" = "8:Microsoft Visual Studio"
|
"Name" = "8:Microsoft Visual Studio"
|
||||||
"ProductName" = "8:FireWallet"
|
"ProductName" = "8:FireWallet"
|
||||||
"ProductCode" = "8:{D203173F-39CF-4D8C-810D-FF6840540AF3}"
|
"ProductCode" = "8:{C118B90C-B5A0-4015-B03A-FB226DC02F54}"
|
||||||
"PackageCode" = "8:{419FAC68-35FF-48D7-AD7D-83813C7CF72A}"
|
"PackageCode" = "8:{FF49B317-BBC1-40D9-9AFF-315E3AEED79C}"
|
||||||
"UpgradeCode" = "8:{0C86F725-6B01-4173-AA05-3F0EDF481362}"
|
"UpgradeCode" = "8:{0C86F725-6B01-4173-AA05-3F0EDF481362}"
|
||||||
"AspNetVersion" = "8:"
|
"AspNetVersion" = "8:"
|
||||||
"RestartWWWService" = "11:FALSE"
|
"RestartWWWService" = "11:FALSE"
|
||||||
"RemovePreviousVersions" = "11:TRUE"
|
"RemovePreviousVersions" = "11:TRUE"
|
||||||
"DetectNewerInstalledVersion" = "11:TRUE"
|
"DetectNewerInstalledVersion" = "11:TRUE"
|
||||||
"InstallAllUsers" = "11:FALSE"
|
"InstallAllUsers" = "11:FALSE"
|
||||||
"ProductVersion" = "8:2.5"
|
"ProductVersion" = "8:3.3"
|
||||||
"Manufacturer" = "8:Nathan.Woodburn/"
|
"Manufacturer" = "8:Nathan.Woodburn/"
|
||||||
"ARPHELPTELEPHONE" = "8:"
|
"ARPHELPTELEPHONE" = "8:"
|
||||||
"ARPHELPLINK" = "8:https://l.woodburn.au/discord"
|
"ARPHELPLINK" = "8:https://l.woodburn.au/discord"
|
||||||
|
|||||||
36
README.md
36
README.md
@@ -2,6 +2,14 @@
|
|||||||
Experimental wallet for Handshake chain
|
Experimental wallet for Handshake chain
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
### Dependencies
|
||||||
|
You will need .net desktop installed. You can download it from [here](https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-6.0.18-windows-x64-installer).
|
||||||
|
|
||||||
|
You will also need Node, NPM, and git installed if you want to use the internal HSD or Ledger wallets.
|
||||||
|
[Git](https://git-scm.com/downloads)
|
||||||
|
[Node](https://nodejs.org/en/download/)
|
||||||
|
[NPM](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm)
|
||||||
|
|
||||||
### From Releases
|
### From Releases
|
||||||
You can install the latest release from [here](https://github.com/Nathanwoodburn/FireWallet/releases/).
|
You can install the latest release from [here](https://github.com/Nathanwoodburn/FireWallet/releases/).
|
||||||
|
|
||||||
@@ -60,6 +68,9 @@ You can change the number of transactions shown in the `portfolio-tx:` settings.
|
|||||||
<br><br>
|
<br><br>
|
||||||
## Sending HNS
|
## Sending HNS
|
||||||

|

|
||||||
|
This page lets you send HNS to Handshake addresses or domains using [HIP-02](https://github.com/handshake-org/HIPs/blob/master/HIP-0002.md).
|
||||||
|
To use HIP-02 you need to have HSD resolver (or any HNS compatible DNS resolver) listening on port 5350 (default HSD port).
|
||||||
|
To enter a domain to use HIP-02 you need to prefix the domain with `@` (eg. `@nathan.woodburn`).
|
||||||
|
|
||||||
## Receiving HNS or Domains
|
## Receiving HNS or Domains
|
||||||
The receive page shows your current HNS address.
|
The receive page shows your current HNS address.
|
||||||
@@ -102,8 +113,7 @@ You can add transactions to the batch from the domain window or the DNS editor.
|
|||||||
You can also import a list of domains to the batch window.
|
You can also import a list of domains to the batch window.
|
||||||
The "CANCEL" transaction type is used to cancel an transfer.
|
The "CANCEL" transaction type is used to cancel an transfer.
|
||||||
|
|
||||||
At the momemt "UPDATE" or coin only transactions are not supported.
|
Please not that the import syntax for BIDs is BID,LOCKUP where LOCKUP is (BID+BLIND)
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Exporting
|
## Exporting
|
||||||
@@ -128,12 +138,27 @@ They are stored in `%appdata%\FireWallet\` (`C:\Users\{username}\AppData\Roaming
|
|||||||
|
|
||||||
## settings.txt
|
## settings.txt
|
||||||
This file stores the user settings for the application.
|
This file stores the user settings for the application.
|
||||||
|
If you want to change the default HIP-02 resolver you can add these settings
|
||||||
|
```yaml
|
||||||
|
hip-02-ip: 127.0.0.1
|
||||||
|
hip-02-port: 5350
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
## node.txt
|
## node.txt
|
||||||
This file stores the node (HSD/Bob connection) settings.
|
This file stores the node (HSD/Bob connection) settings.
|
||||||
The Network is the network you want to connect to (default is `0` for Mainnet).
|
The Network is the network you want to connect to (default is `0` for Mainnet).
|
||||||
If you delete this file, FireWallet will show the node setup screen on next startup.
|
If you delete this file, FireWallet will show the node setup screen on next startup.
|
||||||
|
|
||||||
|
You can set a custom HSD launch command by setting the `hsd-command` key.
|
||||||
|
The default launch is the same as this
|
||||||
|
```yaml
|
||||||
|
HSD-command: {default-dir} --agent=FireWallet --index-tx --index-address --api-key {key} --prefix {Bob}
|
||||||
|
```
|
||||||
|
The `{default-dir}` will be replaced with the HSD directory `%appdata%\FireWallet\hsd\`.
|
||||||
|
The `{key}` will be replaced with the API key from the node.txt file.
|
||||||
|
The `{Bob}` will be replaced with the Bob wallet HSD data directory `%appdata%\Bob\hsd_data\` this is used to sync FireWallet with Bob's accounts and also stops you needing to sync the chain twice.
|
||||||
|
|
||||||
## theme.txt
|
## theme.txt
|
||||||
This file stores the theme settings.
|
This file stores the theme settings.
|
||||||
The theme is the color scheme of the application.
|
The theme is the color scheme of the application.
|
||||||
@@ -143,3 +168,10 @@ There are 4 modes: `off` is disabled, `mica` is windows app style, `key` is to m
|
|||||||
## log.txt
|
## log.txt
|
||||||
This file stores the logs for the application.
|
This file stores the logs for the application.
|
||||||
You should check this file if you have any issues with the application.
|
You should check this file if you have any issues with the application.
|
||||||
|
|
||||||
|
|
||||||
|
# Support
|
||||||
|
If you have any issues with the application you can open an issue on GitHub or contact me on Discord (NathanWoodburn on most Handshake servers).
|
||||||
|
|
||||||
|
If you would like to support this project you can find out how at https://nathan.woodburn.au/#donate or you can help by contributing to the project on GitHub.
|
||||||
|
Also you can send HNS directly to `@firewallet`
|
||||||
@@ -6,4 +6,4 @@ woodburn4,BID,1,3
|
|||||||
woodburn5,BID,1,3
|
woodburn5,BID,1,3
|
||||||
woodburn6,BID,1,4
|
woodburn6,BID,1,4
|
||||||
woodburn8,TRANSFER,hs1qlmlgnx0g3ynk4ylxkkdh9c9nernclnfq4lw6s9
|
woodburn8,TRANSFER,hs1qlmlgnx0g3ynk4ylxkkdh9c9nernclnfq4lw6s9
|
||||||
exampledomainnathan118,UPDATE,[{"type": "DS","keyTag": 20167,"algorithm": 13,"digestType": 2,"digest":"4a2ab3224727a4754a6c3d77621a5b04241a3d9c7ae7e5fa17f73121b9ff0e06"}, {"type": "NS","ns": "ns1.woodburn."}, {"type": "NS","ns": "ns2.woodburn."}, {"type": "TXT","txt": ["TEST"]}]
|
exampledomainnathan90,UPDATE,[{"type": "NS","ns": "ns1.woodburn."};{"type": "NS","ns": "ns2.woodburn."};{"type": "DS","keyTag": 30273,"algorithm": 13,"digestType": 2,"digest":"9a3a8fb3d625d2a2073d740f10da6056ebed0e97f550aa7f3891ed450c7e60c9"};{"type": "GLUE4","ns": "ns1.exampledomainnathan90.","address": "1.2.3.4"};{"type": "TXT","txt": ["Test TXT record"]}]
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
IP: 127.0.0.1
|
IP: 127.0.0.1
|
||||||
Network: 0
|
Network: 0
|
||||||
Key: my-super-secret-api-key
|
Key: my-super-secret-api-key
|
||||||
|
HSD: False
|
||||||
|
HSD-command: {default-dir} --agent=FireWallet --index-tx --index-address --api-key {key} --prefix {Bob}
|
||||||
15
hsd-ledger
15
hsd-ledger
@@ -136,20 +136,14 @@ async function sendRaw(wclient, nclient, config, ledger, args) { // Create a fun
|
|||||||
const network = Network.get(config.str('network')); // Get the network
|
const network = Network.get(config.str('network')); // Get the network
|
||||||
const id = config.str('wallet-id'); // Get the wallet id
|
const id = config.str('wallet-id'); // Get the wallet id
|
||||||
const acct = config.str('account-name'); // Get the account name
|
const acct = config.str('account-name'); // Get the account name
|
||||||
const batch = args[0]; // Get the batch file location
|
// Log the arguments to the console (for debugging)
|
||||||
const nameslocation = args[1]; // Get the names file location
|
|
||||||
|
|
||||||
|
const batch = JSON.parse(args[0]); // Get the batch
|
||||||
|
const names = JSON.parse(args[1]); // Get the names
|
||||||
await wclient.execute('selectwallet', [id]); // Select the wallet
|
await wclient.execute('selectwallet', [id]); // Select the wallet
|
||||||
|
|
||||||
|
|
||||||
const fs = require('fs'); // Import fs (used to read files)
|
|
||||||
try {
|
try {
|
||||||
const data = fs.readFileSync(batch, 'utf8'); // Read the batch file
|
const mtx = MTX.fromJSON(batch.result); // Create a new MTX from the JSON
|
||||||
const json = JSON.parse(data); // Parse the batch file as JSON
|
|
||||||
const mtx = MTX.fromJSON(json.result); // Create a new MTX from the JSON
|
|
||||||
|
|
||||||
const namefile = fs.readFileSync(nameslocation, 'utf8'); // Read the names file
|
|
||||||
const names = namefile.split(','); // Split the names file into an array
|
|
||||||
const hashes = {}; // Create an empty object to store the hashes
|
const hashes = {}; // Create an empty object to store the hashes
|
||||||
for (const name of names) { // Loop through the names
|
for (const name of names) { // Loop through the names
|
||||||
const hash = hashName(name); // Hash the name
|
const hash = hashName(name); // Hash the name
|
||||||
@@ -428,6 +422,7 @@ function usage(err) {
|
|||||||
console.log(' $ hsd-ledger createaccount <account-name> <account-index>');
|
console.log(' $ hsd-ledger createaccount <account-name> <account-index>');
|
||||||
console.log(' $ hsd-ledger createaddress');
|
console.log(' $ hsd-ledger createaddress');
|
||||||
console.log(' $ hsd-ledger sendtoaddress <address> <amount>');
|
console.log(' $ hsd-ledger sendtoaddress <address> <amount>');
|
||||||
|
console.log(' $ hsd-ledger sendraw <batch> <names>');
|
||||||
console.log(' $ hsd-ledger getwallets');
|
console.log(' $ hsd-ledger getwallets');
|
||||||
console.log(' $ hsd-ledger getaccounts');
|
console.log(' $ hsd-ledger getaccounts');
|
||||||
console.log(' $ hsd-ledger getaccount <account-name>');
|
console.log(' $ hsd-ledger getaccount <account-name>');
|
||||||
|
|||||||
Reference in New Issue
Block a user