* lhelp title now shows the active chm title and the titles of all open chms

git-svn-id: trunk@26915 -
This commit is contained in:
andrew 2010-07-30 22:35:04 +00:00
parent 5cee5308ba
commit 957fb24560
3 changed files with 49 additions and 6 deletions

View File

@ -14,6 +14,7 @@ type
TBaseContentProviderClass = Class of TBaseContentProvider;
TBaseContentProvider = class(TObject)
private
FOnTitleChange: TNotifyEvent;
fParent: TWinControl;
FTitle: String;
FConfig: TXMLConfig;
@ -36,6 +37,7 @@ type
destructor Destroy; override;
property Parent: TWinControl read fParent;
property Title: String read GetTitle write SetTitle;
property OnTitleChange: TNotifyEvent read FOnTitleChange write FOnTitleChange;
end;
@ -86,12 +88,14 @@ end;
function TBaseContentProvider.GetTitle: String;
begin
Result := '';
Result := FTitle;
end;
procedure TBaseContentProvider.SetTitle(const AValue: String);
begin
FTitle := AValue;
if Assigned(FOnTitleChange) then
FOnTitleChange(Self);
end;
procedure TBaseContentProvider.LoadPreferences(ACfg: TXMLConfig);

View File

@ -56,6 +56,7 @@ type
fHistoryIndex: Integer;
fStopTimer: Boolean;
fFillingToc: Boolean;
fActiveChmTitle: String;
function MakeURI(AUrl: String; AChm: TChmReader): String;
@ -74,6 +75,7 @@ type
procedure ContentsTreeSelectionChanged(Sender: TObject);
procedure IndexViewDblClick(Sender: TObject);
procedure ViewMenuContentsClick(Sender: TObject);
procedure UpdateTitle;
procedure SetTitle(const AValue: String); override;
procedure SearchEditChange(Sender: TObject);
procedure TOCExpand(Sender: TObject; Node: TTreeNode);
@ -201,7 +203,7 @@ begin
// Code Here has been moved to the OpenFile handler
//FileMenuCloseItem.Enabled := True;
if fChms.Chm[0].Title <> '' then SetTitle(fChms.Chm[0].Title);
UpdateTitle;
end;
procedure TChmContentProvider.DoCloseChm;
@ -215,6 +217,7 @@ begin
fChms.Chm[i].Free;
end;
FreeAndNil(fChms);
UpdateTitle;
end;
procedure TChmContentProvider.DoLoadContext(Context: THelpContext);
@ -314,6 +317,7 @@ begin
{$ENDIF}
if fChm <> nil then begin
ParentNode := fContentsTree.Items.AddChildObject(nil, fChm.Title, fChm);
UpdateTitle;
ParentNode.ImageIndex := 0;
ParentNode.SelectedIndex := 0;
{$IFDEF CHM_BINARY_INDEX_TOC}
@ -385,7 +389,7 @@ begin
fSearchTab.TabVisible := HasSearchIndex;
{$ENDIF}
UpdateTitle;
end;
procedure TChmContentProvider.IpHtmlPanelDocumentOpen(Sender: TObject);
@ -417,7 +421,8 @@ begin
if not(fContentsTree.Selected is TContentTreeNode) then
begin
fChm := TChmReader(fContentsTree.Selected.Data);
SetTitle(fChm.Title);
fActiveChmTitle:= fChm.Title;
UpdateTitle;
if fChm.DefaultPage <> '' then
DoLoadUri(MakeURI(fChm.DefaultPage, fChm));
Exit;
@ -464,6 +469,29 @@ begin
//TabPanel.Visible := Splitter1.Visible;
end;
procedure TChmContentProvider.UpdateTitle;
var
Item: TTreeNode;
NewTitle: String;
begin
Item := fContentsTree.Items.GetFirstNode;
NewTitle:=fActiveChmTitle +' [';
while Item <> nil do
begin
if ITem.Text <> fActiveChmTitle then
begin
NewTitle:=NewTitle+Item.Text;
if (Item.GetNextSibling <> nil)
and ((Item.GetNextSibling.GetNextSibling <> nil) or (Item.GetNextSibling.Text <> fActiveChmTitle))
then
NewTitle:=NewTitle+', ';
end;
Item := Item.GetNextSibling;
end;
NewTitle:=NewTitle+']';
Title := NewTitle;
end;
procedure TChmContentProvider.SetTitle(const AValue: String);
begin
if fHtml.Parent = nil then exit;
@ -529,7 +557,8 @@ begin
begin
if FileName = ExtractFileName(fChms.FileName[i]) then
begin
SetTitle(fChms.Chm[i].Title);
fActiveChmTitle:= fChms.Chm[i].Title;
UpdateTitle;
RootNode := fContentsTree.Items.FindNodeWithData(fChms.Chm[i]);
if URL = fChms.Chm[i].DefaultPage then
@ -806,7 +835,7 @@ begin
if fURL <> '' then
DoLoadUri(MakeURI(fURL, fChms.Chm[FileIndex]))
else
GoHome;
DoLoadUri(MakeURI(fChms.Chm[FileIndex].DefaultPage, fChms.Chm[FileIndex]));
Result := True;
if LoadTOC and (FileIndex = 0) then

View File

@ -99,6 +99,7 @@ type
procedure LoadPreferences(AIPCName: String);
procedure SavePreferences(AIPCName: String);
procedure AddRecentFile(AFileName: String);
procedure ContentTitleChange(sender: TObject);
procedure OpenRecentItemClick(Sender: TObject);
procedure SendResponse(Response: DWord);
procedure ServerMessage(Sender: TObject);
@ -348,6 +349,14 @@ begin
end;
procedure THelpForm.ContentTitleChange(sender: TObject);
begin
//if ActivePage = nil then
// Exit;
Caption := 'LHelp - ' + ActivePage.fContentProvider.Title;
end;
procedure THelpForm.OpenRecentItemClick(Sender: TObject);
var
Item: TRecentMenuItem absolute Sender;
@ -550,6 +559,7 @@ begin
//no page was found already to handle this content so create one
fPage := TContentTab.Create(PageControl);
fPage.ContentProvider := fRealContentProvider.Create(fPage, ImageList1);
fPAge.ContentProvider.OnTitleChange:=@ContentTitleChange;
fPage.Parent := PageControl;
SetKeyUp(fPage);
fPage.ContentProvider.LoadPreferences(fConfig);