<?xml version="1.0" encoding="UTF-8"?>
<NeoAppBuilderPlugIn>
  <Title>neoEdge</Title>
  <Author>SinLios</Author>
  <Website>https://visualneo.com</Website>
  <EMail>info@sinlios.com</EMail>
  <Copyright>2022</Copyright>
  <Description>Execute VisualNEO Win actions when using neoEdge Web Browser to run your app.
v:1.1</Description>
  <Icon20>neoEdge-icon-20.png</Icon20>
  <Icon32>neoEdge-icon-32.png</Icon32>
  <CompiledName>C:\Users\sinli\OneDrive\CloudStation\visualneo\VisualNeoWeb\Plugins\neoEdge\neoedge.nabp</CompiledName>
  <AutoInstall>yes</AutoInstall>
  <Code>window.chrome.webview.addEventListener('message', function (e) {
      var n = e.data.search(":::");
      if(n &gt; 0){
         var res = e.data.split(":::");
         $App[res[0]] = res[1];
      }else{
         $App._Var=e.data;
      }
});
function _GetVar(winvar,webvar,subroutine){
   winaction='npEdgePostMessage "BrowserRectangle" "'+webvar+':::'+winvar+'" "[Result]"';
   _Exec(winaction);
   if(subroutine){
     setTimeout(function(){ subroutine(); }, 20);
   }
};
function _SetVar(winvar,theValue){
   theValue=theValue.replaceAll('"','{{#34}}');
   var splitted = theValue.split("\n");
   _Exec('SetVar "'+winvar+'" ""');
   for(n=0;n&lt;splitted.length-1;n++){
         _Exec('SetVar "'+winvar+'" "'+winvar+splitted[n]+'{{#13}}"');
   }
   _Exec('SetVar "'+winvar+'" "'+winvar+splitted[n]+'"');
};
function _StrReplace(thestring,oldchars,newchars,variable,theoptions){
   if(theoptions==true){
      theoptions="CaseSensitive";
   }else{
      theoptions="";
   }
   winaction='StrReplace "'+thestring+'" "'+oldchars+'" "'+newchars+'" "'+variable+'" "'+theoptions+'"';
   _Exec(winaction);
};
function _FileList(fileMask,theFiles,theFolders,noExt,variable){
   var theOptions="";
   if(theFiles){
      theOptions=theOptions+"Files";
   }
   if(theFolders){
      if(theOptions == ""){
        theOptions=theOptions+"Folders";
      }else{
        theOptions=theOptions+"+Folders";
      }
   }
   if(noExt){
      if(theOptions == ""){
        theOptions=theOptions+"NoExt";
      }else{
        theOptions=theOptions+"+NoExt";
      }
   }
   winaction='FileList "'+fileMask+'" "'+theOptions+'" "'+variable+'"';
   _Exec(winaction);
};
function _RunInRectangle(objectName,command,parameters,hideMenu,hideSizeBox,variable){
   var theOptions="";
   if(hideMenu){
      theOptions=theOptions+"HideMenu";
   }
   if(hideSizeBox){
      if(theOptions == ""){
        theOptions=theOptions+"HideSizeBox";
      }else{
        theOptions=theOptions+"+HideSizeBox";
      }
   }
   winaction='RunInRectangle "'+objectName+'" "'+command+'" "'+parameters+'" "'+theOptions+'" "" "'+variable+'"';
   _Exec(winaction);
};
function _Run(command,parameters,runonce,minimized,hidden,variable){
   theoptions="";
   if(runonce){
      theoptions=theoptions+"RunOnce";
   }
   if(minimized){
      if(theoptions!=""){
        theoptions=theoptions+"+Minimized";
      }else{
        theoptions=theoptions+"Minimized";
      }
   }else{
      if(theoptions!=""){
        theoptions=theoptions+"+Normal";
      }else{
        theoptions=theoptions+"Normal";
      }
   }
   if(hidden){
      theoptions=theoptions+"+Hidden";
   }
   winaction='Run "'+command+'" "'+parameters+'" "'+theoptions+'" "" "'+variable+'"';
   _Exec(winaction);
};
function replaceBrackets(variable){
   var result=variable.replaceAll("{{", "[");
   result=result.replaceAll("}}", "]");
   return result;
};
function _Exec(winaction){
   winaction=replaceBrackets(winaction);
   window.chrome.webview.postMessage(winaction);
};</Code>
  <Files/>
  <ActionList>
    <Action Name="_Exec">
      <Hint>Execute VisualNEO Win commands when using neoEdge to run your app.</Hint>
      <Params>theCode|HTML|VisualNEO Win script code</Params>
      <Template>_Exec(theCode);</Template>
    </Action>
    <Action Name="_Run">
      <Hint>Execute an external Windows application, DOS Command, etc.</Hint>
      <Params>command|STRING|Command. (File name and location of the application to be launched);parameters|STRING|Parameters (optional items to be passed to the application);runonce|BOOLEAN|Do not run more than one copy of the app at a time;minimized|BOOLEAN|Run app minimized?;hidden|BOOLEAN|Run app hidden?;variable|STRING|Variable to store application's unique id number (optional)</Params>
      <Template>_Run(command,parameters,runonce,minimized,hidden,variable);</Template>
    </Action>
    <Action Name="_RunInRectangle">
      <Hint>Execute an external Windows application inside a Rectangle object. The application's window will be sized and/or clipped to fit within the bounds of the specified Rectangle object. This may not work with some types of applications.
neoEdge includes 10 predefined not visible Rectangles: Rectangle1...Rectangle10</Hint>
      <Params>objectName|ENUMLIST=Rectangle1,Rectangle2,Rectangle3,Rectangle4,Rectangle5,Rectangle6,Rectangle7,Rectangle8,Rectangle9,Rectangle10|Choose an existing Rectangle object;command|STRING|File name and location of the application to be launched.;parameters|STRING|Optional items to be passed to the application;hideMenu|BOOLEAN|Hide menu?;hideSizeBox|BOOLEAN|Hide size box?;variable|STRING|Variable to store application's unique id number (optional)</Params>
      <Template>_RunInRectangle(objectName,command,parameters,hideMenu,hideSizeBox,variable);</Template>
    </Action>
    <Action Name="_CloseApp">
      <Hint>Close a running application program.</Hint>
      <Params>theApp|STRING|File name of a running program or an app ID variable returned by _Run;theMode|ENUMLIST=RequestClose,ForceClose|Options</Params>
      <Template>_Exec('CloseApp "'+theApp+'" "'+theMode+'"');</Template>
    </Action>
    <Action Name="_SetVar">
      <Hint>Assign a value to a VisualNEO Win variable</Hint>
      <Params>winvar|STRING|VisualNEO Win variable name {{myVar}};theValue|STRING|Value to store in the variable</Params>
      <Template>_SetVar(winvar,theValue);
</Template>
    </Action>
    <Action Name="_GetVar">
      <Hint>Get the value from a VisualNEO Win variable into a VisualNEO Web variable.</Hint>
      <Params>winvar|STRING|VisualNEO Win variable name {{myVar}};webvar|VARNAME|VisualNEO Web variable name;subroutine|FUNCTION|Subroutine to execute once the value is asigned (optional)</Params>
      <Template>_GetVar(winvar,webvar,subroutine);</Template>
    </Action>
    <Action Name="_AlertBox">
      <Hint>Display a Windows style dialog box containing a title, message and an OK button.</Hint>
      <Params>thetitle|STRING|Title;message|STRING|Message</Params>
      <Template>_Exec('AlertBox "'+thetitle+'" "'+message+'"');</Template>
    </Action>
    <Action Name="_MessageBox">
      <Hint>Display a Windows style dialog box containing a message and a custom set of buttons.</Hint>
      <Params>thetitle|STRING|Dialog box title.;message|STRING|Dialog box message. Line breaks can be entered using the pipe character;buttons|STRING|Captions of the custom buttons separated by the pipe character;variable|STRING|Variable name (with no brackets) to store the number of the selected button</Params>
      <Template>_Exec('MessageBox "'+thetitle+'" "'+message+'" "'+buttons+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_InputBox">
      <Hint>Display a simple input dialog box and request that the user enter a single line of text.</Hint>
      <Params>thetitle|STRING|Dialog box title.;message|STRING|Dialog box message. Line breaks can be entered using the pipe character;variable|STRING|VisualNEO Win variable {{myVar}} to store text entered by the user.</Params>
      <Template>_Exec('InputBox "'+thetitle+'" "'+message+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_Balloon">
      <Hint>Display a comic book-style speech balloon containing a short message.</Hint>
      <Params>message|STRING|The message you want to appear in the balloon.;left|STRING|Balloon’s left corner coordinate. -1 for mouse position.;top|STRING|Balloon’s top corner coordinate. -1 for mouse position.;delay|STRING|Milliseconds to display the balloon or 0 (zero) to keypress or click</Params>
      <Template>_Exec('Balloon "'+message+'" "'+left+'" "'+top+'" "'+delay+'"');</Template>
    </Action>
    <Action Name="_StickyNote">
      <Hint>Display a yellow sticky note with a custom message.</Hint>
      <Params>left|STRING|Sticky note’s left coordinate. -1 to center;top|STRING|Sticky note’s top coordinate. -1 to center;message|STRING|Message for the sticky note. Pipe character for new line;delay|STRING|Milliseconds to display or 0 (zero) until click or keypress</Params>
      <Template>_Exec('StickyNote "'+left+'" "'+top+'" "'+message+'" "'+delay+'"'');</Template>
    </Action>
    <Action Name="_PopUpImage">
      <Hint>Display an image file with an optional special effect.</Hint>
      <Params>left|STRING|Image left coordinate. -1 to center;top|STRING|Image top coordinate. -1 to center;fileName|STRING|The name of the image file to display.;delay|STRING|Milliseconds to display or 0 (zero) until click or keypress;speed|STRING|The effect’s speed (0 = fastest, 10 = slowest).;"effect|ENUMLIST=None,Dissolve,""Slide Left"",""Slide Right"",""Slide Up"",""Slide Down"",Explode,Implode,""Weave Horizontal"",""Weave Vertical"",""Split Horizontal"",""Split Vertical"",""Wipe Left"",""Wipe Right"",""Wipe Up"",""Wipe Down"",Circle,Grow,Blocks,Checkerboard,""Block Dissolve"",Fade,""Page Turn"",Transparent|Effect"</Params>
      <Template>_Exec('PopUpImage "'+left+'" "'+top+'" "'+fileName+'" "'+delay+'" "'+effect+'" "'+speed+'"');</Template>
    </Action>
    <Action Name="_FolderBox">
      <Hint>Display a Windows Folder Selector and allow the reader to make a selection.
The selected folder is stored in a VisualNEO Win variable.</Hint>
      <Params>thetitle|STRING|The dialog box title.;variable|STRING|VisualNEO Win variable (no brackets) to store the result</Params>
      <Template>_Exec('FolderBox "'+thetitle+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_FileSaveBox">
      <Hint>Allow the user to specify a file name using a standard Windows File Save dialog box.</Hint>
      <Params>thetitle|STRING|The dialog box title.;filemask|STRING|A file mask (*.txt or *.*);initialdirectory|STRING|Initial directory;variable|STRING|VisualNEO Win variable (no brackets) to store the result</Params>
      <Template>_Exec('FileSaveBox "'+thetitle+'" "'+filemask+'" "'+initialdirectory+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_FileOpenBox">
      <Hint>Allow the user to select a file name using a standard Windows File Open dialog box.</Hint>
      <Params>thetitle|STRING|The dialog box title.;filemask|STRING|A file mask (*.txt or *.*);initialpath|STRING|Folder to display when the File Open dialog box first opens.;variable|STRING|Variable name {{myVar}} to store the result;theoptions|STRING|Leave empty to select single file or Multiple for more</Params>
      <Template>_Exec('FileOpenBox "'+thetitle+'" "'+filemask+'" "'+initialpath+'" "'+variable+'" "'+theoptions+'"');
</Template>
    </Action>
    <Action Name="_FileCopy">
      <Hint>Copy an external file.</Hint>
      <Params>sourceFile|STRING|The name of an existing external file on the user’s computer.;destination|STRING|Drive and folder where the file is to be copied</Params>
      <Template>_Exec('FileCopy "'+sourceFile+'" "'+destination+'"');</Template>
    </Action>
    <Action Name="_FileErase">
      <Hint>Erase an external file.</Hint>
      <Params>fileName|STRING|The name of an existing external file.</Params>
      <Template>_Exec('FileErase "'+fileName+'"');</Template>
    </Action>
    <Action Name="_FileExists">
      <Hint>Determine if an external file exists.</Hint>
      <Params>fileName|STRING|The name of the file (including drive and path) to check.;variable|STRING|Variable to store result {{myVar}} (Can be “True” or “False”)</Params>
      <Template>_Exec('FileExists "'+fileName+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_FileSize">
      <Hint>Get the size (in bytes) of an external file.
If the file does not exist, the variable will be cleared and an error message displayed.</Hint>
      <Params>fileName|STRING|The name of the file (including drive and path) to check.;variable|STRING|VisualNEO Win variable to store the file's size {{myVar}}</Params>
      <Template>_Exec('FileSize "'+fileName+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_FolderExists">
      <Hint>Determine if an external folder exists.</Hint>
      <Params>folder|STRING|The name of the folder to check.;variable|STRING|Variable to store result {{myVar}}.(Can be “True” or “False”)</Params>
      <Template>_Exec('FolderExists "'+folder+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_CreateFolder">
      <Hint>Create a new folder.</Hint>
      <Params>folder|STRING|The path and name of the new folder.</Params>
      <Template>_Exec('CreateFolder "'+folder+'"');</Template>
    </Action>
    <Action Name="_RemoveFolder">
      <Hint>Remove an existing empty folder from the computer’s hard drive.</Hint>
      <Params>folder|STRING|The name of the folder to remove.</Params>
      <Template>_Exec('RemoveFolder "'+folder+'"');</Template>
    </Action>
    <Action Name="_FileList">
      <Hint>Generate a list of files and/or folders found in the specified path.</Hint>
      <Params>fileMask|STRING|Path and file name mask to search. Mask can include wildcard characters.;theFiles|BOOLEAN|Include files in the list?;theFolders|BOOLEAN|Include folders in the list?;noExt|BOOLEAN|Remove extensions from file names before adding them to the list?;variable|STRING|Variable to store the list {{myVar}}. Files will be separated by carriage returns.</Params>
      <Template>_FileList(fileMask,theFiles,theFolders,noExt,variable);</Template>
    </Action>
    <Action Name="_FileRead">
      <Hint>Read data from an external text file.</Hint>
      <Params>fileName|STRING|The name of an existing external file.;"lineNumber|STRING|Number of the line in the file to read. Write ""All”  to read the entire file at once.";variable|STRING|VisualNEO Win variable to store result: {{myVar}}</Params>
      <Template>_Exec('FileRead "'+fileName+'" "'+lineNumber+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_FileWrite">
      <Hint>Write data to an external text file.</Hint>
      <Params>fileName|STRING|The name of an existing external file;"lineNumber|STRING|Number of the line to write to, “Append” (end of file) or ""All"" (replace)";theData|STRING|The data to be written to the file</Params>
      <Template>_Exec('FileWrite "'+fileName+'" "'+lineNumber+'" "'+theData+'"');</Template>
    </Action>
    <Action Name="_FileInsLine">
      <Hint>Insert a blank line into an external text file. The external file must be in plain text/ASCII format.
 All lines from this point forward will be moved down to make room.
The first line in the file is 1, the second is 2 and so on.</Hint>
      <Params>fileName|STRING|The name of an existing external file.;lineNumber|STRING|number of the line in the file where the new line should be inserted</Params>
      <Template>_Exec('FileInsLine "'+fileName+'" "'+lineNumber+'"');</Template>
    </Action>
    <Action Name="_DelLine">
      <Hint>Delete a specific line from an external text file. The external file must be in plain text/ASCII format.</Hint>
      <Params>fileName|STRING|The name of an existing external file.;lineNumber|STRING|The number of the line in the file to delete. First = 1</Params>
      <Template>_Exec('FileDelLine "'+fileName+'" "'+lineNumber+'"');</Template>
    </Action>
    <Action Name="_FileLen">
      <Hint>Count the number of lines contained in an external text file.</Hint>
      <Params>fileName|STRING|The name of an existing external file.;variable|STRING|The name of a variable to store the line count.</Params>
      <Template>_Exec('FileLen "'+fileName+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_FileToVar">
      <Hint>Read the contants of a file into a VisualNEO Win variable</Hint>
      <Params>thefilename|STRING|File name (The name of an existing external file);variable|STRING|VisualNEO Win variable {{myVar}} to store the content.</Params>
      <Template>_Exec('FileToVar "'+thefilename+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_ExtractFilePath">
      <Hint>Extract the drive and folder portion of a file name.
If the file doesn’t have a path, the variable will be empty.</Hint>
      <Params>thefilename|STRING|The name of a file.;variable|STRING|VisualNEO Win variable {{myVar}} to store the result</Params>
      <Template>_Exec('ExtractFilePath "'+thefilename+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_ExtractFileName">
      <Hint>Extract the name and extension portion of a file name and store the result in a variable.</Hint>
      <Params>fileName|STRING|The name of a file.;variable|STRING|VisualNEO Win variable {{myVar}} to store the result</Params>
      <Template>_Exec('ExtractFileName "'+fileName+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_ExtractFileExt">
      <Hint>Extract the extension portion of a file name.</Hint>
      <Params>fileName|STRING|The name of a file.;variable|STRING|VisualNEO Win variable {{myVar}} to store the result</Params>
      <Template>_Exec('ExtractFileExt "'+fileName+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_ExtractFileDrive">
      <Hint>Extract the drive portion of a file name and store the result in a variable.</Hint>
      <Params>fileName|STRING|A complete file name including drive and path.;variable|STRING|VisualNEO Win variable {{myVar}} to store the result</Params>
      <Template>_Exec('ExtractFileDrive "'+fileName+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_ChangeFileExt">
      <Hint>Change a file name's extension and store the result in a variable.</Hint>
      <Params>fileName|STRING|A file name;extension|STRING|The new file extension including a period. For example: “.txt”;variable|STRING|VisualNEO Win variable {{myVar}} to store the modified file name</Params>
      <Template>_Exec('ChangeFileExt "'+fileName+'" "'+extension+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_RegistryRead">
      <Hint>Read a value from the Windows System Registry database.
The Registry contains information about the hardware and software installed on the computer.</Hint>
      <Params>theKey|STRING|The Registry key that contains the data you want to read.;theSection|STRING|The Registry section that contains the actual value to read.;variable|STRING|VisualNEO Win variable {{myVar}} to store the result</Params>
      <Template>_Exec('RegistryRead "'+theKey+'" "'+theSection+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_RegistryWrite">
      <Hint>Write a value to the Windows System Registry database. The Registry contains information about the hardware and software installed on the computer. WARNING: Exercise caution when modifying the Registry. If there is an error in the Registry, your computer (or your user’s computer) may become nonfunctional.</Hint>
      <Params>theKey|STRING|The Registry key that contains the section you want to modify;theSection|STRING|The Registry section to modify.;theValue|STRING|The data to write to the Registry.</Params>
      <Template>_Exec('RegistryWrite "'+theKey+'" "'+theSection+'" "'+theValue+'"');</Template>
    </Action>
    <Action Name="_StrIns">
      <Hint>Insert characters into a string.</Hint>
      <Params>sourceStr|STRING|The characters to be inserted.;destinationStr|STRING|The destination string.;insertPosition|STRING|The position in dest string where the characters will be inserted.;variable|STRING|VisualNEO Win variable {{myVar}} to store the modified string.</Params>
      <Template>_Exec('StrIns "'+sourceStr+'" "'+destinationStr+'" "'+insertPosition+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_StrDel">
      <Hint>Delete characters from a string.</Hint>
      <Params>sourceStr|STRING|The original string containing the characters to delete.;startPosition|STRING|The position of the first character to delete.;theLength|STRING|The number of characters to delete.;variable|STRING|VisualNEO Win variable {{myVar}} to store the modified string</Params>
      <Template>_Exec('StrDel "'+sourceStr+'" "'+startPosition+'" "'+theLength+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_StrLen">
      <Hint>Calculate the length of a string.</Hint>
      <Params>theStr|STRING|The string to examine.;variable|STRING|VisualNEO Win variable {{myVar}} to store the string’s length.</Params>
      <Template>_Exec('StrLen "'+theStr+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_SubStr">
      <Hint>Copy a portion of a string.</Hint>
      <Params>sourceStr|STRING|The original string containing the characters to copy.;startPosition|STRING|The position of the first character to copy.;theLength|STRING|The number of characters to copy.;variable|STRING|VisualNEO Win variable {{myVar}} to store the copied text.</Params>
      <Template>_Exec('SubStr "'+sourceStr+'" "'+startPosition+'" "'+theLength+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_SearchStr">
      <Hint>Search for characters within a text string.
The variable will contain 0 (zero) if the characters are not present in the string.</Hint>
      <Params>searchStr|STRING|The characters to find.;theStr|STRING|The text string to search.;variable|STRING|VisualNEO Win variable {{myVar}} to store position of found characters;theOptions|BOOLEAN|Case sensitive?</Params>
      <Template>if(theOptions==false || theOptions==""){
   var theCase="";
}else{
   var theCase="CaseSensitive";
}
_Exec('SearchStr "'+searchStr+'" "'+theStr+'" "'+variable+'" "'+theCase+'"');</Template>
    </Action>
    <Action Name="_StrUpper">
      <Hint>Convert the contents of a string to upper case. Numbers and punctuation within the string are not affected.</Hint>
      <Params>theStr|STRING|The string to convert.;variable|STRING|VisualNEO Win variable {{myVar}} to store the modified string.</Params>
      <Template>_Exec('StrUpper "'+theStr+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_StrLower">
      <Hint>Convert the contents of a string to lower case. Numbers and punctuation within the string are not affected.</Hint>
      <Params>theStr|STRING|The string to convert.;variable|STRING|VisualNEO Win variable {{myVar}} to store the modified string.</Params>
      <Template>_Exec('StrLower "'+theStr+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_StrReplace">
      <Hint>Replace all occurrences of a character or substring within a string.</Hint>
      <Params>thestring|STRING|The original string.;oldchars|STRING|The characters to replace.;newchars|STRING|The replacement characters.;variable|STRING|VisualNEO Win variable {{myVar}} to store the modified string.;theoptions|BOOLEAN|CaseSensitive?</Params>
      <Template>_StrReplace(thestring,oldchars,newchars,variable,theoptions);</Template>
    </Action>
    <Action Name="_StrParse">
      <Hint>Separate a string into multiple parts using a delimiter character.</Hint>
      <Params>theStr|STRING|The string containing the information to parse.;delimiter|STRING|The character (or characters) used to separate the elements of the string.;variable|STRING|VisualNEO Win variable {{myVar}} to store the parsed elements.;countVariable|STRING|VisualNEO Win variable {{myVar}} to store the number of elements.</Params>
      <Template>_Exec('StrParse "'+theStr+'" "'+delimiter+'" "'+variable+'" "'+countVariable+'"');</Template>
    </Action>
    <Action Name="_PopulateStr">
      <Hint>Populate variables contained within a string. VisualNEO Win populates most strings automatically. The exception being strings that come from an external source such as a file loaded with the _FileRead or _FileToVar actions. After reading, if the file contained VisualNEO Win style variables, you can use PopulateStr to replace all of the variables in the string with the contents of those variables.</Hint>
      <Params>theStr|STRING|The source string containing variables to populate.;variable|STRING|VisualNEO Win variable {{myVar}} to store the modified string.</Params>
      <Template>_Exec('PopulateStr "'+theStr+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_PlayTone">
      <Params>frecuency|STRING|Frecuency (ie: 440)</Params>
      <Template>_Exec('PlayTone "'+frecuency+'"');</Template>
    </Action>
    <Action Name="_SaveVariables">
      <Hint>Save the contents of all existing VisualNEO Win variables to a file. Use this Action to save an App's entire complement of variables at once. Since variables reside in memory and are cleared when a publication closes, you can use _SaveVariables and _LoadVariables to remember publication settings between sessions.</Hint>
      <Params>fileName|STRING|The name of the file to store the variable data.</Params>
      <Template>_Exec('SaveVariables "'+fileName+'"');</Template>
    </Action>
    <Action Name="_LoadVariables">
      <Hint>Load VisualNEO Win variables from a file previously created with _SaveVariables. Use this Action to load an entire group of variables at once. Since variables reside in memory and are cleared when a publication closes, you can use _SaveVariables and _LoadVariables to remember variables between sessions.</Hint>
      <Params>fileName|STRING|The name of an external file containing the variables to be loaded.</Params>
      <Template>_Exec('LoadVariables "'+fileName+'"');</Template>
    </Action>
    <Action Name="_ClearVariables">
      <Hint>Clear VisualNEO Win variables from memory.</Hint>
      <Params>variables|STRING|Comma separated list of variables to be cleared. {{var1}},{{var2}},{{var3}}</Params>
      <Template>_Exec('ClearVariables "'+variables+'"');</Template>
    </Action>
    <Action Name="_DeleteArray">
      <Hint>Delete a VisualNEO Win array of variables</Hint>
      <Params>arrayName|STRING|The name of the array variable to delete {{myArray}};arraySize|STRING|The number of elements to delete or “All” to delete the entire array.</Params>
      <Template>_Exec('DeleteArray "'+arrayName+'" "'+arraySize+'"');</Template>
    </Action>
    <Action Name="_CheckInternetConnection">
      <Hint>Determine if this computer is connected to the Internet.</Hint>
      <Params>"variable|STRING|Variable {{varName}} to store connection status: “True"" or  “False”."</Params>
      <Template>_Exec('CheckInternetConnection "'+variable+'"');</Template>
    </Action>
    <Action Name="_InternetLink">
      <Hint>Launch the computer’s default Internet browser, and navigate to the specified web site URL.</Hint>
      <Params>variable|STRING|The address of a web site or local file to pass to the browser.</Params>
      <Template>_Exec('InternetLink "'+variable+'"');</Template>
    </Action>
    <Action Name="_DownloadFile">
      <Hint>Download a file from the Internet.</Hint>
      <Params>sourceUrl|STRING|The name and location of the file to download.;destination|STRING|Path and name where the downloaded file is to be saved.;theOptions|ENUMLIST=Sync,Async|Wait or allow to respond to other input during the download</Params>
      <Template>if(theOptions!="Async"){
   theOptions="";
}
_Exec('DownloadFile "'+sourceUrl+'" "'+destination+'" "HideProgress+'+theOptions+'"');</Template>
    </Action>
    <Action Name="_InternetFileExists">
      <Hint>Determine if a remote file exists on an Internet server.</Hint>
      <Params>sourceUrl|STRING|The name and location of the file to check.;variable|STRING|Variable to store the result of the search {{myVar}} (True or False);theOptions|ENUMLIST=Sync,Async|Wait or allow to respond to other input during the download</Params>
      <Template>_Exec('InternetFileExists "'+sourceUrl+'" "'+variable+'" "HideProgress+'+theOptions+'"');</Template>
    </Action>
    <Action Name="_InternetFileSize">
      <Hint>Obtain the size (in bytes) of a remote file located on an Internet server.</Hint>
      <Params>sourceUrl|STRING|The name and location of the remote file to examine.;variable|STRING|Variable to store the file’s size. {{myVar}};theOptions|ENUMLIST=Sync,Async|Wait or allow to respond to other input during the download</Params>
      <Template>if(theOptions!="Async"){
   theOptions="";
}
_Exec('InternetFileSize "'+sourceUrl+'" "'+variable+'" "HideProgress+'+theOptions+'"');</Template>
    </Action>
    <Action Name="_InternetGet">
      <Hint>Request information from an Internet server. Similar to _DownloadFile except that the returned content will be stored in a variable. This should only be used for content that is compatible with VisualNEO Win variables.</Hint>
      <Params>sourceUrl|STRING|The name and location of the file, content, etc. to download.;variable|STRING|variable to store the data returned from the server. {{myVar}};theOptions|ENUMLIST=Sync,Async|Wait or allow to respond to other input during the download</Params>
      <Template>if(theOptions!="Async"){
   theOptions="";
}
_Exec('InternetGet "'+sourceUrl+'" "'+variable+'" "HideProgress+'+theOptions+'"');</Template>
    </Action>
    <Action Name="_InternetPost">
      <Hint>Send an HTTP command and data to an Internet server. The response from the server will be stored in the supplied variable.</Hint>
      <Params>sourceUrl|STRING|The url that will receive the post command.;theData|STRING|Additional data (if any) to send to the server.;variable|STRING|Variable to store the server’s response. {{myVar}};theOptions|ENUMLIST=Sync,Async|Wait or allow to respond to other input during the download</Params>
      <Template>if(theOptions!="Async"){
   theOptions="";
}
_Exec('InternetPost "'+sourceUrl+'" "'+theData+'" "'+variable+'" "'+theOptions+'"');</Template>
    </Action>
    <Action Name="_IsAppRunning">
      <Hint>Determine if a specific application is running.</Hint>
      <Params>theApp|STRING|File name of an executable program or an app ID variable returned by _Run;variable|STRING|Variable to store the results. {{myVar}} (True or False)</Params>
      <Template>_Exec('IsAppRunning "'+theApp+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_SendKeys">
      <Hint>Send keystrokes to another Windows application. This Action allows you to control another application by simulating keys being typed on the keyboard. If the application is not already loaded, then SendKeys will launch it prior to sending any keystrokes.
Keystrokes may include text and any of the special key codes listed below:

{BS} {F2} {F7} {F12} {Left} {Del} {Tab} {F3} {F8} {Home} {Right} {Enter} {F4} {F9} {End} {PgUp} {Esc} {F5} {F10} {Up} {PgDn} {F1} {F6} {F11} {Down} {Ins}

You can also specify the state (up/down) of the Shift, Control and Alt keys to access virtually the entire range of key combinations. Key codes for these keys are:

{ShiftDn}   {ShiftUp}   {CtrlDn}   {CtrlUp}   {AltDn}   {AltUp}

These keys must always be used in pairs. For example, if you use {ShiftDn} you must remember to follow it with a {ShiftUp} code, otherwise your keyboard will behave as if the Shift key is stuck in the down position.</Hint>
      <Params>theApp|STRING|File name of an executable program or an app ID variable returned by _Run;keyStrokes|STRING|Keystrokes may include text and any of the special key codes</Params>
      <Template>_Exec('SendKeys "'+theApp+'" "'+keyStrokes+'"');</Template>
    </Action>
    <Action Name="_ShowObject">
      <Hint>Show a hidden object with an optional animated effect.</Hint>
      <Params>objName|STRING|Name of an existing VisualNEO Win object.;"effect|ENUMLIST=None,Dissolve,""Slide Left"",""Slide Right"",""Slide Up"",""Slide Down"",Explode,Implode,""Weave Horizontal"",""Weave Vertical"",""Split Horizontal"",""Split Vertical"",""Wipe Left"",""Wipe Right"",""Wipe Up"",""Wipe Down"",Circle,Grow,Blocks,Checkerboard,""Block Dissolve"",Fade,""Page Turn"",Transparent|Effect";speed|STRING|The effect’s speed (0 = fastest, 10 = slowest)</Params>
      <Template>_Exec('ShowObject "'+objName+'" "'+effect+'" "'+speed+'"');</Template>
    </Action>
    <Action Name="_HideObject">
      <Hint>Hide an object with an optional animated effect.</Hint>
      <Params>objName|STRING|Name of an existing VisualNEO Win object.;"effect|ENUMLIST=None,Dissolve,""Slide Left"",""Slide Right"",""Slide Up"",""Slide Down"",Explode,Implode,""Weave Horizontal"",""Weave Vertical"",""Split Horizontal"",""Split Vertical"",""Wipe Left"",""Wipe Right"",""Wipe Up"",""Wipe Down"",Circle,Grow,Blocks,Checkerboard,""Block Dissolve"",Fade,""Page Turn"",Transparent|Effect";speed|STRING|The effect’s speed (0 = fastest, 10 = slowest)</Params>
      <Template>_Exec('HideObject "'+objName+'" "'+effect+'" "'+speed+'"');</Template>
    </Action>
    <Action Name="_EnableObject">
      <Hint>Enable an object. An enabled object can respond to mouse and keyboard events. Use in conjunction with _DisableObject.</Hint>
      <Params>objName|STRING|The name of an existing VisualNEO Win object.</Params>
      <Template>_Exec('EnableObject "'+objName+'"');</Template>
    </Action>
    <Action Name="_DisableObject">
      <Hint>Disable an object. Disabled objects ignore all mouse and keyboard events. Disabled objects appear shaded indicating to readers that they are not available for use.</Hint>
      <Params>objName|STRING|The name of an existing VisualNEO Win object.</Params>
      <Template>_Exec('DisableObject "'+objName+'"');</Template>
    </Action>
    <Action Name="_GetObjectInfo">
      <Hint>Obtain information about a VisualNEO Win object such as its current size, position, visible state, etc. This is useful if you have changed the state of an object and you wish to determine its current condition. If the info type is Visible or Enabled, the variable will contain either “True” or “False”. Left, Top, Width, Height, CursorPosition, ImageWidth, ImageHeight and MediaLength return numeric values. FileName, SelectedText and Caption return text.
Not all objects will respond to every type of information request. For example, FileName only works for objects that display files (Picture, Article, etc.). SelectedText can be used to copy highlighted from Text Entry or Article objects. CursorPosition returns the position of the cursor for Text Entry objects only. ImageWidth and ImageHeight only work with Picture objects. MediaLength is limited to Media Player</Hint>
      <Params>objName|STRING|The name of an existing VisualNEO Win object.;infoType|ENUMLIST=Visible,Enabled,Left,Top,Width,Height,FileName,SelectedText,CursorPosition,ImageWidth,ImageHeight,MediaLength,Caption,AbsLeft,AbsTop,FillColor,FillStyle,FillTransparent,LineColor,LineStyle,LineWidth,FontColor,FontName,FontSize,FontStyle,FontCharSet|Info type;variable|STRING|Variable to store the requested information {{myVar}}</Params>
      <Template>_Exec('GetObjectInfo "'+objName+'" "'+infoType+'" "'+variable+'"');</Template>
    </Action>
    <Action Name="_MoveObject">
      <Hint>Change a VisualNEO Win object’s position on the screen.</Hint>
      <Params>objName|STRING|The name of an existing VisualNEO Win object.;posx|STRING|New left coordinate;posy|STRING|New top coordinate</Params>
      <Template>_Exec('MoveObject "'+objName+'" "'+posx+'" "'+posy+'"');</Template>
    </Action>
    <Action Name="_SizeObject">
      <Hint>Change the width and height of an object.</Hint>
      <Params>objName|STRING|The name of an existing VisualNEO Win object.;theWidth|STRING|Object's new width;theHeight|STRING|Object's new height</Params>
      <Template>_Exec('SizeObject "'+objName+'" "'+theWidth+'" "'+theHeight+'"');</Template>
    </Action>
    <Action Name="_ObjectToFront">
      <Hint>Move an object to the foreground in front of all other objects on the page.</Hint>
      <Params>objName|STRING|Name of an existing VisualNEO Win object.</Params>
      <Template>_Exec('ObjectToFront "'+objName+'"');</Template>
    </Action>
    <Action Name="_ObjectToBack">
      <Hint>Move an object to the background behind all other objects on the page.</Hint>
      <Params>objName|STRING|Name of an existing VisualNEO Win object.</Params>
      <Template>_Exec('ObjectToBack "'+objName+'"');</Template>
    </Action>
    <Action Name="_SetObjectFill">
      <Hint>Set an object's fill color and style.</Hint>
      <Params>objName|STRING|Name of an existing VisualNEO Win object.;fillColor|STRING|Fill color (ie: 248,192,160);fillStyle|ENUMLIST=Solid,Hollow|Fill style</Params>
      <Template>_Exec('SetObjectFill "'+objName+'" "'+fillColor+'" "'+fillStyle+'" "False"');</Template>
    </Action>
  </ActionList>
</NeoAppBuilderPlugIn>
