mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-15 16:49:29 +02: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.
|
|
|