1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
|
unit IDEFPDocFileSearch;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Buttons, ComCtrls, ExtCtrls, LCLType,
PackageSystem, PackageDefs;
type
{ TFPDocFileSearchDialog }
TFPDocFileSearchDialog = class(TForm)
CloseBitBtn: TBitBtn;
ResultsMemo: TMemo;
ScopeGroupBox: TGroupBox;
ScopeTreeView: TTreeView;
SearchTextComboBox: TComboBox;
SearchTextLabel: TLabel;
Splitter1: TSplitter;
procedure FormCreate(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word; {%H-}Shift: TShiftState);
procedure OnIdle(Sender: TObject; var {%H-}Done: Boolean);
private
FIdleConnected: boolean;
procedure SetIdleConnected(AValue: boolean);
procedure FillScope;
public
property IdleConnected: boolean read FIdleConnected write SetIdleConnected;
end;
procedure ShowFPDocFileSearch;
implementation
procedure ShowFPDocFileSearch;
var
FPDocFileSearchDialog: TFPDocFileSearchDialog;
begin
FPDocFileSearchDialog:=TFPDocFileSearchDialog.Create(nil);
try
FPDocFileSearchDialog.ShowModal;
finally
FPDocFileSearchDialog.Free;
end;
end;
{$R *.lfm}
{ TFPDocFileSearchDialog }
procedure TFPDocFileSearchDialog.FormCreate(Sender: TObject);
begin
Caption:='Search in FPDoc files';
CloseBitBtn.Caption:='Close';
SearchTextLabel.Caption:='Search:';
SearchTextComboBox.Text:='';
ActiveControl:=SearchTextComboBox;
ScopeGroupBox.Caption:='Scope';
ResultsMemo.Clear;
FillScope;
IdleConnected:=true;
end;
procedure TFPDocFileSearchDialog.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=VK_ESCAPE then
ModalResult:=mrCancel;
end;
procedure TFPDocFileSearchDialog.OnIdle(Sender: TObject; var Done: Boolean);
begin
// ToDo:
// nothing to do
IdleConnected:=false;
end;
procedure TFPDocFileSearchDialog.SetIdleConnected(AValue: boolean);
begin
if FIdleConnected=AValue then Exit;
FIdleConnected:=AValue;
if IdleConnected then
Application.AddOnIdleHandler(@OnIdle)
else
Application.RemoveOnIdleHandler(@OnIdle);
end;
procedure TFPDocFileSearchDialog.FillScope;
var
PkgsNode: TTreeNode;
i: Integer;
Pkg: TLazPackage;
begin
ScopeTreeView.Items.BeginUpdate;
ScopeTreeView.Items.Clear;
// packages with fpdoc
PkgsNode:=ScopeTreeView.Items.Add(nil,'Packages');
for i:=0 to PackageGraph.Count-1 do begin
Pkg:=PackageGraph[i];
if Pkg.FPDocPaths='' then continue;
ScopeTreeView.Items.AddChild(PkgsNode,Pkg.Name);
end;
PkgsNode.Expanded:=true;
ScopeTreeView.Items.EndUpdate;
end;
end.
|