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 uses
Classes, SysUtils, LCLIntf, Controls, StdCtrls, Forms, Buttons, ExtCtrls, Classes, SysUtils, LCLIntf, Controls, StdCtrls, Forms, Buttons, ExtCtrls,
LResources, FileCtrl, LazarusIDEStrConsts, Dialogs, SynEditTypes; LResources, FileCtrl, LazarusIDEStrConsts, Dialogs, SynEditTypes,
InputHistory;
type
TLazFindInFileSearchOption = (fifMatchCase, fifWholeWord, fifRegExpr,
fifSearchProject, fifSearchOpen, fifSearchFiles,
fifIncludeSubDirs);
TLazFindInFileSearchOptions = set of TLazFindInFileSearchOption;
type type
TLazFindInFilesDialog = class(TForm) TLazFindInFilesDialog = class(TForm)
@ -358,14 +352,14 @@ end;
procedure TLazFindInFilesDialog.WhereRadioGroupClick(Sender: TObject); procedure TLazFindInFilesDialog.WhereRadioGroupClick(Sender: TObject);
begin begin
DirectoryOptionsGroupBox.Enabled:= (WhereRadioGroup.ItemIndex = 2) DirectoryOptionsGroupBox.Enabled:= (WhereRadioGroup.ItemIndex = 2)
end;//WhereRaidoGroupClick end;
procedure TLazFindInFilesDialog.DirectoryBrowseClick(Sender: TObject); procedure TLazFindInFilesDialog.DirectoryBrowseClick(Sender: TObject);
begin begin
SelectDirectoryDialog.InitialDir:= GetCurrentDir; SelectDirectoryDialog.InitialDir:= GetCurrentDir;
if SelectDirectoryDialog.Execute then if SelectDirectoryDialog.Execute then
DirectoryComboBox.Text:= SelectDirectoryDialog.FileName; DirectoryComboBox.Text:= SelectDirectoryDialog.FileName;
end;//DirectoryBrowseClick end;
procedure TLazFindInFilesDialog.SetOptions( procedure TLazFindInFilesDialog.SetOptions(
NewOptions: TLazFindInFileSearchOptions); NewOptions: TLazFindInFileSearchOptions);
@ -373,11 +367,12 @@ begin
CaseSensitiveCheckBox.Checked:=fifMatchCase in NewOptions; CaseSensitiveCheckBox.Checked:=fifMatchCase in NewOptions;
WholeWordsOnlyCheckBox.Checked:=fifWholeWord in NewOptions; WholeWordsOnlyCheckBox.Checked:=fifWholeWord in NewOptions;
RegularExpressionsCheckBox.Checked:=fifRegExpr in NewOptions; RegularExpressionsCheckBox.Checked:=fifRegExpr in NewOptions;
DirectoryOptionsGroupBox.Enabled:=fifSearchDirectories in NewOptions;
IncludeSubDirsCheckBox.Checked:=fifIncludeSubDirs in NewOptions; IncludeSubDirsCheckBox.Checked:=fifIncludeSubDirs in NewOptions;
if fifSearchProject in NewOptions then WhereRadioGroup.ItemIndex:= 0; if fifSearchProject in NewOptions then WhereRadioGroup.ItemIndex:= 0;
if fifSearchOpen in NewOptions then WhereRadioGroup.ItemIndex:= 1; if fifSearchOpen in NewOptions then WhereRadioGroup.ItemIndex:= 1;
if fifSearchFiles in NewOptions then WhereRadioGroup.ItemIndex:= 2; if fifSearchDirectories in NewOptions then WhereRadioGroup.ItemIndex:= 2;
end;//SetOptions end;
function TLazFindInFilesDialog.GetOptions: TLazFindInFileSearchOptions; function TLazFindInFilesDialog.GetOptions: TLazFindInFileSearchOptions;
begin begin
@ -390,9 +385,9 @@ begin
case WhereRadioGroup.ItemIndex of case WhereRadioGroup.ItemIndex of
0: Include(Result,fifSearchProject); 0: Include(Result,fifSearchProject);
1: Include(Result,fifSearchOpen); 1: Include(Result,fifSearchOpen);
2: Include(Result,fifSearchFiles); 2: Include(Result,fifSearchDirectories);
end;//case end;//case
end;//GetOptions end;
function TLazFindInFilesDialog.GetSynOptions: TSynSearchOptions; function TLazFindInFilesDialog.GetSynOptions: TSynSearchOptions;
begin begin

View File

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

View File

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

View File

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

View File

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

View File

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