home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 67 / IOPROG_67A.ISO / soft / Tools / mwsppv4.exe / FINDINOPENPROJECT.SCRIPT < prev    next >
Encoding:
Text File  |  2000-07-25  |  2.7 KB  |  100 lines

  1. !!script
  2. // Copyright ⌐ 1997-2000 - Modelworks Software
  3.  
  4. /**
  5. @Tool: findInOpenProject~finds a findWhat expression in the current project. 
  6. @EndTool: 
  7. @Summary: findInOpenProject~finds a findWhat expression in the current project
  8. */
  9.  
  10. var gOutput = getOutput("Find In Files 1");
  11.  
  12. function DoCommand()
  13. {
  14.    var findParameters = getGlobal("FindParameters", null);
  15.    
  16.    var findData = chooseFindParameters("Find in open project", findParameters.findWhat, 
  17.       findParameters.caseSensitive, findParameters.wholeWord, 
  18.       findParameters.regularExpression, findParameters.searchDown);
  19.    
  20.    if (findData)
  21.    {   
  22.       findParameters.findWhat = findData.key; 
  23.       findParameters.caseSensitive = findData.caseSensitive;  
  24.       findParameters.wholeWord = findData.wholeWord;  
  25.       findParameters.regularExpression = findData.regularExpression;   
  26.       findParameters.searchDown = findData.searchDown;
  27.       findParameters.updateHistory();
  28.       
  29.       gOutput.clear();
  30.       gOutput.writeLine("Searching for: " + findData.key);
  31.       
  32.       var count = 0;
  33.       var project = getCurrentProject();
  34.       if (project)
  35.       {
  36.          var list = project.getPackageList();
  37.          if (list)
  38.          {
  39.             var position = list.getHeadPosition();
  40.             while (position && position.valid)
  41.             {
  42.                var pkg = list.getNext(position);
  43.                var filelist = pkg.getFileList(false);
  44.                var index = filelist.getHeadPosition();
  45.                while (index && index.valid)
  46.                {
  47.                   var file = filelist.getNext(index);
  48.                   var editor = openEditor(file.path);
  49.                   if (editor)
  50.                   {
  51.                      count += FindInEditor(editor, findData);
  52.                   }
  53.                }
  54.             }
  55.          }
  56.       }
  57.       
  58.       gOutput.writeLine("Found " + count + " items");
  59.    }
  60. }
  61.  
  62. function FindInEditor(editor, findData)
  63. {
  64.    var fileName = editor.path;
  65.    var count = 0;
  66.    var lineIndex = -1;
  67.    
  68.    if (findData.searchDown)
  69.    {
  70.       findData.startCharIndex = 0;
  71.       findData.startLineIndex = 0;
  72.    }
  73.    else
  74.    {
  75.       findData.startLineIndex = editor.getLineCount() - 1;
  76.       findData.startCharIndex = 32000;
  77.    }
  78.    
  79.    editor.findNext(findData);
  80.    while (findData && findData.found)
  81.    {
  82.       var range = findData.range;
  83.       
  84.       // Only print out one message per line
  85.       if (lineIndex != range.startLineIndex)
  86.       {
  87.          lineIndex = range.startLineIndex;
  88.          gOutput.writeMessage(fileName, lineIndex, editor.copy(lineIndex));
  89.          count += 1;
  90.       }
  91.       
  92.       editor.findNext(findData);
  93.    }    
  94.    
  95.    return count;
  96. }
  97.  
  98. !!/script
  99.  
  100.