mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-07 20:41:37 +02:00
* 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:
parent
5cee5308ba
commit
957fb24560
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user