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

« back to all changes in this revision

Viewing changes to ide/findrenameidentifier.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:
32
32
uses
33
33
  Classes, SysUtils, LCLProc, Forms, Controls, Graphics, Dialogs,
34
34
  StdCtrls, Buttons, ExtCtrls, AvgLvlTree, ComCtrls,
 
35
  laz2_DOM,
35
36
  // codetools
36
 
  {$IFDEF NewXMLCfg}
37
 
  laz2_DOM,
38
 
  {$ELSE}
39
 
  Laz_DOM,
40
 
  {$ENDIF}
41
 
  FileProcs, AVL_Tree, CodeTree, CodeAtom, CodeCache, CodeToolManager,
 
37
  FileProcs, AVL_Tree, CTUnitGraph, CodeTree, CodeAtom, CodeCache,
 
38
  CodeToolManager,
42
39
  // IDE
43
40
  LazarusIDEStrConsts, IDEProcs, IDEWindowIntf, MiscOptions, DialogProcs,
44
41
  LazIDEIntf, InputHistory, SearchResultView, CodeHelp, ButtonPanel;
167
164
  LoadResult: TModalResult;
168
165
  Code: TCodeBuffer;
169
166
  ListOfPCodeXYPosition: TFPList;
 
167
  Cache: TFindIdentifierReferenceCache;
170
168
begin
171
169
  Result:=mrCancel;
172
170
  ListOfPCodeXYPosition:=nil;
173
171
  TreeOfPCodeXYPosition:=nil;
 
172
  Cache:=nil;
174
173
  try
175
174
    CleanUpFileList(Files);
176
175
 
189
188
      CodeToolBoss.FreeListOfPCodeXYPosition(ListOfPCodeXYPosition);
190
189
      if not CodeToolBoss.FindReferences(
191
190
        DeclarationCode,DeclarationCaretXY.X,DeclarationCaretXY.Y,
192
 
        Code, not SearchInComments, ListOfPCodeXYPosition) then
 
191
        Code, not SearchInComments, ListOfPCodeXYPosition, Cache) then
193
192
      begin
194
193
        debugln('GatherIdentifierReferences unable to FindReferences in "',Code.Filename,'"');
195
194
        Result:=mrAbort;
211
210
    CodeToolBoss.FreeListOfPCodeXYPosition(ListOfPCodeXYPosition);
212
211
    if Result<>mrOk then
213
212
      CodeToolBoss.FreeTreeOfPCodeXYPosition(TreeOfPCodeXYPosition);
 
213
    Cache.Free;
214
214
  end;
215
215
end;
216
216
 
289
289
  SearchPageIndex: TTabSheet;
290
290
begin
291
291
  Result:=mrCancel;
 
292
  LazarusIDE.DoShowSearchResultsView(false);
292
293
  SearchPageIndex:=nil;
293
294
  try
294
295
    // show result
295
296
    CodeToolBoss.GetIdentifierAt(DeclarationCode,
296
297
      DeclarationCaretXY.X,DeclarationCaretXY.Y,Identifier);
297
298
    // create a search result page
 
299
    debugln(['ShowIdentifierReferences ',DbgSName(SearchResultsView)]);
298
300
    SearchPageIndex:=SearchResultsView.AddSearch(
299
301
      'References of '+Identifier,
300
302
      Identifier,
377
379
    CleanUpFileList(PascalFiles);
378
380
 
379
381
    PascalFilenames:=CreateFilenameToStringTree;
380
 
    PascalFilenames.AddValues(PascalFiles);
 
382
    PascalFilenames.AddNames(PascalFiles);
381
383
    CodeHelpBoss.GetFPDocFilenamesForSources(PascalFilenames,true,FPDocFilenames);
382
384
    if FPDocFilenames=nil then begin
383
385
      DebugLn(['GatherFPDocReferences no fpdoc files found']);
392
394
      exit;
393
395
    end;
394
396
    CHElement:=Chain[0];
395
 
    DebugLn(['GatherFPDocReferences OwnerName=',CHElement.ElementOwnerName,' Name=',CHElement.ElementName]);
 
397
    DebugLn(['GatherFPDocReferences OwnerName=',CHElement.ElementOwnerName,' FPDocPkg=',CHElement.ElementFPDocPackageName,' Name=',CHElement.ElementName]);
396
398
 
397
399
    // search FPDoc files
398
400
    AVLNode:=FPDocFilenames.Tree.FindLowest;
400
402
      Item:=PStringToStringItem(AVLNode.Data);
401
403
      FPDocFilename:=Item^.Name;
402
404
      Result:=GatherReferencesInFPDocFile(
403
 
                CHElement.ElementOwnerName,CHElement.ElementUnitName,
 
405
                CHElement.ElementFPDocPackageName,CHElement.ElementUnitName,
404
406
                CHElement.ElementName,
405
407
                FPDocFilename,ListOfLazFPDocNode);
406
408
      if Result<>mrOk then exit;
519
521
  CurrentGroupBox.Caption:=lisCodeToolsOptsIdentifier;
520
522
  ExtraFilesGroupBox.Caption:=lisFRIAdditionalFilesToSearchEGPathPasPath2Pp;
521
523
  ButtonPanel1.OKButton.Caption:=lisFRIFindReferences;
522
 
  ButtonPanel1.CancelButton.Caption:=dlgCancel;
 
524
  ButtonPanel1.OKButton.ModalResult:=mrNone;
 
525
  ButtonPanel1.CancelButton.Caption:=lisCancel;
523
526
  NewGroupBox.Caption:=lisFRIRenameTo;
524
 
  RenameCheckBox.Caption:=lisFRIRename;
 
527
  RenameCheckBox.Caption:=lisRename;
525
528
  ScopeCommentsCheckBox.Caption:=lisFRISearchInCommentsToo;
526
529
  ScopeGroupBox.Caption:=lisFRISearchWhere;
527
530
  ScopeRadioGroup.Caption:=dlgScope;
582
585
    MessageDlg(lisFRIInvalidIdentifier,
583
586
      Format(lisSVUOisNotAValidIdentifier, ['"', NewIdentifier, '"']), mtError,
584
587
        [mbCancel], 0);
 
588
    ModalResult:=mrNone;
585
589
    exit;
586
590
  end;
587
591
  ModalResult:=mrOk;