diff options
| author | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-12-29 20:29:37 +0000 |
|---|---|---|
| committer | marco <marco@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-12-29 20:29:37 +0000 |
| commit | 647a74ad9616de9cc310b9a935e66db3baf46108 (patch) | |
| tree | 388c8b92bb2948e4fd99ec74cf9097fb8e6b4963 /packages/chm | |
| parent | 3a0c8783fa3aa71aa1db33e29dab1e521d194c91 (diff) | |
| download | fpc-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.pas | 48 |
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; |
