Find In Files dialog: options are now saved

git-svn-id: trunk@5383 -
This commit is contained in:
mattias 2004-04-09 11:13:25 +00:00
parent 857fa012a6
commit bab39ff4ab
6 changed files with 79 additions and 49 deletions

View File

@ -24,14 +24,8 @@ interface
uses
Classes, SysUtils, LCLIntf, Controls, StdCtrls, Forms, Buttons, ExtCtrls,
LResources, FileCtrl, LazarusIDEStrConsts, Dialogs, SynEditTypes;
type
TLazFindInFileSearchOption = (fifMatchCase, fifWholeWord, fifRegExpr,
fifSearchProject, fifSearchOpen, fifSearchFiles,
fifIncludeSubDirs);
TLazFindInFileSearchOptions = set of TLazFindInFileSearchOption;
LResources, FileCtrl, LazarusIDEStrConsts, Dialogs, SynEditTypes,
InputHistory;
type
TLazFindInFilesDialog = class(TForm)
@ -66,8 +60,8 @@ type
procedure SetFindText(const NewFindText: string);
public
constructor Create(AOwner:TComponent); override;
property Options:TLazFindInFileSearchOptions read GetOptions
write SetOptions;
property Options: TLazFindInFileSearchOptions read GetOptions
write SetOptions;
property FindText: string read GetFindText write SetFindText;
property SynSearchOptions: TSynSearchOptions read GetSynOptions
write SetSynOptions;
@ -358,14 +352,14 @@ end;
procedure TLazFindInFilesDialog.WhereRadioGroupClick(Sender: TObject);
begin
DirectoryOptionsGroupBox.Enabled:= (WhereRadioGroup.ItemIndex = 2)
end;//WhereRaidoGroupClick
end;
procedure TLazFindInFilesDialog.DirectoryBrowseClick(Sender: TObject);
begin
SelectDirectoryDialog.InitialDir:= GetCurrentDir;
if SelectDirectoryDialog.Execute then
DirectoryComboBox.Text:= SelectDirectoryDialog.FileName;
end;//DirectoryBrowseClick
end;
procedure TLazFindInFilesDialog.SetOptions(
NewOptions: TLazFindInFileSearchOptions);
@ -373,11 +367,12 @@ begin
CaseSensitiveCheckBox.Checked:=fifMatchCase in NewOptions;
WholeWordsOnlyCheckBox.Checked:=fifWholeWord in NewOptions;
RegularExpressionsCheckBox.Checked:=fifRegExpr in NewOptions;
IncludeSubDirsCheckBox.Checked:= fifIncludeSubDirs in NewOptions;
DirectoryOptionsGroupBox.Enabled:=fifSearchDirectories in NewOptions;
IncludeSubDirsCheckBox.Checked:=fifIncludeSubDirs in NewOptions;
if fifSearchProject in NewOptions then WhereRadioGroup.ItemIndex:= 0;
if fifSearchOpen in NewOptions then WhereRadioGroup.ItemIndex:= 1;
if fifSearchFiles in NewOptions then WhereRadioGroup.ItemIndex:= 2;
end;//SetOptions
if fifSearchDirectories in NewOptions then WhereRadioGroup.ItemIndex:= 2;
end;
function TLazFindInFilesDialog.GetOptions: TLazFindInFileSearchOptions;
begin
@ -390,9 +385,9 @@ begin
case WhereRadioGroup.ItemIndex of
0: Include(Result,fifSearchProject);
1: Include(Result,fifSearchOpen);
2: Include(Result,fifSearchFiles);
2: Include(Result,fifSearchDirectories);
end;//case
end;//GetOptions
end;
function TLazFindInFilesDialog.GetSynOptions: TSynSearchOptions;
begin

View File

@ -37,7 +37,7 @@ uses
// synedit
SynRegExpr,
// ide
LazarusIDEStrConsts, FindInFilesDlg, SearchResultView;
LazarusIDEStrConsts, InputHistory, FindInFilesDlg, SearchResultView;
type
@ -161,7 +161,7 @@ begin
frecursive:= (fifIncludeSubDirs in TheOptions);
fSearchProject:= (fifSearchProject in TheOptions);
fSearchOpen:= (fifSearchOpen in TheOptions);
fSearchFiles:= (fifSearchFiles in TheOptions);
fSearchFiles:= (fifSearchDirectories in TheOptions);
end;//SetOptions
function TSearchForm.GetOptions: TLazFindInFileSearchOptions;
@ -173,7 +173,7 @@ begin
if fRecursive then include(Result,fifIncludeSubDirs);
if fSearchProject then include(Result, fifSearchProject);
if fSearchOpen then include(Result,fifSearchOpen);
if fSearchFiles then include(Result,fifSearchFiles);
if fSearchFiles then include(Result,fifSearchDirectories);
end;//GetOptions
procedure TSearchForm.DoSearch;

View File

@ -148,6 +148,15 @@ type
{ TInputHistories }
TLazFindInFileSearchOption = (
fifMatchCase, fifWholeWord, fifRegExpr,
fifSearchProject, // search in all project files
fifSearchOpen, // search in all open files in editor
fifSearchDirectories,// search in directories
fifIncludeSubDirs
);
TLazFindInFileSearchOptions = set of TLazFindInFileSearchOption;
TInputHistories = class
private
FDiffFlags: TTextDiffFlags;
@ -158,11 +167,10 @@ type
// Find- and replace-history
FFindHistory: TStringList;
FFindInFilesSearchOptions: TLazFindInFileSearchOptions;
FReplaceHistory: TStringList;
FFindInFilesPathHistory: TStringList;
FFindInFilesMaskHistory: TStringList;
FFindInFilesWhere : Integer;
FFindInFilesSubDirs : boolean;
FMaxFindHistory: Integer;
// Unit dependencies
@ -204,17 +212,18 @@ type
procedure ApplyFileDialogSettings(DestDialog: TFileDialog);
procedure StoreFileDialogSettings(SourceDialog: TFileDialog);
public
property Filename: string read FFilename write SetFilename;
// Find- and replace-history
property MaxFindHistory: Integer read FMaxFindHistory write FMaxFindHistory;
property FindHistory: TStringList read FFindHistory write FFindHistory;
property ReplaceHistory: TStringList read FReplaceHistory write FReplaceHistory;
property FindInFilesPathHistory: TStringList read FFindInFilesPathHistory
write FFindInFilesPathHistory;
property FindInFilesMaskHistory: TStringList read FFindInFilesMaskHistory
write FFindInFilesMaskHistory;
property MaxFindHistory: Integer read FMaxFindHistory write FMaxFindHistory;
property FindInFilesWhere: Integer read FFindInFilesWhere write FFindInFilesWhere;
property FindInFilesSubDirs: Boolean read FFindInFilesSubDirs write FFindInFilesSubDirs;
property Filename: string read FFilename write SetFilename;
property FindInFilesSearchOptions: TLazFindInFileSearchOptions
read FFindInFilesSearchOptions write FFindInFilesSearchOptions;
// Unit dependencies
property UnitDependenciesHistory: TStringList read FUnitDependenciesHistory;
@ -238,6 +247,18 @@ type
write FDiffText2OnlySelection;
end;
const
LazFindInFileSearchOptionsDefault = [fifSearchOpen];
LazFindInFileSearchOptionNames: array[TLazFindInFileSearchOption] of string =(
'MatchCase',
'WholeWord',
'RegExpr',
'SearchProject',
'SearchOpen',
'SearchDirectories',
'IncludeSubDirs'
);
var
InputHistories: TInputHistories;
@ -261,13 +282,16 @@ end;
constructor TInputHistories.Create;
begin
inherited Create;
FFilename:='';
// Find- and replace-history
FMaxFindHistory:=20;
FFindHistory:=TStringList.Create;
FReplaceHistory:=TStringList.Create;
FFindInFilesPathHistory:=TStringList.Create;
FFindInFilesMaskHistory:=TStringList.Create;
FMaxFindHistory:=20;
FFindInFilesSearchOptions:=LazFindInFileSearchOptionsDefault;
// unit dependencies
FUnitDependenciesHistory:=TStringList.Create;
FMaxUnitDependenciesHistory:=20;
@ -281,7 +305,6 @@ begin
FFPCConfigCache:=TFPCConfigCache.Create;
FFilename:='';
Clear;
end;
@ -321,6 +344,7 @@ procedure TInputHistories.LoadFromXMLConfig(XMLConfig: TXMLConfig;
const Path: string);
var
DiffFlag: TTextDiffFlag;
FIFOption: TLazFindInFileSearchOption;
begin
// Find- and replace-history
fMaxFindHistory:=XMLConfig.GetValue(Path+'Find/History/Max',FMaxFindHistory);
@ -330,9 +354,16 @@ begin
'FindInFiles/History/Paths/');
LoadRecentList(XMLConfig,FFindInFilesMaskHistory,Path+
'FindInFiles/History/Masks/');
FFindInFilesWhere:=XMLConfig.GetValue(Path+'FindInFiles/Where',FFindInFilesWhere);
FFIndInFilesSubDirs:=
XMLConfig.GetValue(Path+'FindInFiles/SubDirs',false);
FFindInFilesSearchOptions:=[];
for FIFOption:=Low(TLazFindInFileSearchOption)
to High(TLazFindInFileSearchOption) do begin
if XMLConfig.GetValue(
Path+'FindInFiles/Options/'+LazFindInFileSearchOptionNames[FIFOption],
FIFOption in LazFindInFileSearchOptionsDefault)
then
Include(FFindInFilesSearchOptions,FIFOption);
end;
// unit dependencies
LoadRecentList(XMLConfig,FUnitDependenciesHistory,Path+'UnitDependencies/History/');
// fpc config cache
@ -365,6 +396,7 @@ procedure TInputHistories.SaveToXMLConfig(XMLConfig: TXMLConfig;
const Path: string);
var
DiffFlag: TTextDiffFlag;
FIFOption: TLazFindInFileSearchOption;
begin
// Find- and replace-history
XMLConfig.SetDeleteValue(Path+'Find/History/Max',FMaxFindHistory,20);
@ -374,9 +406,14 @@ begin
'FindInFiles/History/Paths/');
SaveRecentList(XMLConfig,FFindInFilesMaskHistory,Path+
'FindInFiles/History/Masks/');
XMLConfig.SetDeleteValue(Path+'FindInFiles/Where',FFindInFilesWhere,0);
XMLConfig.SetDeleteValue(Path+'FindInFiles/SubDirs',
FFindInFilesSubDirs,false);
for FIFOption:=Low(TLazFindInFileSearchOption)
to High(TLazFindInFileSearchOption) do begin
XMLConfig.SetDeleteValue(
Path+'FindInFiles/Options/'+LazFindInFileSearchOptionNames[FIFOption],
FIFOption in FindInFilesSearchOptions,
FIFOption in LazFindInFileSearchOptionsDefault);
end;
// unit dependencies
SaveRecentList(XMLConfig,FUnitDependenciesHistory,Path+'UnitDependencies/History/');
// fpc config cache

View File

@ -1811,7 +1811,7 @@ resourcestring
lisFindFilesearchAllOpenFiles = 'search all open files';
lisFindFilesearchInDirectories = 'search in directories';
lisFindFileDirectoryOptions = 'Directory options';
lisFindFileFileMaskBak = 'File mask (*, *.*, *.bak?)';
lisFindFileFileMaskBak = 'File mask (*;*.*;*.bak?)';
lisFindFileIncludeSubDirectories = 'Include sub directories';
lisFindFileOnlyTextFiles = 'Only text files';

View File

@ -39,7 +39,8 @@ interface
uses
Classes, SysUtils, Math, LResources, Forms, Controls, Graphics, Dialogs,
ComCtrls, ExtCtrls, StdCtrls, Buttons, LCLType,
IDEOptionDefs, LazarusIDEStrConsts, EnvironmentOpts, FindInFilesDlg, Project;
IDEOptionDefs, LazarusIDEStrConsts, EnvironmentOpts, InputHistory,
FindInFilesDlg, Project;
{TLazSearchMatchPos}

View File

@ -3414,12 +3414,10 @@ begin
TextToFindComboBox.Items.Assign(InputHistories.FindHistory);
DirectoryComboBox.Items.Assign(InputHistories.FindInFilesPathHistory);
FileMaskComboBox.Items.Assign(InputHistories.FindInFilesMaskHistory);
WhereRadioGroup.ItemIndex:=InputHistories.FindInFilesWhere;
IncludeSubDirsCheckBox.Checked:=InputHistories.FindInFilesSubDirs;
DirectoryOptionsGroupBox.Enabled:= (WhereRadioGroup.ItemIndex = 2);
end;//With
end;//if
end;//LoadFindInFilesHistory
Options:=InputHistories.FindInFilesSearchOptions;
end;
end;
end;
procedure TSourceNoteBook.SaveFindInFilesHistory(ADialog: TLazFindInFilesDialog);
begin
@ -3430,12 +3428,11 @@ begin
InputHistories.AddToFindHistory(FindText);
InputHistories.AddToFindInFilesPathHistory(DirectoryComboBox.Text);
InputHistories.AddToFindInFilesMaskHistory(FileMaskComboBox.Text);
InputHistories.FindInFilesWhere:=WhereRadioGroup.ItemIndex;
InputHistories.FindInFilesSubDirs:=IncludeSubDirsCheckBox.Checked;
end;//with
InputHistories.FindInFilesSearchOptions:=Options;
end;
InputHistories.Save;
end;//if
end;//SaveFindInFilesHistory
end;
end;
{Search All the files in a project and add the results to the SearchResultsView
Dialog}
@ -3586,7 +3583,7 @@ Begin
end;//if
end;//if
IDEDialogLayoutList.SaveLayout(FindInFilesDialog);
End;//FindInFilesClicked
End;
procedure TSourceNotebook.ShowSearchResultsView;
begin