summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--UConfig.pas8
-rw-r--r--UCore.pas4
-rw-r--r--USearch.pas63
3 files changed, 68 insertions, 7 deletions
diff --git a/UConfig.pas b/UConfig.pas
index f31394f..760d811 100644
--- a/UConfig.pas
+++ b/UConfig.pas
@@ -341,6 +341,10 @@ begin
if i > 0 then
for j := 0 to i - 1 do
SearchHistory.Add(IniFile.ReadString('SearchHistory', Format('Item%d', [j]), ''));
+ i := IniFile.ReadInteger('SearchTextHistory', 'NumItems', 0);
+ if i > 0 then
+ for j := 0 to i - 1 do
+ SearchTextHistory.Add(IniFile.ReadString('SearchTextHistory', Format('Item%d', [j]), ''));
end;
ConfShowMounterBar := IniFile.ReadInteger(ConfProfileName, 'ShowMounterBar', ConfShowMounterBar);
ConfSearchFilterCaseSensitive := IniFile.ReadBool(ConfProfileName, 'SearchFilterCaseSensitive', ConfSearchFilterCaseSensitive);
@@ -395,6 +399,7 @@ begin
IniFile.WriteInteger('CommandLineHistory', 'NumItems', CommandLineHistory.Count);
IniFile.WriteInteger('SelectHistory', 'NumItems', SelectHistory.Count);
IniFile.WriteInteger('SearchHistory', 'NumItems', SearchHistory.Count);
+ IniFile.WriteInteger('SearchTextHistory', 'NumItems', SearchTextHistory.Count);
if CommandLineHistory.Count > 0 then
for i := 0 to CommandLineHistory.Count - 1 do
IniFile.WriteString('CommandLineHistory', Format('Item%d', [i]), CommandLineHistory[i]);
@@ -404,6 +409,9 @@ begin
if SearchHistory.Count > 0 then
for i := 0 to SearchHistory.Count - 1 do
IniFile.WriteString('SearchHistory', Format('Item%d', [i]), SearchHistory[i]);
+ if SearchTextHistory.Count > 0 then
+ for i := 0 to SearchTextHistory.Count - 1 do
+ IniFile.WriteString('SearchTextHistory', Format('Item%d', [i]), SearchTextHistory[i]);
IniFile.WriteInteger(ConfProfileName, 'ShowMounterBar', ConfShowMounterBar);
IniFile.WriteBool(ConfProfileName, 'SearchFilterCaseSensitive', ConfSearchFilterCaseSensitive);
IniFile.WriteBool(ConfProfileName, 'SearchOtherFS', ConfSearchOtherFS);
diff --git a/UCore.pas b/UCore.pas
index afe8b10..b69b055 100644
--- a/UCore.pas
+++ b/UCore.pas
@@ -252,7 +252,7 @@ var LeftLocalEngine, RightLocalEngine: TPanelEngine;
LeftTabSortTypes, RightTabSortTypes: TList;
FMainEscPressed: boolean;
UsedTempPaths: TStringList;
- SelectHistory, SearchHistory: TStringList;
+ SelectHistory, SearchHistory, SearchTextHistory: TStringList;
QuickConnectHistory: TStringList;
(********************************************************************************************************************************)
@@ -3057,6 +3057,7 @@ initialization
UsedTempPaths := TStringList.Create;
SelectHistory := TStringList.Create;
SearchHistory := TStringList.Create;
+ SearchTextHistory := TStringList.Create;
finalization
ClearListData(LeftPanelData);
ClearListData(RightPanelData);
@@ -3075,4 +3076,5 @@ finalization
UsedTempPaths.Free;
SelectHistory.Free;
SearchHistory.Free;
+ SearchTextHistory.Free;
end.
diff --git a/USearch.pas b/USearch.pas
index 6fe837d..3585600 100644
--- a/USearch.pas
+++ b/USearch.pas
@@ -38,8 +38,8 @@ type
Table1, Table2: TGTKTable;
ResultsLabel, StatusLabel: TGTKLabel;
Label1, Label2, Label3, Label4, Label5, Label6: TGTKLabel;
- FileMaskEntry: TGTKCombo;
- SearchInEntry, FindTextEntry: TGTKEntry;
+ FileMaskEntry, FindTextEntry: TGTKCombo;
+ SearchInEntry: TGTKEntry;
ViewButton, NewSearchButton, GoToFileButton, FeedToListboxButton: TGTKButton;
SearchArchivesCheckButton, CaseSensitiveCheckButton, StayCurrentFSCheckButton, CaseSensitiveMatchCheckButton: TGTKCheckButton;
FindButton, StopButton, CloseButton: TGTKButton;
@@ -65,6 +65,7 @@ type
procedure GoToFileButtonClick(Sender: TObject);
procedure FileListDblClick(Sender: TObject; Button: TGDKMouseButton; Shift: TShiftState; X, Y: Integer; var Accept: boolean);
procedure FileMaskEntryKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean);
+ procedure FindTextEntryKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean);
private
Processing, Stop, FUseGnomeWidgets: boolean;
SavedData: string;
@@ -187,9 +188,14 @@ begin
Label3.XAlign := 0;
Label3.XPadding := 0;
Label3.Caption := LANGSearch_FindText;
- FindTextEntry := TGTKEntry.Create(Self);
+ FindTextEntry := TGTKCombo.Create(Self);
FindTextEntry.Tooltip := LANGSearch_FindTextEntryTooltip;
- Label3.FocusControl := FindTextEntry;
+ FindTextEntry.Entry.OnKeyDown := FindTextEntryKeyDown;
+ if SearchTextHistory.Count > 0 then
+ for i := 0 to SearchTextHistory.Count - 1 do
+ FindTextEntry.Items.Append(SearchTextHistory[i]);
+ FindTextEntry.Entry.Text := '';
+ Label3.FocusControl := FindTextEntry.Entry;
Label3.UseMarkup := True;
Label3.UseUnderline := True;
CaseSensitiveCheckButton := TGTKCheckButton.CreateWithLabel(Self, LANGSearch_CaseSensitiveCheckButton);
@@ -488,6 +494,17 @@ begin
FileMaskEntry.Items.Append(SearchHistory[i]);
end;
+ s := Trim(FindTextEntry.Entry.Text);
+ if Length(s) > 0 then begin
+ SaveItemToHistory(s, SearchTextHistory);
+ if FindTextEntry.Items.Count > 0 then
+ for i := FindTextEntry.Items.Count - 1 downto 0 do
+ FindTextEntry.Items.Delete(i);
+ if SearchTextHistory.Count > 0 then
+ for i := 0 to SearchTextHistory.Count - 1 do
+ FindTextEntry.Items.Append(SearchTextHistory[i]);
+ end;
+
DoSearch;
end;
@@ -639,6 +656,40 @@ begin
end;
end;
+procedure TFSearch.FindTextEntryKeyDown(Sender: TObject; Key: Word; Shift: TShiftState; var Accept: boolean);
+var Orig, s: string;
+ i: integer;
+begin
+ case Key of
+ GDK_UP, GDK_DOWN: if Shift = [] then begin
+ Accept := False;
+ if SearchTextHistory.Count > 0 then begin
+ Orig := Trim(FindTextEntry.Entry.Text);
+ i := SearchTextHistory.IndexOf(Orig);
+
+ if Key = GDK_DOWN then begin
+ if i < 0 then begin
+ SavedData := Orig;
+ i := 0;
+ end else
+ if SearchTextHistory.Count > i + 1 then Inc(i);
+ s := SearchTextHistory[i];
+ end else begin
+ if i < 0 then Exit else
+ if i = 0 then begin
+ s := SavedData;
+ SavedData := '';
+ end else
+ if SearchTextHistory.Count > i then s := SearchTextHistory[i - 1];
+ end;
+
+ FindTextEntry.Entry.Text := s;
+ FindTextEntry.Entry.SetFocus;
+ FindTextEntry.Entry.SelectAll;
+ end;
+ end;
+ end;
+end;
(********************************************************************************************************************************)
@@ -678,7 +729,7 @@ begin
with FSearchThread do begin
FStartPath := UTF8ToStr(SearchInEntry.Text);
FFileMask := UTF8ToStr(FileMaskEntry.Entry.Text);
- FStringFind := FindTextEntry.Text;
+ FStringFind := FindTextEntry.Entry.Text;
FDontLeaveFS := not StayCurrentFSCheckButton.Checked;
FCaseSensitiveMask := CaseSensitiveMatchCheckButton.Checked;
FCaseSensitiveStrings := CaseSensitiveCheckButton.Checked;
@@ -991,7 +1042,7 @@ begin
end else Pos := 1;
end;
- DebugMsg(['Read : ', Read, ' bytes.']);
+// DebugMsg(['Read : ', Read, ' bytes.']);
if CancelIt then Break;
until Read < BlockSize;
FEngine.CloseFile(fd);