mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-10-31 20:31:33 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			203 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			203 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| unit CodyMiscOptsFrame;
 | |
| 
 | |
| {$mode objfpc}{$H+}
 | |
| 
 | |
| interface
 | |
| 
 | |
| uses
 | |
|   Classes, SysUtils, FileUtil, DividerBevel, LResources, Forms, Controls,
 | |
|   StdCtrls, ComCtrls, FileProcs,
 | |
|   IDEOptionsIntf, LazIDEIntf,
 | |
|   CodyOpts, CodyIdentifiersDlg, CodyStrConsts;
 | |
| 
 | |
| type
 | |
|   { TCodyMiscOptionsFrame }
 | |
| 
 | |
|   TCodyMiscOptionsFrame = class(TAbstractIDEOptionsEditor)
 | |
|     UDDividerBevel: TDividerBevel;
 | |
|     UDLoadDelayLabel: TLabel;
 | |
|     UDLoadDelayTrackBar: TTrackBar;
 | |
|     UDSaveButton: TButton;
 | |
|     UDSaveIntervalLabel: TLabel;
 | |
|     UDSaveIntervalTrackBar: TTrackBar;
 | |
|     procedure UDLoadDelayTrackBarChange(Sender: TObject);
 | |
|     procedure UDSaveButtonClick(Sender: TObject);
 | |
|     procedure UDSaveIntervalTrackBarChange(Sender: TObject);
 | |
|   private
 | |
|     FOldOptions: TCodyMiscOptions;
 | |
|     FLoaded: boolean;
 | |
|     fSaved: boolean;
 | |
|     procedure GatherOptions(Options: TCodyMiscOptions);
 | |
|     function UDLoadDelayToTrackbarPos(Seconds: integer): integer;
 | |
|     function UDSaveIntervalToTrackbarPos(Seconds: integer): integer;
 | |
|     function SecondsToStr(Seconds: integer): string;
 | |
|     procedure UDUpdateLoadDelayInfo;
 | |
|     procedure UDUpdateSaveIntervalInfo;
 | |
|   public
 | |
|     constructor Create(TheOwner: TComponent); override;
 | |
|     destructor Destroy; override;
 | |
|     function GetTitle: String; override;
 | |
|     procedure ReadSettings({%H-}AOptions: TAbstractIDEOptions); override;
 | |
|     procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
 | |
|     class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
 | |
|     procedure WriteSettings({%H-}AOptions: TAbstractIDEOptions); override;
 | |
|     procedure RestoreSettings({%H-}AOptions: TAbstractIDEOptions); override;
 | |
|     property OldOptions: TCodyMiscOptions read FOldOptions;
 | |
|   end;
 | |
| 
 | |
| const
 | |
|   UDLoadDelayTrackbarValues: array[0..9] of integer = (
 | |
|     // 0,1,2,3,4, 5, 6, 7,  8,  9
 | |
|        0,1,2,3,5,10,30,60,120,300
 | |
|   );
 | |
|   UDSaveIntervalTrackbarValues: array[0..7] of integer = (
 | |
|     // 0, 1, 2,  3,  4,  5,   6,   7
 | |
|       10,20,60,120,300,600,1800,3600
 | |
|   );
 | |
| 
 | |
| implementation
 | |
| 
 | |
| { TCodyMiscOptionsFrame }
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.UDSaveButtonClick(Sender: TObject);
 | |
| begin
 | |
|   // make sure the old db is loaded
 | |
|   CodyUnitDictionary.Load;
 | |
|   CodyUnitDictionary.Save;
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.UDSaveIntervalTrackBarChange(Sender: TObject);
 | |
| begin
 | |
|   if not FLoaded then exit;
 | |
|   CodyUnitDictionary.SaveIntervalInS:=UDSaveIntervalTrackbarValues[UDSaveIntervalTrackBar.Position];
 | |
|   UDUpdateSaveIntervalInfo;
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.UDLoadDelayTrackBarChange(Sender: TObject);
 | |
| begin
 | |
|   if not FLoaded then exit;
 | |
|   CodyUnitDictionary.LoadAfterStartInS:=UDLoadDelayTrackbarValues[UDLoadDelayTrackBar.Position];
 | |
|   UDUpdateLoadDelayInfo;
 | |
| end;
 | |
| 
 | |
| function TCodyMiscOptionsFrame.UDLoadDelayToTrackbarPos(Seconds: integer
 | |
|   ): integer;
 | |
| begin
 | |
|   Result:=low(UDLoadDelayTrackbarValues);
 | |
|   while (Seconds>UDLoadDelayTrackbarValues[Result])
 | |
|   and (Result<High(UDLoadDelayTrackbarValues)) do
 | |
|     inc(Result);
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.GatherOptions(Options: TCodyMiscOptions);
 | |
| begin
 | |
|   Options.UDLoadDelayInS:=CodyUnitDictionary.LoadAfterStartInS;
 | |
|   Options.UDSaveIntervalInS:=CodyUnitDictionary.SaveIntervalInS;
 | |
| end;
 | |
| 
 | |
| function TCodyMiscOptionsFrame.UDSaveIntervalToTrackbarPos(Seconds: integer
 | |
|   ): integer;
 | |
| begin
 | |
|   Result:=low(UDSaveIntervalTrackbarValues);
 | |
|   while (Seconds>UDSaveIntervalTrackbarValues[Result])
 | |
|   and (Result<High(UDSaveIntervalTrackbarValues)) do
 | |
|     inc(Result);
 | |
| end;
 | |
| 
 | |
| function TCodyMiscOptionsFrame.SecondsToStr(Seconds: integer): string;
 | |
| begin
 | |
|   if Seconds>=60 then
 | |
|     Result:=Format(crsMinutes, [IntToStr(Seconds div 60)])
 | |
|   else
 | |
|     Result:=Format(crsSeconds, [IntToStr(Seconds)]);
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.UDUpdateLoadDelayInfo;
 | |
| begin
 | |
|   UDLoadDelayLabel.Caption:=Format(crsLoadDictionaryAfter, [SecondsToStr(
 | |
|     CodyUnitDictionary.LoadAfterStartInS)]);
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.UDUpdateSaveIntervalInfo;
 | |
| begin
 | |
|   UDSaveIntervalLabel.Caption:=Format(crsSaveDictionaryEvery, [SecondsToStr(
 | |
|     CodyUnitDictionary.SaveIntervalInS)]);
 | |
| end;
 | |
| 
 | |
| constructor TCodyMiscOptionsFrame.Create(TheOwner: TComponent);
 | |
| begin
 | |
|   inherited Create(TheOwner);
 | |
|   UDDividerBevel.Caption:=crsUnitIdentifierDictionary;
 | |
|   FOldOptions:=TCodyMiscOptions.Create;
 | |
| end;
 | |
| 
 | |
| destructor TCodyMiscOptionsFrame.Destroy;
 | |
| begin
 | |
|   FreeAndNil(FOldOptions);
 | |
|   inherited Destroy;
 | |
| end;
 | |
| 
 | |
| function TCodyMiscOptionsFrame.GetTitle: String;
 | |
| begin
 | |
|   Result:=crsIDEIntegration;
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions
 | |
|   );
 | |
| begin
 | |
|   if not (AOptions is SupportedOptionsClass) then exit;
 | |
|   if FLoaded then exit;
 | |
|   FLoaded:=true;
 | |
|   GatherOptions(OldOptions);
 | |
|   UDLoadDelayTrackBar.Position:=UDLoadDelayToTrackbarPos(CodyUnitDictionary.LoadAfterStartInS);
 | |
|   UDUpdateLoadDelayInfo;
 | |
|   UDSaveIntervalTrackBar.Position:=UDSaveIntervalToTrackbarPos(CodyUnitDictionary.SaveIntervalInS);
 | |
|   UDUpdateSaveIntervalInfo;
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog
 | |
|   );
 | |
| begin
 | |
|   UDLoadDelayTrackBar.ShowHint:=true;
 | |
|   UDLoadDelayTrackBar.Hint:=crsTheDictionaryIsLoadedOnDemandOrAfterThisTime;
 | |
|   UDLoadDelayTrackBar.Min:=Low(UDLoadDelayTrackbarValues);
 | |
|   UDLoadDelayTrackBar.Max:=High(UDLoadDelayTrackbarValues);
 | |
| 
 | |
|   UDSaveIntervalTrackBar.ShowHint:=true;
 | |
|   UDSaveIntervalTrackBar.Hint:=crsTheDictionaryIsSavedInIntervals;
 | |
|   UDSaveIntervalTrackBar.Min:=Low(UDSaveIntervalTrackbarValues);
 | |
|   UDSaveIntervalTrackBar.Max:=High(UDSaveIntervalTrackbarValues);
 | |
| 
 | |
|   UDSaveButton.Caption:=crsSaveDictionaryNow;
 | |
|   UDSaveButton.ShowHint:=true;
 | |
|   UDSaveButton.Hint:=Format(crsSaveToFile, [CodyUnitDictionary.GetFilename]);
 | |
| end;
 | |
| 
 | |
| class function TCodyMiscOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
 | |
| begin
 | |
|   Result:=TAbstractIDEEnvironmentOptions;
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions
 | |
|   );
 | |
| begin
 | |
|   if not (AOptions is SupportedOptionsClass) then exit;
 | |
|   if fSaved then exit;
 | |
|   fSaved:=true;
 | |
|   GatherOptions(CodyOptions);
 | |
|   CodyOptions.SaveSafe;
 | |
| end;
 | |
| 
 | |
| procedure TCodyMiscOptionsFrame.RestoreSettings(
 | |
|   AOptions: TAbstractIDEOptions);
 | |
| begin
 | |
|   if not (AOptions is SupportedOptionsClass) then exit;
 | |
|   CodyUnitDictionary.LoadAfterStartInS:=OldOptions.UDLoadDelayInS;
 | |
|   CodyUnitDictionary.SaveIntervalInS:=OldOptions.UDSaveIntervalInS;
 | |
| end;
 | |
| 
 | |
| {$R *.lfm}
 | |
| 
 | |
| end.
 | |
| 
 | 
