~ubuntu-branches/ubuntu/saucy/lazarus/saucy

« back to all changes in this revision

Viewing changes to ide/findinfilesdlg.pas

  • Committer: Package Import Robot
  • Author(s): Paul Gevers, Abou Al Montacir, Bart Martens, Paul Gevers
  • Date: 2013-06-08 14:12:17 UTC
  • mfrom: (1.1.9)
  • Revision ID: package-import@ubuntu.com-20130608141217-7k0cy9id8ifcnutc
Tags: 1.0.8+dfsg-1
[ Abou Al Montacir ]
* New upstream major release and multiple maintenace release offering many
  fixes and new features marking a new milestone for the Lazarus development
  and its stability level.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_fixes_branch
* LCL changes:
  - LCL is now a normal package.
      + Platform independent parts of the LCL are now in the package LCLBase
      + LCL is automatically recompiled when switching the target platform,
        unless pre-compiled binaries for this target are already installed.
      + No impact on existing projects.
      + Linker options needed by LCL are no more added to projects that do
        not use the LCL package.
  - Minor changes in LCL basic classes behaviour
      + TCustomForm.Create raises an exception if a form resource is not
        found.
      + TNotebook and TPage: a new implementation of these classes was added.
      + TDBNavigator: It is now possible to have focusable buttons by setting
        Options = [navFocusableButtons] and TabStop = True, useful for
        accessibility and for devices with neither mouse nor touch screen.
      + Names of TControlBorderSpacing.GetSideSpace and GetSpace were swapped
        and are now consistent. GetSideSpace = Around + GetSpace.
      + TForm.WindowState=wsFullscreen was added
      + TCanvas.TextFitInfo was added to calculate how many characters will
        fit into a specified Width. Useful for word-wrapping calculations.
      + TControl.GetColorResolvingParent and
        TControl.GetRGBColorResolvingParent were added, simplifying the work
        to obtain the final color of the control while resolving clDefault
        and the ParentColor.
      + LCLIntf.GetTextExtentExPoint now has a good default implementation
        which works in any platform not providing a specific implementation.
        However, Widgetset specific implementation is better, when available.
      + TTabControl was reorganized. Now it has the correct class hierarchy
        and inherits from TCustomTabControl as it should.
  - New unit in the LCL:
      + lazdialogs.pas: adds non-native versions of various native dialogs,
        for example TLazOpenDialog, TLazSaveDialog, TLazSelectDirectoryDialog.
        It is used by widgetsets which either do not have a native dialog, or
        do not wish to use it because it is limited. These dialogs can also be
        used by user applications directly.
      + lazdeviceapis.pas: offers an interface to more hardware devices such
        as the accelerometer, GPS, etc. See LazDeviceAPIs
      + lazcanvas.pas: provides a TFPImageCanvas descendent implementing
        drawing in a LCL-compatible way, but 100% in Pascal.
      + lazregions.pas. LazRegions is a wholly Pascal implementation of
        regions for canvas clipping, event clipping, finding in which control
        of a region tree one an event should reach, for drawing polygons, etc.
      + customdrawncontrols.pas, customdrawndrawers.pas,
        customdrawn_common.pas, customdrawn_android.pas and
        customdrawn_winxp.pas: are the Lazarus Custom Drawn Controls -controls
        which imitate the standard LCL ones, but with the difference that they
        are non-native and support skinning.
  - New APIs added to the LCL to improve support of accessibility software
    such as screen readers.
* IDE changes:
  - Many improvments.
  - The detailed list of changes can be found here:
    http://wiki.lazarus.freepascal.org/New_IDE_features_since#v1.0_.282012-08-29.29
    http://wiki.lazarus.freepascal.org/Lazarus_1.0_release_notes#IDE_Changes
* Debugger / Editor changes:
  - Added pascal sources and breakpoints to the disassembler
  - Added threads dialog.
* Components changes:
  - TAChart: many fixes and new features
  - CodeTool: support Delphi style generics and new syntax extensions.
  - AggPas: removed to honor free licencing. (Closes: Bug#708695)
[Bart Martens]
* New debian/watch file fixing issues with upstream RC release.
[Abou Al Montacir]
* Avoid changing files in .pc hidden directory, these are used by quilt for
  internal purpose and could lead to surprises during build.
[Paul Gevers]
* Updated get-orig-source target and it compinion script orig-tar.sh so that they
  repack the source file, allowing bug 708695 to be fixed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
 
25
25
uses
26
26
  Classes, SysUtils, LCLProc, LCLIntf, Controls, StdCtrls, Forms, Buttons,
27
 
  ExtCtrls, FileUtil, LazarusIDEStrConsts, Dialogs, SynEditTypes, MacroIntf,
28
 
  IDEDialogs, IDEWindowIntf, InputHistory, IDEContextHelpEdit, ButtonPanel,
29
 
  SrcEditorIntf, EditorOptions, SearchFrm, Project, SynEdit, SearchResultView;
 
27
  ExtCtrls, FileProcs, LazarusIDEStrConsts, Dialogs, SynEditTypes, ButtonPanel,
 
28
  MacroIntf, IDEWindowIntf, SrcEditorIntf, IDEHelpIntf, IDEDialogs,
 
29
  InputHistory, EditorOptions, SearchFrm, Project, SynEdit, SearchResultView;
30
30
 
31
31
type
32
32
  { TLazFindInFilesDialog }
130
130
    SelectDirectoryDialog.InitialDir := Dir
131
131
  else
132
132
    SelectDirectoryDialog.InitialDir := GetCurrentDirUTF8;
133
 
  if SelectDirectoryDialog.Execute
134
 
  and (CompareFilenames(SelectDirectoryDialog.FileName,Dir)<>0) then begin
135
 
    DirectoryComboBox.Text := SelectDirectoryDialog.FileName;
136
 
  end;
 
133
  if SelectDirectoryDialog.Execute then
 
134
    DirectoryComboBox.Text := AppendPathDelim(TrimFilename(SelectDirectoryDialog.FileName));
137
135
  StoreIDEFileDialog(SelectDirectoryDialog);
138
136
end;
139
137
 
147
145
begin
148
146
  Caption := srkmecFindInFiles;
149
147
 
150
 
  TextToFindLabel.Caption := lisFindFileTextToFind;
151
 
  ReplaceCheckBox.Caption := lisMenuReplace;
 
148
  TextToFindLabel.Caption := dlgTextToFind;
 
149
  ReplaceCheckBox.Caption := dlgReplaceWith;
152
150
 
153
151
  OptionsCheckGroupBox.Caption := dlgFROpts;
154
 
  OptionsCheckGroupBox.Items[0] := lisFindFileCaseSensitive;
155
 
  OptionsCheckGroupBox.Items[1] := lisFindFileWholeWordsOnly;
156
 
  OptionsCheckGroupBox.Items[2] := lisFindFileRegularExpressions;
 
152
  OptionsCheckGroupBox.Items[0] := dlgCaseSensitive;
 
153
  OptionsCheckGroupBox.Items[1] := dlgWholeWordsOnly;
 
154
  OptionsCheckGroupBox.Items[2] := dlgRegularExpressions;
157
155
  OptionsCheckGroupBox.Items[3] := lisFindFileMultiLinePattern;
158
156
 
159
157
  WhereRadioGroup.Caption:=lisFindFileWhere;
162
160
  WhereRadioGroup.Items[2] := lisFindFilesearchInDirectories;
163
161
 
164
162
  DirectoryOptionsGroupBox.Caption := lisFindFileDirectoryOptions;
165
 
  DirectoryLabel.Caption := lisCodeToolsDefsInsertBehindDirectory;
166
 
  FileMaskLabel.Caption := lisFindFileFileMaskBak;
 
163
  DirectoryLabel.Caption := lisFindFileDirectory;
 
164
  FileMaskLabel.Caption := lisFindFileFileMask;
167
165
 
168
166
  IncludeSubDirsCheckBox.Caption := lisFindFileIncludeSubDirectories;
169
167
 
170
 
  ButtonPanel1.OkButton.Caption := lisLazBuildOk;
171
 
  ButtonPanel1.OKButton.OnClick := @OKButtonClick;
172
168
  ButtonPanel1.HelpButton.Caption := lisMenuHelp;
173
 
  ButtonPanel1.HelpButton.OnClick := @HelpButtonClick;
174
 
  ButtonPanel1.CancelButton.Caption := dlgCancel;
 
169
  ButtonPanel1.CancelButton.Caption := lisCancel;
175
170
 
176
171
  ReplaceCheckBox.Enabled:=true;
177
172
 
184
179
 
185
180
procedure TLazFindInFilesDialog.HelpButtonClick(Sender: TObject);
186
181
begin
187
 
  ShowContextHelpForIDE(Self);
 
182
  LazarusHelp.ShowHelpForIDEControl(Self);
188
183
end;
189
184
 
190
185
procedure TLazFindInFilesDialog.OKButtonClick(Sender : TObject);
284
279
      AComboBox.ItemIndex := 0;
285
280
  end;
286
281
 
287
 
  procedure AddFileToComboBox(AComboBox: TComboBox; const Filename: string);
 
282
  procedure AddFileToComboBox(AComboBox: TComboBox; Filename: string);
288
283
  var
289
284
    i: Integer;
290
285
  begin
291
286
    if Filename='' then exit;
 
287
    Filename:=AppendPathDelim(TrimFilename(Filename));
292
288
    for i:=0 to AComboBox.Items.Count-1 do begin
293
289
      if CompareFilenames(Filename,AComboBox.Items[i])=0 then begin
294
290
        // move to front (but not top, top should be the last used directory)
324
320
  AssignToComboBox(DirectoryComboBox, InputHistories.FindInFilesPathHistory);
325
321
  if (SrcEdit<>nil) and (FilenameIsAbsolute(SrcEdit.FileName)) then
326
322
    AddFileToComboBox(DirectoryComboBox, ExtractFilePath(SrcEdit.FileName));
 
323
  if DirectoryComboBox.Items.Count>0 then
 
324
    DirectoryComboBox.Text:=DirectoryComboBox.Items[0];
327
325
  // show last used file masks
328
326
  AssignToComboBox(FileMaskComboBox, InputHistories.FindInFilesMaskHistory);
329
327
  Options := InputHistories.FindInFilesSearchOptions;
330
328
end;
331
329
 
332
330
procedure TLazFindInFilesDialog.SaveHistory;
 
331
var
 
332
  Dir: String;
333
333
begin
334
334
  InputHistories.AddToFindHistory(FindText);
335
 
  InputHistories.AddToFindInFilesPathHistory(DirectoryComboBox.Text);
 
335
  Dir:=AppendPathDelim(TrimFilename(DirectoryComboBox.Text));
 
336
  if Dir<>'' then
 
337
    InputHistories.AddToFindInFilesPathHistory(Dir);
336
338
  InputHistories.AddToFindInFilesMaskHistory(FileMaskComboBox.Text);
337
339
  InputHistories.FindInFilesSearchOptions:=Options;
338
340
  InputHistories.Save;
362
364
end;
363
365
 
364
366
procedure TLazFindInFilesDialog.InitFromLazSearch(Sender: TObject);
 
367
var
 
368
  Dir: String;
365
369
begin
366
 
  DirectoryComboBox.Text:= TLazSearch(Sender).SearchDirectory;
 
370
  Dir:=AppendPathDelim(TrimFilename(TLazSearch(Sender).SearchDirectory));
 
371
  if Dir<>'' then
 
372
    DirectoryComboBox.Text:= Dir;
367
373
  Options:= TLazSearch(Sender).SearchOptions;
368
374
  FileMaskComboBox.Text:= TLazSearch(Sender).SearchMask;
369
375
end;
371
377
procedure TLazFindInFilesDialog.FindInFiles(AProject: TProject;
372
378
  const AFindText: string);
373
379
var
374
 
  SearchForm:  TSearchForm;
 
380
  SearchForm:  TSearchProgressForm;
375
381
begin
376
382
  LoadHistory;
377
383
 
387
393
  begin
388
394
    SaveHistory;
389
395
 
390
 
  SearchForm:= TSearchForm.Create(SearchResultsView);
 
396
  SearchForm:= TSearchProgressForm.Create(SearchResultsView);
391
397
  with SearchForm do begin
392
398
    SearchOptions   := self.Options;
393
399
    SearchText      := self.FindText;
415
421
begin
416
422
  Result:=DirectoryComboBox.Text;
417
423
  IDEMacros.SubstituteMacros(Result);
418
 
  if Result<>'' then
419
 
    Result:=CleanAndExpandDirectory(Result);
 
424
  Result:=TrimAndExpandDirectory(Result);
420
425
end;
421
426
 
422
427
end.