summaryrefslogtreecommitdiff
path: root/USearch.pas
diff options
context:
space:
mode:
Diffstat (limited to 'USearch.pas')
-rw-r--r--USearch.pas63
1 files changed, 57 insertions, 6 deletions
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);