Browse Source

Allow configure MinFutureBlocksToDownloadNewSafebox in GUI

PascalCoin 6 years ago
parent
commit
6400f15bc1

+ 2 - 0
src/core/USettings.pas

@@ -51,6 +51,8 @@ const
   CT_PARAM_JSONRPCAllowedIPs = 'JSONRPCAllowedIPs';
   CT_PARAM_HashRateAvgBlocksCount = 'HashRateAvgBlocksCount';
   CT_PARAM_ShowHashRateAs = 'ShowHashRateAs';
+  CT_PARAM_AllowDownloadNewCheckpointIfOlderThan = 'AllowDownloadNewCheckpointIfOlderThan';
+  CT_PARAM_MinFutureBlocksToDownloadNewSafebox = 'MinFutureBlocksToDownloadNewSafebox';
 
 type
 

+ 36 - 18
src/gui-classic/UFRMPascalCoinWalletConfig.dfm

@@ -4,7 +4,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   BorderIcons = [biSystemMenu]
   BorderStyle = bsSingle
   Caption = 'Options'
-  ClientHeight = 519
+  ClientHeight = 540
   ClientWidth = 374
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
@@ -19,7 +19,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   TextHeight = 13
   object Label1: TLabel
     Left = 30
-    Top = 390
+    Top = 405
     Width = 120
     Height = 13
     Caption = 'Default fee for operation'
@@ -102,48 +102,48 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   end
   object ebDefaultFee: TEdit
     Left = 170
-    Top = 387
+    Top = 402
     Width = 56
     Height = 21
     Alignment = taRightJustify
-    TabOrder = 10
+    TabOrder = 12
     Text = '0'
   end
   object cbSaveLogFiles: TCheckBox
     Left = 15
-    Top = 414
+    Top = 429
     Width = 97
     Height = 17
     Caption = 'Save log file'
-    TabOrder = 11
+    TabOrder = 13
     OnClick = cbSaveLogFilesClick
   end
   object cbShowLogs: TCheckBox
     Left = 15
-    Top = 452
+    Top = 467
     Width = 97
     Height = 17
     Caption = 'Show logs'
-    TabOrder = 13
+    TabOrder = 15
   end
   object bbOk: TBitBtn
     Left = 176
-    Top = 475
+    Top = 490
     Width = 75
     Height = 25
     Kind = bkOK
     NumGlyphs = 2
-    TabOrder = 16
+    TabOrder = 18
     OnClick = bbOkClick
   end
   object bbCancel: TBitBtn
     Left = 266
-    Top = 475
+    Top = 490
     Width = 75
     Height = 25
     Kind = bkCancel
     NumGlyphs = 2
-    TabOrder = 17
+    TabOrder = 19
   end
   object udInternetServerPort: TUpDown
     Left = 226
@@ -244,11 +244,11 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   end
   object cbShowModalMessages: TCheckBox
     Left = 170
-    Top = 414
+    Top = 429
     Width = 171
     Height = 17
     Caption = 'Show modal messages'
-    TabOrder = 14
+    TabOrder = 16
   end
   object udJSONRPCMinerServerPort: TUpDown
     Left = 226
@@ -313,15 +313,15 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   end
   object cbSaveDebugLogs: TCheckBox
     Left = 31
-    Top = 432
+    Top = 447
     Width = 97
     Height = 17
     Caption = 'Save debug logs too'
-    TabOrder = 12
+    TabOrder = 14
   end
   object bbOpenDataFolder: TBitBtn
     Left = 15
-    Top = 475
+    Top = 490
     Width = 120
     Height = 25
     Caption = 'Open Data folder'
@@ -352,7 +352,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
       FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00
       FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF
       00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF}
-    TabOrder = 15
+    TabOrder = 17
     OnClick = bbOpenDataFolderClick
   end
   object cbJSONRPCPortEnabled: TCheckBox
@@ -372,4 +372,22 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     TabOrder = 5
     Text = 'ebJSONRPCAllowedIPs'
   end
+  object ebMinFutureBlocksToDownloadNewSafebox: TEdit
+    Left = 296
+    Top = 373
+    Width = 53
+    Height = 21
+    Alignment = taRightJustify
+    TabOrder = 11
+    Text = '0'
+  end
+  object cbDownloadNewCheckpoint: TCheckBox
+    Left = 16
+    Top = 373
+    Width = 271
+    Height = 19
+    Caption = 'Download new Checkpoint if blockchain older than...'
+    TabOrder = 10
+    OnClick = cbDownloadNewCheckpointClick
+  end
 end

+ 38 - 21
src/gui-classic/UFRMPascalCoinWalletConfig.lfm

@@ -1,12 +1,12 @@
 object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   Left = 462
-  Height = 524
+  Height = 551
   Top = 234
   Width = 374
   BorderIcons = [biSystemMenu]
   BorderStyle = bsSingle
   Caption = 'Options'
-  ClientHeight = 524
+  ClientHeight = 551
   ClientWidth = 374
   Color = clBtnFace
   Font.Color = clWindowText
@@ -14,12 +14,11 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   Font.Name = 'Tahoma'
   OnCreate = FormCreate
   Position = poOwnerFormCenter
-  LCLVersion = '1.8.4.0'
-  Visible = False
+  LCLVersion = '1.8.0.6'
   object Label1: TLabel
     Left = 30
     Height = 13
-    Top = 385
+    Top = 403
     Width = 120
     Caption = 'Default fee for operation'
     ParentColor = False
@@ -90,48 +89,48 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   object ebDefaultFee: TEdit
     Left = 170
     Height = 21
-    Top = 382
+    Top = 400
     Width = 56
     Alignment = taRightJustify
-    TabOrder = 10
+    TabOrder = 12
     Text = '0'
   end
   object cbSaveLogFiles: TCheckBox
     Left = 15
     Height = 19
-    Top = 409
+    Top = 427
     Width = 78
     Caption = 'Save log file'
     OnClick = cbSaveLogFilesClick
-    TabOrder = 11
+    TabOrder = 13
   end
   object cbShowLogs: TCheckBox
     Left = 15
     Height = 19
-    Top = 447
+    Top = 465
     Width = 68
     Caption = 'Show logs'
-    TabOrder = 13
+    TabOrder = 15
   end
   object bbOk: TBitBtn
     Left = 184
     Height = 30
-    Top = 482
+    Top = 500
     Width = 75
     Kind = bkOK
     ModalResult = 1
     OnClick = bbOkClick
-    TabOrder = 16
+    TabOrder = 18
   end
   object bbCancel: TBitBtn
     Left = 274
     Height = 30
-    Top = 482
+    Top = 500
     Width = 75
     Cancel = True
     Kind = bkCancel
     ModalResult = 2
-    TabOrder = 17
+    TabOrder = 19
   end
   object udInternetServerPort: TUpDown
     Left = 226
@@ -234,10 +233,10 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   object cbShowModalMessages: TCheckBox
     Left = 170
     Height = 19
-    Top = 409
+    Top = 427
     Width = 127
     Caption = 'Show modal messages'
-    TabOrder = 14
+    TabOrder = 16
   end
   object udJSONRPCMinerServerPort: TUpDown
     Left = 226
@@ -307,15 +306,15 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
   object cbSaveDebugLogs: TCheckBox
     Left = 31
     Height = 19
-    Top = 427
+    Top = 445
     Width = 118
     Caption = 'Save debug logs too'
-    TabOrder = 12
+    TabOrder = 14
   end
   object bbOpenDataFolder: TBitBtn
     Left = 16
     Height = 30
-    Top = 482
+    Top = 500
     Width = 131
     Caption = 'Open Data Folder'
     Glyph.Data = {
@@ -355,7 +354,7 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
       FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
     }
     OnClick = bbOpenDataFolderClick
-    TabOrder = 15
+    TabOrder = 17
   end
   object cbJSONRPCPortEnabled: TCheckBox
     Left = 15
@@ -397,4 +396,22 @@ object FRMPascalCoinWalletConfig: TFRMPascalCoinWalletConfig
     ParentColor = False
     ParentFont = False
   end
+  object cbDownloadNewCheckpoint: TCheckBox
+    Left = 16
+    Height = 19
+    Top = 373
+    Width = 271
+    Caption = 'Download new Checkpoint if blockchain older than...'
+    OnClick = cbDownloadNewCheckpointClick
+    TabOrder = 10
+  end
+  object ebMinFutureBlocksToDownloadNewSafebox: TEdit
+    Left = 296
+    Height = 21
+    Top = 373
+    Width = 53
+    Alignment = taRightJustify
+    TabOrder = 11
+    Text = '0'
+  end
 end

+ 19 - 1
src/gui-classic/UFRMPascalCoinWalletConfig.pas

@@ -40,7 +40,9 @@ type
 
   TFRMPascalCoinWalletConfig = class(TForm)
     cbJSONRPCMinerServerActive: TCheckBox;
+    cbDownloadNewCheckpoint: TCheckBox;
     ebDefaultFee: TEdit;
+    ebMinFutureBlocksToDownloadNewSafebox: TEdit;
     Label1: TLabel;
     cbSaveLogFiles: TCheckBox;
     cbShowLogs: TCheckBox;
@@ -70,6 +72,7 @@ type
     ebJSONRPCAllowedIPs: TEdit;
     Label6: TLabel;
     Label7: TLabel;
+    procedure cbDownloadNewCheckpointClick(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure bbOkClick(Sender: TObject);
     procedure bbUpdatePasswordClick(Sender: TObject);
@@ -91,7 +94,7 @@ type
 
 implementation
 
-uses UConst, UAccounts, ULog, UCrypto, UFolderHelper, USettings, UGUIUtils;
+uses UConst, UAccounts, ULog, UCrypto, UFolderHelper, USettings, UGUIUtils, UNetProtocol;
 
 {$IFnDEF FPC}
   {$R *.dfm}
@@ -133,6 +136,11 @@ begin
   AppParams.ParamByName[CT_PARAM_JSONRPCMinerServerPort].SetAsInteger(udJSONRPCMinerServerPort.Position);
   AppParams.ParamByName[CT_PARAM_JSONRPCEnabled].SetAsBoolean(cbJSONRPCPortEnabled.Checked);
   AppParams.ParamByName[CT_PARAM_JSONRPCAllowedIPs].SetAsString(ebJSONRPCAllowedIPs.Text);
+  if cbDownloadNewCheckpoint.Checked then begin
+    i := StrToIntDef(ebMinFutureBlocksToDownloadNewSafebox.Text,0);
+    AppParams.ParamByName[CT_PARAM_MinFutureBlocksToDownloadNewSafebox].SetAsInteger(i);
+    AppParams.ParamByName[CT_PARAM_AllowDownloadNewCheckpointIfOlderThan].SetAsBoolean(i>200);
+  end else AppParams.ParamByName[CT_PARAM_AllowDownloadNewCheckpointIfOlderThan].SetAsBoolean(False);
 
   ModalResult := MrOk;
 end;
@@ -195,6 +203,12 @@ begin
   lblDefaultJSONRPCMinerServerPort.Caption := Format('(Default %d)',[CT_JSONRPCMinerServer_Port]);
 end;
 
+procedure TFRMPascalCoinWalletConfig.cbDownloadNewCheckpointClick(
+  Sender: TObject);
+begin
+  UpdateWalletConfig;
+end;
+
 procedure TFRMPascalCoinWalletConfig.SetAppParams(const Value: TAppParams);
 Var i : Integer;
 begin
@@ -219,6 +233,8 @@ begin
     udJSONRPCMinerServerPort.Position := AppParams.ParamByName[CT_PARAM_JSONRPCMinerServerPort].GetAsInteger(CT_JSONRPCMinerServer_Port);
     cbJSONRPCPortEnabled.Checked := AppParams.ParamByName[CT_PARAM_JSONRPCEnabled].GetAsBoolean(false);
     ebJSONRPCAllowedIPs.Text := AppParams.ParamByName[CT_PARAM_JSONRPCAllowedIPs].GetAsString('127.0.0.1;');
+    ebMinFutureBlocksToDownloadNewSafebox.Text := IntToStr(AppParams.ParamByName[CT_PARAM_MinFutureBlocksToDownloadNewSafebox].GetAsInteger(TNetData.NetData.MinFutureBlocksToDownloadNewSafebox));
+    cbDownloadNewCheckpoint.Checked:= AppParams.ParamByName[CT_PARAM_AllowDownloadNewCheckpointIfOlderThan].GetAsBoolean(TNetData.NetData.MinFutureBlocksToDownloadNewSafebox>200);
   Except
     On E:Exception do begin
       TLog.NewLog(lterror,ClassName,'Exception at SetAppParams: '+E.Message);
@@ -226,6 +242,7 @@ begin
   End;
   cbSaveLogFilesClick(nil);
   cbJSONRPCPortEnabledClick(nil);
+  UpdateWalletConfig;
 end;
 
 procedure TFRMPascalCoinWalletConfig.SetWalletKeys(const Value: TWalletKeys);
@@ -275,6 +292,7 @@ begin
 
   end else bbUpdatePassword.Caption := '(Wallet password)';
   bbUpdatePassword.Enabled := Assigned(FWAlletKeys);
+  ebMinFutureBlocksToDownloadNewSafebox.Enabled:=cbDownloadNewCheckpoint.Checked;
 end;
 
 end.

+ 17 - 1
src/gui-classic/UFRMWallet.dfm

@@ -415,7 +415,7 @@ object FRMWallet: TFRMWallet
     Top = 91
     Width = 865
     Height = 466
-    ActivePage = tsBlockChain
+    ActivePage = tsMyAccounts
     Align = alClient
     TabOrder = 2
     OnChange = PageControlChange
@@ -671,6 +671,10 @@ object FRMWallet: TFRMWallet
         object tsMultiSelectAccounts: TTabSheet
           Caption = 'Selected accounts for massive operations'
           ImageIndex = 1
+          ExplicitLeft = 0
+          ExplicitTop = 0
+          ExplicitWidth = 0
+          ExplicitHeight = 0
           object dgSelectedAccounts: TDrawGrid
             Left = 41
             Top = 31
@@ -862,6 +866,10 @@ object FRMWallet: TFRMWallet
     object tsPendingOperations: TTabSheet
       Caption = 'Pending Operations'
       ImageIndex = 5
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object dgPendingOperations: TDrawGrid
         Left = 0
         Top = 86
@@ -1000,6 +1008,10 @@ object FRMWallet: TFRMWallet
     object tsOperations: TTabSheet
       Caption = 'Operations Explorer'
       ImageIndex = 1
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object Panel1: TPanel
         Left = 0
         Top = 0
@@ -1048,6 +1060,10 @@ object FRMWallet: TFRMWallet
     object tsLogs: TTabSheet
       Caption = 'Logs'
       ImageIndex = 2
+      ExplicitLeft = 0
+      ExplicitTop = 0
+      ExplicitWidth = 0
+      ExplicitHeight = 0
       object pnlTopLogs: TPanel
         Left = 0
         Top = 0

+ 5 - 0
src/gui-classic/UFRMWallet.pas

@@ -2197,6 +2197,11 @@ begin
     hr_Exa : cbHashRateUnits.ItemIndex:=6;
   else cbHashRateUnits.ItemIndex:=-1;
   end;
+  if TNetData.NetDataExists then begin
+    if FAppParams.ParamByName[CT_PARAM_AllowDownloadNewCheckpointIfOlderThan].GetAsBoolean(TNetData.NetData.MinFutureBlocksToDownloadNewSafebox>200) then begin
+      TNetData.NetData.MinFutureBlocksToDownloadNewSafebox:=FAppParams.ParamByName[CT_PARAM_MinFutureBlocksToDownloadNewSafebox].GetAsInteger(TNetData.NetData.MinFutureBlocksToDownloadNewSafebox);
+    end else TNetData.NetData.MinFutureBlocksToDownloadNewSafebox:=0;
+  end;
 end;
 
 procedure TFRMWallet.UpdateConnectionStatus;