* Save/load package imports to/from package description file

git-svn-id: trunk@19761 -
This commit is contained in:
michael 2011-12-05 19:30:22 +00:00
parent ceffd8b8cc
commit 8d8a1a23e9
3 changed files with 76 additions and 0 deletions

View File

@ -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;

View File

@ -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

View File

@ -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