made package files more relative

git-svn-id: trunk@4542 -
This commit is contained in:
mattias 2003-08-28 10:43:34 +00:00
parent 40044dcf40
commit 3a6dd972da
5 changed files with 250 additions and 45 deletions

View File

@ -726,6 +726,7 @@ resourcestring
dlgEdAdd = 'Add...'; dlgEdAdd = 'Add...';
dlgEdEdit = 'Edit...'; dlgEdEdit = 'Edit...';
dlgEdDelete = 'Delete'; dlgEdDelete = 'Delete';
lisA2PSwitchPaths = 'Switch Paths';
lisA2PAddFilesToPackage = 'Add files to package'; lisA2PAddFilesToPackage = 'Add files to package';
lisA2PAddToPackage = 'Add to package'; lisA2PAddToPackage = 'Add to package';
dlgIndentCodeTo = 'Indent code to'; dlgIndentCodeTo = 'Indent code to';
@ -1954,8 +1955,8 @@ resourcestring
+'projects and packages.'; +'projects and packages.';
lisA2PTheMaximumVersionIsLowerThanTheMinimimVersion = 'The Maximum Version ' lisA2PTheMaximumVersionIsLowerThanTheMinimimVersion = 'The Maximum Version '
+'is lower than the Minimim Version.'; +'is lower than the Minimim Version.';
lisA2PThePackageNameIsInvalidPlaseChooseAnExisting = 'The package name %s%s%' lisA2PThePackageNameIsInvalidPleaseChooseAnExisting = 'The package name %s%s%'
+'s is invalid.%sPlase choose an existing package.'; +'s is invalid.%sPlease choose an existing package.';
lisA2PThePackageHasAlreadyADependencyForThe = 'The package has already a ' lisA2PThePackageHasAlreadyADependencyForThe = 'The package has already a '
+'dependency for the package %s%s%s.'; +'dependency for the package %s%s%s.';
lisA2PNoPackageFoundForDependencyPleaseChooseAnExisting = 'No package found ' lisA2PNoPackageFoundForDependencyPleaseChooseAnExisting = 'No package found '

View File

@ -2,7 +2,7 @@
<CONFIG> <CONFIG>
<Package> <Package>
<Name Value="GTK2Interface"/> <Name Value="GTK2Interface"/>
<Files Count="3"> <Files Count="20">
<Item1> <Item1>
<Filename Value="interfaces.pas"/> <Filename Value="interfaces.pas"/>
<UnitName Value="Interfaces"/> <UnitName Value="Interfaces"/>
@ -15,6 +15,74 @@
<Filename Value="../gtk/gtkglobals.pp"/> <Filename Value="../gtk/gtkglobals.pp"/>
<UnitName Value="GTKGlobals"/> <UnitName Value="GTKGlobals"/>
</Item3> </Item3>
<Item4>
<Filename Value="../gtk/gtkmsgqueue.pp"/>
<UnitName Value="GtkMsgQueue"/>
</Item4>
<Item5>
<Filename Value="../gtk/gtkcallback.inc"/>
<Type Value="Include"/>
</Item5>
<Item6>
<Filename Value="../gtk/gtkcomboboxcallback.inc"/>
<Type Value="Include"/>
</Item6>
<Item7>
<Filename Value="../gtk/gtkdef.pp"/>
<UnitName Value="GTKDef"/>
</Item7>
<Item8>
<Filename Value="../gtk/gtkdragcallback.inc"/>
<Type Value="Include"/>
</Item8>
<Item9>
<Filename Value="../gtk/gtkimages.lrs"/>
<Type Value="LRS"/>
</Item9>
<Item10>
<Filename Value="../gtk/gtkint.pp"/>
<UnitName Value="GtkInt"/>
</Item10>
<Item11>
<Filename Value="../gtk/gtklistsl.inc"/>
<Type Value="Include"/>
</Item11>
<Item12>
<Filename Value="../gtk/gtklistslh.inc"/>
<Type Value="Include"/>
</Item12>
<Item13>
<Filename Value="../gtk/gtklistviewcallback.inc"/>
<Type Value="Include"/>
</Item13>
<Item14>
<Filename Value="../gtk/gtkobject.inc"/>
<Type Value="Include"/>
</Item14>
<Item15>
<Filename Value="../gtk/gtkproc.inc"/>
<Type Value="Include"/>
</Item15>
<Item16>
<Filename Value="../gtk/gtkproc.pp"/>
<UnitName Value="GTKProc"/>
</Item16>
<Item17>
<Filename Value="../gtk/gtkwinapi.inc"/>
<Type Value="Include"/>
</Item17>
<Item18>
<Filename Value="../gtk/gtkwinapih.inc"/>
<Type Value="Include"/>
</Item18>
<Item19>
<Filename Value="../gtk/gtkwinapiwindow.pp"/>
<UnitName Value="GTKWinapiWindow"/>
</Item19>
<Item20>
<Filename Value="../gtk/keymap.pp"/>
<UnitName Value="KeyMap"/>
</Item20>
</Files> </Files>
<Type Value="RunAndDesignTime"/> <Type Value="RunAndDesignTime"/>
<RequiredPkgs Count="2"> <RequiredPkgs Count="2">
@ -36,7 +104,7 @@
</Package> </Package>
<CompilerOptions> <CompilerOptions>
<SearchPaths> <SearchPaths>
<OtherUnitFiles Value="./;../gtk/;../../units/"/> <OtherUnitFiles Value="../gtk/;../../units/"/>
<UnitOutputDirectory Value="../../units/gtk2"/> <UnitOutputDirectory Value="../../units/gtk2"/>
<LCLWidgetType Value="gtk"/> <LCLWidgetType Value="gtk"/>
</SearchPaths> </SearchPaths>

View File

@ -137,10 +137,12 @@ type
procedure AddFileBrowseButtonClick(Sender: TObject); procedure AddFileBrowseButtonClick(Sender: TObject);
procedure AddFileButtonClick(Sender: TObject); procedure AddFileButtonClick(Sender: TObject);
procedure AddFilePageResize(Sender: TObject); procedure AddFilePageResize(Sender: TObject);
procedure AddFileShortenButtonClick(Sender: TObject);
procedure AddFilesPageResize(Sender: TObject); procedure AddFilesPageResize(Sender: TObject);
procedure AddToPackageDlgClose(Sender: TObject; var Action: TCloseAction); procedure AddToPackageDlgClose(Sender: TObject; var Action: TCloseAction);
procedure AddUnitButtonClick(Sender: TObject); procedure AddUnitButtonClick(Sender: TObject);
procedure AddUnitFileBrowseButtonClick(Sender: TObject); procedure AddUnitFileBrowseButtonClick(Sender: TObject);
procedure AddUnitFileShortenButtonClick(Sender: TObject);
procedure AddUnitIsVirtualCheckBoxClick(Sender: TObject); procedure AddUnitIsVirtualCheckBoxClick(Sender: TObject);
procedure AddUnitPageResize(Sender: TObject); procedure AddUnitPageResize(Sender: TObject);
procedure AddUnitUpdateButtonClick(Sender: TObject); procedure AddUnitUpdateButtonClick(Sender: TObject);
@ -151,9 +153,11 @@ type
procedure CancelNewComponentButtonClick(Sender: TObject); procedure CancelNewComponentButtonClick(Sender: TObject);
procedure ClassNameEditChange(Sender: TObject); procedure ClassNameEditChange(Sender: TObject);
procedure ComponentUnitFileBrowseButtonClick(Sender: TObject); procedure ComponentUnitFileBrowseButtonClick(Sender: TObject);
procedure ComponentUnitFileShortenButtonClick(Sender: TObject);
procedure FilesAddButtonClick(Sender: TObject); procedure FilesAddButtonClick(Sender: TObject);
procedure FilesBrowseButtonClick(Sender: TObject); procedure FilesBrowseButtonClick(Sender: TObject);
procedure FilesDeleteButtonClick(Sender: TObject); procedure FilesDeleteButtonClick(Sender: TObject);
procedure FilesShortenButtonClick(Sender: TObject);
procedure NewComponentButtonClick(Sender: TObject); procedure NewComponentButtonClick(Sender: TObject);
procedure NewComponentPageResize(Sender: TObject); procedure NewComponentPageResize(Sender: TObject);
procedure NewDependButtonClick(Sender: TObject); procedure NewDependButtonClick(Sender: TObject);
@ -180,6 +184,7 @@ type
procedure UpdateAddUnitInfo; procedure UpdateAddUnitInfo;
procedure UpdateAddFileInfo; procedure UpdateAddFileInfo;
function FileNameToPkgFileType(const AFilename: string): TPkgFileType; function FileNameToPkgFileType(const AFilename: string): TPkgFileType;
function SwitchRelativeAbsoluteFilename(const Filename: string): string;
public public
Params: TAddToPkgResult; Params: TAddToPkgResult;
constructor Create(TheOwner: TComponent); override; constructor Create(TheOwner: TComponent); override;
@ -369,7 +374,7 @@ begin
// check packagename // check packagename
if (NewPkgName='') or (not IsValidIdent(NewPkgName)) then begin if (NewPkgName='') or (not IsValidIdent(NewPkgName)) then begin
MessageDlg(lisProjAddInvalidPackagename, MessageDlg(lisProjAddInvalidPackagename,
Format(lisA2PThePackageNameIsInvalidPlaseChooseAnExisting, ['"', Format(lisA2PThePackageNameIsInvalidPleaseChooseAnExisting, ['"',
NewPkgName, '"', #13]), NewPkgName, '"', #13]),
mtError,[mbCancel],0); mtError,[mbCancel],0);
exit; exit;
@ -426,7 +431,8 @@ begin
Params.AutoAddLFMFile:=false; Params.AutoAddLFMFile:=false;
Params.AutoAddLRSFile:=false; Params.AutoAddLRSFile:=false;
end; end;
LazPackage.LongenFilename(Params.UnitFilename);
// check filename // check filename
if not CheckAddingUnitFilename(LazPackage,Params.AddType, if not CheckAddingUnitFilename(LazPackage,Params.AddType,
OnGetIDEFileInfo,Params.UnitFilename) then exit; OnGetIDEFileInfo,Params.UnitFilename) then exit;
@ -454,6 +460,7 @@ procedure TAddToPackageDlg.AddFilePageResize(Sender: TObject);
var var
x: Integer; x: Integer;
y: Integer; y: Integer;
w: Integer;
begin begin
x:=5; x:=5;
y:=5; y:=5;
@ -461,12 +468,16 @@ begin
SetBounds(x,y+2,100,Height); SetBounds(x,y+2,100,Height);
inc(x,AddFilenameLabel.Width+5); inc(x,AddFilenameLabel.Width+5);
w:=AddFilenameEdit.Height;
with AddFilenameEdit do with AddFilenameEdit do
SetBounds(x,y,Parent.ClientWidth-x-30,Height); SetBounds(x,y,Parent.ClientWidth-x-2-w-2-w-5,Height);
inc(x,AddFilenameEdit.Width+2); inc(x,AddFilenameEdit.Width+2);
with AddFileBrowseButton do with AddFileBrowseButton do
SetBounds(x,y,AddFilenameEdit.Height,AddFilenameEdit.Height); SetBounds(x,y,w,w);
inc(x,w+2);
with AddFileShortenButton do
SetBounds(x,y,w,w);
x:=5; x:=5;
y:=AddFilenameEdit.Top+AddFilenameEdit.Height+5; y:=AddFilenameEdit.Top+AddFilenameEdit.Height+5;
@ -483,6 +494,13 @@ begin
SetBounds(x,y,80,Height); SetBounds(x,y,80,Height);
end; end;
procedure TAddToPackageDlg.AddFileShortenButtonClick(Sender: TObject);
begin
if lisA2PchooseAnExistingFile=AddFilenameEdit.Text then exit;
AddFilenameEdit.Text:=
SwitchRelativeAbsoluteFilename(AddFilenameEdit.Text);
end;
procedure TAddToPackageDlg.AddFilesPageResize(Sender: TObject); procedure TAddToPackageDlg.AddFilesPageResize(Sender: TObject);
var var
x: Integer; x: Integer;
@ -493,21 +511,27 @@ begin
with FilesListView do with FilesListView do
SetBounds(0,0,Parent.ClientWidth,Parent.ClientHeight-45); SetBounds(0,0,Parent.ClientWidth,Parent.ClientHeight-45);
x:=10; x:=5;
y:=FilesListView.Height+10; y:=FilesListView.Height+10;
w:=80; w:=100;
h:=25; h:=25;
with FilesBrowseButton do with FilesBrowseButton do
SetBounds(x,y,w,h); SetBounds(x,y,w,h);
inc(x,w+3);
inc(x,w+10);
with FilesShortenButton do
SetBounds(x,y,w,h);
inc(x,w+3);
with FilesDeleteButton do with FilesDeleteButton do
SetBounds(x,y,w,h); SetBounds(x,y,w,h);
inc(x,w+3);
inc(x,w+10); w:=FilesAddButton.Parent.ClientWidth-x-5;
if w<20 then w:=20;
with FilesAddButton do with FilesAddButton do
SetBounds(x,y,Parent.ClientWidth-x-10,h); SetBounds(x,y,w,h);
end; end;
procedure TAddToPackageDlg.AddFileBrowseButtonClick(Sender: TObject); procedure TAddToPackageDlg.AddFileBrowseButtonClick(Sender: TObject);
@ -525,7 +549,7 @@ begin
if OpenDialog.Execute then begin if OpenDialog.Execute then begin
AFilename:=CleanAndExpandFilename(OpenDialog.Filename); AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
if FileExists(AFilename) then begin if FileExists(AFilename) then begin
LazPackage.ShortenFilename(AFilename); LazPackage.ShortenFilename(AFilename,true);
AddFilenameEdit.Text:=AFilename; AddFilenameEdit.Text:=AFilename;
UpdateAddFileInfo; UpdateAddFileInfo;
end; end;
@ -594,7 +618,7 @@ begin
if OpenDialog.Execute then begin if OpenDialog.Execute then begin
AFilename:=CleanAndExpandFilename(OpenDialog.Filename); AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
if FileExists(AFilename) then begin if FileExists(AFilename) then begin
LazPackage.ShortenFilename(AFilename); LazPackage.ShortenFilename(AFilename,true);
AddUnitFilenameEdit.Text:=AFilename; AddUnitFilenameEdit.Text:=AFilename;
UpdateAddUnitInfo; UpdateAddUnitInfo;
end; end;
@ -605,12 +629,20 @@ begin
end; end;
end; end;
procedure TAddToPackageDlg.AddUnitFileShortenButtonClick(Sender: TObject);
begin
if lisA2PchooseAnExistingFile=AddUnitFilenameEdit.Text then exit;
AddUnitFilenameEdit.Text:=
SwitchRelativeAbsoluteFilename(AddUnitFilenameEdit.Text);
end;
procedure TAddToPackageDlg.AddUnitIsVirtualCheckBoxClick(Sender: TObject); procedure TAddToPackageDlg.AddUnitIsVirtualCheckBoxClick(Sender: TObject);
var var
VirtualFile: Boolean; VirtualFile: Boolean;
begin begin
VirtualFile:=AddUnitIsVirtualCheckBox.Checked; VirtualFile:=AddUnitIsVirtualCheckBox.Checked;
AddUnitFileBrowseButton.Enabled:=not VirtualFile; AddUnitFileBrowseButton.Enabled:=not VirtualFile;
AddUnitFileShortenButton.Enabled:=not VirtualFile;
AddUnitHasRegisterCheckBox.Enabled:=not VirtualFile; AddUnitHasRegisterCheckBox.Enabled:=not VirtualFile;
AddUnitUpdateButton.Enabled:=not VirtualFile; AddUnitUpdateButton.Enabled:=not VirtualFile;
AddSecondaryFilesCheckBox.Enabled:=not VirtualFile; AddSecondaryFilesCheckBox.Enabled:=not VirtualFile;
@ -620,6 +652,7 @@ procedure TAddToPackageDlg.AddUnitPageResize(Sender: TObject);
var var
x: Integer; x: Integer;
y: Integer; y: Integer;
w: Integer;
begin begin
x:=5; x:=5;
y:=5; y:=5;
@ -627,12 +660,17 @@ begin
SetBounds(x,y+2,100,Height); SetBounds(x,y+2,100,Height);
inc(x,AddUnitFilenameLabel.Width+5); inc(x,AddUnitFilenameLabel.Width+5);
w:=AddUnitFilenameEdit.Height;
with AddUnitFilenameEdit do with AddUnitFilenameEdit do
SetBounds(x,y,Parent.ClientWidth-x-30,Height); SetBounds(x,y,Parent.ClientWidth-x-2*w-2-2-5,Height);
inc(x,AddUnitFilenameEdit.Width+2); inc(x,AddUnitFilenameEdit.Width+2);
with AddUnitFileBrowseButton do with AddUnitFileBrowseButton do
SetBounds(x,y,AddUnitFilenameEdit.Height,AddUnitFilenameEdit.Height); SetBounds(x,y,w,w);
inc(x,w+2);
with AddUnitFileShortenButton do
SetBounds(x,y,w,w);
x:=5; x:=5;
y:=AddUnitFilenameEdit.Top+AddUnitFilenameEdit.Height+5; y:=AddUnitFilenameEdit.Top+AddUnitFilenameEdit.Height+5;
@ -720,7 +758,7 @@ begin
if OpenDialog.Execute then begin if OpenDialog.Execute then begin
AFilename:=CleanAndExpandFilename(OpenDialog.Filename); AFilename:=CleanAndExpandFilename(OpenDialog.Filename);
if FilenameIsPascalUnit(AFilename) then begin if FilenameIsPascalUnit(AFilename) then begin
LazPackage.ShortenFilename(AFilename); LazPackage.ShortenFilename(AFilename,true);
ComponentUnitFileEdit.Text:=AFilename; ComponentUnitFileEdit.Text:=AFilename;
end else begin end else begin
MessageDlg(lisA2PInvalidFile, MessageDlg(lisA2PInvalidFile,
@ -734,6 +772,13 @@ begin
end; end;
end; end;
procedure TAddToPackageDlg.ComponentUnitFileShortenButtonClick(Sender: TObject);
begin
if ''=ComponentUnitFileEdit.Text then exit;
ComponentUnitFileEdit.Text:=
SwitchRelativeAbsoluteFilename(ComponentUnitFileEdit.Text);
end;
procedure TAddToPackageDlg.FilesAddButtonClick(Sender: TObject); procedure TAddToPackageDlg.FilesAddButtonClick(Sender: TObject);
var var
i: Integer; i: Integer;
@ -830,7 +875,7 @@ begin
for i:=0 to OpenDialog.Files.COunt-1 do begin for i:=0 to OpenDialog.Files.COunt-1 do begin
AFilename:=CleanAndExpandFilename(OpenDialog.Files[i]); AFilename:=CleanAndExpandFilename(OpenDialog.Files[i]);
if FileExists(AFilename) then begin if FileExists(AFilename) then begin
LazPackage.ShortenFilename(AFilename); LazPackage.ShortenFilename(AFilename,true);
NewListItem:=FilesListView.Items.Add; NewListItem:=FilesListView.Items.Add;
NewListItem.Caption:=AFilename; NewListItem.Caption:=AFilename;
NewPgkFileType:=FileNameToPkgFileType(AFilename); NewPgkFileType:=FileNameToPkgFileType(AFilename);
@ -853,6 +898,26 @@ begin
FilesListView.Items.Delete(i); FilesListView.Items.Delete(i);
end; end;
procedure TAddToPackageDlg.FilesShortenButtonClick(Sender: TObject);
var
SwitchToAbsolute: Boolean;
i: Integer;
Filename: String;
begin
if FilesListView.Items.Count=0 then exit;
if (not LazPackage.HasDirectory)
or (not FilenameIsAbsolute(LazPackage.Directory)) then exit;
SwitchToAbsolute:=not FilenameIsAbsolute(FilesListView.Items[0].Caption);
for i:=0 to FilesListView.Items.Count-1 do begin
Filename:=FilesListView.Items[i].Caption;
if SwitchToAbsolute then
Filename:=CreateAbsolutePath(Filename,LazPackage.Directory)
else
Filename:=CreateRelativePath(Filename,LazPackage.Directory);
FilesListView.Items[i].Caption:=Filename;
end;
end;
procedure TAddToPackageDlg.NewComponentButtonClick(Sender: TObject); procedure TAddToPackageDlg.NewComponentButtonClick(Sender: TObject);
var var
PkgFile: TPkgFile; PkgFile: TPkgFile;
@ -974,6 +1039,7 @@ procedure TAddToPackageDlg.NewComponentPageResize(Sender: TObject);
var var
x: Integer; x: Integer;
y: Integer; y: Integer;
w: Integer;
begin begin
x:=5; x:=5;
y:=5; y:=5;
@ -1013,12 +1079,16 @@ begin
SetBounds(x,y+2,100,Height); SetBounds(x,y+2,100,Height);
inc(x,ComponentUnitFileLabel.Width+5); inc(x,ComponentUnitFileLabel.Width+5);
w:=ComponentUnitFileEdit.Height;
with ComponentUnitFileEdit do with ComponentUnitFileEdit do
SetBounds(x,y,Parent.ClientWidth-x-Height-5,Height); SetBounds(x,y,Parent.ClientWidth-x-2-w-2-w-5,Height);
inc(x,ComponentUnitFileEdit.Width+2); inc(x,ComponentUnitFileEdit.Width+2);
with ComponentUnitFileBrowseButton do with ComponentUnitFileBrowseButton do
SetBounds(x,y,ComponentUnitFileEdit.Height,ComponentUnitFileEdit.Height); SetBounds(x,y,w,w);
inc(x,w+2);
with ComponentUnitFileShortenButton do
SetBounds(x,y,w,w);
x:=5; x:=5;
inc(y,ComponentUnitFileEdit.Height+5); inc(y,ComponentUnitFileEdit.Height+5);
@ -1189,6 +1259,14 @@ begin
OnClick:=@AddUnitFileBrowseButtonClick; OnClick:=@AddUnitFileBrowseButtonClick;
end; end;
AddUnitFileShortenButton:=TButton.Create(Self);
with AddUnitFileShortenButton do begin
Name:='AddUnitFileShortenButton';
Parent:=AddUnitPage;
Caption:='<>';
OnClick:=@AddUnitFileShortenButtonClick;
end;
AddUnitSrcNameLabel:=TLabel.Create(Self); AddUnitSrcNameLabel:=TLabel.Create(Self);
with AddUnitSrcNameLabel do begin with AddUnitSrcNameLabel do begin
Name:='AddUnitSrcNameLabel'; Name:='AddUnitSrcNameLabel';
@ -1328,6 +1406,14 @@ begin
OnClick:=@ComponentUnitFileBrowseButtonClick; OnClick:=@ComponentUnitFileBrowseButtonClick;
end; end;
ComponentUnitFileShortenButton:=TButton.Create(Self);
with ComponentUnitFileShortenButton do begin
Name:='ComponentUnitFileShortenButton';
Parent:=NewComponentPage;
Caption:='<>';
OnClick:=@ComponentUnitFileShortenButtonClick;
end;
ComponentUnitNameLabel:=TLabel.Create(Self); ComponentUnitNameLabel:=TLabel.Create(Self);
with ComponentUnitNameLabel do begin with ComponentUnitNameLabel do begin
Name:='ComponentUnitNameLabel'; Name:='ComponentUnitNameLabel';
@ -1446,6 +1532,14 @@ begin
OnClick:=@AddFileBrowseButtonClick; OnClick:=@AddFileBrowseButtonClick;
end; end;
AddFileShortenButton:=TButton.Create(Self);
with AddFileShortenButton do begin
Name:='AddFileShortenButton';
Parent:=AddFilePage;
Caption:='<>';
OnClick:=@AddFileShortenButtonClick;
end;
AddFileTypeRadioGroup:=TRadioGroup.Create(Self); AddFileTypeRadioGroup:=TRadioGroup.Create(Self);
with AddFileTypeRadioGroup do begin with AddFileTypeRadioGroup do begin
Name:='AddFileTypeRadioGroup'; Name:='AddFileTypeRadioGroup';
@ -1503,6 +1597,14 @@ begin
OnClick:=@FilesBrowseButtonClick; OnClick:=@FilesBrowseButtonClick;
end; end;
FilesShortenButton:=TButton.Create(Self);
with FilesShortenButton do begin
Name:='FilesShortenButton';
Parent:=AddFilesPage;
Caption:=lisA2PSwitchPaths;
OnClick:=@FilesShortenButtonClick;
end;
FilesDeleteButton:=TButton.Create(Self); FilesDeleteButton:=TButton.Create(Self);
with FilesDeleteButton do begin with FilesDeleteButton do begin
Name:='FilesDeleteButton'; Name:='FilesDeleteButton';
@ -1640,6 +1742,18 @@ begin
Result:=pftBinary; Result:=pftBinary;
end; end;
function TAddToPackageDlg.SwitchRelativeAbsoluteFilename(const Filename: string
): string;
begin
Result:=Filename;
if (not LazPackage.HasDirectory)
or (not FilenameIsAbsolute(LazPackage.Directory)) then exit;
if FilenameIsAbsolute(Filename) then
Result:=TrimFilename(CreateRelativePath(Filename,LazPackage.Directory))
else
Result:=TrimFilename(CreateAbsolutePath(Filename,LazPackage.Directory));
end;
constructor TAddToPackageDlg.Create(TheOwner: TComponent); constructor TAddToPackageDlg.Create(TheOwner: TComponent);
begin begin
inherited Create(TheOwner); inherited Create(TheOwner);

View File

@ -159,12 +159,13 @@ type
procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string); procedure SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string);
procedure ConsistencyCheck; procedure ConsistencyCheck;
function IsVirtual: boolean; function IsVirtual: boolean;
function GetShortFilename(RelativePaths: boolean): string; function GetShortFilename(UseUp: boolean): string;
function ComponentCount: integer; function ComponentCount: integer;
procedure AddPkgComponent(APkgComponent: TPkgComponent); procedure AddPkgComponent(APkgComponent: TPkgComponent);
procedure RemovePkgComponent(APkgComponent: TPkgComponent); procedure RemovePkgComponent(APkgComponent: TPkgComponent);
function GetResolvedFilename: string; function GetResolvedFilename: string;
function HasRegisteredPlugins: boolean; function HasRegisteredPlugins: boolean;
function MakeSense: boolean;
public public
property Removed: boolean read FRemoved write SetRemoved; property Removed: boolean read FRemoved write SetRemoved;
property Directory: string read FDirectory; property Directory: string read FDirectory;
@ -461,6 +462,8 @@ type
FFirstRequiredDependency: TPkgDependency; FFirstRequiredDependency: TPkgDependency;
FFirstUsedByDependency: TPkgDependency; FFirstUsedByDependency: TPkgDependency;
FFlags: TLazPackageFlags; FFlags: TLazPackageFlags;
FHasDirectory: boolean;
FHasStaticDirectory: boolean;
FHoldPackageCount: integer; FHoldPackageCount: integer;
FIconFile: string; FIconFile: string;
FInstalled: TPackageInstallType; FInstalled: TPackageInstallType;
@ -535,6 +538,7 @@ type
// paths, define templates // paths, define templates
function IsVirtual: boolean; function IsVirtual: boolean;
function HasDirectory: boolean; function HasDirectory: boolean;
function HasStaticDirectory: boolean;
function GetResolvedFilename: string; function GetResolvedFilename: string;
function GetSourceDirs(WithPkgDir, WithoutOutputDir: boolean): string; function GetSourceDirs(WithPkgDir, WithoutOutputDir: boolean): string;
procedure GetInheritedCompilerOptions(var OptionsList: TList); procedure GetInheritedCompilerOptions(var OptionsList: TList);
@ -547,7 +551,7 @@ type
function GetIncludePath(RelativeToBaseDir: boolean): string; function GetIncludePath(RelativeToBaseDir: boolean): string;
function NeedsDefineTemplates: boolean; function NeedsDefineTemplates: boolean;
// files // files
procedure ShortenFilename(var ExpandedFilename: string); procedure ShortenFilename(var ExpandedFilename: string; UseUp: boolean);
procedure LongenFilename(var AFilename: string); procedure LongenFilename(var AFilename: string);
function FindPkgFile(const AFilename: string; function FindPkgFile(const AFilename: string;
ResolveLinks, IgnoreRemoved: boolean): TPkgFile; ResolveLinks, IgnoreRemoved: boolean): TPkgFile;
@ -1112,6 +1116,11 @@ begin
Result:=ComponentCount>0; Result:=ComponentCount>0;
end; end;
function TPkgFile.MakeSense: boolean;
begin
Result:=Filename<>'';
end;
constructor TPkgFile.Create(ThePackage: TLazPackage); constructor TPkgFile.Create(ThePackage: TLazPackage);
begin begin
Clear; Clear;
@ -1155,7 +1164,7 @@ var
TmpFilename: String; TmpFilename: String;
begin begin
TmpFilename:=Filename; TmpFilename:=Filename;
FPackage.ShortenFilename(TmpFilename); FPackage.ShortenFilename(TmpFilename,true);
XMLConfig.SetDeleteValue(Path+'Filename/Value',TmpFilename,''); XMLConfig.SetDeleteValue(Path+'Filename/Value',TmpFilename,'');
XMLConfig.SetDeleteValue(Path+'HasRegisterProc/Value',HasRegisterProc, XMLConfig.SetDeleteValue(Path+'HasRegisterProc/Value',HasRegisterProc,
false); false);
@ -1177,13 +1186,10 @@ begin
Result:=FilenameIsAbsolute(FFilename); Result:=FilenameIsAbsolute(FFilename);
end; end;
function TPkgFile.GetShortFilename(RelativePaths: boolean): string; function TPkgFile.GetShortFilename(UseUp: boolean): string;
begin begin
Result:=FFilename; Result:=FFilename;
LazPackage.ShortenFilename(Result); LazPackage.ShortenFilename(Result,UseUp);
if RelativePaths and FilenameIsAbsolute(Result)
and LazPackage.HasDirectory then
Result:=CreateRelativePath(Result,LazPackage.Directory);
end; end;
function TPkgFile.ComponentCount: integer; function TPkgFile.ComponentCount: integer;
@ -1729,6 +1735,8 @@ begin
FDirectory:=FFilename FDirectory:=FFilename
else else
FDirectory:=ExtractFilePath(FFilename); FDirectory:=ExtractFilePath(FFilename);
FHasDirectory:=(FDirectory<>'') and (FDirectory[length(FDirectory)]=PathDelim);
FHasStaticDirectory:=FHasDirectory and FilenameIsAbsolute(FDirectory);
FUsageOptions.BaseDirectory:=FDirectory; FUsageOptions.BaseDirectory:=FDirectory;
FCompilerOptions.BaseDirectory:=FDirectory; FCompilerOptions.BaseDirectory:=FDirectory;
Modified:=true; Modified:=true;
@ -1887,6 +1895,8 @@ begin
FCompilerOptions.Clear; FCompilerOptions.Clear;
FDescription:=''; FDescription:='';
FDirectory:=''; FDirectory:='';
FHasDirectory:=false;
FHasStaticDirectory:=false;
FVersion.Clear; FVersion.Clear;
FFilename:=''; FFilename:='';
for i:=FRemovedFiles.Count-1 downto 0 do RemovedFiles[i].Free; for i:=FRemovedFiles.Count-1 downto 0 do RemovedFiles[i].Free;
@ -1970,7 +1980,10 @@ var
PkgFile:=TPkgFile.Create(Self); PkgFile:=TPkgFile.Create(Self);
PkgFile.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/', PkgFile.LoadFromXMLConfig(XMLConfig,ThePath+'Item'+IntToStr(i+1)+'/',
FileVersion,PathDelimChanged); FileVersion,PathDelimChanged);
List.Add(PkgFile); if PkgFile.MakeSense then
List.Add(PkgFile)
else
PkgFile.Free;
end; end;
end; end;
@ -2073,7 +2086,12 @@ end;
function TLazPackage.HasDirectory: boolean; function TLazPackage.HasDirectory: boolean;
begin begin
Result:=(FDirectory<>'') and (FDirectory[length(FDirectory)]=PathDelim); Result:=FHasDirectory;
end;
function TLazPackage.HasStaticDirectory: boolean;
begin
Result:=FHasStaticDirectory;
end; end;
procedure TLazPackage.CheckInnerDependencies; procedure TLazPackage.CheckInnerDependencies;
@ -2085,21 +2103,25 @@ function TLazPackage.MakeSense: boolean;
begin begin
Result:=false; Result:=false;
if (Name='') or (not IsValidIdent(Name)) then exit; if (Name='') or (not IsValidIdent(Name)) then exit;
Result:=true; Result:=true;
end; end;
procedure TLazPackage.ShortenFilename(var ExpandedFilename: string); procedure TLazPackage.ShortenFilename(var ExpandedFilename: string;
UseUp: boolean);
var var
PkgDir: String; PkgDir: String;
CurPath: String; CurPath: String;
begin begin
if not HasDirectory then exit; if (not HasDirectory) then exit;
PkgDir:=FDirectory; PkgDir:=FDirectory;
CurPath:=copy(ExtractFilePath(ExpandedFilename),1,length(PkgDir)); if HasStaticDirectory and UseUp then
if CompareFilenames(PkgDir,CurPath)=0 then begin ExpandedFilename:=CreateRelativePath(ExpandedFilename,PkgDir)
ExpandedFilename:=copy(ExpandedFilename,length(CurPath)+1, else begin
length(ExpandedFilename)-length(CurPath)); CurPath:=copy(ExtractFilePath(ExpandedFilename),1,length(PkgDir));
if CompareFilenames(PkgDir,CurPath)=0 then begin
ExpandedFilename:=copy(ExpandedFilename,length(CurPath)+1,
length(ExpandedFilename)-length(CurPath));
end;
end; end;
end; end;

View File

@ -1707,18 +1707,18 @@ begin
// check if directory is already in the unit path of the package // check if directory is already in the unit path of the package
NewDirectory:=ExtractFilePath(AnUnitFilename); NewDirectory:=ExtractFilePath(AnUnitFilename);
ShortDirectory:=NewDirectory; ShortDirectory:=NewDirectory;
LazPackage.ShortenFilename(ShortDirectory); LazPackage.ShortenFilename(ShortDirectory,false);
if ShortDirectory='' then exit; if ShortDirectory='' then exit;
UnitPath:=LazPackage.GetUnitPath(false); UnitPath:=LazPackage.GetUnitPath(true);
UnitPathPos:=SearchDirectoryInSearchPath(UnitPath,NewDirectory,1); UnitPathPos:=SearchDirectoryInSearchPath(UnitPath,ShortDirectory,1);
IncPathPos:=1; IncPathPos:=1;
if AnIncludeFile<>'' then begin if AnIncludeFile<>'' then begin
NewIncDirectory:=ExtractFilePath(AnIncludeFile); NewIncDirectory:=ExtractFilePath(AnIncludeFile);
ShortIncDirectory:=NewIncDirectory; ShortIncDirectory:=NewIncDirectory;
LazPackage.ShortenFilename(ShortIncDirectory); LazPackage.ShortenFilename(ShortIncDirectory,false);
if ShortIncDirectory<>'' then begin if ShortIncDirectory<>'' then begin
IncPath:=LazPackage.GetIncludePath(false); IncPath:=LazPackage.GetIncludePath(true);
IncPathPos:=SearchDirectoryInSearchPath(IncPath,NewIncDirectory,1); IncPathPos:=SearchDirectoryInSearchPath(IncPath,ShortIncDirectory,1);
end; end;
end; end;
if UnitPathPos<1 then begin if UnitPathPos<1 then begin