diff options
author | Graeme Geldenhuys <graemeg@gmail.com> | 2009-09-30 23:11:38 +0200 |
---|---|---|
committer | Graeme Geldenhuys <graemeg@gmail.com> | 2009-09-30 23:11:38 +0200 |
commit | 724bf25b2f5ad0e1709f7cb0be225fca3c988947 (patch) | |
tree | a39af38d972790f6dd106e50332bc7070018e864 /src/frm_main.pas | |
parent | b78265ed79c03eab8fc8acd31716623060c79145 (diff) | |
download | fpGUI-724bf25b2f5ad0e1709f7cb0be225fca3c988947.tar.xz |
Add support for closing existing help and opening new ones without a app restart.
* Also added same template methods and todo items for implementing
saving and reading custom user notes.
Signed-off-by: Graeme Geldenhuys <graemeg@gmail.com>
Diffstat (limited to 'src/frm_main.pas')
-rw-r--r-- | src/frm_main.pas | 80 |
1 files changed, 66 insertions, 14 deletions
diff --git a/src/frm_main.pas b/src/frm_main.pas index 6af1a825..00cee2e6 100644 --- a/src/frm_main.pas +++ b/src/frm_main.pas @@ -31,29 +31,30 @@ type miHelp: TfpgPopupMenu; btnIndex: TfpgButton; {@VFD_HEAD_END: MainForm} - FHelpFile: TfpgString; Files: TList; // current open help files. procedure MainFormShow(Sender: TObject); procedure miFileQuitClicked(Sender: TObject); procedure miFileOpenClicked(Sender: TObject); + procedure miFileCloseClicked(Sender: TObject); procedure miHelpProdInfoClicked(Sender: TObject); procedure miHelpAboutFPGui(Sender: TObject); procedure miDebugHeader(Sender: TObject); - procedure SetHelpFile(const AValue: TfpgString); procedure btnShowIndex(Sender: TObject); + procedure MainFormCloseQuery(Sender: TObject; var CanClose: boolean); procedure FileOpen; function OpenFile(const AFileNames: string): boolean; + procedure CloseFile; 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 ); - + procedure AddChildNodes(AHelpFile: THelpFile; AParentNode: TfpgTreeNode; ALevel: longint; var ATopicIndex: longint ); + procedure ClearNotes; + procedure SaveNotes(AHelpFile: THelpFile); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure AfterCreate; override; -// property HelpFile: TfpgString read FHelpFile write SetHelpFile; end; {@VFD_NEWFORM_DECL} @@ -85,6 +86,11 @@ begin FileOpen; end; +procedure TMainForm.miFileCloseClicked(Sender: TObject); +begin + CloseFile; +end; + procedure TMainForm.miHelpProdInfoClicked(Sender: TObject); begin TfpgMessageDialog.Information('Product Information', 'Created by Graeme Geldenhuys'); @@ -101,6 +107,7 @@ var i: integer; begin Memo1.Lines.Clear; + Memo1.Lines.BeginUpdate; f := THelpFile(Files[0]); with Memo1.Lines do begin @@ -114,13 +121,7 @@ begin for i := 0 to f.DictionaryCount-1 do Add('[' + IntToStr(i) + '] = <' + f.DictionaryWords[i] + '>'); end; -end; - -procedure TMainForm.SetHelpFile(const AValue: TfpgString); -begin - if FHelpFile = AValue then - Exit; //==> - FHelpFile := AValue; + Memo1.Lines.EndUpdate; end; procedure TMainForm.btnShowIndex(Sender: TObject); @@ -132,6 +133,11 @@ begin // end; +procedure TMainForm.MainFormCloseQuery(Sender: TObject; var CanClose: boolean); +begin + CloseFile; +end; + procedure TMainForm.FileOpen; var dlg: TfpgFileDialog; @@ -169,13 +175,16 @@ begin ProfileEvent( ' Full path: ' + FullFilePath ); ProfileEvent( ' Loading: ' + lFilename ); + CloseFile; + HelpFile := THelpFile.Create(lFileName, @OnHelpFileLoadProgress); Files.Add(HelpFile); -// WindowTitle := cTitle + ' - ' + THelpFile( Files[ 0 ] ).Title; - WindowTitle := cTitle + ' - ' + HelpFile.Title; + WindowTitle := cTitle + ' - ' + THelpFile( Files[ 0 ] ).Title; +// WindowTitle := cTitle + ' - ' + HelpFile.Title; fpgApplication.ProcessMessages; + { TODO -oGraeme : Load previous notes here } for FileIndex:= 0 to Files.Count - 1 do begin HelpFile := THelpFile(Files[ FileIndex ]); @@ -183,6 +192,37 @@ begin end; LoadContents; + tvContents.Selection := tvContents.RootNode.FirstSubNode; +end; + +procedure TMainForm.CloseFile; +var + FileIndex: longint; + lHelpFile: THelpFile; +begin + WindowTitle := cTitle + ' - No file'; + tvContents.Selection := nil; + tvContents.RootNode.Clear; + Memo1.Lines.Clear; + + // First save notes. It's important we do this first + // since we scan all notes each time to find the ones + // belonging to this file. + for FileIndex := 0 to Files.Count - 1 do + begin + lHelpFile := THelpFile(Files[FileIndex]); + SaveNotes( lHelpFile ); + end; + + // Now destroy help files + for FileIndex := 0 to Files.Count - 1 do + begin + lHelpFile := THelpFile(Files[FileIndex]); + lHelpFile.Free; + end; + + Files.Clear; + ClearNotes; end; procedure TMainForm.OnHelpFileLoadProgress(n, outof: integer; AMessage: string); @@ -288,6 +328,16 @@ begin end; { while } end; +procedure TMainForm.ClearNotes; +begin + { TODO -oGraeme : Implement me } +end; + +procedure TMainForm.SaveNotes(AHelpFile: THelpFile); +begin + { TODO -oGraeme : Implement me } +end; + constructor TMainForm.Create(AOwner: TComponent); begin inherited Create(AOwner); @@ -309,6 +359,7 @@ begin SetPosition(602, 274, 560, 360); WindowTitle := 'fpGUI Help Viewer'; WindowPosition := wpUser; + OnCloseQuery := @MainFormCloseQuery; bvlStatusBar := TfpgBevel.Create(self); with bvlStatusBar do @@ -423,6 +474,7 @@ begin Name := 'miFile'; SetPosition(244, 28, 132, 20); AddMenuItem('Open...', '', @miFileOpenClicked); + AddMenuItem('Close', '', @miFileCloseClicked); AddMenuitem('-', '', nil); AddMenuItem('Quit', '', @miFileQuitClicked); end; |