Changeset 98 for trunk/NewView/GlobalSearchForm.pas
- Timestamp:
- Mar 17, 2007, 9:50:38 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NewView/GlobalSearchForm.pas
r94 r98 71 71 Procedure ResultsOutlineOnEnter (Sender: TObject); 72 72 Procedure SearchTextEditOnEnter (Sender: TObject); 73 Procedure ViewHelpPathsButtonOnClick (Sender: TObject);74 73 Procedure SelectDrivesButtonOnClick (Sender: TObject); 75 74 Procedure GlobalSearchFormOnSetupShow (Sender: TObject); … … 197 196 End; 198 197 199 Procedure TGlobalSearchForm.ViewHelpPathsButtonOnClick (Sender: TObject); 200 var 201 Dirs: TStringList; 202 Begin 203 Dirs := TStringList.Create; 204 205 with InformationForm.InformationMemo do 206 begin 207 Lines.Clear; 208 209 Lines.Add( 'HELP:' ); 210 GetDirsInPath( 'HELP', Dirs ); 211 Lines.AddStrings( Dirs ); 212 213 Lines.Add( '' ); 214 Lines.Add( 'BOOKSHELF:' ); 215 GetDirsInPath( 'BOOKSHELF', Dirs ); 216 Lines.AddStrings( Dirs ); 217 end; 218 InformationForm.ShowModal; 219 220 Dirs.Destroy; 221 End; 222 223 Procedure TGlobalSearchForm.GetSelectedDirectories( List: TStringList ); 198 199 Procedure TGlobalSearchForm.GetSelectedDirectories(List: TStringList); 224 200 Var 201 tmpDirectories : TStringList; 202 225 203 DriveNumber: longint; 226 204 DriveType: TDriveType; 227 205 DriveLetter: char; 228 Dirs: TStringList;229 206 i: longint; 230 207 Dir: string; … … 242 219 Ord( gsSelectedHelpPaths ): // standard or selected help paths 243 220 Begin 244 Dirs := TStringList.Create;221 tmpDirectories := TStringList.Create; 245 222 List.Sorted := true; 246 223 List.Duplicates := dupIgnore; 247 224 248 GetDirsInPath( 'HELP', Dirs ); 249 List.AddStrings( Dirs ); 250 251 GetDirsInPath( 'BOOKSHELF', Dirs ); 252 List.AddStrings( Dirs ); 253 254 Dirs.Destroy; 255 225 // GetDirsInPath clears the list tmpDirectories 226 GetDirsInPath(HelpPathEnvironmentVar, tmpDirectories); 227 List.AddStrings(tmpDirectories); 228 229 GetDirsInPath(BookshelfEnvironmentVar, tmpDirectories); 230 List.AddStrings(tmpDirectories); 231 232 tmpDirectories.Destroy; 233 234 // for selected paths we have to adjust the selection 256 235 if SearchLocationComboBox.ItemIndex = Ord( gsSelectedHelpPaths ) then 257 236 begin … … 259 238 for i := 0 to List.Count - 1 do 260 239 begin 261 Dir := List[ i];240 Dir := List[i]; 262 241 if not Settings.SearchDirectories.Find( Dir, FoundIndex ) then 263 List.Objects[ i ] := pointer( 1);242 List.Objects[i] := pointer(1); 264 243 end; 265 244 end; 266 245 end; 246 267 247 268 248 Ord( gsFixedDrives ): … … 284 264 begin 285 265 // already custom... 286 List.Assign( Settings.SearchDirectories);266 List.Assign(Settings.SearchDirectories); 287 267 end; 288 268 end; … … 290 270 291 271 Procedure TGlobalSearchForm.SelectDrivesButtonOnClick (Sender: TObject); 292 Begin293 GetSelectedDirectories( SearchDirectoriesForm.SelectedFolders);272 begin 273 GetSelectedDirectories(SearchDirectoriesForm.SelectedFolders); 294 274 295 275 SearchDirectoriesForm.ShowModal; … … 297 277 exit; 298 278 279 // there was a selection, so we have to change the dropdown 299 280 if SearchLocationComboBox.ItemIndex = Ord( gsHelpPaths ) then 300 281 SearchLocationComboBox.ItemIndex := Ord( gsSelectedHelpPaths ); … … 306 287 SearchLocationComboBox.ItemIndex := Ord( gsCustom ); 307 288 289 // update the settings 308 290 Settings.SearchDirectories.Assign( SearchDirectoriesForm.SelectedFolders ); 309 310 291 SaveSettings; 311 292 End; … … 477 458 Function TGlobalSearchForm.Search( Parameters: TObject ): TObject; 478 459 var 479 Files : TStringList;460 Files : TStringList; 480 461 FileIndex: longint; 481 462 Filename: string; … … 484 465 MatchingTopics: TList; 485 466 486 SearchParameters: TSearchParameters;467 tmpSearchParameters : TSearchParameters; 487 468 Query: TTextSearchQuery; 488 469 i: longint; … … 490 471 491 472 Begin 492 // StartProfile( GetLogFilesDir + 'NewViewSearch.prf' ); 493 494 SearchParameters := Parameters as TSearchParameters; 495 496 Query := SearchParameters.Query; 473 tmpSearchParameters := Parameters as TSearchParameters; 474 475 Query := tmpSearchParameters.Query; 497 476 Files := TStringList.Create; 498 477 499 // MatchingTopics.Add( nil ); // artificial crash500 478 MatchingTopics := TList.Create; 501 502 LogEvent(LogParse, 'Getting files'); 479 LogEvent(LogParse, 'Creating file list'); 503 480 504 481 // make sure we ignore duplicate files... … … 507 484 Files.Duplicates := dupIgnore; 508 485 509 for i := 0 to SearchParameters.Directories.Count - 1 do486 for i := 0 to tmpSearchParameters.Directories.Count - 1 do 510 487 begin 511 488 if ThreadManager.StopRequested then 489 begin 512 490 break; 513 ThreadManager.UpdateProgress( i * 10 div SearchParameters.Directories.Count, 491 end; 492 493 ThreadManager.UpdateProgress( i * 10 div tmpSearchParameters.Directories.Count, 514 494 100, 515 495 ScanDirectoriesMsg ); 516 Dir := SearchParameters.Directories[ i ];496 Dir := tmpSearchParameters.Directories[ i ]; 517 497 if StrEnds( '...', Dir ) then 518 498 begin … … 521 501 Dir, 522 502 '*.inf;*.hlp', 503 true, 523 504 Files, 524 505 ThreadManager.StopRequested, … … 527 508 else 528 509 begin 529 ListFilesInDirectory( Dir, 530 '*.inf;*.hlp', 531 Files); 532 end; 533 end; 534 535 LogEvent(LogParse, ' Searching ' + IntToStr( Files.Count ) + ' files'); 510 ListFilesInDirectory( Dir, '*.inf;*.hlp', true, Files); 511 end; 512 end; 513 536 514 for FileIndex := 0 to Files.Count - 1 do 537 515 begin 538 516 if ThreadManager.StopRequested then 517 begin 539 518 break; 540 Filename := Files[ FileIndex ]; 541 LogEvent(LogParse, Filename); 519 end; 520 521 Filename := Files[FileIndex]; 522 542 523 ThreadManager.UpdateProgress( 10 + FileIndex * 95 div Files.Count, 543 524 100, … … 551 532 552 533 try 553 LogEvent(LogParse, ' Create THelpFile');554 534 HelpFile := THelpFile.Create( FileName ); 555 556 LogEvent(LogParse, ' Helpfile created');557 535 MatchingTopics.Clear; 558 559 LogEvent(LogParse, ' Search file');560 536 SearchHelpFile( HelpFile, 561 537 Query, … … 566 542 if MatchingTopics.Count > 0 then 567 543 begin 568 LogEvent(LogParse, ' Sort results');569 544 // Create a searchresult object to send back to main thread. 570 545 SearchResult := TSearchResult.Create; … … 575 550 576 551 SearchResult.MatchingTopics.Sort( TopicRelevanceCompare ); 577 LogEvent(LogParse, ' Display results');578 579 552 ThreadManager.SendData( '', SearchResult ); 580 553 end; 581 554 582 LogEvent(LogParse, 'Unload helpfile');583 555 HelpFile.Destroy; 584 556 … … 596 568 597 569 end; 598 LogEvent(LogParse, 'search completed');599 570 ThreadManager.UpdateProgress( 100, 100, DoneMsg ); 600 571 Files.Destroy; … … 602 573 Query.Destroy; 603 574 604 SearchParameters.Directories.Destroy;605 SearchParameters.Destroy;575 tmpSearchParameters.Directories.Destroy; 576 tmpSearchParameters.Destroy; 606 577 607 578 Result := nil; 608 LogEvent(LogParse, 'done');609 579 End; 610 580 … … 626 596 Procedure TGlobalSearchForm.DoSearch; 627 597 var 598 tmpSelectedDirectories : TStringList; 599 i : integer; 600 628 601 SearchText: string; 629 602 Query: TTextSearchQuery; … … 641 614 642 615 try 643 Query := TTextSearchQuery.Create( SearchText);616 Query := TTextSearchQuery.Create(SearchText); 644 617 except 645 618 on e: ESearchSyntaxError do … … 655 628 656 629 SearchParameters := TSearchParameters.Create; 630 631 SearchParameters.Query := Query; 632 633 // now the directories to search in 657 634 SearchParameters.Directories := TStringList.Create; 658 635 659 SearchParameters.Query := Query; 660 661 GetSelectedDirectories( SearchParameters.Directories ); 636 tmpSelectedDirectories := TStringList.Create; 637 GetSelectedDirectories(tmpSelectedDirectories); 638 639 // clear the list and add only the selected ones 640 for i := 0 to tmpSelectedDirectories.Count - 1 do 641 begin 642 if tmpSelectedDirectories.Objects[i] = nil then 643 begin 644 SearchParameters.Directories.add(tmpSelectedDirectories[i]); 645 end; 646 end; 647 tmpSelectedDirectories.Destroy; 662 648 663 649 ThreadManager.StartJob( Search, SearchParameters );
Note:
See TracChangeset
for help on using the changeset viewer.