1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
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.
|