summaryrefslogtreecommitdiff
path: root/packages/chm
diff options
context:
space:
mode:
authormarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2009-12-29 20:29:37 +0000
committermarco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2>2009-12-29 20:29:37 +0000
commit647a74ad9616de9cc310b9a935e66db3baf46108 (patch)
tree388c8b92bb2948e4fd99ec74cf9097fb8e6b4963 /packages/chm
parent3a0c8783fa3aa71aa1db33e29dab1e521d194c91 (diff)
downloadfpc-647a74ad9616de9cc310b9a935e66db3baf46108.tar.gz
* context support in the project.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@14497 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/chm')
-rw-r--r--packages/chm/src/chmfilewriter.pas48
1 files changed, 37 insertions, 11 deletions
diff --git a/packages/chm/src/chmfilewriter.pas b/packages/chm/src/chmfilewriter.pas
index 218de71596..c814464a05 100644
--- a/packages/chm/src/chmfilewriter.pas
+++ b/packages/chm/src/chmfilewriter.pas
@@ -81,6 +81,13 @@ implementation
uses XmlCfg, chmsitemap;
+Type
+ TChmContextNode = Class
+ URLName : AnsiString;
+ ContextNumber : Integer;
+ ContextName : AnsiString;
+ End;
+
{ TChmProject }
function TChmProject.GetData(const DataName: String; out PathInChm: String; out
@@ -148,16 +155,19 @@ begin
end;
destructor TChmProject.Destroy;
+var i : integer;
begin
- FFIles.Free;
+ for i:=0 to ffiles.count -1 do
+ ffiles.objects[i].free;
+ FFiles.Free;
inherited Destroy;
end;
-
procedure TChmProject.LoadFromFile(AFileName: String);
var
Cfg: TXMLConfig;
FileCount: Integer;
- I: Integer;
+ I : Integer;
+ nd : TChmContextNode;
begin
Cfg := TXMLConfig.Create(nil);
Cfg.Filename := AFileName;
@@ -165,9 +175,14 @@ begin
Files.Clear;
FileCount := Cfg.GetValue('Files/Count/Value', 0);
- for I := 0 to FileCount-1 do begin
- Files.Add(Cfg.GetValue('Files/FileName'+IntToStr(I)+'/Value',''));
- end;
+ for I := 0 to FileCount-1 do
+ begin
+ nd:=TChmContextNode.Create;
+ nd.urlname:=Cfg.GetValue('Files/FileName'+IntToStr(I)+'/Value','');
+ nd.contextnumber:=Cfg.GetValue('Files/FileName'+IntToStr(I)+'/ContextNumber',0);
+ nd.contextname:=Cfg.GetValue('Files/FileName'+IntToStr(I)+'/ContextName','');
+ Files.AddObject(nd.urlname,nd);
+ end;
IndexFileName := Cfg.GetValue('Files/IndexFile/Value','');
TableOfContentsFileName := Cfg.GetValue('Files/TOCFile/Value','');
// For chm file merging, bintoc must be false and binindex true. Change defaults in time?
@@ -185,16 +200,20 @@ end;
procedure TChmProject.SaveToFile(AFileName: String);
var
Cfg: TXMLConfig;
- I: Integer;
-
+ I : Integer;
+ nd : TChmContextNode;
begin
Cfg := TXMLConfig.Create(nil);
Cfg.StartEmpty := True;
Cfg.Filename := FileName;
Cfg.Clear;
Cfg.SetValue('Files/Count/Value', Files.Count);
- for I := 0 to Files.Count-1 do begin
+ for I := 0 to Files.Count-1 do
+ begin
+ nd:=TChmContextNode(files.objects[i]);
Cfg.SetValue('Files/FileName'+IntToStr(I)+'/Value', Files.Strings[I]);
+ Cfg.SetValue('Files/FileName'+IntToStr(I)+'/ContextNumber', nd.contextnumber);
+ Cfg.SetValue('Files/FileName'+IntToStr(I)+'/ContextName', nd.contextname);
end;
Cfg.SetValue('Files/IndexFile/Value', IndexFileName);
Cfg.SetValue('Files/TOCFile/Value', TableOfContentsFileName);
@@ -217,10 +236,11 @@ end;
procedure TChmProject.WriteChm(AOutStream: TStream);
var
- Writer: TChmWriter;
+ Writer : TChmWriter;
TOCStream,
IndexStream: TFileStream;
-
+ nd : TChmContextNode;
+ I : Integer;
begin
IndexStream := nil;
TOCStream := nil;
@@ -242,6 +262,12 @@ begin
Writer.HasBinaryTOC := MakeBinaryTOC;
Writer.HasBinaryIndex := MakeBinaryIndex;
+ for i:=0 to files.count-1 do
+ begin
+ nd:=TChmContextNode(files.objects[i]);
+ Writer.AddContext(nd.ContextNumber,files[i]);
+ end;
+
// and write!
Writer.Execute;