浏览代码

GUI: refactor send wizard screens

Herman Schoenfeld 7 年之前
父节点
当前提交
9833434b1c

+ 33 - 16
src/gui/wizards/operations/UWIZEnlistAccountForSale_EnterSaleAmount.lfm

@@ -21,9 +21,15 @@ object WIZEnlistAccountForSale_EnterSaleAmount: TWIZEnlistAccountForSale_EnterSa
     TabOrder = 0
     object edtAmt: TEdit
       Left = 8
-      Height = 23
-      Top = 40
-      Width = 160
+      Height = 56
+      Top = 32
+      Width = 400
+      Alignment = taRightJustify
+      Anchors = [akTop, akLeft, akRight]
+      AutoSize = False
+      Font.Height = -43
+      Font.Style = [fsBold]
+      ParentFont = False
       TabOrder = 0
     end
     object lblSaleAmountNotice: TLabel
@@ -34,21 +40,32 @@ object WIZEnlistAccountForSale_EnterSaleAmount: TWIZEnlistAccountForSale_EnterSa
       Caption = 'Enter the price to sell each account at (not total).'
       ParentColor = False
     end
-    object chkChooseFee: TCheckBox
+    object gpOptions: TGroupBox
       Left = 8
-      Height = 19
-      Top = 80
-      Width = 203
-      Caption = 'Use custom fee''s for this operation'
+      Height = 96
+      Top = 96
+      Width = 400
+      Anchors = [akTop, akLeft, akRight]
+      Caption = 'Options'
+      ClientHeight = 76
+      ClientWidth = 396
       TabOrder = 1
-    end
-    object chkAttachPayload: TCheckBox
-      Left = 8
-      Height = 19
-      Top = 110
-      Width = 258
-      Caption = 'Attach a message/payload to this transaction'
-      TabOrder = 2
+      object chkChooseFee: TCheckBox
+        Left = 16
+        Height = 19
+        Top = 8
+        Width = 164
+        Caption = 'Allow me to choose the fee'
+        TabOrder = 0
+      end
+      object chkAttachPayload: TCheckBox
+        Left = 16
+        Height = 19
+        Top = 40
+        Width = 158
+        Caption = 'Attach a message payload'
+        TabOrder = 1
+      end
     end
   end
 end

+ 3 - 2
src/gui/wizards/operations/UWIZEnlistAccountForSale_EnterSaleAmount.pas

@@ -26,10 +26,11 @@ type
   { TWIZEnlistAccountForSale_EnterSaleAmount }
 
   TWIZEnlistAccountForSale_EnterSaleAmount = class(TWizardForm<TWIZOperationsModel>)
-    chkChooseFee: TCheckBox;
     chkAttachPayload: TCheckBox;
+    chkChooseFee: TCheckBox;
     edtAmt: TEdit;
     gbSalePrice: TGroupBox;
+    gpOptions: TGroupBox;
     lblSaleAmountNotice: TLabel;
     procedure UpdateUI();
 
@@ -48,7 +49,7 @@ implementation
 uses
   UAccounts, UUserInterface, USettings;
 
-{ TWIZSendPASC_EnterQuantity }
+{ TWIZEnlistAccountForSale_EnterSaleAmount }
 
 procedure TWIZEnlistAccountForSale_EnterSaleAmount.UpdateUI();
 begin

+ 0 - 1
src/gui/wizards/operations/UWIZEnlistAccountForSale_EnterSeller.lfm

@@ -7,7 +7,6 @@ object WIZEnlistAccountForSale_EnterSeller: TWIZEnlistAccountForSale_EnterSeller
   Caption = 'WIZEnlistAccountForSale_EnterSeller'
   ClientHeight = 253
   ClientWidth = 429
-  LCLVersion = '1.8.2.0'
   Visible = False
   object gbSeller: TGroupBox
     Left = 4

+ 4 - 8
src/gui/wizards/operations/UWIZSendPASC.pas

@@ -35,22 +35,18 @@ implementation
 uses
   UWallet,
   UWIZOperationSelected,
-  UWIZSendPASC_EnterRecipient,
-  UWIZSendPASC_EnterQuantity,
+  UWIZSendPASC_Details,
   UWIZOperationConfirmation;
 
 { TWIZSendPASCWizard }
 
 constructor TWIZSendPASCWizard.Create(AOwner: TComponent);
 begin
-  inherited Create(AOwner,
-    [
+  inherited Create(AOwner,[
     TWIZOperationSelected,
-    TWIZSendPASC_EnterRecipient,
-    TWIZSendPASC_EnterQuantity,
+    TWIZSendPASC_Details,
     TWIZOperationConfirmation
-    ]
-    );
+   ]);
   TitleText := 'Send PASC';
   FinishText := 'Send PASC';
 end;

+ 531 - 0
src/gui/wizards/operations/UWIZSendPASC_Details.lfm

@@ -0,0 +1,531 @@
+object WIZSendPASC_Details: TWIZSendPASC_Details
+  Left = 0
+  Height = 379
+  Top = 0
+  Width = 450
+  ActiveControl = txtRecipient
+  Anchors = [akTop, akLeft, akBottom]
+  Caption = 'WIZSendPASC_Details'
+  ClientHeight = 379
+  ClientWidth = 450
+  Visible = False
+  object gbRecipient: TGroupBox
+    Left = 8
+    Height = 124
+    Top = 8
+    Width = 431
+    Anchors = [akTop, akLeft, akRight]
+    Caption = 'Recipient'
+    ClientHeight = 104
+    ClientWidth = 427
+    TabOrder = 0
+    object txtRecipient: TEdit
+      Left = 16
+      Height = 56
+      Top = 32
+      Width = 328
+      Alignment = taRightJustify
+      Anchors = [akTop, akLeft, akRight]
+      AutoSize = False
+      Font.Height = -43
+      Font.Style = [fsBold]
+      OnChange = txtRecipientChange
+      ParentFont = False
+      TabOrder = 0
+    end
+    object btnSearch: TSpeedButton
+      Left = 354
+      Height = 56
+      Top = 32
+      Width = 56
+      Anchors = [akTop, akRight]
+      Glyph.Data = {
+        36310000424D3631000000000000360000002800000038000000380000000100
+        2000000000000031000064000000640000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002395F9572293F6CA2293F6E62294F6BA2094
+        F537000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002194F8732294F6FE2294F7FF2294F7FF2294F7FF2294
+        F7F62094F5370000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000002093F6742294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F6BA0000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00002093F6742294F6FE2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7E50000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000002094
+        F6752294F6FE2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2293F6CA0000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002292F6762294
+        F6FE2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F9590000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000000000000000000000002293F6772294F6FE2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2194
+        F67A000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000007FFF042192F5362094F6752293F7A22294F6BF2194F6D22193F6DB2294
+        F7D02193F6BE2194F7A02193F6722396FA3300AAFF0300000000000000000000
+        0000000000000000000000000000000000002292F6782294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2193F6790000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002096F8272193
+        F7912293F6E82294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7E52294F58D2491F7230000
+        00000000000000000000000000002193F6792294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2193F679000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000002394F7242294F6AA2293F6FE2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2293F6FC2193
+        F69F1D93FE1A000000002193F6792294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2193F67900000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000003F7FFF042094F67C2194F6F82294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2194F6F12193F7A62294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2193F6790000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000002491F2152293F7C02294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2192F67A000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00002094F61F2194F6DA2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2194F67A00000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000002190
+        F3172194F6DC2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2194F67A0000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002A7FFF062194
+        F7C42294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F6FE2193F7CC2194F7812193F5532391F63A1F91F4312294
+        F63C2395F6572193F5892194F6D52294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2194
+        F67A000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002294F7862294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F6FE2294F6AC2195F92E00000000000000000000000000000000000000000000
+        000000000000000000000000FF012292F63B2193F6BD2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2193F7A60000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000000000000000000000002195F32E2193F6FA2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2293F6ED2195
+        F84D000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000000000000000000000002192F7632294F6F62294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2194F6F11D93
+        F51A000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000000000000000000000002193F6B72294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2193F7E12193F8260000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002094F5372293
+        F7EE2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2193
+        F69F000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000002192F5362294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2194F7EA2394F724000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000002094
+        F5372294F6F62294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2293
+        F6FC2491F0230000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000002293F7A32294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F6FE2093F44700000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00002192F7632294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2293F78C0000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000178BE70B2294F6F42294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2194F7A00000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000002193F6BD2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7E500AAFF0300000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002093F54E2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2293F6FC1F97F7200000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000002292F63B2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2396F53300000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002193F58A2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2194F7B6000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000012194F6D52294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2193F67200000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002193F6BC2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2393F56D000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002193F5892294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2194F7A000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002194F6DC2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF1F91F538000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002392F6572294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2194F6BD00000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002293F6F02294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2491F51C000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002292FA3B2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F6D000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000FFFF012194F6FB2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF1E96FF11000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000001F94F9302294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2193F6DB00000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000FF012193F6F22294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF1D93F51A000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002393F6392294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2194F6D200000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002293F6DF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2293F534000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002193F5532294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2194F6BF00000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002293F7C12294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2094F765000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002194F7812294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2293F7A200000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002194F7902294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2193F7AD000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002193F6CC2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2094F67500000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000002193F6552294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2194F6F82190F3170000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000002195F92E2294F6FE2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2192F53600000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000001E96F0112193F6F92294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2194F68F0000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000002294F6AC2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2293F6E8007FFF0400000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000002193F6AF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2193F6FB2293FA3400000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00002195F84D2294F6FE2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2193F7910000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000002294F7432294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F6DE2296F316000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000002193
+        F8262293F6ED2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2293
+        F6FE2096F8270000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000000000000000000000002193F6C72294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2293F6D12296F3160000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002290F1252194
+        F7E12294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7AA000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000000000000000000000002294F63C2294F6FD2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F6DE2293
+        FA34000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000000000000000000000002093F4472193F6EB2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2194F6F82394
+        F724000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002193F69A2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2193
+        F7FA2194F68F2190F31700000000000000000000000000000000000000000000
+        00000000000000000000000000001F97F7202194F7A02294F6FE2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2094F67C0000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002789EB0D2193
+        F6D62294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2194F6F82193F7AD2092F7652396FA331D93F51A1E96F0112491
+        F51C1F91F5382393F56D2194F7B62293F6FC2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2293F7C0007FFF040000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000002394
+        F7242194F7EA2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2194F7DA2491F215000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00002092F42F2194F7EA2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2194F6DC2094F61F00000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000002394F7242193F6D62294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2194F7C42190F3170000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000002789EB0D2193F69A2294F6FD2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2193F6FA2294F7862A7FFF06000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000002294F63C2193F6C72294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2193
+        F6B72195F32E0000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00000000000000000000000000000000000000000000000000002294F7432193
+        F6AF2193F6F92294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294F7FF2294
+        F7FF2294F7FF2294F7FF2294F7FF2294F7FF2293F6F42293F7A22195FA350000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        00001F9FFF102193F6552194F7902293F7C12293F6DF2193F6F22194F6FB2293
+        F6F02194F6DC2193F6BC2193F58A2195F84D178BE70B00000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        000000000000000000000000000000000000000000000000FF0100FFFF010000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000000000000000
+        0000000000000000000000000000000000000000000000000000
+      }
+      OnClick = btnSearchClick
+    end
+    object lblDestNotice: TLabel
+      Left = 16
+      Height = 15
+      Top = 8
+      Width = 178
+      Caption = 'Please enter the recipient account'
+      ParentColor = False
+      ParentFont = False
+    end
+    object lblRecipientDetails: TLabel
+      Left = 313
+      Height = 15
+      Top = 8
+      Width = 94
+      Anchors = [akTop, akRight]
+      Caption = 'Recipient Details'
+      Font.Style = [fsBold]
+      ParentColor = False
+      ParentFont = False
+    end
+  end
+  object gpAmount: TGroupBox
+    Left = 8
+    Height = 122
+    Top = 144
+    Width = 431
+    Anchors = [akTop, akLeft, akRight]
+    Caption = 'Amount'
+    ClientHeight = 102
+    ClientWidth = 427
+    ParentFont = False
+    TabOrder = 1
+    object txtAmount: TEdit
+      Left = 16
+      Height = 56
+      Top = 32
+      Width = 394
+      Alignment = taRightJustify
+      Anchors = [akTop, akLeft, akRight]
+      AutoSize = False
+      Font.Height = -43
+      Font.Style = [fsBold]
+      ParentFont = False
+      TabOrder = 0
+    end
+    object lblQuantityNotice: TLabel
+      Left = 16
+      Height = 15
+      Top = 11
+      Width = 181
+      Caption = 'Enter the quantity of PASC to send'
+      ParentColor = False
+    end
+    object chkSendAll: TCheckBox
+      Left = 347
+      Height = 19
+      Top = 7
+      Width = 63
+      Anchors = [akTop, akRight]
+      Caption = 'Send All'
+      OnChange = chkSendAllChange
+      TabOrder = 1
+    end
+  end
+  object gpOptions: TGroupBox
+    Left = 8
+    Height = 89
+    Top = 280
+    Width = 431
+    Anchors = [akTop, akLeft, akRight, akBottom]
+    Caption = 'Options'
+    ClientHeight = 69
+    ClientWidth = 427
+    TabOrder = 2
+    object chkCustomFee: TCheckBox
+      Left = 16
+      Height = 19
+      Top = 8
+      Width = 164
+      Caption = 'Allow me to choose the fee'
+      TabOrder = 0
+    end
+    object chkPayload: TCheckBox
+      Left = 16
+      Height = 19
+      Top = 40
+      Width = 158
+      Caption = 'Attach a message payload'
+      TabOrder = 1
+    end
+  end
+end

+ 243 - 0
src/gui/wizards/operations/UWIZSendPASC_Details.pas

@@ -0,0 +1,243 @@
+unit UWIZSendPASC_Details;
+
+{$mode delphi}
+{$modeswitch nestedprocvars}
+
+{ Copyright (c) 2018 Sphere 10 Software (http://www.sphere10.com/)
+
+  Distributed under the MIT software license, see the accompanying file LICENSE
+  or visit http://www.opensource.org/licenses/mit-license.php.
+
+  Acknowledgements:
+  Ugochukwu Mmaduekwe - main developer
+  Herman Schoenfeld - designer
+}
+
+interface
+
+uses
+  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
+  ExtCtrls, Buttons, UCommon, UCommon.Collections, UWallet, UCoreObjects,
+  UFRMAccountSelect, UNode, UWizard, UWIZOperation, UWIZSendPASC, UCoreUtils;
+
+type
+
+  { TWIZSendPASC_Details }
+
+  TWIZSendPASC_Details = class(TWizardForm<TWIZOperationsModel>)
+    chkSendAll: TCheckBox;
+    chkPayload: TCheckBox;
+    chkCustomFee: TCheckBox;
+    txtAmount: TEdit;
+    txtRecipient: TEdit;
+    gbRecipient: TGroupBox;
+    gpAmount: TGroupBox;
+    gpOptions: TGroupBox;
+    lblRecipientDetails: TLabel;
+    lblDestNotice: TLabel;
+    btnSearch: TSpeedButton;
+    lblQuantityNotice: TLabel;
+    procedure btnSearchClick(Sender: TObject);
+    procedure chkSendAllChange(Sender: TObject);
+    procedure txtRecipientChange(Sender: TObject);
+    procedure UpdateUI();
+
+
+
+  public
+    procedure OnPresent; override;
+    procedure OnNext; override;
+    function Validate(out message: ansistring): boolean; override;
+  end;
+
+
+implementation
+
+{$R *.lfm}
+
+uses
+  Generics.Collections, UMemory,
+  UAccounts, UUserInterface, USettings,
+  UWIZOperationFee_Custom, UWIZOperationPayload_Encryption, UWIZOperationSigner_Select;
+
+{ TWIZSendPASC_Details }
+
+procedure TWIZSendPASC_Details.txtRecipientChange(Sender: TObject);
+begin
+  UpdateUI();
+end;
+
+procedure TWIZSendPASC_Details.OnPresent;
+begin
+  UpdateUI();
+
+  // Recipient section
+  txtRecipient.SetFocus;
+
+  // Quantity section
+  if Length(Model.Account.SelectedAccounts) > 1 then begin
+    chkCustomFee.Checked := True;
+    chkCustomFee.Enabled := False;
+  end;
+end;
+
+procedure TWIZSendPASC_Details.UpdateUI();
+var
+  LTempAccount: TAccount;
+  LAccountNumber: cardinal;
+begin
+  // Recipient section
+  if TAccountComp.AccountTxtNumberToAccountNumber(txtRecipient.Text, LAccountNumber) then
+   if ((LAccountNumber < 0) or (LAccountNumber >= TNode.Node.Bank.AccountsCount)) then
+     lblRecipientDetails.Caption := ''
+  else begin
+    LTempAccount := TNode.Node.Operations.SafeBoxTransaction.account(LAccountNumber);
+    lblRecipientDetails.Caption := LTempAccount.name;
+  end;
+
+  // Quantity section
+  if chkSendAll.Checked then begin
+    txtAmount.Text := 'ALL BALANCE';
+    txtAmount.Enabled := False;
+    Model.SendPASC.SendPASCMode := akaAllBalance;
+  end else begin
+    txtAmount.Enabled := True;
+    txtAmount.Text := IIF(Model.SendPASC.SingleAmountToSend = 0, '', TAccountComp.FormatMoney(Model.SendPASC.SingleAmountToSend));
+    Model.SendPASC.SendPASCMode := akaSpecifiedAmount;
+  end;
+end;
+
+procedure TWIZSendPASC_Details.OnNext;
+var
+  LAccountNumber: cardinal;
+  LAccount: TAccount;
+  LWizStepsToInject : TList<TComponentClass>;
+  LDisposables : TDisposables;
+begin
+  LWizStepsToInject := LDisposables.AddObject( TList<TComponentClass>.Create ) as TList<TComponentClass>;
+
+  // Recipient section
+  TAccountComp.AccountTxtNumberToAccountNumber(txtRecipient.Text, LAccountNumber);
+  Model.SendPASC.DestinationAccount := TNode.Node.Operations.SafeBoxTransaction.account(LAccountNumber);
+
+  // Quantity section
+  if chkSendAll.Checked then begin
+    Model.SendPASC.SendPASCMode := akaAllBalance;
+    Model.SendPASC.SingleAmountToSend := 0 // all balance
+  end else begin
+    Model.SendPASC.SendPASCMode := akaSpecifiedAmount;
+    TAccountComp.TxtToMoney(txtAmount.Text, Model.SendPASC.SingleAmountToSend);
+  end;
+
+  // Fee Section
+  Model.Fee.SingleOperationFee := TSettings.DefaultFee;
+  if chkCustomFee.Checked then
+    LWizStepsToInject.Add(TWIZOperationFee_Custom);
+
+  // Payload Section
+  Model.Payload.HasPayload := IIF(chkPayload.Checked, True, False);
+  if Model.Payload.HasPayload then
+    LWizStepsToInject.Add(TWIZOperationPayload_Encryption);
+
+  // Signer section
+  if Length(Model.Account.SelectedAccounts) > 1 then
+    LWizStepsToInject.Add(TWIZOperationSigner_Select)
+  else begin
+    Model.Signer.SignerAccount := Model.Account.SelectedAccounts[0];
+    Model.Signer.OperationSigningMode := akaPrimary;
+  end;
+
+  // Update wizard flow if applicable
+  if LWizStepsToInject.Count > 0 then
+    UpdatePath(ptInject, LWizStepsToInject.ToArray);
+end;
+
+function TWIZSendPASC_Details.Validate(out message: ansistring): boolean;
+
+  function GetAccountNumberWithChecksum(constref AAccount: TAccount): string;
+  begin
+    Result := AAccount.AccountString;
+  end;
+
+var
+  LAccountNumbersWithChecksum: TArray<string>;
+  LAccountNumber: cardinal;
+  LAmount: int64;
+  LIdx: integer;
+  LAccount: TAccount;
+begin
+  Result := True;
+  message := '';
+  // Recipient section
+  if not (TAccountComp.AccountTxtNumberToAccountNumber(txtRecipient.Text, LAccountNumber)) then begin
+    message := message + Format('Invalid Destination Account "%s"', [txtRecipient.Text]) + LineEnding;
+    Result := False;
+    Exit;
+  end;
+
+  if (LAccountNumber < 0) or (LAccountNumber >= TNode.Node.Bank.AccountsCount) then begin
+    message := message + Format('Invalid Destination Account "%s"', [TAccountComp.AccountNumberToAccountTxtNumber(LAccountNumber)]) + LineEnding;
+    Result := False;
+    Exit;
+  end;
+
+  LAccountNumbersWithChecksum := TListTool<TAccount, string>.Transform(Model.Account.SelectedAccounts, GetAccountNumberWithChecksum);
+
+  if TArrayTool<string>.Contains(LAccountNumbersWithChecksum, txtRecipient.Text) then begin
+    message := message + 'Sender And Destination Account Are Same' + LineEnding;
+    Result := False;
+    Exit;
+  end;
+
+  // Quantity section
+  if not chkSendAll.Checked then begin
+    if not TAccountComp.TxtToMoney(txtAmount.Text, LAmount) then  begin
+      message := message + Format('Invalid quantity to send "%s"', [txtAmount.Text]) + LineEnding;
+      Result := False;
+      Exit;
+    end;
+
+    if LAmount < 1 then begin
+      message := message + 'You Must Send An Amount Greater Than Zero.' + LineEnding;
+      Result := False;
+      Exit;
+    end;
+
+    for LIdx := Low(Model.Account.SelectedAccounts) to High(Model.Account.SelectedAccounts) do begin
+      LAccount := Model.Account.SelectedAccounts[LIdx];
+      if LAccount.balance < LAmount then begin
+        message := message + 'Insufficient Funds In One Or More Accounts.' + LineEnding;
+        Result := False;
+        Exit;
+      end;
+    end;
+  end;
+end;
+
+procedure TWIZSendPASC_Details.btnSearchClick(Sender: TObject);
+var
+  LFRMAccountSelect: TFRMAccountSelect;
+  LAccountNumber: cardinal;
+begin
+  LFRMAccountSelect := TFRMAccountSelect.Create(Self);
+  LFRMAccountSelect.Position := poMainFormCenter;
+  try
+    LFRMAccountSelect.Node := TNode.Node;
+    LFRMAccountSelect.WalletKeys := TWallet.Keys;
+    LFRMAccountSelect.Filters := txtRecipient.Tag;
+    if TAccountComp.AccountTxtNumberToAccountNumber(txtRecipient.Text, LAccountNumber) then
+      LFRMAccountSelect.DefaultAccount := LAccountNumber;
+    LFRMAccountSelect.AllowSelect := True;
+    if LFRMAccountSelect.ShowModal = mrOk then
+      txtRecipient.Text := TAccountComp.AccountNumberToAccountTxtNumber(LFRMAccountSelect.GetSelected);
+  finally
+    LFRMAccountSelect.Free;
+  end;
+end;
+
+procedure TWIZSendPASC_Details.chkSendAllChange(Sender: TObject);
+begin
+  UpdateUI();
+end;
+
+end.

+ 0 - 62
src/gui/wizards/operations/UWIZSendPASC_EnterQuantity.lfm

@@ -1,62 +0,0 @@
-object WIZSendPASC_EnterQuantity: TWIZSendPASC_EnterQuantity
-  Left = 0
-  Height = 253
-  Top = 0
-  Width = 429
-  ActiveControl = edtAmt
-  Caption = 'WIZSendPASC_EnterQuantity'
-  ClientHeight = 253
-  ClientWidth = 429
-  Visible = False
-  object gbQuantity: TGroupBox
-    Left = 16
-    Height = 232
-    Top = 8
-    Width = 400
-    Anchors = [akTop, akLeft, akRight, akBottom]
-    Caption = 'Transaction Quantity'
-    ClientHeight = 212
-    ClientWidth = 396
-    TabOrder = 0
-    object edtAmt: TEdit
-      Left = 8
-      Height = 23
-      Top = 40
-      Width = 160
-      TabOrder = 0
-    end
-    object lblQuantityNotice: TLabel
-      Left = 8
-      Height = 15
-      Top = 7
-      Width = 217
-      Caption = 'Please enter the quantity of PASC to send'
-      ParentColor = False
-    end
-    object chkallfunds: TCheckBox
-      Left = 184
-      Height = 19
-      Top = 42
-      Width = 166
-      Caption = 'Send all funds in account(s)'
-      OnChange = chkallfundsChange
-      TabOrder = 1
-    end
-    object chkChooseFee: TCheckBox
-      Left = 8
-      Height = 19
-      Top = 80
-      Width = 226
-      Caption = 'Let me choose fee''s for this transaction'
-      TabOrder = 2
-    end
-    object chkAttachPayload: TCheckBox
-      Left = 8
-      Height = 19
-      Top = 110
-      Width = 303
-      Caption = 'I want to attach a message payload to this transaction'
-      TabOrder = 3
-    end
-  end
-end

+ 0 - 155
src/gui/wizards/operations/UWIZSendPASC_EnterQuantity.pas

@@ -1,155 +0,0 @@
-unit UWIZSendPASC_EnterQuantity;
-
-{$mode delphi}
-{$modeswitch nestedprocvars}
-
-{ Copyright (c) 2018 Sphere 10 Software (http://www.sphere10.com/)
-
-  Distributed under the MIT software license, see the accompanying file LICENSE
-  or visit http://www.opensource.org/licenses/mit-license.php.
-
-  Acknowledgements:
-  Ugochukwu Mmaduekwe - main developer
-  Herman Schoenfeld - designer
-}
-
-interface
-
-uses
-  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
-  ExtCtrls, Buttons, UCommon, UCommon.Collections, UWallet,
-  UFRMAccountSelect, UNode,
-  UWizard, UWIZOperation, UWIZSendPASC, UWIZOperationFee_Custom, UWIZOperationPayload_Encryption,
-  UWIZOperationSigner_Select, UCoreObjects;
-
-type
-
-  { TWIZSendPASC_EnterQuantity }
-
-  TWIZSendPASC_EnterQuantity = class(TWizardForm<TWIZOperationsModel>)
-    chkChooseFee: TCheckBox;
-    chkAttachPayload: TCheckBox;
-    chkallfunds: TCheckBox;
-    edtAmt: TEdit;
-    gbQuantity: TGroupBox;
-    lblQuantityNotice: TLabel;
-    procedure UpdateUI();
-    procedure chkallfundsChange(Sender: TObject);
-
-  public
-    procedure OnPresent; override;
-    procedure OnNext; override;
-    function Validate(out message: ansistring): boolean; override;
-  end;
-
-
-implementation
-
-{$R *.lfm}
-
-uses
-  UAccounts, UUserInterface, USettings;
-
-{ TWIZSendPASC_EnterQuantity }
-
-procedure TWIZSendPASC_EnterQuantity.UpdateUI();
-begin
-  if chkallfunds.Checked then
-  begin
-    edtAmt.Text := 'ALL BALANCE';
-    edtAmt.Enabled := False;
-    Model.SendPASC.SendPASCMode := akaAllBalance;
-  end
-  else
-  begin
-    edtAmt.Enabled := True;
-    edtAmt.Text := IIF(Model.SendPASC.SingleAmountToSend = 0, '', TAccountComp.FormatMoney(Model.SendPASC.SingleAmountToSend));
-    Model.SendPASC.SendPASCMode := akaSpecifiedAmount;
-  end;
-  Model.Payload.HasPayload := IIF(chkAttachPayload.Checked, True, False);
-
-end;
-
-procedure TWIZSendPASC_EnterQuantity.chkallfundsChange(Sender: TObject);
-begin
-  UpdateUI();
-end;
-
-procedure TWIZSendPASC_EnterQuantity.OnPresent;
-begin
-  UpdateUI();
-  if Length(Model.Account.SelectedAccounts) > 1 then
-  begin
-    chkChooseFee.Checked := True;
-    chkChooseFee.Enabled := False;
-  end;
-  if edtAmt.Enabled then
-    edtAmt.SetFocus;
-end;
-
-procedure TWIZSendPASC_EnterQuantity.OnNext;
-begin
-  Model.Payload.HasPayload := chkAttachPayload.Checked;
-  if chkallfunds.Checked then
-    Model.SendPASC.SingleAmountToSend := 0 // all balance
-
-  else
-    TAccountComp.TxtToMoney(edtAmt.Text, Model.SendPASC.SingleAmountToSend);
-
-  if chkChooseFee.Checked then
-    UpdatePath(ptInject, [TWIZOperationFee_Custom])
-  else
-  begin
-    Model.Fee.SingleOperationFee := TSettings.DefaultFee;
-    if Model.Payload.HasPayload then
-      UpdatePath(ptInject, [TWIZOperationPayload_Encryption])
-    else if Length(Model.Account.SelectedAccounts) > 1 then
-      UpdatePath(ptInject, [TWIZOperationSigner_Select])
-    else
-    begin
-      Model.Signer.SignerAccount := Model.Account.SelectedAccounts[0];
-      Model.Signer.OperationSigningMode := akaPrimary;
-    end;
-  end;
-
-end;
-
-function TWIZSendPASC_EnterQuantity.Validate(out message: ansistring): boolean;
-var
-  LAmount: int64;
-  LIdx: integer;
-  LAccount: TAccount;
-begin
-  Result := True;
-  if not chkallfunds.Checked then
-  begin
-    if not TAccountComp.TxtToMoney(edtAmt.Text, LAmount) then
-    begin
-      message := Format('Invalid Amount "%s"', [edtAmt.Text]);
-      Result := False;
-      Exit;
-    end;
-
-    if LAmount < 1 then
-    begin
-      message := 'You Must Send An Amount Greater Than Zero.';
-      Result := False;
-      Exit;
-    end;
-
-    for LIdx := Low(Model.Account.SelectedAccounts) to High(Model.Account.SelectedAccounts) do
-    begin
-      LAccount := Model.Account.SelectedAccounts[LIdx];
-      if LAccount.balance < LAmount then
-      begin
-        message := 'Insufficient Funds In One Or More Accounts.';
-        Result := False;
-        Exit;
-      end;
-    end;
-
-  end;
-
-end;
-
-end.

+ 0 - 91
src/gui/wizards/operations/UWIZSendPASC_EnterRecipient.lfm

@@ -1,91 +0,0 @@
-object WIZSendPASC_EnterRecipient: TWIZSendPASC_EnterRecipient
-  Left = 0
-  Height = 253
-  Top = 0
-  Width = 429
-  ActiveControl = edtDestAcc
-  Caption = 'WIZSendPASC_EnterRecipient'
-  ClientHeight = 253
-  ClientWidth = 429
-  Visible = False
-  object gbRecipient: TGroupBox
-    Left = 16
-    Height = 232
-    Top = 8
-    Width = 398
-    Anchors = [akTop, akLeft, akRight, akBottom]
-    Caption = 'Destination Account'
-    ClientHeight = 212
-    ClientWidth = 394
-    TabOrder = 0
-    object edtDestAcc: TEdit
-      Left = 8
-      Height = 23
-      Top = 40
-      Width = 136
-      OnChange = edtDestAccChange
-      TabOrder = 0
-    end
-    object btnSearch: TSpeedButton
-      Left = 152
-      Height = 22
-      Top = 41
-      Width = 23
-      Glyph.Data = {
-        36040000424D3604000000000000360000002800000010000000100000000100
-        2000000000000004000064000000640000000000000000000000000000000000
-        0000000000000000000F00000010000000100000001000000010000000100000
-        001000000010000000100000000F000000000000000000000000000000003509
-        033190370DEBA6410FFFA6410FFFA6410FFFA6410FFFA6410FFFA6410FFFA641
-        0FFFA6410FFFA6410FFFA6410FFF90370DEB350903310000000000000000953A
-        0EE6B14B10FFB04B10FFB04B10FFB04B10FFB04B10FFB04B10FFB04B10FFB04B
-        10FFB14B11FFAE460CFFB14B11FFB14B10FF953A0EE60000000000000001AA47
-        12FFB24D11FFB24D11FFB24D11FFB24D11FFB34E12FFB34E12FFB24D11FFB34E
-        12FFAB440DFFE1C19FFFAC4914FFB34E12FFAA4712FF0000000100000001AD4A
-        13FFB65113FFB65113FFB55113FFB14A0EFFAA3F05FFAA3F05FFB14A0EFFAE48
-        0EFFEEDCBCFFFFFFE2FFE6C6A1FFB44E0FFFAD4A13FF0000000100000001AF4D
-        14FFB85414FFB85414FFB75A25FFE5C8A7FFFFFFEBFFFFFFEAFFE3C3A1FFECD7
-        B8FFFFFFE4FFF1DFBEFFB55011FFB85414FFAF4D14FF0000000100000001B251
-        15FFBB5816FFBB6027FFFFFFEAFFEBCFABFFCC814BFFCC824CFFECD1AEFFFFFF
-        E8FFEFDAB9FFB95412FFBB5816FFBB5816FFB25115FF0000000100000001B555
-        16FFBC5712FFEACDAAFFEBCEAAFFBB540EFFBF5E19FFBF5E19FFBB550FFFEDD2
-        B0FFE7C7A5FFBC5712FFBE5C16FFBE5C16FFB55516FF0000000100000001B859
-        19FFBD5915FFFFFFFCFFD08857FFC56B29FFC46B29FFC46A29FFC56B29FFD18B
-        5BFFFFFFF9FFBF5D1BFFC46A27FFC36623FFB85919FF0000000100000001C170
-        35FFC66B2BFFFFFFFFFFD38F64FFCB7839FFCA7739FFCA7739FFCB7839FFD492
-        67FFFFFFFFFFC66C2CFFCA7739FFCB7739FFC17035FF0000000100000001C77F
-        46FFCF8248FFF1DBCCFFEED3C5FFCC7A40FFD1864CFFD1864CFFCC7A40FFEFD5
-        C8FFF1D9C9FFCF8348FFD0864CFFD0864CFFC77F46FF0000000100000001CD8D
-        59FFD79561FFDA9D6EFFFFFFFFFFF0D7C8FFDA9F79FFDAA079FFF0D8CAFFFFFF
-        FFFFD99C6DFFD79561FFD69460FFD69460FFCD8D59FF0000000100000000D29A
-        6CFFDCA373FFDCA373FFDEA97FFFF5E5D8FFFFFFFFFFFFFFFFFFF5E5D7FFDEA9
-        7EFFDCA373FFDCA373FFDCA373FFDCA373FFD29A6CFF0000000000000000C99C
-        75E0E1AE83FFE1AE84FFE1AE84FFE0AC80FFDFA87AFFDEA87AFFE0AC80FFE1AE
-        84FFE1AE84FFE1AE84FFE1AE84FFE1AE83FFC99C75E000000000FFFFFE007960
-        4721D0AA87DCDCB58FFFDDB590FFDDB590FFDDB590FFDDB590FFDDB590FFDDB5
-        90FFDDB590FFDDB590FFDCB58FFFD0AA87DC79604821FFFFFA0000000000FFFF
-        FF00000000000000000000000000000000000000000000000000000000000000
-        000000000000000000000000000000000000FFFFFF0000000000
-      }
-      OnClick = btnSearchClick
-    end
-    object lblDestNotice: TLabel
-      Left = 8
-      Height = 15
-      Top = 8
-      Width = 313
-      Caption = 'Please enter the recipient address that will receive the funds'
-      ParentColor = False
-      ParentFont = False
-    end
-    object lblAccDetails: TLabel
-      Left = 208
-      Height = 15
-      Top = 44
-      Width = 83
-      Caption = 'Account Details'
-      ParentColor = False
-      ParentFont = False
-    end
-  end
-end

+ 0 - 159
src/gui/wizards/operations/UWIZSendPASC_EnterRecipient.pas

@@ -1,159 +0,0 @@
-unit UWIZSendPASC_EnterRecipient;
-
-{$mode delphi}
-{$modeswitch nestedprocvars}
-
-{ Copyright (c) 2018 Sphere 10 Software (http://www.sphere10.com/)
-
-  Distributed under the MIT software license, see the accompanying file LICENSE
-  or visit http://www.opensource.org/licenses/mit-license.php.
-
-  Acknowledgements:
-  Ugochukwu Mmaduekwe - main developer
-  Herman Schoenfeld - designer
-}
-
-interface
-
-uses
-  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
-  ExtCtrls, Buttons, UCommon, UCommon.Collections, UWallet, UCoreObjects,
-  UFRMAccountSelect, UNode, UWizard, UWIZOperation, UWIZSendPASC, UWIZSendPASC_EnterQuantity, UCoreUtils;
-
-type
-
-  { TWIZSendPASC_EnterRecipient }
-
-  TWIZSendPASC_EnterRecipient = class(TWizardForm<TWIZOperationsModel>)
-    edtDestAcc: TEdit;
-    gbRecipient: TGroupBox;
-    lblAccDetails: TLabel;
-    lblDestNotice: TLabel;
-    btnSearch: TSpeedButton;
-    procedure btnSearchClick(Sender: TObject);
-    procedure edtDestAccChange(Sender: TObject);
-    procedure UpdateUI();
-
-
-
-  public
-    procedure OnPresent; override;
-    procedure OnNext; override;
-    function Validate(out message: ansistring): boolean; override;
-  end;
-
-
-implementation
-
-{$R *.lfm}
-
-uses
-  UAccounts, UUserInterface, USettings;
-
-{ TWIZSendPASC_EnterRecipient }
-
-procedure TWIZSendPASC_EnterRecipient.edtDestAccChange(Sender: TObject);
-begin
-  UpdateUI();
-end;
-
-procedure TWIZSendPASC_EnterRecipient.UpdateUI();
-var
-  LTempAccount: TAccount;
-  LAccountNumber: cardinal;
-begin
-  if TAccountComp.AccountTxtNumberToAccountNumber(edtDestAcc.Text, LAccountNumber) then
-  begin
-    if (LAccountNumber < 0) or (LAccountNumber >= TNode.Node.Bank.AccountsCount) then
-    begin
-      lblAccDetails.Caption := '';
-      Exit;
-    end;
-    LTempAccount := TNode.Node.Operations.SafeBoxTransaction.account(LAccountNumber);
-    lblAccDetails.Caption := LTempAccount.DisplayString;
-  end
-  else
-    lblAccDetails.Caption := '';
-
-
-end;
-
-procedure TWIZSendPASC_EnterRecipient.OnPresent;
-begin
-  UpdateUI();
-  edtDestAcc.SetFocus;
-end;
-
-procedure TWIZSendPASC_EnterRecipient.btnSearchClick(Sender: TObject);
-var
-  LFRMAccountSelect: TFRMAccountSelect;
-  LAccountNumber: cardinal;
-begin
-  LFRMAccountSelect := TFRMAccountSelect.Create(Self);
-  LFRMAccountSelect.Position := poMainFormCenter;
-  try
-    LFRMAccountSelect.Node := TNode.Node;
-    LFRMAccountSelect.WalletKeys := TWallet.Keys;
-    LFRMAccountSelect.Filters := edtDestAcc.Tag;
-    if TAccountComp.AccountTxtNumberToAccountNumber(edtDestAcc.Text, LAccountNumber) then
-      LFRMAccountSelect.DefaultAccount := LAccountNumber;
-    LFRMAccountSelect.AllowSelect := True;
-    if LFRMAccountSelect.ShowModal = mrOk then
-      edtDestAcc.Text := TAccountComp.AccountNumberToAccountTxtNumber(LFRMAccountSelect.GetSelected);
-  finally
-    LFRMAccountSelect.Free;
-  end;
-end;
-
-
-procedure TWIZSendPASC_EnterRecipient.OnNext;
-var
-  LAccountNumber: cardinal;
-  LAccount: TAccount;
-begin
-  TAccountComp.AccountTxtNumberToAccountNumber(edtDestAcc.Text, LAccountNumber);
-  Model.SendPASC.DestinationAccount := TNode.Node.Operations.SafeBoxTransaction.account(LAccountNumber);
-  UpdatePath(ptInject, [TWIZSendPASC_EnterQuantity]);
-
-end;
-
-function TWIZSendPASC_EnterRecipient.Validate(out message: ansistring): boolean;
-
-  function GetAccountNumberWithChecksum(constref AAccount: TAccount): string;
-  begin
-    Result := AAccount.AccountString;
-  end;
-
-var
-  LAccountNumbersWithChecksum: TArray<string>;
-  LAccountNumber: cardinal;
-begin
-  Result := True;
-
-  if not (TAccountComp.AccountTxtNumberToAccountNumber(edtDestAcc.Text, LAccountNumber)) then
-  begin
-    message := Format('Invalid Destination Account "%s"', [edtDestAcc.Text]);
-    Result := False;
-    Exit;
-  end;
-
-  if (LAccountNumber < 0) or (LAccountNumber >= TNode.Node.Bank.AccountsCount) then
-  begin
-    message := Format('Invalid Destination Account "%s"', [TAccountComp.AccountNumberToAccountTxtNumber(LAccountNumber)]);
-    Result := False;
-    Exit;
-  end;
-
-  LAccountNumbersWithChecksum :=
-    TListTool<TAccount, string>.Transform(Model.Account.SelectedAccounts, GetAccountNumberWithChecksum);
-
-  if TArrayTool<string>.Contains(LAccountNumbersWithChecksum, edtDestAcc.Text) then
-  begin
-    message := 'Sender And Destination Account Are Same';
-    Result := False;
-    Exit;
-  end;
-
-end;
-
-end.

+ 29 - 36
src/pascalcoin_wallet.lpi

@@ -36,7 +36,7 @@
         <PackageName Value="LCL"/>
       </Item2>
     </RequiredPackages>
-    <Units Count="95">
+    <Units Count="94">
       <Unit0>
         <Filename Value="pascalcoin_wallet.dpr"/>
         <IsPartOfProject Value="True"/>
@@ -446,108 +446,101 @@
         <IsPartOfProject Value="True"/>
       </Unit78>
       <Unit79>
-        <Filename Value="gui\wizards\operations\UWIZSendPASC_EnterQuantity.pas"/>
+        <Filename Value="gui\wizards\operations\UWIZSendPASC_Details.pas"/>
         <IsPartOfProject Value="True"/>
-        <ComponentName Value="WIZSendPASC_EnterQuantity"/>
+        <ComponentName Value="WIZSendPASC_Details"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
       </Unit79>
       <Unit80>
-        <Filename Value="gui\wizards\operations\UWIZSendPASC_EnterRecipient.pas"/>
+        <Filename Value="gui\wizards\operations\UWIZOperation.pas"/>
         <IsPartOfProject Value="True"/>
-        <ComponentName Value="WIZSendPASC_EnterRecipient"/>
-        <HasResources Value="True"/>
-        <ResourceBaseClass Value="Form"/>
       </Unit80>
       <Unit81>
-        <Filename Value="gui\wizards\operations\UWIZOperation.pas"/>
-        <IsPartOfProject Value="True"/>
-      </Unit81>
-      <Unit82>
         <Filename Value="gui\wizards\operations\UWIZChangeKey_SelectOption.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZChangeKey_SelectOption"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit82>
-      <Unit83>
+      </Unit81>
+      <Unit82>
         <Filename Value="gui\wizards\operations\UWIZChangeKey_EnterKey.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZChangeKey_EnterKey"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit83>
-      <Unit84>
+      </Unit82>
+      <Unit83>
         <Filename Value="gui\wizards\operations\UWIZChangeKey_SelectKey.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZChangeKey_SelectKey"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit84>
-      <Unit85>
+      </Unit83>
+      <Unit84>
         <Filename Value="gui-classic\UGridUtils.pas"/>
         <IsPartOfProject Value="True"/>
-      </Unit85>
-      <Unit86>
+      </Unit84>
+      <Unit85>
         <Filename Value="gui\wizards\operations\UWIZEnlistAccountForSale_EnterSeller.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterSeller"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit86>
-      <Unit87>
+      </Unit85>
+      <Unit86>
         <Filename Value="gui\wizards\operations\UWIZEnlistAccountForSale_EnterSaleAmount.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterSaleAmount"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit87>
-      <Unit88>
+      </Unit86>
+      <Unit87>
         <Filename Value="gui\wizards\operations\UWIZEnlistAccountForSale_SelectOption.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_SelectOption"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit88>
-      <Unit89>
+      </Unit87>
+      <Unit88>
         <Filename Value="gui\wizards\operations\UWIZEnlistAccountForSale_EnterLockingBlock.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterLockingBlock"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit89>
-      <Unit90>
+      </Unit88>
+      <Unit89>
         <Filename Value="gui\wizards\operations\UWIZEnlistAccountForSale_EnterPublicKey.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterPublicKey"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit90>
-      <Unit91>
+      </Unit89>
+      <Unit90>
         <Filename Value="core.utils\UCoreObjects.pas"/>
         <IsPartOfProject Value="True"/>
-      </Unit91>
-      <Unit92>
+      </Unit90>
+      <Unit91>
         <Filename Value="gui\wizards\operations\UWIZOperationConfirmation.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZOperationConfirmation"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit92>
-      <Unit93>
+      </Unit91>
+      <Unit92>
         <Filename Value="gui\wizards\operations\UWIZOperationSelected.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZOperationSelected"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit93>
-      <Unit94>
+      </Unit92>
+      <Unit93>
         <Filename Value="gui\UFRMExecuteOperations.pas"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="ExecuteOperations"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit94>
+      </Unit93>
     </Units>
   </ProjectOptions>
   <CompilerOptions>