mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-09 03:57:16 +02:00
ide: improve ideoptionsdlg
git-svn-id: trunk@17089 -
This commit is contained in:
parent
1c6fd9cd8d
commit
efbdbb855d
@ -22,8 +22,6 @@
|
|||||||
|
|
||||||
Abstract:
|
Abstract:
|
||||||
This unit defines a dialog for the lazarus options.
|
This unit defines a dialog for the lazarus options.
|
||||||
|
|
||||||
TODO: remove FEditors
|
|
||||||
}
|
}
|
||||||
unit IdeOptionsDlg;
|
unit IdeOptionsDlg;
|
||||||
|
|
||||||
@ -50,7 +48,6 @@ type
|
|||||||
FOnLoadOptions: TOnLoadIDEOptions;
|
FOnLoadOptions: TOnLoadIDEOptions;
|
||||||
FOnSaveOptions: TOnSaveIDEOptions;
|
FOnSaveOptions: TOnSaveIDEOptions;
|
||||||
PrevEditor: TAbstractIDEOptionsEditor;
|
PrevEditor: TAbstractIDEOptionsEditor;
|
||||||
FEditors: TList;
|
|
||||||
|
|
||||||
function CheckValues: boolean;
|
function CheckValues: boolean;
|
||||||
procedure LoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
|
procedure LoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
|
||||||
@ -61,7 +58,6 @@ type
|
|||||||
property OnSaveIDEOptions: TOnSaveIDEOptions read FOnSaveOptions write FOnSaveOptions;
|
property OnSaveIDEOptions: TOnSaveIDEOptions read FOnSaveOptions write FOnSaveOptions;
|
||||||
public
|
public
|
||||||
constructor Create(AOwner: TComponent); override;
|
constructor Create(AOwner: TComponent); override;
|
||||||
destructor Destroy; override;
|
|
||||||
procedure OpenEditor(AEditor: TAbstractIDEOptionsEditorClass);
|
procedure OpenEditor(AEditor: TAbstractIDEOptionsEditorClass);
|
||||||
procedure ReadSettings(AOptions: TAbstractIDEOptions);
|
procedure ReadSettings(AOptions: TAbstractIDEOptions);
|
||||||
procedure WriteSettings(AOptions: TAbstractIDEOptions);
|
procedure WriteSettings(AOptions: TAbstractIDEOptions);
|
||||||
@ -82,7 +78,6 @@ begin
|
|||||||
IDEDialogLayoutList.ApplyLayout(Self, Width, Height);
|
IDEDialogLayoutList.ApplyLayout(Self, Width, Height);
|
||||||
Caption := lisMenuGeneralOptions;
|
Caption := lisMenuGeneralOptions;
|
||||||
|
|
||||||
FEditors := TList.Create;
|
|
||||||
CreateEditors;
|
CreateEditors;
|
||||||
|
|
||||||
ButtonPanel.OKButton.OnClick := @OKButtonClick;
|
ButtonPanel.OKButton.OnClick := @OKButtonClick;
|
||||||
@ -93,12 +88,6 @@ begin
|
|||||||
CategoryTree.Selected := CategoryTree.Items.GetFirstNode;
|
CategoryTree.Selected := CategoryTree.Items.GetFirstNode;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TIDEOptionsDialog.Destroy;
|
|
||||||
begin
|
|
||||||
FEditors.Free;
|
|
||||||
inherited Destroy;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TIDEOptionsDialog.HelpButtonClick(Sender: TObject);
|
procedure TIDEOptionsDialog.HelpButtonClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
ShowContextHelpForIDE(Self);
|
ShowContextHelpForIDE(Self);
|
||||||
@ -153,32 +142,64 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TIDEOptionsDialog.ReadSettings(AOptions: TAbstractIDEOptions);
|
procedure TIDEOptionsDialog.ReadSettings(AOptions: TAbstractIDEOptions);
|
||||||
var
|
|
||||||
i: integer;
|
procedure Traverse(Node: TTreeNode);
|
||||||
|
begin
|
||||||
|
if Node <> nil then
|
||||||
|
begin
|
||||||
|
if Node.Data <> nil then
|
||||||
|
with TAbstractIDEOptionsEditor(Node.Data) do
|
||||||
|
if SupportedOptionsClass = AOptions.ClassType then
|
||||||
|
ReadSettings(AOptions);
|
||||||
|
Traverse(Node.GetFirstChild);
|
||||||
|
Traverse(Node.GetNextSibling);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
for i := 0 to FEditors.Count - 1 do
|
Traverse(CategoryTree.Items.GetFirstNode);
|
||||||
TAbstractIDEOptionsEditor(FEditors[i]).ReadSettings(AOptions);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TIDEOptionsDialog.WriteSettings(AOptions: TAbstractIDEOptions);
|
procedure TIDEOptionsDialog.WriteSettings(AOptions: TAbstractIDEOptions);
|
||||||
var
|
|
||||||
i: integer;
|
procedure Traverse(Node: TTreeNode);
|
||||||
|
begin
|
||||||
|
if Node <> nil then
|
||||||
|
begin
|
||||||
|
if Node.Data <> nil then
|
||||||
|
with TAbstractIDEOptionsEditor(Node.Data) do
|
||||||
|
if SupportedOptionsClass = AOptions.ClassType then
|
||||||
|
WriteSettings(AOptions);
|
||||||
|
Traverse(Node.GetFirstChild);
|
||||||
|
Traverse(Node.GetNextSibling);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
for i := 0 to FEditors.Count - 1 do
|
Traverse(CategoryTree.Items.GetFirstNode);
|
||||||
TAbstractIDEOptionsEditor(FEditors[i]).WriteSettings(AOptions);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TIDEOptionsDialog.CheckValues: boolean;
|
function TIDEOptionsDialog.CheckValues: boolean;
|
||||||
var
|
|
||||||
i: integer;
|
function Traverse(Node: TTreeNode): Boolean;
|
||||||
begin
|
|
||||||
Result := True;
|
|
||||||
for i := 0 to FEditors.Count - 1 do
|
|
||||||
begin
|
begin
|
||||||
Result := TAbstractIDEOptionsEditor(FEditors[i]).Check;
|
if Node <> nil then
|
||||||
if not Result then
|
begin
|
||||||
break;
|
if Node.Data <> nil then
|
||||||
|
Result := TAbstractIDEOptionsEditor(Node.Data).Check
|
||||||
|
else
|
||||||
|
Result := True;
|
||||||
|
|
||||||
|
Result := Result and
|
||||||
|
Traverse(Node.GetFirstChild) and
|
||||||
|
Traverse(Node.GetNextSibling);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
Result := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result := Traverse(CategoryTree.Items.GetFirstNode);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TIDEOptionsDialog.LoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
|
procedure TIDEOptionsDialog.LoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
|
||||||
@ -216,7 +237,6 @@ begin
|
|||||||
Instance.OnLoadIDEOptions := @LoadIDEOptions;
|
Instance.OnLoadIDEOptions := @LoadIDEOptions;
|
||||||
Instance.OnSaveIDEOptions := @SaveIDEOptions;
|
Instance.OnSaveIDEOptions := @SaveIDEOptions;
|
||||||
Instance.Setup;
|
Instance.Setup;
|
||||||
FEditors.Add(Instance);
|
|
||||||
|
|
||||||
ItemNode := CategoryTree.Items.AddChild(GroupNode, Instance.GetTitle);
|
ItemNode := CategoryTree.Items.AddChild(GroupNode, Instance.GetTitle);
|
||||||
ItemNode.Data := Instance;
|
ItemNode.Data := Instance;
|
||||||
@ -227,6 +247,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TIDEOptionsDialog.OpenEditor(AEditor: TAbstractIDEOptionsEditorClass);
|
procedure TIDEOptionsDialog.OpenEditor(AEditor: TAbstractIDEOptionsEditorClass);
|
||||||
|
|
||||||
function Traverse(ANode: TTreeNode): TTreeNode;
|
function Traverse(ANode: TTreeNode): TTreeNode;
|
||||||
begin
|
begin
|
||||||
Result := nil;
|
Result := nil;
|
||||||
@ -240,6 +261,7 @@ procedure TIDEOptionsDialog.OpenEditor(AEditor: TAbstractIDEOptionsEditorClass);
|
|||||||
Result := Traverse(ANode.GetNextSibling);
|
Result := Traverse(ANode.GetNextSibling);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
Node: TTreeNode;
|
Node: TTreeNode;
|
||||||
begin
|
begin
|
||||||
|
Loading…
Reference in New Issue
Block a user