mirror of
				https://gitlab.com/freepascal.org/lazarus/lazarus.git
				synced 2025-11-04 13:29:26 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
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.
 | 
						|
 |