home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 67 / IOPROG_67A.ISO / soft / Tools / mwsppv4.exe / ONPARSECONTENT.SCRIPT < prev    next >
Encoding:
Text File  |  2002-10-25  |  5.0 KB  |  168 lines

  1. !!Script
  2. // Copyright ⌐ 1997-2002 - Modelworks Software
  3.  
  4. /**
  5. @Notify: onParseContent~is called to generate a SVG container view located in the 
  6. workspace panel. It is called by the IDE whenever a SVG file is opened, created or 
  7. saved. 
  8. @EndTool:
  9. @Summary: onParseContent~generates a container view
  10. */
  11.  
  12. var gTreeView;
  13. var gEditor;
  14. var gFormsNode;
  15. var gFunctionsNode;
  16.  
  17. var gPublicFolder = 0; // See ContainerView.addItem for other codes
  18. var gClassImagePublicMethod = 12;
  19.  
  20. var gOutput = getOutput();
  21.  
  22. function OnNotify(treeView)
  23. {
  24.     gTreeView = treeView;
  25.     if (treeView == null)
  26.     {
  27.         return;
  28.     }
  29.     
  30.     gEditor = treeView.getEditor();
  31.     if (gEditor == null)
  32.     {
  33.         return;
  34.     }
  35.     
  36.     gFormsNode = gTreeView.addItem("Forms", -1, null, gPublicFolder); 
  37.     gFunctionsNode = gTreeView.addItem("Functions", -1, null, gPublicFolder); 
  38.     
  39.     var delimiterList = gEditor.findNextDelimiters("<form ", "</form>", 0, 0, false); 
  40.     while (delimiterList)
  41.     {
  42.         var delimiterRange = delimiterList.getHead(); 
  43.         if (delimiterRange)
  44.         {
  45.             ProcessForm(delimiterRange.startLineIndex, delimiterRange.startCharIndex);
  46.             var next = delimiterRange.endLineIndex < delimiterRange.startLineIndex ? delimiterRange.startLineIndex : delimiterRange.endLineIndex;
  47.             delimiterList = gEditor.findNextDelimiters("<form ", "</form>", next+1, 0, false); 
  48.         }
  49.         else
  50.         {
  51.             break;
  52.         }
  53.     }
  54.     
  55.     var delimiterList = gEditor.findNextDelimiters("<script", "</script>", 0, 0, false); 
  56.     while (delimiterList)
  57.     {
  58.         var delimiterRange = delimiterList.getHead(); 
  59.         if (delimiterRange)
  60.         {
  61.             //gOutput.writeLine("Start line is " + delimiterRange.startLineIndex + 
  62.             //    " End line is " + delimiterRange.endLineIndex);
  63.             
  64.             if (delimiterRange.endLineIndex > delimiterRange.startLineIndex)
  65.             {
  66.                 ProcessFunctions(delimiterRange.startLineIndex, delimiterRange.endLineIndex);
  67.             }
  68.             var next = delimiterRange.endLineIndex < delimiterRange.startLineIndex ? delimiterRange.startLineIndex : delimiterRange.endLineIndex;
  69.             delimiterList = gEditor.findNextDelimiters("<script", "</script", next+1, 0, false); 
  70.         }
  71.         else
  72.         {
  73.             break;
  74.         }
  75.     }
  76. }
  77.  
  78. function ProcessForm(startLineIndex, startCharIndex)
  79. {
  80.     var attributeList = gEditor.getHtmlTag(startLineIndex, startCharIndex);
  81.     if (attributeList)
  82.     {
  83.         var position = attributeList.getHeadPosition();
  84.         var attribute = attributeList.getNext(position); // Skip tag name
  85.         //gOutput.writeLine("Tag name " + attributeList.name);
  86.         
  87.         while (position && position.valid)
  88.         {
  89.             // attribute.key and attribute.value are Token objects
  90.             attribute = attributeList.getNext(position);
  91.             //gOutput.writeLine("Attribute " + attribute.key.string + ":" + attribute.value.string);
  92.             if (attribute.key.string.toUpperCase() == "ID")
  93.             {
  94.                 gTreeView.addItem("form id = " + attribute.value.string, 
  95.                     startLineIndex, gFormsNode, gClassImagePublicMethod);
  96.                 return;
  97.             }
  98.         }
  99.     }       
  100.     var label = CreateLineLabel(startLineIndex);
  101.     gTreeView.addItem("form line# "+ label, 
  102.         startLineIndex, gFormsNode, gClassImagePublicMethod);
  103. }
  104.  
  105. function ProcessFunctions(startLineIndex, endLineIndex)
  106. {
  107.     var findData = gEditor.findFirstEx("function", startLineIndex, 0, true, false, true, false);
  108.     while (findData && findData.found && findData.startLineIndex < endLineIndex)
  109.     {
  110.         HandleFunction(findData.startLineIndex);
  111.         gEditor.findNext(findData);
  112.     }
  113. }
  114.  
  115. function HandleFunction(lineIndex)
  116. {
  117.     var lineData = gEditor.copy(lineIndex).toLowerCase();
  118.     var endindex = lineData.indexOf("end");
  119.     var functionindex = lineData.indexOf("function");
  120.     if (endindex > -1 && endindex < functionindex)
  121.     {
  122.         return;
  123.     }
  124.     
  125.     var openBraceIndex = lineData.indexOf("{");
  126.     if (openBraceIndex > -1)
  127.     {
  128.         var label = lineData.substring(functionindex+9, openBraceIndex);
  129.         gTreeView.addItem("function " + label, 
  130.             lineIndex, gFunctionsNode, gClassImagePublicMethod);
  131.     }
  132.     else
  133.     {
  134.         var label = lineData.substring(functionindex+9, lineData.length);
  135.         gTreeView.addItem("function " + label, 
  136.             lineIndex, gFunctionsNode, gClassImagePublicMethod);
  137.     }
  138. }
  139.  
  140. function CreateLineLabel(lineIndex)
  141. {
  142.     lineIndex += 1; // convert to line number
  143.     if (lineIndex < 10)
  144.     {
  145.         return "0000" + lineIndex + " ";
  146.     }
  147.     else if (lineIndex < 100)
  148.     {
  149.         return "000" + lineIndex + " ";
  150.     }
  151.     else if (lineIndex < 1000)
  152.     {
  153.         return "00" + lineIndex + " ";
  154.     }
  155.     else if (lineIndex < 10000)
  156.     {
  157.         return "0" + lineIndex + " ";
  158.     }
  159.     else
  160.     {
  161.         return "" + lineIndex + " ";
  162.     }
  163. }
  164.  
  165.  
  166. !!/Script
  167.  
  168.