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