mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-07 02:48:17 +02:00
* Save/load package imports to/from package description file
git-svn-id: trunk@19761 -
This commit is contained in:
parent
ceffd8b8cc
commit
8d8a1a23e9
@ -20,6 +20,7 @@ Type
|
||||
Procedure LoadEngineOptions(Options : TEngineOptions; E : TDOMElement); virtual;
|
||||
Procedure SaveEngineOptions(Options : TEngineOptions; XML : TXMLDocument; AParent : TDOMElement); virtual;
|
||||
procedure SaveDescription(const ADescription: String; XML: TXMLDocument; AParent: TDOMElement); virtual;
|
||||
procedure SaveImportFile(const AImportFile: String; XML: TXMLDocument; AParent: TDOMElement);virtual;
|
||||
procedure SaveInputFile(const AInputFile: String; XML: TXMLDocument; AParent: TDOMElement);virtual;
|
||||
Procedure SavePackage(APackage : TFPDocPackage; XML : TXMLDocument; AParent : TDOMElement); virtual;
|
||||
Public
|
||||
@ -49,6 +50,8 @@ Resourcestring
|
||||
SErrNoPackagesNode = 'No "packages" node found in docproject';
|
||||
SErrNoInputFile = 'unit tag without file attribute found';
|
||||
SErrNoDescrFile = 'description tag without file attribute';
|
||||
SErrNoImportFile = 'Import tag without file attribute';
|
||||
SErrNoImportPrefix = 'Import tag without prefix attribute';
|
||||
|
||||
{ TXMLFPDocOptions }
|
||||
|
||||
@ -98,6 +101,20 @@ procedure TXMLFPDocOptions.LoadPackage(APackage: TFPDocPackage; E: TDOMElement);
|
||||
Error(SErrNoDescrFile);
|
||||
end;
|
||||
|
||||
Function LoadImport(I : TDOMElement) : String;
|
||||
|
||||
Var
|
||||
S : String;
|
||||
begin
|
||||
Result:=I['file'];
|
||||
If (Result='') then
|
||||
Error(SErrNoImportFile);
|
||||
S:=I['prefix'];
|
||||
If (S='') then
|
||||
Error(SErrNoImportPrefix);
|
||||
Result:=Result+','+S;
|
||||
end;
|
||||
|
||||
Var
|
||||
N,S : TDOMNode;
|
||||
O : TDomElement;
|
||||
@ -132,6 +149,16 @@ begin
|
||||
S:=S.NextSibling;
|
||||
end;
|
||||
end
|
||||
else If (O.NodeName='imports') then
|
||||
begin
|
||||
S:=O.FirstChild;
|
||||
While (S<>Nil) do
|
||||
begin
|
||||
If (S.NodeType=Element_Node) and (S.NodeName='import') then
|
||||
APackage.Imports.add(LoadImport(S as TDomElement));
|
||||
S:=S.NextSibling;
|
||||
end;
|
||||
end
|
||||
end;
|
||||
N:=N.NextSibling;
|
||||
end;
|
||||
@ -313,6 +340,18 @@ begin
|
||||
AParent['file']:=ADescription;
|
||||
end;
|
||||
|
||||
procedure TXMLFPDocOptions.SaveImportFile(const AImportFile: String;
|
||||
XML: TXMLDocument; AParent: TDOMElement);
|
||||
|
||||
Var
|
||||
I : integer;
|
||||
|
||||
begin
|
||||
I:=Pos(',',AImportFile);
|
||||
AParent['file']:=Copy(AImportFile,1,I-1);
|
||||
AParent['prefix']:=Copy(AImportFile,i+1,Length(AImportFile));
|
||||
end;
|
||||
|
||||
Procedure TXMLFPDocOptions.SavePackage(APackage: TFPDocPackage; XML : TXMLDocument; AParent: TDOMElement);
|
||||
|
||||
|
||||
@ -342,6 +381,15 @@ begin
|
||||
PE.AppendChild(E);
|
||||
SaveDescription(APackage.Descriptions[i],XML,E);
|
||||
end;
|
||||
// Imports
|
||||
PE:=XML.CreateElement('imports');
|
||||
AParent.AppendChild(PE);
|
||||
for i:=0 to APackage.Imports.Count-1 do
|
||||
begin
|
||||
E:=XML.CreateElement('import');
|
||||
PE.AppendChild(E);
|
||||
SaveImportFile(APackage.Imports[i],XML,E);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
@ -28,6 +28,7 @@ Type
|
||||
procedure AddDescrFilesFromDirectory(Const ADirectory, AMask : String; ARecurse: Boolean);
|
||||
procedure AddInputFilesFromDirectory(Const ADirectory, AMask, AOptions: String; ARecurse: Boolean);
|
||||
procedure AddInputFile(Const AFile : String; AOptions : String = '');
|
||||
procedure AddImportFile(Const AFile,APrefix : String);
|
||||
procedure AddDescrFile(Const AFile : String);
|
||||
procedure RemoveInputFile(Const AFile : String);
|
||||
procedure RemoveDescrFile(Const AFile : String);
|
||||
@ -192,6 +193,13 @@ begin
|
||||
FPackage.Inputs.Add(S);
|
||||
end;
|
||||
|
||||
procedure TFPDocProjectManager.AddImportFile(const AFile, APrefix: String);
|
||||
|
||||
begin
|
||||
CheckPackage;
|
||||
FPackage.Imports.Add(AFile+','+APrefix);
|
||||
end;
|
||||
|
||||
procedure TFPDocProjectManager.AddDescrFile(const AFile: String);
|
||||
|
||||
begin
|
||||
|
@ -22,6 +22,7 @@ type
|
||||
procedure AddDescriptionDirs;
|
||||
procedure AddInputDirs;
|
||||
procedure AddInputFiles;
|
||||
procedure AddImportFiles;
|
||||
function CmdNeedsPackage: Boolean;
|
||||
procedure RemoveInputFiles;
|
||||
procedure RemoveDescrFiles;
|
||||
@ -251,6 +252,23 @@ begin
|
||||
FMGr.AddInputFile(FCmdArgs[i],Options);
|
||||
end;
|
||||
|
||||
procedure TManageFPDocProjectApplication.AddImportFiles;
|
||||
|
||||
Var
|
||||
I,J : Integer;
|
||||
F,P : String;
|
||||
|
||||
begin
|
||||
For I:=0 to FCmdArgs.Count-1 do
|
||||
begin
|
||||
P:=FCmdArgs[i];
|
||||
J:=Pos(',',P);
|
||||
F:=Copy(P,1,J-1);
|
||||
Delete(P,1,J);
|
||||
FMGr.AddImportFile(F,P);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TManageFPDocProjectApplication.RemoveInputFiles;
|
||||
|
||||
Var
|
||||
@ -329,6 +347,8 @@ begin
|
||||
AddInputDirs
|
||||
else if (FCmd='add-input-files') then
|
||||
AddInputFiles
|
||||
else if (FCmd='add-import-files') then
|
||||
AddImportFiles
|
||||
else if (FCmd='add-description-files') then
|
||||
AddDescrFiles
|
||||
else if (FCmd='remove-input-files') then
|
||||
|
Loading…
Reference in New Issue
Block a user