mirror of
https://github.com/Nathanwoodburn/FireWallet.git
synced 2024-11-24 08:08:14 +11:00
domain: Added initial domain form
This commit is contained in:
parent
396c7b30dd
commit
072f32f9a9
275
FireWallet/DomainForm.Designer.cs
generated
Normal file
275
FireWallet/DomainForm.Designer.cs
generated
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
namespace FireWallet
|
||||||
|
{
|
||||||
|
partial class DomainForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
labelTitle = new Label();
|
||||||
|
groupBoxStatus = new GroupBox();
|
||||||
|
labelStatusTimeToNext = new Label();
|
||||||
|
labelStatusNextState = new Label();
|
||||||
|
labelStatusTransferring = new Label();
|
||||||
|
labelStatus5 = new Label();
|
||||||
|
labelStatusPaid = new Label();
|
||||||
|
labelStatus4 = new Label();
|
||||||
|
labelStatusHighest = new Label();
|
||||||
|
labelStatus3 = new Label();
|
||||||
|
labelStatusReserved = new Label();
|
||||||
|
labelStatus2 = new Label();
|
||||||
|
labelStatusMain = new Label();
|
||||||
|
labelStatus1 = new Label();
|
||||||
|
groupBoxDNS = new GroupBox();
|
||||||
|
panelDNS = new Panel();
|
||||||
|
groupBoxBids = new GroupBox();
|
||||||
|
panelBids = new Panel();
|
||||||
|
groupBoxStatus.SuspendLayout();
|
||||||
|
groupBoxDNS.SuspendLayout();
|
||||||
|
groupBoxBids.SuspendLayout();
|
||||||
|
SuspendLayout();
|
||||||
|
//
|
||||||
|
// labelTitle
|
||||||
|
//
|
||||||
|
labelTitle.AutoSize = true;
|
||||||
|
labelTitle.Font = new Font("Segoe UI", 20F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
labelTitle.Location = new System.Drawing.Point(12, 9);
|
||||||
|
labelTitle.Name = "labelTitle";
|
||||||
|
labelTitle.Size = new System.Drawing.Size(126, 37);
|
||||||
|
labelTitle.TabIndex = 0;
|
||||||
|
labelTitle.Text = "labelTitle";
|
||||||
|
//
|
||||||
|
// groupBoxStatus
|
||||||
|
//
|
||||||
|
groupBoxStatus.Controls.Add(labelStatusTimeToNext);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatusNextState);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatusTransferring);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatus5);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatusPaid);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatus4);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatusHighest);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatus3);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatusReserved);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatus2);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatusMain);
|
||||||
|
groupBoxStatus.Controls.Add(labelStatus1);
|
||||||
|
groupBoxStatus.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
groupBoxStatus.Location = new System.Drawing.Point(12, 68);
|
||||||
|
groupBoxStatus.Name = "groupBoxStatus";
|
||||||
|
groupBoxStatus.Size = new System.Drawing.Size(378, 173);
|
||||||
|
groupBoxStatus.TabIndex = 1;
|
||||||
|
groupBoxStatus.TabStop = false;
|
||||||
|
groupBoxStatus.Text = "Info";
|
||||||
|
//
|
||||||
|
// labelStatusTimeToNext
|
||||||
|
//
|
||||||
|
labelStatusTimeToNext.AutoSize = true;
|
||||||
|
labelStatusTimeToNext.Location = new System.Drawing.Point(112, 130);
|
||||||
|
labelStatusTimeToNext.Name = "labelStatusTimeToNext";
|
||||||
|
labelStatusTimeToNext.Size = new System.Drawing.Size(67, 21);
|
||||||
|
labelStatusTimeToNext.TabIndex = 11;
|
||||||
|
labelStatusTimeToNext.Text = "0 Blocks";
|
||||||
|
//
|
||||||
|
// labelStatusNextState
|
||||||
|
//
|
||||||
|
labelStatusNextState.AutoSize = true;
|
||||||
|
labelStatusNextState.Location = new System.Drawing.Point(27, 130);
|
||||||
|
labelStatusNextState.Name = "labelStatusNextState";
|
||||||
|
labelStatusNextState.Size = new System.Drawing.Size(79, 21);
|
||||||
|
labelStatusNextState.TabIndex = 10;
|
||||||
|
labelStatusNextState.Text = "Expires in:";
|
||||||
|
//
|
||||||
|
// labelStatusTransferring
|
||||||
|
//
|
||||||
|
labelStatusTransferring.AutoSize = true;
|
||||||
|
labelStatusTransferring.Location = new System.Drawing.Point(112, 109);
|
||||||
|
labelStatusTransferring.Name = "labelStatusTransferring";
|
||||||
|
labelStatusTransferring.Size = new System.Drawing.Size(31, 21);
|
||||||
|
labelStatusTransferring.TabIndex = 9;
|
||||||
|
labelStatusTransferring.Text = "No";
|
||||||
|
//
|
||||||
|
// labelStatus5
|
||||||
|
//
|
||||||
|
labelStatus5.AutoSize = true;
|
||||||
|
labelStatus5.Location = new System.Drawing.Point(9, 109);
|
||||||
|
labelStatus5.Name = "labelStatus5";
|
||||||
|
labelStatus5.Size = new System.Drawing.Size(97, 21);
|
||||||
|
labelStatus5.TabIndex = 8;
|
||||||
|
labelStatus5.Text = "Transferring:";
|
||||||
|
//
|
||||||
|
// labelStatusPaid
|
||||||
|
//
|
||||||
|
labelStatusPaid.AutoSize = true;
|
||||||
|
labelStatusPaid.Location = new System.Drawing.Point(112, 88);
|
||||||
|
labelStatusPaid.Name = "labelStatusPaid";
|
||||||
|
labelStatusPaid.Size = new System.Drawing.Size(95, 21);
|
||||||
|
labelStatusPaid.TabIndex = 7;
|
||||||
|
labelStatusPaid.Text = "Not Opened";
|
||||||
|
//
|
||||||
|
// labelStatus4
|
||||||
|
//
|
||||||
|
labelStatus4.AutoSize = true;
|
||||||
|
labelStatus4.Location = new System.Drawing.Point(26, 88);
|
||||||
|
labelStatus4.Name = "labelStatus4";
|
||||||
|
labelStatus4.Size = new System.Drawing.Size(80, 21);
|
||||||
|
labelStatus4.TabIndex = 6;
|
||||||
|
labelStatus4.Text = "Price Paid:";
|
||||||
|
//
|
||||||
|
// labelStatusHighest
|
||||||
|
//
|
||||||
|
labelStatusHighest.AutoSize = true;
|
||||||
|
labelStatusHighest.Location = new System.Drawing.Point(112, 67);
|
||||||
|
labelStatusHighest.Name = "labelStatusHighest";
|
||||||
|
labelStatusHighest.Size = new System.Drawing.Size(95, 21);
|
||||||
|
labelStatusHighest.TabIndex = 5;
|
||||||
|
labelStatusHighest.Text = "Not Opened";
|
||||||
|
//
|
||||||
|
// labelStatus3
|
||||||
|
//
|
||||||
|
labelStatus3.AutoSize = true;
|
||||||
|
labelStatus3.Location = new System.Drawing.Point(14, 67);
|
||||||
|
labelStatus3.Name = "labelStatus3";
|
||||||
|
labelStatus3.Size = new System.Drawing.Size(92, 21);
|
||||||
|
labelStatus3.TabIndex = 4;
|
||||||
|
labelStatus3.Text = "Highest Bid:";
|
||||||
|
//
|
||||||
|
// labelStatusReserved
|
||||||
|
//
|
||||||
|
labelStatusReserved.AutoSize = true;
|
||||||
|
labelStatusReserved.Location = new System.Drawing.Point(112, 25);
|
||||||
|
labelStatusReserved.Name = "labelStatusReserved";
|
||||||
|
labelStatusReserved.Size = new System.Drawing.Size(40, 21);
|
||||||
|
labelStatusReserved.TabIndex = 3;
|
||||||
|
labelStatusReserved.Text = "True";
|
||||||
|
//
|
||||||
|
// labelStatus2
|
||||||
|
//
|
||||||
|
labelStatus2.AutoSize = true;
|
||||||
|
labelStatus2.Location = new System.Drawing.Point(29, 25);
|
||||||
|
labelStatus2.Name = "labelStatus2";
|
||||||
|
labelStatus2.Size = new System.Drawing.Size(77, 21);
|
||||||
|
labelStatus2.TabIndex = 2;
|
||||||
|
labelStatus2.Text = "Reserved:";
|
||||||
|
//
|
||||||
|
// labelStatusMain
|
||||||
|
//
|
||||||
|
labelStatusMain.AutoSize = true;
|
||||||
|
labelStatusMain.Location = new System.Drawing.Point(112, 46);
|
||||||
|
labelStatusMain.Name = "labelStatusMain";
|
||||||
|
labelStatusMain.Size = new System.Drawing.Size(57, 21);
|
||||||
|
labelStatusMain.TabIndex = 1;
|
||||||
|
labelStatusMain.Text = "Closed";
|
||||||
|
//
|
||||||
|
// labelStatus1
|
||||||
|
//
|
||||||
|
labelStatus1.AutoSize = true;
|
||||||
|
labelStatus1.Location = new System.Drawing.Point(51, 46);
|
||||||
|
labelStatus1.Name = "labelStatus1";
|
||||||
|
labelStatus1.Size = new System.Drawing.Size(55, 21);
|
||||||
|
labelStatus1.TabIndex = 0;
|
||||||
|
labelStatus1.Text = "Status:";
|
||||||
|
//
|
||||||
|
// groupBoxDNS
|
||||||
|
//
|
||||||
|
groupBoxDNS.Controls.Add(panelDNS);
|
||||||
|
groupBoxDNS.Location = new System.Drawing.Point(12, 247);
|
||||||
|
groupBoxDNS.Name = "groupBoxDNS";
|
||||||
|
groupBoxDNS.Size = new System.Drawing.Size(962, 313);
|
||||||
|
groupBoxDNS.TabIndex = 12;
|
||||||
|
groupBoxDNS.TabStop = false;
|
||||||
|
groupBoxDNS.Text = "DNS";
|
||||||
|
//
|
||||||
|
// panelDNS
|
||||||
|
//
|
||||||
|
panelDNS.Dock = DockStyle.Fill;
|
||||||
|
panelDNS.Location = new System.Drawing.Point(3, 19);
|
||||||
|
panelDNS.Name = "panelDNS";
|
||||||
|
panelDNS.Size = new System.Drawing.Size(956, 291);
|
||||||
|
panelDNS.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// groupBoxBids
|
||||||
|
//
|
||||||
|
groupBoxBids.Controls.Add(panelBids);
|
||||||
|
groupBoxBids.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
groupBoxBids.Location = new System.Drawing.Point(12, 247);
|
||||||
|
groupBoxBids.Name = "groupBoxBids";
|
||||||
|
groupBoxBids.Size = new System.Drawing.Size(962, 313);
|
||||||
|
groupBoxBids.TabIndex = 13;
|
||||||
|
groupBoxBids.TabStop = false;
|
||||||
|
groupBoxBids.Text = "Bids";
|
||||||
|
groupBoxBids.Visible = false;
|
||||||
|
//
|
||||||
|
// panelBids
|
||||||
|
//
|
||||||
|
panelBids.Dock = DockStyle.Fill;
|
||||||
|
panelBids.Location = new System.Drawing.Point(3, 19);
|
||||||
|
panelBids.Name = "panelBids";
|
||||||
|
panelBids.Size = new System.Drawing.Size(956, 291);
|
||||||
|
panelBids.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// DomainForm
|
||||||
|
//
|
||||||
|
AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
|
ClientSize = new System.Drawing.Size(986, 572);
|
||||||
|
Controls.Add(groupBoxBids);
|
||||||
|
Controls.Add(groupBoxDNS);
|
||||||
|
Controls.Add(groupBoxStatus);
|
||||||
|
Controls.Add(labelTitle);
|
||||||
|
FormBorderStyle = FormBorderStyle.Fixed3D;
|
||||||
|
MaximizeBox = false;
|
||||||
|
Name = "DomainForm";
|
||||||
|
Text = "DomainForm";
|
||||||
|
Load += DomainForm_Load;
|
||||||
|
groupBoxStatus.ResumeLayout(false);
|
||||||
|
groupBoxStatus.PerformLayout();
|
||||||
|
groupBoxDNS.ResumeLayout(false);
|
||||||
|
groupBoxBids.ResumeLayout(false);
|
||||||
|
ResumeLayout(false);
|
||||||
|
PerformLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private Label labelTitle;
|
||||||
|
private GroupBox groupBoxStatus;
|
||||||
|
private Label labelStatusMain;
|
||||||
|
private Label labelStatus1;
|
||||||
|
private Label labelStatusReserved;
|
||||||
|
private Label labelStatus2;
|
||||||
|
private Label labelStatusHighest;
|
||||||
|
private Label labelStatus3;
|
||||||
|
private Label labelStatusPaid;
|
||||||
|
private Label labelStatus4;
|
||||||
|
private Label labelStatus5;
|
||||||
|
private Label labelStatusTransferring;
|
||||||
|
private Label labelStatusTimeToNext;
|
||||||
|
private Label labelStatusNextState;
|
||||||
|
private GroupBox groupBoxDNS;
|
||||||
|
private Panel panelDNS;
|
||||||
|
private GroupBox groupBoxBids;
|
||||||
|
private Panel panelBids;
|
||||||
|
}
|
||||||
|
}
|
605
FireWallet/DomainForm.cs
Normal file
605
FireWallet/DomainForm.cs
Normal file
@ -0,0 +1,605 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using BitMiracle.LibTiff.Classic;
|
||||||
|
using Microsoft.VisualBasic.Devices;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
|
|
||||||
|
namespace FireWallet
|
||||||
|
{
|
||||||
|
public partial class DomainForm : Form
|
||||||
|
{
|
||||||
|
string dir = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\FireWallet\\";
|
||||||
|
Dictionary<string, string> theme;
|
||||||
|
Dictionary<string, string> nodeSettings;
|
||||||
|
string domain;
|
||||||
|
int network;
|
||||||
|
int height;
|
||||||
|
|
||||||
|
public DomainForm(string domain)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
this.Text = domain + "/ | FireWallet";
|
||||||
|
labelTitle.Text = domain + "/";
|
||||||
|
this.domain = domain;
|
||||||
|
}
|
||||||
|
|
||||||
|
#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
|
||||||
|
this.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
|
|
||||||
|
// Foreground
|
||||||
|
this.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"]);
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
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":
|
||||||
|
this.TransparencyKey = ColorTranslator.FromHtml(theme["background-alt"]);
|
||||||
|
break;
|
||||||
|
case "main":
|
||||||
|
this.TransparencyKey = ColorTranslator.FromHtml(theme["background"]);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
this.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);
|
||||||
|
}
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
private void DomainForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
UpdateTheme();
|
||||||
|
StreamReader sr = new StreamReader(dir + "node.txt");
|
||||||
|
nodeSettings = new Dictionary<string, string>();
|
||||||
|
while (!sr.EndOfStream)
|
||||||
|
{
|
||||||
|
string line = sr.ReadLine();
|
||||||
|
string[] split = line.Split(':');
|
||||||
|
nodeSettings.Add(split[0].Trim(), split[1].Trim());
|
||||||
|
|
||||||
|
}
|
||||||
|
sr.Dispose();
|
||||||
|
|
||||||
|
if (!nodeSettings.ContainsKey("Network") || !nodeSettings.ContainsKey("Key") || !nodeSettings.ContainsKey("IP"))
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
network = Convert.ToInt32(nodeSettings["Network"]);
|
||||||
|
GetName();
|
||||||
|
}
|
||||||
|
private async void GetName()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string content = "{\"method\": \"getnameinfo\", \"params\": [\"" + domain + "\"]}";
|
||||||
|
string response = await APIPost("", false, content);
|
||||||
|
JObject jObject = JObject.Parse(response);
|
||||||
|
|
||||||
|
// Get block height
|
||||||
|
string Nodeinfo = await APIGet("", false);
|
||||||
|
JObject jObjectInfo = JObject.Parse(Nodeinfo);
|
||||||
|
JObject chain = (JObject)jObjectInfo["chain"];
|
||||||
|
height = Convert.ToInt32(chain["height"]);
|
||||||
|
|
||||||
|
if (jObject.ContainsKey("result"))
|
||||||
|
{
|
||||||
|
JObject result = (JObject)jObject["result"];
|
||||||
|
|
||||||
|
JObject start = (JObject)result["start"];
|
||||||
|
labelStatusReserved.Text = start["reserved"].ToString();
|
||||||
|
|
||||||
|
|
||||||
|
if (result.ContainsKey("info"))
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
JObject info = (JObject)result["info"];
|
||||||
|
string state = info["state"].ToString();
|
||||||
|
labelStatusMain.Text = state;
|
||||||
|
labelStatusHighest.Text = convertHNS(info["highest"].ToString()) + " HNS";
|
||||||
|
labelStatusPaid.Text = convertHNS(info["value"].ToString()) + " HNS";
|
||||||
|
|
||||||
|
if (info["transfer"].ToString() == "0") labelStatusTransferring.Text = "No";
|
||||||
|
else labelStatusTransferring.Text = "Yes";
|
||||||
|
|
||||||
|
JObject stats = (JObject)info["stats"];
|
||||||
|
|
||||||
|
if (state == "CLOSED")
|
||||||
|
{
|
||||||
|
string expires = stats["blocksUntilExpire"].ToString() + " Blocks (~" + stats["daysUntilExpire"].ToString() + " days)";
|
||||||
|
labelStatusTimeToNext.Text = expires;
|
||||||
|
}
|
||||||
|
else if (state == "BIDDING")
|
||||||
|
{
|
||||||
|
string bidding = stats["blocksUntilReveal"].ToString() + " Blocks (~" + stats["hoursUntilReveal"].ToString() + " hrs)";
|
||||||
|
labelStatusTimeToNext.Text = bidding;
|
||||||
|
labelStatusNextState.Text = "Reveal in:";
|
||||||
|
}
|
||||||
|
else if (state == "REVEAL")
|
||||||
|
{
|
||||||
|
string reveal = stats["blocksUntilClose"].ToString() + " Blocks (~" + stats["hoursUntilClose"].ToString() + " hrs)";
|
||||||
|
labelStatusTimeToNext.Text = reveal;
|
||||||
|
labelStatusNextState.Text = "Closing in:";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddLog("State not added yet: " + state);
|
||||||
|
AddLog(stats.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Get DNS if the domain isn't in auction
|
||||||
|
if (state == "CLOSED") GetDNS();
|
||||||
|
else if (state == "BIDDING" || state == "REVEAL") GetBids(state);
|
||||||
|
else groupBoxDNS.Visible = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// No info -> Domain not yet auctioned
|
||||||
|
labelStatusMain.Text = "Available";
|
||||||
|
AddLog(ex.Message);
|
||||||
|
AddLog(result.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
labelStatusMain.Text = "Error";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
AddLog(ex.Message);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void GetDNS()
|
||||||
|
{
|
||||||
|
// Get DNS records
|
||||||
|
string contentDNS = "{\"method\": \"getnameresource\", \"params\": [\"" + domain + "\"]}";
|
||||||
|
string responseDNS = await APIPost("", false, contentDNS);
|
||||||
|
JObject jObjectDNS = JObject.Parse(responseDNS);
|
||||||
|
JObject result = (JObject)jObjectDNS["result"];
|
||||||
|
JArray records = (JArray)result["records"];
|
||||||
|
// For each record
|
||||||
|
int i = 0;
|
||||||
|
foreach (JObject record in records)
|
||||||
|
{
|
||||||
|
Panel DNSPanel = new Panel();
|
||||||
|
// Count for scroll width
|
||||||
|
DNSPanel.Width = panelDNS.Width - SystemInformation.VerticalScrollBarWidth - 2;
|
||||||
|
DNSPanel.Height = 60;
|
||||||
|
DNSPanel.BorderStyle = BorderStyle.FixedSingle;
|
||||||
|
DNSPanel.Top = 62 * i;
|
||||||
|
|
||||||
|
Label DNSType = new Label();
|
||||||
|
DNSType.Text = record["type"].ToString();
|
||||||
|
DNSType.Location = new System.Drawing.Point(10, 10);
|
||||||
|
DNSType.AutoSize = true;
|
||||||
|
DNSType.Font = new Font(DNSType.Font.FontFamily, 11.0f, FontStyle.Bold);
|
||||||
|
DNSPanel.Controls.Add(DNSType);
|
||||||
|
|
||||||
|
|
||||||
|
switch (DNSType.Text)
|
||||||
|
{
|
||||||
|
case "NS":
|
||||||
|
Label DNSNS = new Label();
|
||||||
|
DNSNS.Text = record["ns"].ToString();
|
||||||
|
DNSNS.Location = new System.Drawing.Point(10, 30);
|
||||||
|
DNSNS.AutoSize = true;
|
||||||
|
DNSPanel.Controls.Add(DNSNS);
|
||||||
|
break;
|
||||||
|
case "GLUE4":
|
||||||
|
case "GLUE6":
|
||||||
|
Label DNSNS1 = new Label();
|
||||||
|
DNSNS1.Text = record["ns"].ToString();
|
||||||
|
DNSNS1.Location = new System.Drawing.Point(10, 30);
|
||||||
|
DNSNS1.AutoSize = true;
|
||||||
|
DNSPanel.Controls.Add(DNSNS1);
|
||||||
|
Label address = new Label();
|
||||||
|
address.Text = record["address"].ToString();
|
||||||
|
address.Location = new System.Drawing.Point(DNSNS1.Left + DNSNS1.Width + 20, 30);
|
||||||
|
address.AutoSize = true;
|
||||||
|
DNSPanel.Controls.Add(address);
|
||||||
|
break;
|
||||||
|
case "DS":
|
||||||
|
Label keyTag = new Label();
|
||||||
|
keyTag.Text = record["keyTag"].ToString();
|
||||||
|
keyTag.Location = new System.Drawing.Point(10, 30);
|
||||||
|
keyTag.AutoSize = true;
|
||||||
|
DNSPanel.Controls.Add(keyTag);
|
||||||
|
Label algorithm = new Label();
|
||||||
|
algorithm.Text = record["algorithm"].ToString();
|
||||||
|
algorithm.Location = new System.Drawing.Point(keyTag.Left + keyTag.Width + 10, 30);
|
||||||
|
algorithm.AutoSize = true;
|
||||||
|
DNSPanel.Controls.Add(algorithm);
|
||||||
|
Label digestType = new Label();
|
||||||
|
digestType.Text = record["digestType"].ToString();
|
||||||
|
digestType.Location = new System.Drawing.Point(algorithm.Left + algorithm.Width + 10, 30);
|
||||||
|
digestType.AutoSize = true;
|
||||||
|
DNSPanel.Controls.Add(digestType);
|
||||||
|
Label digest = new Label();
|
||||||
|
digest.Text = record["digest"].ToString();
|
||||||
|
digest.Location = new System.Drawing.Point(digestType.Left + digestType.Width + 10, 30);
|
||||||
|
digest.AutoSize = true;
|
||||||
|
DNSPanel.Controls.Add(digest);
|
||||||
|
break;
|
||||||
|
case "TXT":
|
||||||
|
JArray txts = (JArray)record["txt"];
|
||||||
|
int j = 0;
|
||||||
|
foreach (string txt in txts)
|
||||||
|
{
|
||||||
|
Label DNSTXT = new Label();
|
||||||
|
DNSTXT.Text = txt;
|
||||||
|
DNSTXT.Location = new System.Drawing.Point(10, 30 + (j * 20));
|
||||||
|
DNSTXT.AutoSize = true;
|
||||||
|
DNSPanel.Controls.Add(DNSTXT);
|
||||||
|
DNSPanel.Height = 60 + (j * 20);
|
||||||
|
j++;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
panelDNS.Controls.Add(DNSPanel);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
panelDNS.AutoScroll = true;
|
||||||
|
}
|
||||||
|
private async void GetBids(string state)
|
||||||
|
{
|
||||||
|
|
||||||
|
groupBoxBids.Visible = true;
|
||||||
|
panelBids.AutoScroll = true;
|
||||||
|
// Get Bids
|
||||||
|
string contentBids = "{\"method\": \"getauctioninfo\", \"params\": [\"" + domain + "\"]}";
|
||||||
|
string response = await APIPost("", true, contentBids);
|
||||||
|
if (!response.Contains("\"error\":null"))
|
||||||
|
{
|
||||||
|
AddLog("Syncing Domain");
|
||||||
|
// Error
|
||||||
|
// Try scanning for auction
|
||||||
|
contentBids = "{\"method\": \"importname\", \"params\": [\"" + domain + "\", " + (height - 2000) + "]}";
|
||||||
|
response = await APIPost("", true, contentBids);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (state == "BIDDING")
|
||||||
|
{
|
||||||
|
JObject resp = JObject.Parse(response);
|
||||||
|
JObject result = (JObject)resp["result"];
|
||||||
|
JArray bids = (JArray)result["bids"];
|
||||||
|
int i = 1;
|
||||||
|
foreach (JObject bid in bids)
|
||||||
|
{
|
||||||
|
Panel bidPanel = new Panel();
|
||||||
|
// Count for scroll width
|
||||||
|
bidPanel.Width = panelBids.Width - SystemInformation.VerticalScrollBarWidth - 2;
|
||||||
|
bidPanel.Height = 60;
|
||||||
|
bidPanel.BorderStyle = BorderStyle.FixedSingle;
|
||||||
|
bidPanel.Top = (62 * i) - 60;
|
||||||
|
Label bidNumber = new Label();
|
||||||
|
bidNumber.Text = i.ToString();
|
||||||
|
bidNumber.Location = new System.Drawing.Point(10, 10);
|
||||||
|
bidNumber.AutoSize = true;
|
||||||
|
bidNumber.Font = new Font(bidNumber.Font.FontFamily, 11.0f, FontStyle.Bold);
|
||||||
|
bidPanel.Controls.Add(bidNumber);
|
||||||
|
Label bidAmount = new Label();
|
||||||
|
bidAmount.Text = convertHNS(bid["lockup"].ToString()) + " HNS";
|
||||||
|
bidAmount.Location = new System.Drawing.Point(10, 30);
|
||||||
|
bidAmount.AutoSize = true;
|
||||||
|
bidPanel.Controls.Add(bidAmount);
|
||||||
|
if (bid["own"].ToString() == "True")
|
||||||
|
{
|
||||||
|
Label ownBid = new Label();
|
||||||
|
ownBid.Text = "Own Bid";
|
||||||
|
ownBid.Location = new System.Drawing.Point(bidAmount.Left + bidAmount.Width + 10, 30);
|
||||||
|
ownBid.AutoSize = true;
|
||||||
|
bidPanel.Controls.Add(ownBid);
|
||||||
|
}
|
||||||
|
|
||||||
|
panelBids.Controls.Add(bidPanel);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (state == "REVEAL")
|
||||||
|
{
|
||||||
|
JObject resp = JObject.Parse(response);
|
||||||
|
JObject result = (JObject)resp["result"];
|
||||||
|
JArray bids = (JArray)result["bids"];
|
||||||
|
JArray reveals = (JArray)result["reveals"];
|
||||||
|
int i = 1;
|
||||||
|
foreach (JObject bid in bids)
|
||||||
|
{
|
||||||
|
Panel bidPanel = new Panel();
|
||||||
|
// Count for scroll width
|
||||||
|
bidPanel.Width = panelBids.Width - SystemInformation.VerticalScrollBarWidth - 2;
|
||||||
|
bidPanel.Height = 60;
|
||||||
|
bidPanel.BorderStyle = BorderStyle.FixedSingle;
|
||||||
|
bidPanel.Top = (62 * i) - 60;
|
||||||
|
Label bidNumber = new Label();
|
||||||
|
bidNumber.Text = i.ToString();
|
||||||
|
bidNumber.Location = new System.Drawing.Point(10, 10);
|
||||||
|
bidNumber.AutoSize = true;
|
||||||
|
bidNumber.Font = new Font(bidNumber.Font.FontFamily, 11.0f, FontStyle.Bold);
|
||||||
|
bidPanel.Controls.Add(bidNumber);
|
||||||
|
Label bidAmount = new Label();
|
||||||
|
|
||||||
|
bidAmount.Text = convertHNS(bid["lockup"].ToString()) + " HNS";
|
||||||
|
bidAmount.Location = new System.Drawing.Point(10, 30);
|
||||||
|
bidAmount.AutoSize = true;
|
||||||
|
bidPanel.Controls.Add(bidAmount);
|
||||||
|
|
||||||
|
if (bid["own"].ToString() == "true")
|
||||||
|
{
|
||||||
|
Label ownBid = new Label();
|
||||||
|
ownBid.Text = "Own Bid";
|
||||||
|
ownBid.Location = new System.Drawing.Point(bidAmount.Left + bidAmount.Width + 10, 30);
|
||||||
|
ownBid.AutoSize = true;
|
||||||
|
bidPanel.Controls.Add(ownBid);
|
||||||
|
}
|
||||||
|
|
||||||
|
panelBids.Controls.Add(bidPanel);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
private string convertHNS(string dollarydoos)
|
||||||
|
{
|
||||||
|
decimal hns = Convert.ToDecimal(dollarydoos);
|
||||||
|
hns = hns / 1000000;
|
||||||
|
return decimal.Round(hns, 2).ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#region API
|
||||||
|
HttpClient httpClient = new HttpClient();
|
||||||
|
/// <summary>
|
||||||
|
/// Post to HSD API
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path">Path to post to</param>
|
||||||
|
/// <param name="wallet">Whether to use port 12039</param>
|
||||||
|
/// <param name="content">Content to post</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private async Task<string> APIPost(string path, bool wallet, string content)
|
||||||
|
{
|
||||||
|
string key = nodeSettings["Key"];
|
||||||
|
string ip = nodeSettings["IP"];
|
||||||
|
string port = "1203";
|
||||||
|
if (network == 1)
|
||||||
|
{
|
||||||
|
port = "1303";
|
||||||
|
}
|
||||||
|
if (wallet) port = port + "9";
|
||||||
|
else port = port + "7";
|
||||||
|
|
||||||
|
HttpRequestMessage req = new HttpRequestMessage(HttpMethod.Post, "http://" + ip + ":" + port + "/" + path);
|
||||||
|
req.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("x:" + key)));
|
||||||
|
req.Content = new StringContent(content);
|
||||||
|
|
||||||
|
// Send request
|
||||||
|
HttpResponseMessage resp = await httpClient.SendAsync(req);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
resp.EnsureSuccessStatusCode();
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
AddLog("Post Error: " + ex.Message);
|
||||||
|
return "Error";
|
||||||
|
}
|
||||||
|
|
||||||
|
return await resp.Content.ReadAsStringAsync();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Get from HSD API
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="path">Path to get</param>
|
||||||
|
/// <param name="wallet">Whether to use port 12039</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private async Task<string> APIGet(string path, bool wallet)
|
||||||
|
{
|
||||||
|
string key = nodeSettings["Key"];
|
||||||
|
string ip = nodeSettings["IP"];
|
||||||
|
|
||||||
|
string port = "1203";
|
||||||
|
if (network == 1)
|
||||||
|
{
|
||||||
|
port = "1303";
|
||||||
|
}
|
||||||
|
if (wallet) port = port + "9";
|
||||||
|
else port = port + "7";
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, "http://" + ip + ":" + port + "/" + path);
|
||||||
|
// Add API key to header
|
||||||
|
request.Headers.Add("Authorization", "Basic " + Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes("x:" + key)));
|
||||||
|
// Send request and log response
|
||||||
|
HttpResponseMessage response = await httpClient.SendAsync(request);
|
||||||
|
response.EnsureSuccessStatusCode();
|
||||||
|
return await response.Content.ReadAsStringAsync();
|
||||||
|
|
||||||
|
}
|
||||||
|
// Log errors to log textbox
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
AddLog("Get Error: " + ex.Message);
|
||||||
|
return "Error";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void AddLog(string message)
|
||||||
|
{
|
||||||
|
StreamWriter sw = new StreamWriter(dir + "log.txt", true);
|
||||||
|
sw.WriteLine(DateTime.Now.ToString() + ": " + message);
|
||||||
|
sw.Dispose();
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
120
FireWallet/DomainForm.resx
Normal file
120
FireWallet/DomainForm.resx
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing"">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
63
FireWallet/MainForm.Designer.cs
generated
63
FireWallet/MainForm.Designer.cs
generated
@ -50,6 +50,7 @@ namespace FireWallet
|
|||||||
labelaccountusername = new Label();
|
labelaccountusername = new Label();
|
||||||
buttonaccountnew = new Button();
|
buttonaccountnew = new Button();
|
||||||
panelNav = new Panel();
|
panelNav = new Panel();
|
||||||
|
buttonNavDomains = new Button();
|
||||||
buttonNavReceive = new Button();
|
buttonNavReceive = new Button();
|
||||||
buttonNavSend = new Button();
|
buttonNavSend = new Button();
|
||||||
buttonNavPortfolio = new Button();
|
buttonNavPortfolio = new Button();
|
||||||
@ -80,6 +81,9 @@ namespace FireWallet
|
|||||||
labelReceive2 = new Label();
|
labelReceive2 = new Label();
|
||||||
textBoxReceiveAddress = new TextBox();
|
textBoxReceiveAddress = new TextBox();
|
||||||
labelReceive1 = new Label();
|
labelReceive1 = new Label();
|
||||||
|
panelDomains = new Panel();
|
||||||
|
labelDomainSearch = new Label();
|
||||||
|
textBoxDomainSearch = new TextBox();
|
||||||
statusStripmain.SuspendLayout();
|
statusStripmain.SuspendLayout();
|
||||||
panelaccount.SuspendLayout();
|
panelaccount.SuspendLayout();
|
||||||
groupBoxaccount.SuspendLayout();
|
groupBoxaccount.SuspendLayout();
|
||||||
@ -90,6 +94,7 @@ namespace FireWallet
|
|||||||
panelSend.SuspendLayout();
|
panelSend.SuspendLayout();
|
||||||
panelRecieve.SuspendLayout();
|
panelRecieve.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxReceiveQR).BeginInit();
|
((System.ComponentModel.ISupportInitialize)pictureBoxReceiveQR).BeginInit();
|
||||||
|
panelDomains.SuspendLayout();
|
||||||
SuspendLayout();
|
SuspendLayout();
|
||||||
//
|
//
|
||||||
// statusStripmain
|
// statusStripmain
|
||||||
@ -204,6 +209,7 @@ namespace FireWallet
|
|||||||
buttonaccountlogin.Name = "buttonaccountlogin";
|
buttonaccountlogin.Name = "buttonaccountlogin";
|
||||||
buttonaccountlogin.Size = new Size(99, 41);
|
buttonaccountlogin.Size = new Size(99, 41);
|
||||||
buttonaccountlogin.TabIndex = 3;
|
buttonaccountlogin.TabIndex = 3;
|
||||||
|
buttonaccountlogin.TabStop = false;
|
||||||
buttonaccountlogin.Text = "Login";
|
buttonaccountlogin.Text = "Login";
|
||||||
buttonaccountlogin.UseVisualStyleBackColor = true;
|
buttonaccountlogin.UseVisualStyleBackColor = true;
|
||||||
buttonaccountlogin.Click += LoginClick;
|
buttonaccountlogin.Click += LoginClick;
|
||||||
@ -235,11 +241,13 @@ namespace FireWallet
|
|||||||
buttonaccountnew.Name = "buttonaccountnew";
|
buttonaccountnew.Name = "buttonaccountnew";
|
||||||
buttonaccountnew.Size = new Size(99, 41);
|
buttonaccountnew.Size = new Size(99, 41);
|
||||||
buttonaccountnew.TabIndex = 2;
|
buttonaccountnew.TabIndex = 2;
|
||||||
|
buttonaccountnew.TabStop = false;
|
||||||
buttonaccountnew.Text = "New";
|
buttonaccountnew.Text = "New";
|
||||||
buttonaccountnew.UseVisualStyleBackColor = true;
|
buttonaccountnew.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
// panelNav
|
// panelNav
|
||||||
//
|
//
|
||||||
|
panelNav.Controls.Add(buttonNavDomains);
|
||||||
panelNav.Controls.Add(buttonNavReceive);
|
panelNav.Controls.Add(buttonNavReceive);
|
||||||
panelNav.Controls.Add(buttonNavSend);
|
panelNav.Controls.Add(buttonNavSend);
|
||||||
panelNav.Controls.Add(buttonNavPortfolio);
|
panelNav.Controls.Add(buttonNavPortfolio);
|
||||||
@ -249,6 +257,19 @@ namespace FireWallet
|
|||||||
panelNav.Size = new Size(114, 553);
|
panelNav.Size = new Size(114, 553);
|
||||||
panelNav.TabIndex = 6;
|
panelNav.TabIndex = 6;
|
||||||
//
|
//
|
||||||
|
// buttonNavDomains
|
||||||
|
//
|
||||||
|
buttonNavDomains.FlatStyle = FlatStyle.Flat;
|
||||||
|
buttonNavDomains.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonNavDomains.Location = new Point(12, 189);
|
||||||
|
buttonNavDomains.Name = "buttonNavDomains";
|
||||||
|
buttonNavDomains.Size = new Size(89, 30);
|
||||||
|
buttonNavDomains.TabIndex = 2;
|
||||||
|
buttonNavDomains.TabStop = false;
|
||||||
|
buttonNavDomains.Text = "Domains";
|
||||||
|
buttonNavDomains.UseVisualStyleBackColor = true;
|
||||||
|
buttonNavDomains.Click += buttonNavDomains_Click;
|
||||||
|
//
|
||||||
// buttonNavReceive
|
// buttonNavReceive
|
||||||
//
|
//
|
||||||
buttonNavReceive.FlatStyle = FlatStyle.Flat;
|
buttonNavReceive.FlatStyle = FlatStyle.Flat;
|
||||||
@ -293,7 +314,7 @@ namespace FireWallet
|
|||||||
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(448, 170);
|
panelPortfolio.Location = new Point(1085, 47);
|
||||||
panelPortfolio.Name = "panelPortfolio";
|
panelPortfolio.Name = "panelPortfolio";
|
||||||
panelPortfolio.Size = new Size(956, 538);
|
panelPortfolio.Size = new Size(956, 538);
|
||||||
panelPortfolio.TabIndex = 7;
|
panelPortfolio.TabIndex = 7;
|
||||||
@ -406,7 +427,7 @@ 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(448, 170);
|
panelSend.Location = new Point(1113, 42);
|
||||||
panelSend.Name = "panelSend";
|
panelSend.Name = "panelSend";
|
||||||
panelSend.Size = new Size(974, 521);
|
panelSend.Size = new Size(974, 521);
|
||||||
panelSend.TabIndex = 2;
|
panelSend.TabIndex = 2;
|
||||||
@ -535,7 +556,7 @@ namespace FireWallet
|
|||||||
panelRecieve.Controls.Add(labelReceive2);
|
panelRecieve.Controls.Add(labelReceive2);
|
||||||
panelRecieve.Controls.Add(textBoxReceiveAddress);
|
panelRecieve.Controls.Add(textBoxReceiveAddress);
|
||||||
panelRecieve.Controls.Add(labelReceive1);
|
panelRecieve.Controls.Add(labelReceive1);
|
||||||
panelRecieve.Location = new Point(120, 25);
|
panelRecieve.Location = new Point(1057, 62);
|
||||||
panelRecieve.Name = "panelRecieve";
|
panelRecieve.Name = "panelRecieve";
|
||||||
panelRecieve.Size = new Size(995, 523);
|
panelRecieve.Size = new Size(995, 523);
|
||||||
panelRecieve.TabIndex = 17;
|
panelRecieve.TabIndex = 17;
|
||||||
@ -580,11 +601,41 @@ namespace FireWallet
|
|||||||
labelReceive1.TabIndex = 0;
|
labelReceive1.TabIndex = 0;
|
||||||
labelReceive1.Text = "Here is your receive address:";
|
labelReceive1.Text = "Here is your receive address:";
|
||||||
//
|
//
|
||||||
|
// panelDomains
|
||||||
|
//
|
||||||
|
panelDomains.Controls.Add(labelDomainSearch);
|
||||||
|
panelDomains.Controls.Add(textBoxDomainSearch);
|
||||||
|
panelDomains.Location = new Point(120, 27);
|
||||||
|
panelDomains.Name = "panelDomains";
|
||||||
|
panelDomains.Size = new Size(920, 536);
|
||||||
|
panelDomains.TabIndex = 18;
|
||||||
|
panelDomains.Visible = false;
|
||||||
|
//
|
||||||
|
// labelDomainSearch
|
||||||
|
//
|
||||||
|
labelDomainSearch.AutoSize = true;
|
||||||
|
labelDomainSearch.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
labelDomainSearch.Location = new Point(92, 47);
|
||||||
|
labelDomainSearch.Name = "labelDomainSearch";
|
||||||
|
labelDomainSearch.Size = new Size(57, 21);
|
||||||
|
labelDomainSearch.TabIndex = 1;
|
||||||
|
labelDomainSearch.Text = "Search";
|
||||||
|
//
|
||||||
|
// textBoxDomainSearch
|
||||||
|
//
|
||||||
|
textBoxDomainSearch.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
textBoxDomainSearch.Location = new Point(155, 44);
|
||||||
|
textBoxDomainSearch.Name = "textBoxDomainSearch";
|
||||||
|
textBoxDomainSearch.Size = new Size(206, 29);
|
||||||
|
textBoxDomainSearch.TabIndex = 0;
|
||||||
|
textBoxDomainSearch.KeyDown += textBoxDomainSearch_KeyDown;
|
||||||
|
//
|
||||||
// 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(panelRecieve);
|
Controls.Add(panelRecieve);
|
||||||
Controls.Add(panelSend);
|
Controls.Add(panelSend);
|
||||||
Controls.Add(panelPortfolio);
|
Controls.Add(panelPortfolio);
|
||||||
@ -612,6 +663,8 @@ namespace FireWallet
|
|||||||
panelRecieve.ResumeLayout(false);
|
panelRecieve.ResumeLayout(false);
|
||||||
panelRecieve.PerformLayout();
|
panelRecieve.PerformLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxReceiveQR).EndInit();
|
((System.ComponentModel.ISupportInitialize)pictureBoxReceiveQR).EndInit();
|
||||||
|
panelDomains.ResumeLayout(false);
|
||||||
|
panelDomains.PerformLayout();
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
}
|
}
|
||||||
@ -664,5 +717,9 @@ namespace FireWallet
|
|||||||
private TextBox textBoxReceiveAddress;
|
private TextBox textBoxReceiveAddress;
|
||||||
private Label labelReceive2;
|
private Label labelReceive2;
|
||||||
private PictureBox pictureBoxReceiveQR;
|
private PictureBox pictureBoxReceiveQR;
|
||||||
|
private Button buttonNavDomains;
|
||||||
|
private Panel panelDomains;
|
||||||
|
private Label labelDomainSearch;
|
||||||
|
private TextBox textBoxDomainSearch;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -75,7 +75,7 @@ namespace FireWallet
|
|||||||
{
|
{
|
||||||
if (!File.Exists(dir + "node.txt"))
|
if (!File.Exists(dir + "node.txt"))
|
||||||
{
|
{
|
||||||
CreateForm cf = new CreateForm();
|
NodeForm cf = new NodeForm();
|
||||||
cf.ShowDialog();
|
cf.ShowDialog();
|
||||||
// Initial run
|
// Initial run
|
||||||
}
|
}
|
||||||
@ -459,6 +459,8 @@ namespace FireWallet
|
|||||||
panelNav.Visible = false;
|
panelNav.Visible = false;
|
||||||
panelSend.Visible = false;
|
panelSend.Visible = false;
|
||||||
panelRecieve.Visible = false;
|
panelRecieve.Visible = false;
|
||||||
|
panelDomains.Visible = false;
|
||||||
|
panelPortfolio.Visible = false;
|
||||||
toolStripStatusLabelaccount.Text = "Account: Not Logged In";
|
toolStripStatusLabelaccount.Text = "Account: Not Logged In";
|
||||||
screen = 0;
|
screen = 0;
|
||||||
|
|
||||||
@ -486,9 +488,8 @@ namespace FireWallet
|
|||||||
|
|
||||||
JObject resp = JObject.Parse(response);
|
JObject resp = JObject.Parse(response);
|
||||||
|
|
||||||
decimal available = Convert.ToDecimal(resp["unconfirmed"].ToString()) - Convert.ToDecimal(resp["lockedUnconfirmed"].ToString()) / 1000000;
|
decimal available = (Convert.ToDecimal(resp["unconfirmed"].ToString()) - Convert.ToDecimal(resp["lockedUnconfirmed"].ToString())) / 1000000;
|
||||||
decimal locked = Convert.ToDecimal(resp["lockedUnconfirmed"].ToString()) / 1000000;
|
decimal locked = Convert.ToDecimal(resp["lockedUnconfirmed"].ToString()) / 1000000;
|
||||||
available = available - locked;
|
|
||||||
available = decimal.Round(available, 2);
|
available = decimal.Round(available, 2);
|
||||||
locked = decimal.Round(locked, 2);
|
locked = decimal.Round(locked, 2);
|
||||||
balance = available;
|
balance = available;
|
||||||
@ -730,10 +731,13 @@ namespace FireWallet
|
|||||||
panelSend.Hide();
|
panelSend.Hide();
|
||||||
panelPortfolio.Show();
|
panelPortfolio.Show();
|
||||||
panelRecieve.Hide();
|
panelRecieve.Hide();
|
||||||
|
panelDomains.Hide();
|
||||||
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
buttonNavSend.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
buttonNavSend.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
buttonNavReceive.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
buttonNavReceive.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
buttonNavReceive.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
buttonNavReceive.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
|
buttonNavDomains.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
|
buttonNavDomains.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
await UpdateBalance();
|
await UpdateBalance();
|
||||||
GetTXHistory();
|
GetTXHistory();
|
||||||
labelBalance.Text = "Available: " + balance.ToString() + " HNS";
|
labelBalance.Text = "Available: " + balance.ToString() + " HNS";
|
||||||
@ -751,10 +755,13 @@ namespace FireWallet
|
|||||||
panelPortfolio.Hide();
|
panelPortfolio.Hide();
|
||||||
panelSend.Show();
|
panelSend.Show();
|
||||||
panelRecieve.Hide();
|
panelRecieve.Hide();
|
||||||
|
panelDomains.Hide();
|
||||||
buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
buttonNavPortfolio.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
buttonNavPortfolio.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
buttonNavReceive.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
buttonNavReceive.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
buttonNavReceive.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
buttonNavReceive.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
|
buttonNavDomains.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
|
buttonNavDomains.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
||||||
{
|
{
|
||||||
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["selected-bg"]);
|
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["selected-bg"]);
|
||||||
@ -789,11 +796,13 @@ namespace FireWallet
|
|||||||
panelSend.Hide();
|
panelSend.Hide();
|
||||||
panelPortfolio.Hide();
|
panelPortfolio.Hide();
|
||||||
panelRecieve.Show();
|
panelRecieve.Show();
|
||||||
|
panelDomains.Hide();
|
||||||
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
buttonNavSend.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
buttonNavSend.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
buttonNavPortfolio.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
buttonNavPortfolio.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
|
buttonNavDomains.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
|
buttonNavDomains.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
|
|
||||||
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
||||||
{
|
{
|
||||||
@ -820,6 +829,27 @@ namespace FireWallet
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
private void buttonNavDomains_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
panelSend.Hide();
|
||||||
|
panelPortfolio.Hide();
|
||||||
|
panelRecieve.Hide();
|
||||||
|
panelDomains.Show();
|
||||||
|
|
||||||
|
buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
|
buttonNavSend.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
|
buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
|
buttonNavPortfolio.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
|
buttonNavReceive.BackColor = ColorTranslator.FromHtml(theme["background"]);
|
||||||
|
buttonNavReceive.ForeColor = ColorTranslator.FromHtml(theme["foreground"]);
|
||||||
|
|
||||||
|
if (theme.ContainsKey("selected-bg") && theme.ContainsKey("selected-fg"))
|
||||||
|
{
|
||||||
|
buttonNavDomains.BackColor = ColorTranslator.FromHtml(theme["selected-bg"]);
|
||||||
|
buttonNavDomains.ForeColor = ColorTranslator.FromHtml(theme["selected-fg"]);
|
||||||
|
}
|
||||||
|
textBoxDomainSearch.Focus();
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
#region Send
|
#region Send
|
||||||
@ -962,12 +992,25 @@ namespace FireWallet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
#region Receive
|
||||||
private void textBoxRecieveAddress_Click(object sender, EventArgs e)
|
private void textBoxRecieveAddress_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Clipboard.SetText(textBoxReceiveAddress.Text);
|
Clipboard.SetText(textBoxReceiveAddress.Text);
|
||||||
labelReceive2.Text = "Copied to clipboard";
|
labelReceive2.Text = "Copied to clipboard";
|
||||||
labelReceive2.Left = (panelRecieve.Width - labelReceive2.Width) / 2;
|
labelReceive2.Left = (panelRecieve.Width - labelReceive2.Width) / 2;
|
||||||
}
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
private void textBoxDomainSearch_KeyDown(object sender, KeyEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.KeyValue == 13)
|
||||||
|
{
|
||||||
|
e.SuppressKeyPress = true;
|
||||||
|
DomainForm domainForm = new DomainForm(textBoxDomainSearch.Text);
|
||||||
|
domainForm.Show();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user