IDE: fpdoc package name: allow only valid characters

git-svn-id: trunk@34828 -
This commit is contained in:
mattias 2012-01-20 22:52:57 +00:00
parent 1a5a4fbd4c
commit e588d500e4
4 changed files with 44 additions and 15 deletions

View File

@ -363,6 +363,7 @@ function ToOSLineEnding(const s: String): String;
function ReplaceLineEndings(const s, NewLineEnds: string): string;
function AppendLineEnding(const s: string): string; // append if not empty and there is not already a line ending
function XMLUnescape(s: string): string; // convert escape characters
function MakeValidFPDocPackageName(const s: string): string;
implementation
@ -523,6 +524,17 @@ begin
Result:=s;
end;
function MakeValidFPDocPackageName(const s: string): string;
var
i: Integer;
begin
Result:=s;
for i:=length(Result) downto 1 do
if not (Result[i] in ['a'..'z','A'..'Z','0'..'9','_',' ',',','+','-','/','(',')'])
then
system.Delete(Result,i,1);
end;
function CompareLazFPDocFilenames(Data1, Data2: Pointer): integer;
begin
Result:=CompareFilenames(TLazFPDocFile(Data1).Filename,

View File

@ -6,7 +6,8 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons, Project, IDEOptionsIntf, LazarusIDEStrConsts, IDEProcs;
StdCtrls, Buttons, Project, IDEOptionsIntf, LazarusIDEStrConsts, IDEProcs,
FPDocEditWindow, CodeHelp;
type
@ -30,6 +31,7 @@ type
procedure PathsListBoxSelectionChange(Sender: TObject; User: boolean);
procedure PathEditChange(Sender: TObject);
private
function GetFPDocPkgNameEditValue: string;
public
function GetTitle: string; override;
procedure Setup(ADialog: TAbstractOptionsEditorDialog); override;
@ -91,8 +93,10 @@ end;
procedure TProjectFPDocOptionsFrame.FPDocPackageNameEditExit(Sender: TObject);
begin
if FPDocPackageNameEdit.Text='' then
FPDocPackageNameEdit.Text:=lisDefaultPlaceholder;
if GetFPDocPkgNameEditValue='' then
FPDocPackageNameEdit.Text:=lisDefaultPlaceholder
else
FPDocPackageNameEdit.Text:=GetFPDocPkgNameEditValue;
end;
procedure TProjectFPDocOptionsFrame.PathsListBoxSelectionChange(Sender: TObject; User: boolean);
@ -105,6 +109,14 @@ 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
@ -120,10 +132,7 @@ procedure TProjectFPDocOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions)
begin
with AOptions as TProject do begin
FPDocPaths := StringListToText(PathsListBox.Items, ';', True);
if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then
FPDocPackageName:=''
else
FPDocPackageName:=FPDocPackageNameEdit.Text;
FPDocPackageName:=GetFPDocPkgNameEditValue;
end;
end;

View File

@ -657,7 +657,7 @@
</Target>
<SearchPaths>
<IncludeFiles Value="include"/>
<OtherUnitFiles Value="frames;../converter;../debugger;../debugger/frames;../packager;../designer;../packager/frames"/>
<OtherUnitFiles Value="frames;../converter;../debugger;../debugger/frames;../packager;../designer;../packager/frames;frames;../packager/frames"/>
<UnitOutputDirectory Value="$(LazarusDir)/units/$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
<Parsing>

View File

@ -7,7 +7,7 @@ interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, ExtCtrls, StdCtrls, Dialogs,
IDEOptionsIntf, MacroIntf,
LazarusIDEStrConsts, PackageDefs, PathEditorDlg, IDEProcs;
LazarusIDEStrConsts, PackageDefs, PathEditorDlg, IDEProcs, CodeHelp;
type
@ -31,6 +31,7 @@ type
procedure PathEditBtnClick(Sender: TObject);
procedure PathEditBtnExecuted(Sender: TObject);
function ShowMsgPackageTypeMustBeDesign: boolean;
function GetFPDocPkgNameEditValue: string;
public
function Check: Boolean; override;
function GetTitle: string; override;
@ -72,8 +73,10 @@ end;
procedure TPackageIntegrationOptionsFrame.FPDocPackageNameEditExit(
Sender: TObject);
begin
if FPDocPackageNameEdit.Text='' then
FPDocPackageNameEdit.Text:=lisDefaultPlaceholder;
if GetFPDocPkgNameEditValue='' then
FPDocPackageNameEdit.Text:=lisDefaultPlaceholder
else
FPDocPackageNameEdit.Text:=GetFPDocPkgNameEditValue;
end;
procedure TPackageIntegrationOptionsFrame.PathEditBtnClick(Sender: TObject);
@ -212,6 +215,14 @@ begin
Result := False;
end;
function TPackageIntegrationOptionsFrame.GetFPDocPkgNameEditValue: string;
begin
if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then
Result:=''
else
Result:=MakeValidFPDocPackageName(FPDocPackageNameEdit.Text);
end;
function TPackageIntegrationOptionsFrame.Check: Boolean;
var
NewPkgType: TLazPackageType;
@ -243,10 +254,7 @@ begin
LazPackage.AutoUpdate := pupAsNeeded;
end;
LazPackage.FPDocPaths := FPDocSearchPathsEdit.Text;
if FPDocPackageNameEdit.Text=lisDefaultPlaceholder then
LazPackage.FPDocPackageName := ''
else
LazPackage.FPDocPackageName := FPDocPackageNameEdit.Text;
LazPackage.FPDocPackageName := GetFPDocPkgNameEditValue;
end;
class function TPackageIntegrationOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;