mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-29 12:23:54 +02:00
150 lines
4.4 KiB
ObjectPascal
150 lines
4.4 KiB
ObjectPascal
unit project_lazdoc_options;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
|
|
StdCtrls, Buttons, Project, IDEOptionsIntf, LazarusIDEStrConsts, IDEProcs,
|
|
FPDocEditWindow, CodeHelp;
|
|
|
|
type
|
|
|
|
{ TProjectFPDocOptionsFrame }
|
|
|
|
TProjectFPDocOptionsFrame = class(TAbstractIDEOptionsEditor)
|
|
AddPathButton: TBitBtn;
|
|
BrowseButton: TButton;
|
|
DeletePathButton: TBitBtn;
|
|
FPDocPackageNameEdit: TEdit;
|
|
FPDocPackageNameLabel: TLabel;
|
|
PathsListBox: TListBox;
|
|
PathEdit: TEdit;
|
|
SearchPathsGroupBox: TGroupBox;
|
|
SelectDirectoryDialog: TSelectDirectoryDialog;
|
|
procedure AddPathButtonClick(Sender: TObject);
|
|
procedure BrowseButtonClick(Sender: TObject);
|
|
procedure DeletePathButtonClick(Sender: TObject);
|
|
procedure FPDocPackageNameEditEnter(Sender: TObject);
|
|
procedure FPDocPackageNameEditExit(Sender: TObject);
|
|
procedure PathsListBoxSelectionChange(Sender: TObject; User: boolean);
|
|
procedure PathEditChange(Sender: TObject);
|
|
private
|
|
function GetFPDocPkgNameEditValue: string;
|
|
public
|
|
function GetTitle: string; override;
|
|
procedure Setup(ADialog: TAbstractOptionsEditorDialog); override;
|
|
procedure ReadSettings(AOptions: TAbstractIDEOptions); override;
|
|
procedure WriteSettings(AOptions: TAbstractIDEOptions); override;
|
|
class function SupportedOptionsClass: TAbstractIDEOptionsClass; override;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
{ TProjectFPDocOptionsFrame }
|
|
|
|
function TProjectFPDocOptionsFrame.GetTitle: string;
|
|
begin
|
|
Result := lisFPDocEditor;
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.Setup(ADialog: TAbstractOptionsEditorDialog);
|
|
begin
|
|
FPDocPackageNameEdit.Hint:=lisFPDocPackageNameDefaultIsProjectFileName;
|
|
FPDocPackageNameLabel.Caption:=lisFPDocPackageName;
|
|
SearchPathsGroupBox.Caption:=lisSearchPaths2;
|
|
AddPathButton.Caption := lisCodeHelpAddPathButton;
|
|
DeletePathButton.Caption := lisCodeHelpDeletePathButton;
|
|
DeletePathButton.LoadGlyphFromLazarusResource('laz_delete');
|
|
AddPathButton.LoadGlyphFromLazarusResource('laz_add');
|
|
|
|
PathEdit.Clear;
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.BrowseButtonClick(Sender: TObject);
|
|
begin
|
|
if SelectDirectoryDialog.Execute then
|
|
PathEdit.Text := SelectDirectoryDialog.FileName;
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.AddPathButtonClick(Sender: TObject);
|
|
begin
|
|
if PathEdit.Text <> '' then begin
|
|
PathsListBox.Items.Add(PathEdit.Text);
|
|
PathEdit.Text := '';
|
|
end;
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.DeletePathButtonClick(Sender: TObject);
|
|
begin
|
|
if (PathsListBox.ItemIndex >= 0) then begin
|
|
PathsListBox.Items.Delete(PathsListBox.ItemIndex);
|
|
PathsListBoxSelectionChange(PathsListBox, True);
|
|
end;
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.FPDocPackageNameEditEnter(Sender: TObject);
|
|
begin
|
|
if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then
|
|
FPDocPackageNameEdit.Text:='';
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.FPDocPackageNameEditExit(Sender: TObject);
|
|
begin
|
|
if GetFPDocPkgNameEditValue='' then
|
|
FPDocPackageNameEdit.Text:=lisDefaultPlaceholder
|
|
else
|
|
FPDocPackageNameEdit.Text:=GetFPDocPkgNameEditValue;
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.PathsListBoxSelectionChange(Sender: TObject; User: boolean);
|
|
begin
|
|
DeletePathButton.Enabled:=(Sender as TListBox).ItemIndex <> -1;
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.PathEditChange(Sender: TObject);
|
|
begin
|
|
AddPathButton.Enabled:=(Sender as TEdit).Text <> '';
|
|
end;
|
|
|
|
function TProjectFPDocOptionsFrame.GetFPDocPkgNameEditValue: string;
|
|
begin
|
|
if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then
|
|
Result:=''
|
|
else
|
|
Result:=MakeValidFPDocPackageName(FPDocPackageNameEdit.Text);
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
|
begin
|
|
with AOptions as TProject do begin
|
|
SplitString(FPDocPaths, ';', PathsListBox.Items, True);
|
|
if FPDocPackageName='' then
|
|
FPDocPackageNameEdit.Text:=lisDefaultPlaceholder
|
|
else
|
|
FPDocPackageNameEdit.Text:=FPDocPackageName;
|
|
end;
|
|
end;
|
|
|
|
procedure TProjectFPDocOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
|
begin
|
|
with AOptions as TProject do begin
|
|
FPDocPaths := StringListToText(PathsListBox.Items, ';', True);
|
|
FPDocPackageName:=GetFPDocPkgNameEditValue;
|
|
end;
|
|
end;
|
|
|
|
class function TProjectFPDocOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
|
begin
|
|
Result := TProject;
|
|
end;
|
|
|
|
initialization
|
|
RegisterIDEOptionsEditor(GroupProject, TProjectFPDocOptionsFrame, ProjectOptionsLazDoc);
|
|
|
|
end.
|
|
|