diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-09-23 17:10:06 +0200 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2009-09-23 17:10:06 +0200 |
| commit | fed8b5e89cbdbaa7a9ea5427e6580ccf40409e57 (patch) | |
| tree | 8d216d8ac165cf26f9b0adc7cf801951ccbc9dbf /USearch.pas | |
| parent | f790fca808d7fa61f7a4444d529485d4163dbff9 (diff) | |
| download | tuxcmd-fed8b5e89cbdbaa7a9ea5427e6580ccf40409e57.tar.xz | |
Implement find text combo history in Search dialog
Diffstat (limited to 'USearch.pas')
| -rw-r--r-- | USearch.pas | 63 |
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); |
