mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-08 14:06:57 +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 LoadEngineOptions(Options : TEngineOptions; E : TDOMElement); virtual;
|
||||||
Procedure SaveEngineOptions(Options : TEngineOptions; XML : TXMLDocument; AParent : TDOMElement); virtual;
|
Procedure SaveEngineOptions(Options : TEngineOptions; XML : TXMLDocument; AParent : TDOMElement); virtual;
|
||||||
procedure SaveDescription(const ADescription: String; 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 SaveInputFile(const AInputFile: String; XML: TXMLDocument; AParent: TDOMElement);virtual;
|
||||||
Procedure SavePackage(APackage : TFPDocPackage; XML : TXMLDocument; AParent : TDOMElement); virtual;
|
Procedure SavePackage(APackage : TFPDocPackage; XML : TXMLDocument; AParent : TDOMElement); virtual;
|
||||||
Public
|
Public
|
||||||
@ -49,6 +50,8 @@ Resourcestring
|
|||||||
SErrNoPackagesNode = 'No "packages" node found in docproject';
|
SErrNoPackagesNode = 'No "packages" node found in docproject';
|
||||||
SErrNoInputFile = 'unit tag without file attribute found';
|
SErrNoInputFile = 'unit tag without file attribute found';
|
||||||
SErrNoDescrFile = 'description tag without file attribute';
|
SErrNoDescrFile = 'description tag without file attribute';
|
||||||
|
SErrNoImportFile = 'Import tag without file attribute';
|
||||||
|
SErrNoImportPrefix = 'Import tag without prefix attribute';
|
||||||
|
|
||||||
{ TXMLFPDocOptions }
|
{ TXMLFPDocOptions }
|
||||||
|
|
||||||
@ -98,6 +101,20 @@ procedure TXMLFPDocOptions.LoadPackage(APackage: TFPDocPackage; E: TDOMElement);
|
|||||||
Error(SErrNoDescrFile);
|
Error(SErrNoDescrFile);
|
||||||
end;
|
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
|
Var
|
||||||
N,S : TDOMNode;
|
N,S : TDOMNode;
|
||||||
O : TDomElement;
|
O : TDomElement;
|
||||||
@ -132,6 +149,16 @@ begin
|
|||||||
S:=S.NextSibling;
|
S:=S.NextSibling;
|
||||||
end;
|
end;
|
||||||
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;
|
end;
|
||||||
N:=N.NextSibling;
|
N:=N.NextSibling;
|
||||||
end;
|
end;
|
||||||
@ -313,6 +340,18 @@ begin
|
|||||||
AParent['file']:=ADescription;
|
AParent['file']:=ADescription;
|
||||||
end;
|
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);
|
Procedure TXMLFPDocOptions.SavePackage(APackage: TFPDocPackage; XML : TXMLDocument; AParent: TDOMElement);
|
||||||
|
|
||||||
|
|
||||||
@ -342,6 +381,15 @@ begin
|
|||||||
PE.AppendChild(E);
|
PE.AppendChild(E);
|
||||||
SaveDescription(APackage.Descriptions[i],XML,E);
|
SaveDescription(APackage.Descriptions[i],XML,E);
|
||||||
end;
|
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;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ Type
|
|||||||
procedure AddDescrFilesFromDirectory(Const ADirectory, AMask : String; ARecurse: Boolean);
|
procedure AddDescrFilesFromDirectory(Const ADirectory, AMask : String; ARecurse: Boolean);
|
||||||
procedure AddInputFilesFromDirectory(Const ADirectory, AMask, AOptions: String; ARecurse: Boolean);
|
procedure AddInputFilesFromDirectory(Const ADirectory, AMask, AOptions: String; ARecurse: Boolean);
|
||||||
procedure AddInputFile(Const AFile : String; AOptions : String = '');
|
procedure AddInputFile(Const AFile : String; AOptions : String = '');
|
||||||
|
procedure AddImportFile(Const AFile,APrefix : String);
|
||||||
procedure AddDescrFile(Const AFile : String);
|
procedure AddDescrFile(Const AFile : String);
|
||||||
procedure RemoveInputFile(Const AFile : String);
|
procedure RemoveInputFile(Const AFile : String);
|
||||||
procedure RemoveDescrFile(Const AFile : String);
|
procedure RemoveDescrFile(Const AFile : String);
|
||||||
@ -192,6 +193,13 @@ begin
|
|||||||
FPackage.Inputs.Add(S);
|
FPackage.Inputs.Add(S);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TFPDocProjectManager.AddImportFile(const AFile, APrefix: String);
|
||||||
|
|
||||||
|
begin
|
||||||
|
CheckPackage;
|
||||||
|
FPackage.Imports.Add(AFile+','+APrefix);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TFPDocProjectManager.AddDescrFile(const AFile: String);
|
procedure TFPDocProjectManager.AddDescrFile(const AFile: String);
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
@ -22,6 +22,7 @@ type
|
|||||||
procedure AddDescriptionDirs;
|
procedure AddDescriptionDirs;
|
||||||
procedure AddInputDirs;
|
procedure AddInputDirs;
|
||||||
procedure AddInputFiles;
|
procedure AddInputFiles;
|
||||||
|
procedure AddImportFiles;
|
||||||
function CmdNeedsPackage: Boolean;
|
function CmdNeedsPackage: Boolean;
|
||||||
procedure RemoveInputFiles;
|
procedure RemoveInputFiles;
|
||||||
procedure RemoveDescrFiles;
|
procedure RemoveDescrFiles;
|
||||||
@ -251,6 +252,23 @@ begin
|
|||||||
FMGr.AddInputFile(FCmdArgs[i],Options);
|
FMGr.AddInputFile(FCmdArgs[i],Options);
|
||||||
end;
|
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;
|
procedure TManageFPDocProjectApplication.RemoveInputFiles;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
@ -329,6 +347,8 @@ begin
|
|||||||
AddInputDirs
|
AddInputDirs
|
||||||
else if (FCmd='add-input-files') then
|
else if (FCmd='add-input-files') then
|
||||||
AddInputFiles
|
AddInputFiles
|
||||||
|
else if (FCmd='add-import-files') then
|
||||||
|
AddImportFiles
|
||||||
else if (FCmd='add-description-files') then
|
else if (FCmd='add-description-files') then
|
||||||
AddDescrFiles
|
AddDescrFiles
|
||||||
else if (FCmd='remove-input-files') then
|
else if (FCmd='remove-input-files') then
|
||||||
|
Loading…
Reference in New Issue
Block a user