diff --git a/FireWallet/BatchForm.cs b/FireWallet/BatchForm.cs index e797ca6..dea5104 100644 --- a/FireWallet/BatchForm.cs +++ b/FireWallet/BatchForm.cs @@ -516,6 +516,9 @@ namespace FireWallet else if (b.method == "TRANSFER") { sw.WriteLine(b.domain + "," + b.method + "," + b.toAddress); + } else if (b.method == "UPDATE") + { + sw.WriteLine(b.domain + "," + b.method + ",[" + string.Join(", ", b.update.Select(record => record.ToString())) + "]"); } else { @@ -541,6 +544,22 @@ namespace FireWallet string[] split = line.Split(','); try { + if (split.Length > 2) + { + if (split[1] == "UPDATE") + { + // Select operation and import domains + string[] newDomains = new string[domains.Length + 1]; + for (int i = 0; i < domains.Length; i++) + { + newDomains[i] = domains[i]; + } + newDomains[domains.Length] = split[0]; + domains = newDomains; + continue; + } + } + if (split.Length == 2) { AddBatch(split[0], split[1]); @@ -648,7 +667,7 @@ namespace FireWallet public decimal bid { get; } public decimal lockup { get; } public string toAddress { get; } - DNS[]? update; + public DNS[]? update { get; } public Batch(string domain, string method) // Normal TXs { this.domain = domain; diff --git a/FireWallet/DNSForm.Designer.cs b/FireWallet/DNSForm.Designer.cs index beb0142..3fd8285 100644 --- a/FireWallet/DNSForm.Designer.cs +++ b/FireWallet/DNSForm.Designer.cs @@ -67,21 +67,23 @@ // buttonAddRecord // buttonAddRecord.FlatStyle = FlatStyle.Flat; - buttonAddRecord.Location = new Point(6, 163); + buttonAddRecord.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + buttonAddRecord.Location = new Point(6, 172); buttonAddRecord.Name = "buttonAddRecord"; buttonAddRecord.Size = new Size(93, 46); buttonAddRecord.TabIndex = 1; buttonAddRecord.TabStop = false; - buttonAddRecord.Text = "Add Record"; + buttonAddRecord.Text = "Add "; buttonAddRecord.UseVisualStyleBackColor = true; buttonAddRecord.Click += buttonAddRecord_Click; // // buttonCancel // buttonCancel.FlatStyle = FlatStyle.Flat; - buttonCancel.Location = new Point(557, 500); + buttonCancel.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + buttonCancel.Location = new Point(566, 500); buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(93, 46); + buttonCancel.Size = new Size(102, 46); buttonCancel.TabIndex = 1; buttonCancel.TabStop = false; buttonCancel.Text = "Cancel Edit"; @@ -91,9 +93,10 @@ // buttonSend // buttonSend.FlatStyle = FlatStyle.Flat; - buttonSend.Location = new Point(888, 500); + buttonSend.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + buttonSend.Location = new Point(879, 500); buttonSend.Name = "buttonSend"; - buttonSend.Size = new Size(93, 46); + buttonSend.Size = new Size(102, 46); buttonSend.TabIndex = 1; buttonSend.TabStop = false; buttonSend.Text = "Send Edit"; diff --git a/FireWallet/DNSForm.cs b/FireWallet/DNSForm.cs index 53313f0..dcb894f 100644 --- a/FireWallet/DNSForm.cs +++ b/FireWallet/DNSForm.cs @@ -30,6 +30,7 @@ namespace FireWallet nodeSettings = mainForm.nodeSettings; cancel = true; + this.Text = domain + "/ DNS | FireWallet"; } private void DNSForm_Load(object sender, EventArgs e) { diff --git a/FireWallet/DomainForm.cs b/FireWallet/DomainForm.cs index f50c18f..1ff413e 100644 --- a/FireWallet/DomainForm.cs +++ b/FireWallet/DomainForm.cs @@ -292,6 +292,12 @@ namespace FireWallet labelStatusTimeToNext.Text = reveal; labelStatusNextState.Text = "Closing in:"; } + else if (state == "OPENING") + { + labelStatusNextState.Text = "Bidding in:"; + string expires = stats["blocksUntilBidding"].ToString() + " Blocks (~" + stats["hoursUntilBidding"].ToString() + " hrs)"; + labelStatusTimeToNext.Text = expires; + } else { AddLog("State not added yet: " + state); diff --git a/FireWallet/MainForm.Designer.cs b/FireWallet/MainForm.Designer.cs index f40460e..d8d1291 100644 --- a/FireWallet/MainForm.Designer.cs +++ b/FireWallet/MainForm.Designer.cs @@ -51,6 +51,7 @@ namespace FireWallet labelaccountusername = new Label(); buttonaccountnew = new Button(); panelNav = new Panel(); + buttonNavSettings = new Button(); buttonBatch = new Button(); buttonNavDomains = new Button(); buttonNavReceive = new Button(); @@ -88,6 +89,18 @@ namespace FireWallet panelDomainList = new Panel(); labelDomainSearch = new Label(); textBoxDomainSearch = new TextBox(); + panelSettings = new Panel(); + labelSettingsSaved = new Label(); + buttonSettingsSave = new Button(); + groupBoxSettingsExplorer = new GroupBox(); + labelSettings1 = new Label(); + textBoxExName = new TextBox(); + labelSettings2 = new Label(); + textBoxExBlock = new TextBox(); + labelSettings3 = new Label(); + textBoxExAddr = new TextBox(); + labelSettings4 = new Label(); + textBoxExTX = new TextBox(); statusStripmain.SuspendLayout(); panelaccount.SuspendLayout(); groupBoxaccount.SuspendLayout(); @@ -100,6 +113,8 @@ namespace FireWallet ((System.ComponentModel.ISupportInitialize)pictureBoxReceiveQR).BeginInit(); panelDomains.SuspendLayout(); groupBoxDomains.SuspendLayout(); + panelSettings.SuspendLayout(); + groupBoxSettingsExplorer.SuspendLayout(); SuspendLayout(); // // statusStripmain @@ -255,6 +270,7 @@ namespace FireWallet // // panelNav // + panelNav.Controls.Add(buttonNavSettings); panelNav.Controls.Add(buttonBatch); panelNav.Controls.Add(buttonNavDomains); panelNav.Controls.Add(buttonNavReceive); @@ -266,6 +282,19 @@ namespace FireWallet panelNav.Size = new Size(114, 553); panelNav.TabIndex = 6; // + // buttonNavSettings + // + buttonNavSettings.FlatStyle = FlatStyle.Flat; + buttonNavSettings.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + buttonNavSettings.Location = new Point(12, 508); + buttonNavSettings.Name = "buttonNavSettings"; + buttonNavSettings.Size = new Size(89, 33); + buttonNavSettings.TabIndex = 4; + buttonNavSettings.TabStop = false; + buttonNavSettings.Text = "Settings"; + buttonNavSettings.UseVisualStyleBackColor = true; + buttonNavSettings.Click += buttonNavSettings_Click; + // // buttonBatch // buttonBatch.FlatStyle = FlatStyle.Flat; @@ -628,7 +657,7 @@ namespace FireWallet panelDomains.Controls.Add(groupBoxDomains); panelDomains.Controls.Add(labelDomainSearch); panelDomains.Controls.Add(textBoxDomainSearch); - panelDomains.Location = new Point(120, 27); + panelDomains.Location = new Point(1129, 22); panelDomains.Name = "panelDomains"; panelDomains.Size = new Size(920, 536); panelDomains.TabIndex = 18; @@ -674,11 +703,128 @@ namespace FireWallet textBoxDomainSearch.TextChanged += textBoxDomainSearch_TextChanged; textBoxDomainSearch.KeyDown += textBoxDomainSearch_KeyDown; // + // panelSettings + // + panelSettings.Controls.Add(labelSettingsSaved); + panelSettings.Controls.Add(buttonSettingsSave); + panelSettings.Controls.Add(groupBoxSettingsExplorer); + panelSettings.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + panelSettings.Location = new Point(121, 21); + panelSettings.Name = "panelSettings"; + panelSettings.Size = new Size(930, 550); + panelSettings.TabIndex = 19; + panelSettings.Visible = false; + // + // labelSettingsSaved + // + labelSettingsSaved.AutoSize = true; + labelSettingsSaved.Location = new Point(109, 515); + labelSettingsSaved.Name = "labelSettingsSaved"; + labelSettingsSaved.Size = new Size(52, 21); + labelSettingsSaved.TabIndex = 6; + labelSettingsSaved.Text = "Saved"; + labelSettingsSaved.Visible = false; + // + // buttonSettingsSave + // + buttonSettingsSave.FlatStyle = FlatStyle.Flat; + buttonSettingsSave.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + buttonSettingsSave.Location = new Point(14, 509); + buttonSettingsSave.Name = "buttonSettingsSave"; + buttonSettingsSave.Size = new Size(89, 33); + buttonSettingsSave.TabIndex = 4; + buttonSettingsSave.TabStop = false; + buttonSettingsSave.Text = "Save"; + buttonSettingsSave.UseVisualStyleBackColor = true; + buttonSettingsSave.Click += buttonSettingsSave_Click; + // + // groupBoxSettingsExplorer + // + groupBoxSettingsExplorer.Controls.Add(labelSettings1); + groupBoxSettingsExplorer.Controls.Add(textBoxExName); + groupBoxSettingsExplorer.Controls.Add(labelSettings2); + groupBoxSettingsExplorer.Controls.Add(textBoxExBlock); + groupBoxSettingsExplorer.Controls.Add(labelSettings3); + groupBoxSettingsExplorer.Controls.Add(textBoxExAddr); + groupBoxSettingsExplorer.Controls.Add(labelSettings4); + groupBoxSettingsExplorer.Controls.Add(textBoxExTX); + groupBoxSettingsExplorer.Location = new Point(14, 16); + groupBoxSettingsExplorer.Name = "groupBoxSettingsExplorer"; + groupBoxSettingsExplorer.Size = new Size(487, 188); + groupBoxSettingsExplorer.TabIndex = 5; + groupBoxSettingsExplorer.TabStop = false; + groupBoxSettingsExplorer.Text = "Explorer Settings"; + // + // labelSettings1 + // + labelSettings1.AutoSize = true; + labelSettings1.Location = new Point(43, 31); + labelSettings1.Name = "labelSettings1"; + labelSettings1.Size = new Size(108, 21); + labelSettings1.TabIndex = 0; + labelSettings1.Text = "Explorer (TXs):"; + // + // textBoxExName + // + textBoxExName.Location = new Point(157, 133); + textBoxExName.Name = "textBoxExName"; + textBoxExName.Size = new Size(307, 29); + textBoxExName.TabIndex = 4; + // + // labelSettings2 + // + labelSettings2.AutoSize = true; + labelSettings2.Location = new Point(11, 66); + labelSettings2.Name = "labelSettings2"; + labelSettings2.Size = new Size(140, 21); + labelSettings2.TabIndex = 0; + labelSettings2.Text = "Explorer (Address):"; + // + // textBoxExBlock + // + textBoxExBlock.Location = new Point(157, 98); + textBoxExBlock.Name = "textBoxExBlock"; + textBoxExBlock.Size = new Size(307, 29); + textBoxExBlock.TabIndex = 3; + // + // labelSettings3 + // + labelSettings3.AutoSize = true; + labelSettings3.Location = new Point(23, 101); + labelSettings3.Name = "labelSettings3"; + labelSettings3.Size = new Size(128, 21); + labelSettings3.TabIndex = 0; + labelSettings3.Text = "Explorer (Blocks):"; + // + // textBoxExAddr + // + textBoxExAddr.Location = new Point(157, 63); + textBoxExAddr.Name = "textBoxExAddr"; + textBoxExAddr.Size = new Size(307, 29); + textBoxExAddr.TabIndex = 2; + // + // labelSettings4 + // + labelSettings4.AutoSize = true; + labelSettings4.Location = new Point(5, 136); + labelSettings4.Name = "labelSettings4"; + labelSettings4.Size = new Size(146, 21); + labelSettings4.TabIndex = 0; + labelSettings4.Text = "Explorer (Domains):"; + // + // textBoxExTX + // + textBoxExTX.Location = new Point(157, 28); + textBoxExTX.Name = "textBoxExTX"; + textBoxExTX.Size = new Size(307, 29); + textBoxExTX.TabIndex = 1; + // // MainForm // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(1152, 575); + Controls.Add(panelSettings); Controls.Add(panelDomains); Controls.Add(panelRecieve); Controls.Add(panelSend); @@ -711,6 +857,10 @@ namespace FireWallet panelDomains.ResumeLayout(false); panelDomains.PerformLayout(); groupBoxDomains.ResumeLayout(false); + panelSettings.ResumeLayout(false); + panelSettings.PerformLayout(); + groupBoxSettingsExplorer.ResumeLayout(false); + groupBoxSettingsExplorer.PerformLayout(); ResumeLayout(false); PerformLayout(); } @@ -770,5 +920,18 @@ namespace FireWallet private Button buttonBatch; private GroupBox groupBoxDomains; private Panel panelDomainList; + private Button buttonNavSettings; + private Panel panelSettings; + private Label labelSettings1; + private Label labelSettings2; + private TextBox textBoxExName; + private TextBox textBoxExBlock; + private TextBox textBoxExAddr; + private TextBox textBoxExTX; + private Label labelSettings4; + private Label labelSettings3; + private Button buttonSettingsSave; + private GroupBox groupBoxSettingsExplorer; + private Label labelSettingsSaved; } } \ No newline at end of file diff --git a/FireWallet/MainForm.cs b/FireWallet/MainForm.cs index 2903906..a21770c 100644 --- a/FireWallet/MainForm.cs +++ b/FireWallet/MainForm.cs @@ -47,7 +47,7 @@ namespace FireWallet UpdateTheme(); LoadNode(); - + // Edit the theme of the navigation panel panelNav.BackColor = ColorTranslator.FromHtml(theme["background-alt"]); @@ -215,7 +215,7 @@ namespace FireWallet this.Height = Screen.PrimaryScreen.Bounds.Height / 5 * 3; applyTransparency(theme); - + ResizeForm(); } private void ThemeControl(Control c) { @@ -360,6 +360,10 @@ namespace FireWallet groupBoxaccount.Top = (this.ClientSize.Height - groupBoxaccount.Height) / 2; groupBoxDomains.Width = panelDomains.Width - 20; groupBoxDomains.Left = 10; + groupBoxDomains.Height = panelDomains.Height - groupBoxDomains.Top - 10; + + buttonNavSettings.Top = panelNav.Height - buttonNavSettings.Height - 10; + buttonSettingsSave.Top = panelSettings.Height - buttonSettingsSave.Height - 10; } #endregion #region Accounts @@ -792,10 +796,8 @@ namespace FireWallet private async void SendPanel_Click(object sender, EventArgs e) { - panelPortfolio.Hide(); + hidePages(); panelSend.Show(); - panelRecieve.Hide(); - panelDomains.Hide(); buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]); buttonNavPortfolio.ForeColor = ColorTranslator.FromHtml(theme["foreground"]); buttonNavReceive.BackColor = ColorTranslator.FromHtml(theme["background"]); @@ -833,10 +835,8 @@ namespace FireWallet } private async void ReceivePanel_Click(object sender, EventArgs e) { - panelSend.Hide(); - panelPortfolio.Hide(); + hidePages(); panelRecieve.Show(); - panelDomains.Hide(); buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["background"]); buttonNavSend.ForeColor = ColorTranslator.FromHtml(theme["foreground"]); buttonNavPortfolio.BackColor = ColorTranslator.FromHtml(theme["background"]); @@ -874,9 +874,7 @@ namespace FireWallet } private void buttonNavDomains_Click(object sender, EventArgs e) { - panelSend.Hide(); - panelPortfolio.Hide(); - panelRecieve.Hide(); + hidePages(); panelDomains.Show(); buttonNavSend.BackColor = ColorTranslator.FromHtml(theme["background"]); @@ -894,9 +892,29 @@ namespace FireWallet textBoxDomainSearch.Focus(); groupBoxDomains.Width = panelDomains.Width - 20; groupBoxDomains.Left = 10; + groupBoxDomains.Height = panelDomains.Height - groupBoxDomains.Top - 10; UpdateDomains(); } + private void hidePages() + { + panelSend.Hide(); + panelPortfolio.Hide(); + panelRecieve.Hide(); + panelDomains.Hide(); + panelSettings.Hide(); + } + private void buttonNavSettings_Click(object sender, EventArgs e) + { + hidePages(); + panelSettings.Show(); + buttonSettingsSave.Top = panelSettings.Height - buttonSettingsSave.Height - 10; + textBoxExTX.Text = userSettings["explorer-tx"]; + textBoxExAddr.Text = userSettings["explorer-addr"]; + textBoxExBlock.Text = userSettings["explorer-block"]; + textBoxExName.Text = userSettings["explorer-domain"]; + labelSettingsSaved.Hide(); + } #endregion #region Send private async void textBoxSendingTo_Leave(object sender, EventArgs e) @@ -1096,22 +1114,6 @@ namespace FireWallet } } #endregion - - private void textBoxDomainSearch_KeyDown(object sender, KeyEventArgs e) - { - if (e.KeyValue == 13) - { - textBoxDomainSearch.Text = textBoxDomainSearch.Text.Trim().ToLower(); - e.SuppressKeyPress = true; - DomainForm domainForm = new DomainForm(this, textBoxDomainSearch.Text, userSettings["explorer-tx"], userSettings["explorer-domain"]); - - domainForm.Show(); - - } - } - - - #region Batching public void AddBatch(string domain, string operation) { @@ -1164,11 +1166,39 @@ namespace FireWallet } #endregion + private void textBoxDomainSearch_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyValue == 13) + { + textBoxDomainSearch.Text = textBoxDomainSearch.Text.Trim().ToLower(); + e.SuppressKeyPress = true; + DomainForm domainForm = new DomainForm(this, textBoxDomainSearch.Text, userSettings["explorer-tx"], userSettings["explorer-domain"]); + + domainForm.Show(); + + } + } private void textBoxDomainSearch_TextChanged(object sender, EventArgs e) { string domainSearch = textBoxDomainSearch.Text; domainSearch = Regex.Replace(textBoxDomainSearch.Text, "[^a-zA-Z0-9-_]", ""); textBoxDomainSearch.Text = domainSearch; } + + private void buttonSettingsSave_Click(object sender, EventArgs e) + { + StreamWriter sw = new StreamWriter(dir + "settings.txt"); + sw.WriteLine("explorer-tx: " + textBoxExTX.Text); + sw.WriteLine("explorer-addr: " + textBoxExAddr.Text); + sw.WriteLine("explorer-block: " + textBoxExBlock.Text); + sw.WriteLine("explorer-domain: " + textBoxExName.Text); + + sw.WriteLine("confirmations: " + userSettings["confirmations"]); + sw.WriteLine("portfolio-tx: " + userSettings["portfolio-tx"]); + sw.WriteLine("hide-splash: " + userSettings["hide-splash"]); + sw.Dispose(); + LoadSettings(); + labelSettingsSaved.Show(); + } } } \ No newline at end of file diff --git a/README.md b/README.md index bc86c17..55b3f50 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,9 @@ You can add transactions to the batch from the domain window or the DNS editor. ## Importing You can also import a list of domains to the batch window. +The "CANCEL" transaction type is used to cancel an transfer. + +At the momemt "UPDATE" or coin only transactions are not supported. ![Batch Import](assets/batch_import.png) diff --git a/example-configs/batch.txt b/example-configs/batch.txt index 1c12280..c4d5140 100644 --- a/example-configs/batch.txt +++ b/example-configs/batch.txt @@ -1,7 +1,9 @@ +woodburn1,OPEN woodburn1,BID,1,3 woodburn2,BID,1,3 woodburn3,BID,1,3 woodburn4,BID,1,3 woodburn5,BID,1,3 woodburn6,BID,1,4 -woodburn8,TRANSFER,hs1qlmlgnx0g3ynk4ylxkkdh9c9nernclnfq4lw6s9 \ No newline at end of file +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"]}] \ No newline at end of file