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 | |
| parent | f790fca808d7fa61f7a4444d529485d4163dbff9 (diff) | |
| download | tuxcmd-fed8b5e89cbdbaa7a9ea5427e6580ccf40409e57.tar.xz | |
Implement find text combo history in Search dialog
| -rw-r--r-- | UConfig.pas | 8 | ||||
| -rw-r--r-- | UCore.pas | 4 | ||||
| -rw-r--r-- | USearch.pas | 63 |
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); @@ -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); |
