mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-07 18:58:04 +02:00
IDE: help selector: show database
git-svn-id: trunk@50693 -
This commit is contained in:
parent
50ea7d1377
commit
41aa946ab3
@ -8,34 +8,34 @@ object HelpSelectorDialog: THelpSelectorDialog
|
||||
ClientWidth = 500
|
||||
OnClose = HelpSelectorDialogClose
|
||||
Position = poScreenCenter
|
||||
LCLVersion = '1.3'
|
||||
LCLVersion = '1.7'
|
||||
object NodesGroupBox: TGroupBox
|
||||
Left = 6
|
||||
Height = 239
|
||||
Height = 237
|
||||
Top = 6
|
||||
Width = 488
|
||||
Align = alClient
|
||||
BorderSpacing.Around = 6
|
||||
Caption = 'NodesGroupBox'
|
||||
ClientHeight = 221
|
||||
ClientHeight = 220
|
||||
ClientWidth = 484
|
||||
TabOrder = 0
|
||||
object NodesListBox: TListBox
|
||||
Left = 6
|
||||
Height = 209
|
||||
Top = 6
|
||||
Width = 472
|
||||
object NodesTreeView: TTreeView
|
||||
Left = 0
|
||||
Height = 220
|
||||
Top = 0
|
||||
Width = 484
|
||||
Align = alClient
|
||||
BorderSpacing.Around = 6
|
||||
ItemHeight = 0
|
||||
OnDblClick = NodesListBoxDblClick
|
||||
DefaultItemHeight = 18
|
||||
TabOrder = 0
|
||||
OnDblClick = NodesTreeViewDblClick
|
||||
OnSelectionChanged = NodesTreeViewSelectionChanged
|
||||
end
|
||||
end
|
||||
object BtnPanel: TButtonPanel
|
||||
Left = 6
|
||||
Height = 26
|
||||
Top = 251
|
||||
Height = 28
|
||||
Top = 249
|
||||
Width = 488
|
||||
OKButton.Name = 'OKButton'
|
||||
OKButton.DefaultCaption = True
|
||||
|
@ -42,8 +42,8 @@ uses
|
||||
// IDEIntf
|
||||
PropEdits, ObjectInspector, ProjectIntf, TextTools,
|
||||
IDEDialogs, LazHelpIntf, LazHelpHTML, HelpFPDoc, MacroIntf, IDEWindowIntf,
|
||||
IDEMsgIntf, PackageIntf, LazIDEIntf, HelpIntfs, IDEHelpIntf,
|
||||
IDEExternToolIntf,
|
||||
IDEMsgIntf, PackageIntf, LazIDEIntf, HelpIntfs, ComCtrls, IDEHelpIntf,
|
||||
IDEExternToolIntf, IDEImagesIntf,
|
||||
// IDE
|
||||
LazarusIDEStrConsts, TransferMacros, DialogProcs, IDEOptionDefs,
|
||||
ObjInspExt, EnvironmentOpts, AboutFrm, Project, MainBar,
|
||||
@ -250,16 +250,20 @@ type
|
||||
THelpSelectorDialog = class(TForm)
|
||||
BtnPanel: TButtonPanel;
|
||||
NodesGroupBox: TGroupBox;
|
||||
NodesListBox: TListBox;
|
||||
NodesTreeView: TTreeView;
|
||||
procedure HelpSelectorDialogClose(Sender: TObject; var {%H-}CloseAction: TCloseAction);
|
||||
procedure NodesListBoxDblClick(Sender: TObject);
|
||||
procedure NodesTreeViewDblClick(Sender: TObject);
|
||||
procedure NodesTreeViewSelectionChanged(Sender: TObject);
|
||||
private
|
||||
FNodes: THelpNodeQueryList;
|
||||
FImgIndexDB, FImgIndexNode: Integer;
|
||||
procedure SetNodes(const AValue: THelpNodeQueryList);
|
||||
procedure FillNodesListBox;
|
||||
procedure FillNodesTV;
|
||||
procedure UpdateButtons;
|
||||
public
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
property Nodes: THelpNodeQueryList read FNodes write SetNodes;
|
||||
function GetSelectedNodeQuery: THelpNodeQuery;
|
||||
end;
|
||||
|
||||
{ Help Contexts for IDE help }
|
||||
@ -1024,34 +1028,64 @@ begin
|
||||
IDEDialogLayoutList.SaveLayout(Self);
|
||||
end;
|
||||
|
||||
procedure THelpSelectorDialog.NodesListBoxDblClick(Sender: TObject);
|
||||
procedure THelpSelectorDialog.NodesTreeViewDblClick(Sender: TObject);
|
||||
begin
|
||||
ModalResult := mrOK;
|
||||
end;
|
||||
|
||||
procedure THelpSelectorDialog.NodesTreeViewSelectionChanged(Sender: TObject);
|
||||
begin
|
||||
UpdateButtons;
|
||||
end;
|
||||
|
||||
procedure THelpSelectorDialog.SetNodes(const AValue: THelpNodeQueryList);
|
||||
begin
|
||||
if FNodes=AValue then exit;
|
||||
FNodes:=AValue;
|
||||
FillNodesListBox;
|
||||
FillNodesTV;
|
||||
end;
|
||||
|
||||
procedure THelpSelectorDialog.FillNodesListBox;
|
||||
procedure THelpSelectorDialog.FillNodesTV;
|
||||
var
|
||||
List: TStringList;
|
||||
i: Integer;
|
||||
NodeQuery: THelpNodeQuery;
|
||||
Node: THelpNode;
|
||||
DB: THelpDatabase;
|
||||
DBTVNode, TVNode: TTreeNode;
|
||||
begin
|
||||
List:=TStringList.Create;
|
||||
if (Nodes<>nil) then begin
|
||||
for i:=0 to Nodes.Count-1 do begin
|
||||
NodeQuery:=Nodes[i];
|
||||
List.Add(NodeQuery.AsString);
|
||||
NodesTreeView.BeginUpdate;
|
||||
try
|
||||
TVNode:=nil;
|
||||
NodesTreeView.Items.Clear;
|
||||
if (Nodes<>nil) then begin
|
||||
for i:=0 to Nodes.Count-1 do begin
|
||||
NodeQuery:=Nodes[i];
|
||||
Node:=NodeQuery.Node;
|
||||
DB:=Node.Owner;
|
||||
|
||||
DBTVNode:=NodesTreeView.Items.FindTopLvlNode(DB.ID);
|
||||
if DBTVNode=nil then
|
||||
begin
|
||||
DBTVNode:=NodesTreeView.Items.AddChild(nil,DB.ID);
|
||||
DBTVNode.ImageIndex:=FImgIndexDB;
|
||||
end;
|
||||
|
||||
TVNode:=NodesTreeView.Items.AddChild(DBTVNode,NodeQuery.AsString);
|
||||
TVNode.ImageIndex:=FImgIndexNode;
|
||||
TVNode.Data:=NodeQuery;
|
||||
|
||||
DBTVNode.Expand(true);
|
||||
end;
|
||||
end;
|
||||
NodesTreeView.Selected:=TVNode;
|
||||
finally
|
||||
NodesTreeView.EndUpdate;
|
||||
end;
|
||||
NodesListBox.Items.Assign(List);
|
||||
List.Free;
|
||||
if NodesListBox.Count > 0 then NodesListBox.ItemIndex := 0;
|
||||
end;
|
||||
|
||||
procedure THelpSelectorDialog.UpdateButtons;
|
||||
begin
|
||||
BtnPanel.OKButton.Enabled:=GetSelectedNodeQuery<>nil;
|
||||
end;
|
||||
|
||||
constructor THelpSelectorDialog.Create(TheOwner: TComponent);
|
||||
@ -1062,6 +1096,20 @@ begin
|
||||
Caption := lisHelpSelectorDialog;
|
||||
NodesGroupBox.Caption:=lisSelectAHelpItem;
|
||||
BtnPanel.OKButton.Caption:=lisMenuOk;
|
||||
|
||||
NodesTreeView.Images:=IDEImages.Images_16;
|
||||
FImgIndexDB:=IDEImages.LoadImage(16, 'item_package');
|
||||
FImgIndexNode:=IDEImages.LoadImage(16, 'menu_help');
|
||||
end;
|
||||
|
||||
function THelpSelectorDialog.GetSelectedNodeQuery: THelpNodeQuery;
|
||||
var
|
||||
TVNode: TTreeNode;
|
||||
begin
|
||||
Result:=nil;
|
||||
TVNode:=NodesTreeView.Selected;
|
||||
if (TVNode=nil) or (TVNode.Data=nil) then exit;
|
||||
Result:=TObject(TVNode.Data) as THelpNodeQuery;
|
||||
end;
|
||||
|
||||
{ TIDEHelpDatabases }
|
||||
@ -1073,7 +1121,6 @@ function TIDEHelpDatabases.ShowHelpSelector(Query: THelpQuery;
|
||||
): TShowHelpResult;
|
||||
var
|
||||
Dialog: THelpSelectorDialog;
|
||||
i: LongInt;
|
||||
begin
|
||||
Selection:=nil;
|
||||
Result:=shrNone;
|
||||
@ -1081,11 +1128,9 @@ begin
|
||||
try
|
||||
Dialog.Nodes:=Nodes;
|
||||
if Dialog.ShowModal=mrOk then begin
|
||||
i:=Dialog.NodesListBox.ItemIndex;
|
||||
if i>=0 then begin
|
||||
Selection:=Nodes[i];
|
||||
Selection:=Dialog.GetSelectedNodeQuery;
|
||||
if Selection<>nil then
|
||||
Result:=shrSuccess;
|
||||
end;
|
||||
end else begin
|
||||
Result:=shrCancel;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user