mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-26 22:23:49 +02:00
154 lines
4.8 KiB
ObjectPascal
154 lines
4.8 KiB
ObjectPascal
unit project_save_options;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
SysUtils,
|
|
// LazUtils
|
|
LazTracer,
|
|
// LCL
|
|
Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
|
|
// IdeIntf
|
|
IDEOptionsIntf, IDEOptEditorIntf, ProjectIntf,
|
|
// IDE
|
|
Project, LazarusIDEStrConsts;
|
|
|
|
type
|
|
|
|
{ TProjectSaveOptionsFrame }
|
|
|
|
TProjectSaveOptionsFrame = class(TAbstractIDEOptionsEditor)
|
|
SaveJumpHistory: TCheckBox;
|
|
SaveFoldState: TCheckBox;
|
|
SaveClosedUnitInfoCheckBox: TCheckBox;
|
|
SaveOnlyProjectUnitInfoCheckBox: TCheckBox;
|
|
SaveSessionLocationRadioGroup: TRadioGroup;
|
|
procedure SaveSessionLocationRadioGroupClick(Sender: TObject);
|
|
private
|
|
fProject: TProject;
|
|
public
|
|
function GetTitle: string; override;
|
|
function GetSessionLocation: TProjectSessionStorage;
|
|
procedure Setup({%H-}ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
property aProject: TProject read fProject;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
function ProjectSessionStorageToLocalizedName(s: TProjectSessionStorage): string;
|
|
begin
|
|
case s of
|
|
pssInProjectInfo: Result := lisPOSaveInLpiFil;
|
|
pssInProjectDir: Result := lisPOSaveInLpsFileInProjectDirectory;
|
|
pssInIDEConfig: Result := lisPOSaveInIDEConfigDirectory;
|
|
pssNone: Result := lisPODoNotSaveAnySessionInfo;
|
|
else
|
|
RaiseGDBException('');
|
|
end;
|
|
end;
|
|
|
|
function LocalizedNameToProjectSessionStorage(const s: string): TProjectSessionStorage;
|
|
begin
|
|
for Result := Low(TProjectSessionStorage) to High(TProjectSessionStorage) do
|
|
if ProjectSessionStorageToLocalizedName(Result) = s then exit;
|
|
Result := pssInProjectInfo;
|
|
end;
|
|
|
|
{ TProjectSaveOptionsFrame }
|
|
|
|
procedure TProjectSaveOptionsFrame.SaveSessionLocationRadioGroupClick(Sender: TObject);
|
|
begin
|
|
;
|
|
end;
|
|
|
|
function TProjectSaveOptionsFrame.GetSessionLocation: TProjectSessionStorage;
|
|
begin
|
|
Result := LocalizedNameToProjectSessionStorage(
|
|
SaveSessionLocationRadioGroup.Items[SaveSessionLocationRadioGroup.ItemIndex]);
|
|
end;
|
|
|
|
function TProjectSaveOptionsFrame.GetTitle: string;
|
|
begin
|
|
Result := dlgPOSaveSession;
|
|
end;
|
|
|
|
procedure TProjectSaveOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
|
var
|
|
s: TProjectSessionStorage;
|
|
begin
|
|
SaveClosedUnitInfoCheckBox.Caption := dlgSaveEditorInfo;
|
|
SaveClosedUnitInfoCheckBox.Hint := dlgSaveEditorInfoHint;
|
|
SaveOnlyProjectUnitInfoCheckBox.Caption := dlgSaveEditorInfoProject;
|
|
SaveOnlyProjectUnitInfoCheckBox.Hint := dlgSaveEditorInfoProjectHint;
|
|
SaveJumpHistory.Caption := lisSaveSessionJumpHistory;
|
|
SaveJumpHistory.Hint := lisSaveSessionJumpHistoryHint;
|
|
SaveFoldState.Caption := lisSaveSessionFoldState;
|
|
SaveFoldState.Hint := lisSaveSessionFoldStateHint;
|
|
SaveSessionLocationRadioGroup.Caption := lisPOSaveSessionInformationIn;
|
|
SaveSessionLocationRadioGroup.Hint := lisPOSaveSessionInformationInHint;
|
|
for s := Low(TProjectSessionStorage) to High(TProjectSessionStorage) do
|
|
SaveSessionLocationRadioGroup.Items.Add(ProjectSessionStorageToLocalizedName(s));
|
|
end;
|
|
|
|
procedure TProjectSaveOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
|
begin
|
|
if not (AOptions is TProjectIDEOptions) then exit;
|
|
fProject:=(AOptions as TProjectIDEOptions).Project;
|
|
with fProject do
|
|
begin
|
|
SaveClosedUnitInfoCheckBox.Checked := (pfSaveClosedUnits in Flags);
|
|
SaveOnlyProjectUnitInfoCheckBox.Checked := (pfSaveOnlyProjectUnits in Flags);
|
|
SaveSessionLocationRadioGroup.ItemIndex := ord(SessionStorage);
|
|
SaveJumpHistory.Checked := (pfSaveJumpHistory in Flags);
|
|
SaveFoldState.Checked := (pfSaveFoldState in Flags);
|
|
end;
|
|
end;
|
|
|
|
procedure TProjectSaveOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
|
var
|
|
AFlags: TProjectFlags;
|
|
begin
|
|
if not (AOptions is TProjectIDEOptions) then exit;
|
|
with (AOptions as TProjectIDEOptions).Project do
|
|
begin
|
|
AFlags := Flags;
|
|
if SaveClosedUnitInfoCheckBox.Checked then
|
|
include(AFlags, pfSaveClosedUnits)
|
|
else
|
|
exclude(AFlags, pfSaveClosedUnits);
|
|
if SaveOnlyProjectUnitInfoCheckBox.Checked then
|
|
include(AFlags, pfSaveOnlyProjectUnits)
|
|
else
|
|
exclude(AFlags, pfSaveOnlyProjectUnits);
|
|
if SaveJumpHistory.Checked then
|
|
include(AFlags, pfSaveJumpHistory)
|
|
else
|
|
exclude(AFlags, pfSaveJumpHistory);
|
|
if SaveFoldState.Checked then
|
|
include(AFlags, pfSaveFoldState)
|
|
else
|
|
exclude(AFlags, pfSaveFoldState);
|
|
if SaveSessionLocationRadioGroup.ItemIndex >= 0 then
|
|
SessionStorage := Self.GetSessionLocation;
|
|
Flags := AFlags;
|
|
end;
|
|
end;
|
|
|
|
class function TProjectSaveOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result := TProjectIDEOptions;
|
|
end;
|
|
|
|
initialization
|
|
RegisterIDEOptionsEditor(GroupProject, TProjectSaveOptionsFrame, ProjectOptionsSave);
|
|
|
|
end.
|
|
|