diff options
author | Graeme Geldenhuys <graemeg@gmail.com> | 2009-09-30 00:42:01 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graemeg@gmail.com> | 2009-09-30 00:42:01 +0200 |
commit | f2521c3d72db3fe92c8290ca323f9766ef652095 (patch) | |
tree | 80ea1e807cf34b47cb8a05200f4bc895a68c1a65 /src/frm_main.pas | |
parent | e4af5f377c081a937395cc59af9e1b131a46cf27 (diff) | |
download | fpGUI-f2521c3d72db3fe92c8290ca323f9766ef652095.tar.xz |
More help file loading changes.
* Main window title gets updated
* Loading Notes is made provision for but not implemented yet.
* Loading of Contents and root level nodes populated with
Content text.
Signed-off-by: Graeme Geldenhuys <graemeg@gmail.com>
Diffstat (limited to 'src/frm_main.pas')
-rw-r--r-- | src/frm_main.pas | 89 |
1 files changed, 87 insertions, 2 deletions
diff --git a/src/frm_main.pas b/src/frm_main.pas index bc6f6f3d..6aa96a9d 100644 --- a/src/frm_main.pas +++ b/src/frm_main.pas @@ -6,7 +6,7 @@ interface uses SysUtils, Classes, fpg_base, fpg_main, fpg_form, fpg_panel, fpg_tab, - fpg_tree, fpg_splitter, fpg_menu, fpg_memo, fpg_button; + fpg_tree, fpg_splitter, fpg_menu, fpg_memo, fpg_button, HelpFile; type @@ -43,6 +43,10 @@ type procedure FileOpen; function OpenFile(const AFileNames: string): boolean; procedure OnHelpFileLoadProgress(n, outof: integer; AMessage: string); + procedure LoadNotes(AHelpFile: THelpFile); + procedure LoadContents; + // Used in loading contents + procedure AddChildNodes(AHelpFile: THelpFile; AParentNode: TfpgTreeNode; ALevel: longint; var ATopicIndex: longint ); public constructor Create(AOwner: TComponent); override; @@ -53,10 +57,13 @@ type {@VFD_NEWFORM_DECL} +const + cTitle = 'fpGUI Help Viewer'; + implementation uses - fpg_dialogs, fpg_constants, nvUtilities, HelpFile; + fpg_dialogs, fpg_constants, nvUtilities, HelpTopic; {@VFD_NEWFORM_IMPL} @@ -131,6 +138,7 @@ var lFilename: string; FullFilePath: string; HelpFile: THelpFile; + FileIndex: integer; begin ProfileEvent('OpenFile'); lFilename := AFilenames; @@ -140,7 +148,19 @@ begin ProfileEvent( ' Loading: ' + lFilename ); HelpFile := THelpFile.Create(lFileName, @OnHelpFileLoadProgress); + Files.Add(HelpFile); + +// WindowTitle := cTitle + ' - ' + THelpFile( Files[ 0 ] ).Title; + WindowTitle := cTitle + ' - ' + HelpFile.Title; + fpgApplication.ProcessMessages; + for FileIndex:= 0 to Files.Count - 1 do + begin + HelpFile := THelpFile(Files[ FileIndex ]); + LoadNotes( HelpFile ); + end; + + LoadContents; end; procedure TMainForm.OnHelpFileLoadProgress(n, outof: integer; AMessage: string); @@ -148,6 +168,71 @@ begin // end; +procedure TMainForm.LoadNotes(AHelpFile: THelpFile); +begin +// NotesFileName:= ChangeFileExt( HelpFile.FileName, '.nte' ); + +end; + +procedure TMainForm.LoadContents; +var + FileIndex: integer; + HelpFile: THelpFile; + TopicIndex: integer; + Node: TfpgTreeNode; + Topic: TTopic; +begin + ProfileEvent( 'Load contents outline' ); + + tvContents.RootNode.Clear; + + ProfileEvent( 'Loop files' ); + + Node := nil; + + for FileIndex:= 0 to Files.Count - 1 do + begin + HelpFile:= THelpFile(Files[ FileIndex ]); + ProfileEvent( 'File ' + IntToStr( FileIndex ) ); + TopicIndex:= 0; + while TopicIndex < HelpFile.TopicCount do + begin + Topic := HelpFile.Topics[ TopicIndex ]; + if Topic.ShowInContents then + begin + if Topic.ContentsLevel = 1 then + begin + Node := tvContents.RootNode.AppendText(Topic.Title); + Node.Data := Topic; + inc( TopicIndex ); + end + else + begin + // child nodes + AddChildNodes( HelpFile, + Node, + Topic.ContentsLevel, + TopicIndex ); + Node := nil; + + end; + end + else + begin + inc( TopicIndex ); + end; + end; + end; +end; + +procedure TMainForm.AddChildNodes(AHelpFile: THelpFile; AParentNode: TfpgTreeNode; + ALevel: longint; var ATopicIndex: longint); +begin + // + ProfileEvent('SubNode with TopicIndex of ' + IntToStr(ATopicIndex)); + inc( ATopicIndex ); +end; + constructor TMainForm.Create(AOwner: TComponent); begin inherited Create(AOwner); |