Browse Source

update UFRMPascalCoinWalletConfig form for experimental gui.

Ugochukwu Mmaduekwe 6 years ago
parent
commit
3efde971d5

+ 32 - 0
src/core/USettings.pas

@@ -66,9 +66,13 @@ type
     private
     private
       class var FOnChanged : TNotifyManyEvent;
       class var FOnChanged : TNotifyManyEvent;
       class var FAppParams : TAppParams;
       class var FAppParams : TAppParams;
+      class function GetAllowDownloadNewCheckpointIfOlderThan: Boolean; static;
       class function GetInternetServerPort : Integer; static;
       class function GetInternetServerPort : Integer; static;
+      class function GetMinFutureBlocksToDownloadNewSafebox: Integer; static;
+      class procedure SetAllowDownloadNewCheckpointIfOlderThan(ABool: Boolean); static;
       class procedure SetInternetServerPort(AInt:Integer); static;
       class procedure SetInternetServerPort(AInt:Integer); static;
       class function GetRpcPortEnabled : boolean; static;
       class function GetRpcPortEnabled : boolean; static;
+      class procedure SetMinFutureBlocksToDownloadNewSafebox(AInt: Integer); static;
       class procedure SetRpcPortEnabled(ABool: boolean); static;
       class procedure SetRpcPortEnabled(ABool: boolean); static;
       class function GetDefaultFee : Int64; static;
       class function GetDefaultFee : Int64; static;
       class procedure SetDefaultFee(AInt64: Int64); static;
       class procedure SetDefaultFee(AInt64: Int64); static;
@@ -120,6 +124,8 @@ type
       class property ShowModalMessages : boolean read GetShowModalMessages write SetShowModalMessages;
       class property ShowModalMessages : boolean read GetShowModalMessages write SetShowModalMessages;
       class property PeerCache : string read GetPeerCache write SetPeerCache;
       class property PeerCache : string read GetPeerCache write SetPeerCache;
       class property TryConnectOnlyWithThisFixedServers : string read GetTryConnectOnlyWithThisFixedServers write SetTryConnectOnlyWithThisFixedServers;
       class property TryConnectOnlyWithThisFixedServers : string read GetTryConnectOnlyWithThisFixedServers write SetTryConnectOnlyWithThisFixedServers;
+      class property MinFutureBlocksToDownloadNewSafebox : Integer read GetMinFutureBlocksToDownloadNewSafebox write SetMinFutureBlocksToDownloadNewSafebox;
+      class property AllowDownloadNewCheckpointIfOlderThan : Boolean read GetAllowDownloadNewCheckpointIfOlderThan write SetAllowDownloadNewCheckpointIfOlderThan;
       class property AppParams : TAppParams read FAppParams;
       class property AppParams : TAppParams read FAppParams;
   end;
   end;
 
 
@@ -148,6 +154,26 @@ begin
   Result := FAppParams.ParamByName[CT_PARAM_InternetServerPort].GetAsInteger(CT_NetServer_Port);
   Result := FAppParams.ParamByName[CT_PARAM_InternetServerPort].GetAsInteger(CT_NetServer_Port);
 end;
 end;
 
 
+class function TSettings.GetAllowDownloadNewCheckpointIfOlderThan: Boolean;
+  static;
+begin
+  CheckLoaded;
+  Result := FAppParams.ParamByName[CT_PARAM_AllowDownloadNewCheckpointIfOlderThan].GetAsBoolean(False);
+end;
+
+class function TSettings.GetMinFutureBlocksToDownloadNewSafebox: Integer;
+  static;
+begin
+  CheckLoaded;
+  Result := FAppParams.ParamByName[CT_PARAM_MinFutureBlocksToDownloadNewSafebox].GetAsInteger(0);
+end;
+
+class procedure TSettings.SetAllowDownloadNewCheckpointIfOlderThan(ABool: Boolean); static;
+begin
+  CheckLoaded;
+  FAppParams.ParamByName[CT_PARAM_AllowDownloadNewCheckpointIfOlderThan].SetAsBoolean(ABool);
+end;
+
 class procedure TSettings.SetInternetServerPort(AInt:Integer);
 class procedure TSettings.SetInternetServerPort(AInt:Integer);
 begin
 begin
   CheckLoaded;
   CheckLoaded;
@@ -160,6 +186,12 @@ begin
   Result := FAppParams.ParamByName[CT_PARAM_JSONRPCEnabled].GetAsBoolean(false);
   Result := FAppParams.ParamByName[CT_PARAM_JSONRPCEnabled].GetAsBoolean(false);
 end;
 end;
 
 
+class procedure TSettings.SetMinFutureBlocksToDownloadNewSafebox(AInt: Integer); static;
+begin
+  CheckLoaded;
+  FAppParams.ParamByName[CT_PARAM_MinFutureBlocksToDownloadNewSafebox].SetAsInteger(AInt);
+end;
+
 class procedure TSettings.SetRpcPortEnabled(ABool: boolean);
 class procedure TSettings.SetRpcPortEnabled(ABool: boolean);
 begin
 begin
   CheckLoaded;
   CheckLoaded;

+ 51 - 33
src/gui-experimental/UFRMPascalCoinWalletConfig.lfm

@@ -1,13 +1,14 @@
 object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
 object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   Left = -1385
   Left = -1385
-  Height = 524
+  Height = 551
   Top = 29
   Top = 29
-  Width = 374
+  Width = 370
+  ActiveControl = bbUpdatePassword
   BorderIcons = [biSystemMenu]
   BorderIcons = [biSystemMenu]
   BorderStyle = bsSingle
   BorderStyle = bsSingle
   Caption = 'Options'
   Caption = 'Options'
-  ClientHeight = 524
-  ClientWidth = 374
+  ClientHeight = 551
+  ClientWidth = 370
   Color = clBtnFace
   Color = clBtnFace
   Font.Color = clWindowText
   Font.Color = clWindowText
   Font.Height = -11
   Font.Height = -11
@@ -15,18 +16,17 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   OnCreate = FormCreate
   OnCreate = FormCreate
   OnDestroy = FormDestroy
   OnDestroy = FormDestroy
   Position = poOwnerFormCenter
   Position = poOwnerFormCenter
-  LCLVersion = '1.8.4.0'
   Visible = False
   Visible = False
   object Label1: TLabel
   object Label1: TLabel
-    Left = 30
+    Left = 24
     Height = 13
     Height = 13
-    Top = 385
+    Top = 380
     Width = 120
     Width = 120
     Caption = 'Default fee for operation'
     Caption = 'Default fee for operation'
     ParentColor = False
     ParentColor = False
   end
   end
   object Label2: TLabel
   object Label2: TLabel
-    Left = 30
+    Left = 24
     Height = 13
     Height = 13
     Top = 116
     Top = 116
     Width = 98
     Width = 98
@@ -34,7 +34,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     ParentColor = False
     ParentColor = False
   end
   end
   object lblDefaultInternetServerPort: TLabel
   object lblDefaultInternetServerPort: TLabel
-    Left = 248
+    Left = 281
     Height = 13
     Height = 13
     Top = 116
     Top = 116
     Width = 70
     Width = 70
@@ -65,7 +65,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     ParentFont = False
     ParentFont = False
   end
   end
   object Label5: TLabel
   object Label5: TLabel
-    Left = 30
+    Left = 24
     Height = 13
     Height = 13
     Top = 226
     Top = 226
     Width = 73
     Width = 73
@@ -73,7 +73,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     ParentColor = False
     ParentColor = False
   end
   end
   object lblDefaultJSONRPCMinerServerPort: TLabel
   object lblDefaultJSONRPCMinerServerPort: TLabel
-    Left = 248
+    Left = 281
     Height = 13
     Height = 13
     Top = 226
     Top = 226
     Width = 70
     Width = 70
@@ -89,9 +89,9 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     TabOrder = 6
     TabOrder = 6
   end
   end
   object ebDefaultFee: TEdit
   object ebDefaultFee: TEdit
-    Left = 170
+    Left = 297
     Height = 21
     Height = 21
-    Top = 382
+    Top = 376
     Width = 56
     Width = 56
     Alignment = taRightJustify
     Alignment = taRightJustify
     TabOrder = 10
     TabOrder = 10
@@ -100,16 +100,16 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   object cbSaveLogFiles: TCheckBox
   object cbSaveLogFiles: TCheckBox
     Left = 15
     Left = 15
     Height = 19
     Height = 19
-    Top = 409
+    Top = 440
     Width = 78
     Width = 78
     Caption = 'Save log file'
     Caption = 'Save log file'
     OnClick = cbSaveLogFilesClick
     OnClick = cbSaveLogFilesClick
     TabOrder = 11
     TabOrder = 11
   end
   end
   object cbShowLogs: TCheckBox
   object cbShowLogs: TCheckBox
-    Left = 15
+    Left = 222
     Height = 19
     Height = 19
-    Top = 447
+    Top = 440
     Width = 68
     Width = 68
     Caption = 'Show logs'
     Caption = 'Show logs'
     TabOrder = 13
     TabOrder = 13
@@ -117,7 +117,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   object bbOk: TBitBtn
   object bbOk: TBitBtn
     Left = 184
     Left = 184
     Height = 30
     Height = 30
-    Top = 482
+    Top = 500
     Width = 75
     Width = 75
     Kind = bkOK
     Kind = bkOK
     ModalResult = 1
     ModalResult = 1
@@ -125,9 +125,9 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     TabOrder = 16
     TabOrder = 16
   end
   end
   object bbCancel: TBitBtn
   object bbCancel: TBitBtn
-    Left = 274
+    Left = 278
     Height = 30
     Height = 30
-    Top = 482
+    Top = 500
     Width = 75
     Width = 75
     Cancel = True
     Cancel = True
     Kind = bkCancel
     Kind = bkCancel
@@ -135,7 +135,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     TabOrder = 17
     TabOrder = 17
   end
   end
   object udInternetServerPort: TUpDown
   object udInternetServerPort: TUpDown
-    Left = 226
+    Left = 256
     Height = 21
     Height = 21
     Top = 113
     Top = 113
     Width = 16
     Width = 16
@@ -148,7 +148,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     Wrap = False
     Wrap = False
   end
   end
   object ebInternetServerPort: TEdit
   object ebInternetServerPort: TEdit
-    Left = 170
+    Left = 200
     Height = 21
     Height = 21
     Top = 113
     Top = 113
     Width = 56
     Width = 56
@@ -233,15 +233,15 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     Text = 'ebMinerName'
     Text = 'ebMinerName'
   end
   end
   object cbShowModalMessages: TCheckBox
   object cbShowModalMessages: TCheckBox
-    Left = 170
+    Left = 224
     Height = 19
     Height = 19
-    Top = 409
+    Top = 464
     Width = 127
     Width = 127
     Caption = 'Show modal messages'
     Caption = 'Show modal messages'
     TabOrder = 14
     TabOrder = 14
   end
   end
   object udJSONRPCMinerServerPort: TUpDown
   object udJSONRPCMinerServerPort: TUpDown
-    Left = 226
+    Left = 256
     Height = 21
     Height = 21
     Top = 223
     Top = 223
     Width = 16
     Width = 16
@@ -254,7 +254,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     Wrap = False
     Wrap = False
   end
   end
   object ebJSONRPCMinerServerPort: TEdit
   object ebJSONRPCMinerServerPort: TEdit
-    Left = 170
+    Left = 200
     Height = 21
     Height = 21
     Top = 223
     Top = 223
     Width = 56
     Width = 56
@@ -263,13 +263,13 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     Text = '4009'
     Text = '4009'
   end
   end
   object gbMinerPrivateKey: TGroupBox
   object gbMinerPrivateKey: TGroupBox
-    Left = 8
+    Left = 15
     Height = 121
     Height = 121
     Top = 250
     Top = 250
-    Width = 334
+    Width = 338
     Caption = ' Miner Server Private Key: '
     Caption = ' Miner Server Private Key: '
     ClientHeight = 103
     ClientHeight = 103
-    ClientWidth = 330
+    ClientWidth = 334
     TabOrder = 9
     TabOrder = 9
     object rbGenerateANewPrivateKeyEachBlock: TRadioButton
     object rbGenerateANewPrivateKeyEachBlock: TRadioButton
       Left = 18
       Left = 18
@@ -306,17 +306,17 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     end
     end
   end
   end
   object cbSaveDebugLogs: TCheckBox
   object cbSaveDebugLogs: TCheckBox
-    Left = 31
+    Left = 16
     Height = 19
     Height = 19
-    Top = 427
+    Top = 464
     Width = 118
     Width = 118
     Caption = 'Save debug logs too'
     Caption = 'Save debug logs too'
     TabOrder = 12
     TabOrder = 12
   end
   end
   object bbOpenDataFolder: TBitBtn
   object bbOpenDataFolder: TBitBtn
-    Left = 16
+    Left = 15
     Height = 30
     Height = 30
-    Top = 482
+    Top = 500
     Width = 131
     Width = 131
     Caption = 'Open Data Folder'
     Caption = 'Open Data Folder'
     Glyph.Data = {
     Glyph.Data = {
@@ -370,7 +370,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   object Label6: TLabel
   object Label6: TLabel
     Left = 24
     Left = 24
     Height = 13
     Height = 13
-    Top = 162
+    Top = 163
     Width = 57
     Width = 57
     Caption = 'Allowed IP''s'
     Caption = 'Allowed IP''s'
     ParentColor = False
     ParentColor = False
@@ -398,4 +398,22 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     ParentColor = False
     ParentColor = False
     ParentFont = False
     ParentFont = False
   end
   end
+  object cbDownloadNewCheckpoint: TCheckBox
+    Left = 15
+    Height = 19
+    Top = 416
+    Width = 271
+    Caption = 'Download new Checkpoint if blockchain older than...'
+    OnClick = cbDownloadNewCheckpointClick
+    TabOrder = 18
+  end
+  object ebMinFutureBlocksToDownloadNewSafebox: TEdit
+    Left = 298
+    Height = 21
+    Top = 416
+    Width = 56
+    Alignment = taRightJustify
+    TabOrder = 19
+    Text = '0'
+  end
 end
 end

+ 20 - 2
src/gui-experimental/UFRMPascalCoinWalletConfig.pas

@@ -33,8 +33,10 @@ type
   { TFRMPascalCoinWalletConfig }
   { TFRMPascalCoinWalletConfig }
 
 
   TFRMPascalCoinWalletConfig = class(TApplicationForm)
   TFRMPascalCoinWalletConfig = class(TApplicationForm)
+    cbDownloadNewCheckpoint: TCheckBox;
     cbJSONRPCMinerServerActive: TCheckBox;
     cbJSONRPCMinerServerActive: TCheckBox;
     ebDefaultFee: TEdit;
     ebDefaultFee: TEdit;
+    ebMinFutureBlocksToDownloadNewSafebox: TEdit;
     Label1: TLabel;
     Label1: TLabel;
     cbSaveLogFiles: TCheckBox;
     cbSaveLogFiles: TCheckBox;
     cbShowLogs: TCheckBox;
     cbShowLogs: TCheckBox;
@@ -64,6 +66,7 @@ type
     ebJSONRPCAllowedIPs: TEdit;
     ebJSONRPCAllowedIPs: TEdit;
     Label6: TLabel;
     Label6: TLabel;
     Label7: TLabel;
     Label7: TLabel;
+    procedure cbDownloadNewCheckpointClick(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure bbOkClick(Sender: TObject);
     procedure bbOkClick(Sender: TObject);
     procedure bbUpdatePasswordClick(Sender: TObject);
     procedure bbUpdatePasswordClick(Sender: TObject);
@@ -110,6 +113,12 @@ begin
     TSettings.MinerSelectedPrivateKey := TAccountComp.AccountKey2RawString(TWallet.Keys.Key[i].AccountKey);
     TSettings.MinerSelectedPrivateKey := TAccountComp.AccountKey2RawString(TWallet.Keys.Key[i].AccountKey);
   end else mpk := mpk_Random;
   end else mpk := mpk_Random;
 
 
+    if cbDownloadNewCheckpoint.Checked then begin
+    i := StrToIntDef(ebMinFutureBlocksToDownloadNewSafebox.Text,0);
+    TSettings.MinFutureBlocksToDownloadNewSafebox := i;
+    TSettings.AllowDownloadNewCheckpointIfOlderThan := i > 200;
+  end else TSettings.AllowDownloadNewCheckpointIfOlderThan := False;
+
   TSettings.MinerPrivateKeyType := mpk;
   TSettings.MinerPrivateKeyType := mpk;
   TSettings.MinerServerRpcActive := cbJSONRPCMinerServerActive.Checked;
   TSettings.MinerServerRpcActive := cbJSONRPCMinerServerActive.Checked;
   TSettings.MinerServerRpcPort := udJSONRPCMinerServerPort.Position;
   TSettings.MinerServerRpcPort := udJSONRPCMinerServerPort.Position;
@@ -126,11 +135,10 @@ end;
 
 
 procedure TFRMPascalCoinWalletConfig.bbOpenDataFolderClick(Sender: TObject);
 procedure TFRMPascalCoinWalletConfig.bbOpenDataFolderClick(Sender: TObject);
 begin
 begin
-  OpenDocument(pchar(TFolderHelper.GetPascalCoinDataFolder))
+  OpenDocument(PChar(TFolderHelper.GetPascalCoinDataFolder))
 end;
 end;
 
 
 procedure TFRMPascalCoinWalletConfig.bbUpdatePasswordClick(Sender: TObject);
 procedure TFRMPascalCoinWalletConfig.bbUpdatePasswordClick(Sender: TObject);
-Var s,s2 : String;
 begin
 begin
   TUserInterface.ChangeWalletPassword(Self)
   TUserInterface.ChangeWalletPassword(Self)
 end;
 end;
@@ -157,6 +165,12 @@ begin
   TWallet.Keys.OnChanged.Add(OnWalletChanged);
   TWallet.Keys.OnChanged.Add(OnWalletChanged);
 end;
 end;
 
 
+procedure TFRMPascalCoinWalletConfig.cbDownloadNewCheckpointClick(
+  Sender: TObject);
+begin
+  RefreshUI_WalletAspect;
+end;
+
 procedure TFRMPascalCoinWalletConfig.FormDestroy(Sender: TObject);
 procedure TFRMPascalCoinWalletConfig.FormDestroy(Sender: TObject);
 begin
 begin
   TWallet.Keys.OnChanged.Remove(OnWalletChanged);
   TWallet.Keys.OnChanged.Remove(OnWalletChanged);
@@ -195,6 +209,8 @@ begin
     udJSONRPCMinerServerPort.Position := TSettings.MinerServerRpcPort;
     udJSONRPCMinerServerPort.Position := TSettings.MinerServerRpcPort;
     cbJSONRPCPortEnabled.Checked := TSettings.RpcPortEnabled;
     cbJSONRPCPortEnabled.Checked := TSettings.RpcPortEnabled;
     ebJSONRPCAllowedIPs.Text := TSettings.RpcAllowedIPs;
     ebJSONRPCAllowedIPs.Text := TSettings.RpcAllowedIPs;
+    cbDownloadNewCheckpoint.Checked := TSettings.AllowDownloadNewCheckpointIfOlderThan;
+    ebMinFutureBlocksToDownloadNewSafebox.Text := IntToStr(TSettings.MinFutureBlocksToDownloadNewSafebox);
   Except
   Except
     On E:Exception do begin
     On E:Exception do begin
       TLog.NewLog(lterror,ClassName,'Exception at SetAppParams: '+E.Message);
       TLog.NewLog(lterror,ClassName,'Exception at SetAppParams: '+E.Message);
@@ -232,6 +248,8 @@ begin
     iselected :=  cbPrivateKeyToMine.Items.IndexOfObject(TObject(iselected));
     iselected :=  cbPrivateKeyToMine.Items.IndexOfObject(TObject(iselected));
     cbPrivateKeyToMine.ItemIndex := iselected;
     cbPrivateKeyToMine.ItemIndex := iselected;
   end;
   end;
+  bbUpdatePassword.Enabled := Assigned(TWallet.Keys);
+  ebMinFutureBlocksToDownloadNewSafebox.Enabled:= cbDownloadNewCheckpoint.Checked;
 end;
 end;
 
 
 end.
 end.

+ 1 - 1
src/gui-experimental/core.utils/UCoreUtils.pas

@@ -370,7 +370,7 @@ var
       for i := LRelevantBlockOps.Count - 1 downto 0 do begin
       for i := LRelevantBlockOps.Count - 1 downto 0 do begin
         LOp := LOpsComp.Operation[PtrInt(LRelevantBlockOps.Items[i])];
         LOp := LOpsComp.Operation[PtrInt(LRelevantBlockOps.Items[i])];
         If TPCOperation.OperationToOperationResume(i, LOp, False, LAccNo, LOpResume) then begin
         If TPCOperation.OperationToOperationResume(i, LOp, False, LAccNo, LOpResume) then begin
-          LOpResume.NOpInsideBlock := LOp.tag; // Note: Used Op.tag to include operation index inside a list
+       //   LOpResume.NOpInsideBlock := LOp.tag; // Note: Used Op.tag to include operation index inside a list
           LOpResume.time := LOpsComp.OperationBlock.timestamp;
           LOpResume.time := LOpsComp.OperationBlock.timestamp;
           LOpResume.Block := ABlockNum;
           LOpResume.Block := ABlockNum;
           If LAccountBalances[LAccNo] >= 0 then begin
           If LAccountBalances[LAccNo] >= 0 then begin

+ 1 - 1
src/pascalcoin_wallet_experimental.dpr

@@ -15,7 +15,7 @@ uses
   UUserInterface,
   UUserInterface,
   UFRMMainForm;
   UFRMMainForm;
 
 
-{$R *.res}
+//{$R *.res}
 
 
 var
 var
    mainForm : TFRMMainForm;
    mainForm : TFRMMainForm;

+ 74 - 29
src/pascalcoin_wallet_experimental.lpi

@@ -17,8 +17,57 @@
     <i18n>
     <i18n>
       <EnableI18N LFM="False"/>
       <EnableI18N LFM="False"/>
     </i18n>
     </i18n>
-    <BuildModes Count="1">
+    <BuildModes Count="2">
       <Item1 Name="Default" Default="True"/>
       <Item1 Name="Default" Default="True"/>
+      <Item2 Name="Debug">
+        <CompilerOptions>
+          <Version Value="11"/>
+          <PathDelim Value="\"/>
+          <Target>
+            <Filename Value="PascalCoinWalletExperimental"/>
+          </Target>
+          <SearchPaths>
+            <IncludeFiles Value="$(ProjOutDir);libraries\generics.collections\inc"/>
+            <OtherUnitFiles Value="core;gui-experimental;libraries\synapse;libraries\sphere10;libraries\hashlib4pascal;libraries\generics.collections;libraries\pascalcoin;gui-experimental\core.utils;gui-experimental\wizards\wallet;gui-experimental\wizards\operations;gui-classic;libraries\paszlib"/>
+            <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
+          </SearchPaths>
+          <Parsing>
+            <SyntaxOptions>
+              <SyntaxMode Value="Delphi"/>
+              <IncludeAssertionCode Value="True"/>
+            </SyntaxOptions>
+          </Parsing>
+          <CodeGeneration>
+            <Checks>
+              <IOChecks Value="True"/>
+              <RangeChecks Value="True"/>
+              <OverflowChecks Value="True"/>
+              <StackChecks Value="True"/>
+            </Checks>
+            <VerifyObjMethodCallValidity Value="True"/>
+          </CodeGeneration>
+          <Linking>
+            <Debugging>
+              <DebugInfoType Value="dsDwarf2Set"/>
+              <UseHeaptrc Value="True"/>
+              <TrashVariables Value="True"/>
+              <UseExternalDbgSyms Value="True"/>
+            </Debugging>
+            <Options>
+              <Win32>
+                <GraphicApplication Value="True"/>
+              </Win32>
+            </Options>
+          </Linking>
+          <Other>
+            <Verbosity>
+              <ShowHintsForUnusedUnitsInMainSrc Value="True"/>
+              <ShowHintsForSenderNotUsed Value="True"/>
+            </Verbosity>
+            <CustomOptions Value="-dBorland -dVer150 -dDelphi7 -dCompiler6_Up -dPUREPASCAL -vd"/>
+          </Other>
+        </CompilerOptions>
+      </Item2>
     </BuildModes>
     </BuildModes>
     <PublishOptions>
     <PublishOptions>
       <Version Value="2"/>
       <Version Value="2"/>
@@ -33,11 +82,11 @@
         <PackageName Value="LCL"/>
         <PackageName Value="LCL"/>
       </Item1>
       </Item1>
     </RequiredPackages>
     </RequiredPackages>
-    <Units Count="96">
+    <Units Count="95">
       <Unit0>
       <Unit0>
         <Filename Value="pascalcoin_wallet_experimental.dpr"/>
         <Filename Value="pascalcoin_wallet_experimental.dpr"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
-        <UnitName Value="PascalCoinWallet"/>
+        <UnitName Value="PascalCoinWalletExperimental"/>
       </Unit0>
       </Unit0>
       <Unit1>
       <Unit1>
         <Filename Value="core\UBlockChain.pas"/>
         <Filename Value="core\UBlockChain.pas"/>
@@ -480,80 +529,76 @@
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
       </Unit83>
       </Unit83>
       <Unit84>
       <Unit84>
-        <Filename Value="gui\UGridUtils.pas"/>
-        <IsPartOfProject Value="True"/>
-      </Unit84>
-      <Unit85>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_EnterSeller.pas"/>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_EnterSeller.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterSeller"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterSeller"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit85>
-      <Unit86>
+      </Unit84>
+      <Unit85>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_EnterSaleAmount.pas"/>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_EnterSaleAmount.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterSaleAmount"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterSaleAmount"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit86>
-      <Unit87>
+      </Unit85>
+      <Unit86>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_SelectOption.pas"/>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_SelectOption.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_SelectOption"/>
         <ComponentName Value="WIZEnlistAccountForSale_SelectOption"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit87>
-      <Unit88>
+      </Unit86>
+      <Unit87>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_EnterLockingBlock.pas"/>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_EnterLockingBlock.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterLockingBlock"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterLockingBlock"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit88>
-      <Unit89>
+      </Unit87>
+      <Unit88>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_EnterPublicKey.pas"/>
         <Filename Value="gui-experimental\wizards\operations\UWIZEnlistAccountForSale_EnterPublicKey.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterPublicKey"/>
         <ComponentName Value="WIZEnlistAccountForSale_EnterPublicKey"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit89>
-      <Unit90>
+      </Unit88>
+      <Unit89>
         <Filename Value="gui-experimental\core.utils\UCoreObjects.pas"/>
         <Filename Value="gui-experimental\core.utils\UCoreObjects.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
-      </Unit90>
-      <Unit91>
+      </Unit89>
+      <Unit90>
         <Filename Value="gui-experimental\wizards\operations\UWIZOperationConfirmation.pas"/>
         <Filename Value="gui-experimental\wizards\operations\UWIZOperationConfirmation.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZOperationConfirmation"/>
         <ComponentName Value="WIZOperationConfirmation"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit91>
-      <Unit92>
+      </Unit90>
+      <Unit91>
         <Filename Value="gui-experimental\wizards\operations\UWIZOperationSelected.pas"/>
         <Filename Value="gui-experimental\wizards\operations\UWIZOperationSelected.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="WIZOperationSelected"/>
         <ComponentName Value="WIZOperationSelected"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit92>
-      <Unit93>
+      </Unit91>
+      <Unit92>
         <Filename Value="gui-experimental\UFRMExecuteOperations.pas"/>
         <Filename Value="gui-experimental\UFRMExecuteOperations.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="ExecuteOperations"/>
         <ComponentName Value="ExecuteOperations"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit93>
-      <Unit94>
+      </Unit92>
+      <Unit93>
         <Filename Value="gui-experimental\UCTRLNoAccount.pas"/>
         <Filename Value="gui-experimental\UCTRLNoAccount.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
         <ComponentName Value="CTRLNoAccounts"/>
         <ComponentName Value="CTRLNoAccounts"/>
         <HasResources Value="True"/>
         <HasResources Value="True"/>
         <ResourceBaseClass Value="Form"/>
         <ResourceBaseClass Value="Form"/>
-      </Unit94>
-      <Unit95>
+      </Unit93>
+      <Unit94>
         <Filename Value="core\URandomHash.pas"/>
         <Filename Value="core\URandomHash.pas"/>
         <IsPartOfProject Value="True"/>
         <IsPartOfProject Value="True"/>
-      </Unit95>
+      </Unit94>
     </Units>
     </Units>
   </ProjectOptions>
   </ProjectOptions>
   <CompilerOptions>
   <CompilerOptions>
@@ -564,7 +609,7 @@
     </Target>
     </Target>
     <SearchPaths>
     <SearchPaths>
       <IncludeFiles Value="$(ProjOutDir);libraries\generics.collections\inc"/>
       <IncludeFiles Value="$(ProjOutDir);libraries\generics.collections\inc"/>
-      <OtherUnitFiles Value="core;gui-experimental;libraries\synapse;libraries\sphere10;libraries\hashlib4pascal;libraries\generics.collections;libraries\pascalcoin;gui-experimental\core.utils;gui-experimental\wizards\wallet;gui-experimental\wizards\operations;gui-classic"/>
+      <OtherUnitFiles Value="core;gui-experimental;libraries\synapse;libraries\sphere10;libraries\hashlib4pascal;libraries\generics.collections;libraries\pascalcoin;gui-experimental\core.utils;gui-experimental\wizards\wallet;gui-experimental\wizards\operations;gui-classic;libraries\paszlib"/>
       <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
       <UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
     </SearchPaths>
     </SearchPaths>
     <Parsing>
     <Parsing>