| Type | Title | Author |
|---|---|---|
| Forum topic | WebEx Connect Integration Availability | kreester |
| Notebook entry | Day One Dream Factory | chuckbrady |
| Notebook entry | how to animate a sprite | butcher |
The system routines are native DreamFactory commands and functions that can be used with any node.
The routines are grouped by name and function, use the navigation buttons below to examine the system routines available.
Project Messages: projectidle, projectopen, projectclose, projectenter, projectexit, projectactive
Mouse Messages: mousedown, mouseup, mousemove, mouseenter, mouseexit, mousedoubleclick, mousewheel, mousedrop
Keyboard Messages: keydown, keyup, keyrepeat, keycommand, keydata, keyenter, keyexit
Node Messages: nodeopen, nodeclose, nodeshow, nodehide, noderesize, nodestart, nodestop, nodemove, nodechange, nodeactive, nodeselect
Network Messages: webtransferdone, servertransaction
applicationlaunch
applicationlaunch(executable name $, document name $)
Launches an application with the given name. The second argument is a document name.
If the application name is empty, DreamFactory attempts to find an application for the specified document.
If the document name is empty, the application is launched with a new document.
On Windows, the document name can be command line arguments or a document name.
arrayavg, arraymax, arraymin, arraysum
average #.# = arrayavg(number 1 #.#, number 2 #.#, ?) max #.# = arraymax(number 1 #.#, number 2 #.#, ?) min #.# = arraymin(number 1 #.#, number 2 #.#, ?) sum #.# = arraysum(number 1 #.#, number 2 #.#, ?)
These routines are various math array operations that take any number of arguments. Example:
global x = arraysum(1, 2, 3)
binaryfileread, binaryfilewrite, binaryfilewritefx
binary data $ = binaryfileread(file name $) binaryfilewrite(file name $, binary data $) did it TF = binaryfilewritefx(file name $, binary data $)
These routines convert files into binary data and binary data into files. There is no translation of carriage returns or line feeds.
If the file name is "" the user is asked to get or put a file manually, a scripting error is generated if they cancel.
Binaryfilewritefx returns true if the file was saved or false if the file was not saved.
Binaryfileread optionally takes a second argument which is a special value to return if the dialog is canceled.
If the file name is a simple file type like "doc" then the user is asked to get or put a file of that type manually.
You can also use these special type names for more complex selections: pictures, textfiles, charfiles, xmlfiles, allfiles, htmlfiles, sounds, and movies.
See: textfileread, textfilewrite, fileselectednameget, fileselectednameset
bitset, bitshift, bittest
number # = bitset(number #, bit #, set TF) number # = bitshift(number #, shift #) bit is set TF = bittest(number #, bit #)
Various bit operation functions. The bit # should be between 1 and 32, the shift is positive to shift right, and negative to shift left.
broadcastget, broadcastset
broadcast messages TF = broadcastget() broadcastset(broadcast messages TF)
Get or set the ability to broadcast automatic messages to nodes.
This is normally true, but can be turned off to stop recursion in handlers triggered by automatic messages.
Automatic messages include: nodeopen, nodeclose, nodeshow, nodehide, noderesize, nodestart, nodestop, nodemove, nodechange, nodeactive, and nodeselect.
bufferdouble, buffersingle, bufferstate, bufferstop
bufferdouble(width #, height #, bitdepth #) buffersingle(width #, height #, bitdepth #) number of buffers # = bufferstate() bufferstop()
These functions flip the monitor into different DirectX modes in Windows, and does a focused screen on the Macintosh.
You should check bufferstate for the results of buffersingle or bufferdouble, for example, the Mac doesn't double buffer.
clipboardformats, clipboardget, clipboardset
has format TF = clipboardformats(clipboard format $) clipboard text $ = clipboardget() clipboardset(clipboard text $)
Clipboardget, and clipboardset get and set the text clipboard.
Clipboardformats returns true if the format is on the clipboard. Formats include: text, pict, and node.
Various plugins can read and write the "pict" format and must be called to do so as appropriate.
The "node" format is information from nodecopy.
coercetoboolean, coercetofloat, coercetolong, coercetostring
boolean TF = coercetoboolean(any argument ?) float #.# = coercetofloat(any argument ?) long # = coercetolong(any argument ?) string $ = coercetostring(any argument ?)
Coerce any argument into the given type if possible.
Returns 0, "", 0.0, or false respectively if not possible.
See: typeof
cursorhide, cursorset, cursorshow
cursorhide() cursorset(name $) cursorshow()
Check resourse files for predefined cursors.
Currently available: arrow, cross, eyedropper, gather, ibeam, magnify, touch, watch.
As well as: fist, godown, goleft, goright, gostraight, goup, hand, sight.
And also: resizetop, resizebot, resizehor, resizever, resizeany.
debugger
debugger()
Debugger brings up the debugger window.
dialogcertificate
dialogcertificate()
This command shows the DreamFactory Developer Certificate for the current project.
DreamFactory developers can use this command to verify that they have a working certificate.
DreamFactory customers can use this command to identify the developer that created the project file.
This information is displayed during project download, and during any security request.
dialogcolor
selected color $ = dialogcolor(initial color $)
Dialogcolor is a quick and easy standard dialog to select or create a color.
This routine takes an existing color as a starting point.
The newly created color is returned, or "" if the user cancelled.
dialoghelp
dialoghelp(help dialog prompt $)
Dialoghelp invokes the DreamFactory dialog help system.
dialoglist
answer $ = dialoglist(title $, message $, items $)
Dialoglist is a quick and easy standard dialog to allow the user to select from a list of items.
The items should be comma or carriage return delimited.
The selected item is returned, or "" if the user cancelled.
dialogmenu
answer $ = dialogmenu(hor #, ver #, items $)
Dialogmenu displays a pop-up menu at the given location.
The routine takes a comma or carriage return delimited list of menu items as input.
The list may specify "(check)item text" or "(disable)item text" or "-" for a divider.
The selected item is returned, or "" if the user cancelled. Example:
myanswer = dialogmenu(hor, ver, "(check)Item 1, (disable)Item 2, -, Item 3")
dialogopenfile, dialogopenfolder, dialogsavefile
path name $ = dialogopenfile(title $, file type $, write file TF) path name $ = dialogopenfolder(title $) path name $ = dialogsavefile(title $, file type $, prompt $)
These routines return file and folder paths to manually selected files, or "" if the user cancelled.
The project can use the returned file or folder path to conduct file operations, but you must have the appropriate security permissions to do so.
Dialogsavefile and dialogopenfile take a simple file type to save or open, or you can use these special type names for more complex selections: pictures, textfiles, charfiles, xmlfiles, allfiles, htmlfiles, sounds, and movies. Example:
dialogopenfile("Please select a web page.", "html", false)
dialogpassword, dialogusername
password string $ = dialogpassword(title $, message $) username and password string $ = dialogusername(title $, message $, username $)
Dialogpassword is a quick and easy standard dialog to enter a secure password.
The routine returns the password or "" if canceled.
Dialogusername is a quick and easy standard dialog to enter a secure username and password.
The routine returns the username and password in a structure or "" if canceled.
dialogpolicy
dialogpolicy()
This command allows you to specify how much access DreamFactory projects have to your client desktop and networks.
Web sites can be included under various security zones, and each zone can specify project permissions.
The security policy can be locked for enterprise deployment.
See: projectpermissionset, projectpermissionget
dialogshow
dialogshow(title $, message $)
Dialogshow is a quick and easy standard dialog that displays a modal message. Example:
dialogshow("My Title", "Here is the message.")
dialogtext
entered string $ = dialogtext(title $, message $, prompt $)
Dialogtext is a quick and easy standard dialog for text entry.
The routine returns the entered text or "" if canceled.
Dialogtext optionally takes a fourth argument which is a special value to return if the dialog is canceled.
dialogyesno, dialogyesnocancel
yes or no $ = dialogyesno(title $, question $) yes, no, or cancel $ = dialogyesnocancel(title $, question $)
Dialogyesno is a quick and easy standard dialog to ask a yes or no question.
The routine returns "yes" or "no".
Dialogyesnocancel also includes a cancel button and will return "yes", "no", or "cancel".
dispatchmessage, dispatchmessagefx
dispatchmessage(node name $, message $) result ? = dispatchmessagefx(node name $, message $)
These routines take the name of a node and a message string. Dispatchmessagefx returns a result.
The node name may also be "project" or "library" followed by a library number.
This is useful for server transactions between DreamFactory clients, and for browser-based "DFMessage" commands. Example:
dispatchmessage("library4", "mycommand(44)")
dreamfactorypath
folder path $ = dreamfactorypath()
Dreamfactorypath returns the path to the "pouch" folder, called "DreamFactory".
This is where the plugins, scripts, help, downloads, and strings folders are located.
See: projectpath
dreamfactoryruntime
runtime only version TF = dreamfactoryruntime()
Returns true if DreamFactory is running in the runtime only version.
In this version projectruntimeset will fail to turn off runtime and begin authoring.
This version is used for mobile devices like PocketPC and Palm.
See: projectruntimeset, projectruntimeget
dreamfactoryupdate
dreamfactoryupdate()
This command will download and run the installation package for the browser based control or stand-alone application version of DreamFactory.
Before calling this command be sure that the current project version is greater than the installed version, and that the desired remote version is available.
If the download and launch are successful, dreamfactoryupdate will quit the current project and close DreamFactory.
See: dreamfactoryversion, projectversion
dreamfactoryversion
version $ = dreamfactoryversion()
Dreamfactoryversion returns the version number of the currently installed DreamFactory virtual machine.
This function optionally takes the arguments "short", "medium", or "long" for different version formats.
The argument "host" will return the company name of the current installation's hosted provider.
The argument "remote" will return the current version available from the hosted provider.
See: projectversion, pluginversion
erroraction
erroraction(action $)
Erroraction takes the following arguments: clear, handle, and create. Clear clears the current error if any.
Handle brings up the DreamFactory error dialog if there is an error, or does nothing otherwise.
Create creates a user error with two additional arguments for messages. The current error if any is lost.
No arguments handles the current error, or if there is none, creates a user error.
See: errormodeget, errormodeset, errorstatus
errormodeget, errormodeset
errors allowed TF = errormodeget() errormodeset(errors allowed TF)
Get or set the error mode.
If true, errors are handled immediately with the DreamFactory error dialog that alows them to be ignored, handled, etc.
If false, errors are logged but ignored. The errorstatus and erroraction routines allow the detection and response to errors.
The errormode is always initialized to true when the project is first opened.
See: erroraction, errorstatus
errorstatus
argument ? = errorstatus(status $)
Errorstatus takes the following arguments: comment1, comment2, object, line, number, and description.
Object is the node that triggered the error. Line is the line of the script, and description is the DreamFactory text.
Number returns the DreamFactory internal error code. The comments are from the DreamFactory dialog for errors.
No arguments returns true if there is an error or false otherwise.
See: errormodeget, errormodeset, erroraction
filecopy
filecopy(source file name $, destination file name $)
Copy a file from anywhere to anywhere, subject to security restrictions.
This command copies both forks of Macintosh resource files and preserves file attributes.
filecountnames, fileindextoname, folderbuildnames, foldercountnames, folderindextoname
total files # = filecountnames() file name $ = fileindextoname(index #) folderbuildnames(path name $) total folders # = foldercountnames() folder name $ = folderindextoname(index #)
Call folderbuildnames to examine a directory, or with "" for all currently mounted volumes.
The other functions will provide the names of all the files and folders.
filedelete, fileexists, folderdiskspace, folderexists
filedelete(file name $) exists TF = fileexists(file name $) free space # = folderdiskspace(path name $) exists TF = folderexists(path name $)
These commands and functions return information or perform operations on files or folders.
filelockedget, filelockedset
locked TF = filelockedget(file name $) filelockedset(file name $, locked TF)
Get or set the locked state of a file.
These routines only work on files that are currently closed.
If a DreamFactory project is locked, the project can be opened multiple times but cannot be changed.
See: projectlockedget, projectlockedset
filemodificationdate
date $ = filemodificationdate(file name $)
Filemodificationdate returns the modification date for the given file.
See: webmodificationdate
filenativetopath, filepathtonative
path name $ = filenativetopath(native path name $) native path name $ = filepathtonative(path name $)
These routines translate DreamFactory file paths to native file paths and back.
For example, the DreamFactory path "main:myfolder:what.txt" might equal "c:\myfolder\what.txt" on Windows.
These routines are only useful in rare circumstances. DreamFactory commands and functions use DreamFactory paths to describe files.
fileselectednameget, fileselectednameset
file name $ = fileselectednameget() fileselectednameset(file name $)
Fileselectednameget returns the name of the last manually selected file.
This is useful when binaryfileread, binaryfilewrite, textfileread, or textfilewrite use a dialog to select a file and you need to know the file name.
Use fileselectednameset to specify the default name when a file is saved.
See: textfileread, binaryfileread, textfilewrite, binaryfilewrite
filesize
size # = filesize(file name $)
Filesize returns the size in bytes of the given file.
filestatus
status $ = filestatus(file name $)
Returns locked, open, error, or OK.
Error means that the file is a directory or does not exist.
Open means the file is currently open for writing and cannot be reopened.
Locked means the file itself is locked, or resides on a locked or protected volume.
fileunzip, filezip
fileunzip(zip file name $, path name $) filezip(file name list $, zip file name $)
Zip and unzip multiple files and folders. Compatible with PKZip on Windows, and Stuffit on the Mac.
The Macintosh version will use "MacBinary" format to save and restore Macintosh resource forks if necessary.
flushevents
flushevents()
Kill all pending events. This is useful to flush pending mousedown or keydown events.
foldercreate, folderdelete
foldercreate(path name $) folderdelete(path name $)
Create or delete a folder.
fontcountnames, fontindextoname, fontindextosize
total project fonts # = fontcountnames() project font name $ = fontindextoname(index #) project font size # = fontindextosize(index #)
These functions index through all the fonts in the current project, returning the name and size.
fontcountsystemnames, fontindextosystemname, fontsystemsizeavail
total system fonts # = fontcountsystemnames() system font name $ = fontindextosystemname(index #) available TF = fontsystemsizeavail(system font name $, system font size #)
These functions index through all the fonts in the current system.
Use fontsystemsizeavail to determine if a given system font size is available.
fontcreate, fontdelete
fontcreate(system font name $, system font size #, use grayscale TF) fontdelete(project font name $, project font size #)
Fontcreate imports the specified system font into the project, creating a project font.
The grayscale flag creates an anti-aliased font instead of black and white if possible.
Fontdelete removes a font from the current project.
See: fontcountnames, fontindextoname, fontindextosize
fontmetrix
metrix # = fontmetrix(project font name $, project font size #, string $, param $)
This routine returns information about the specified font.
The parameter is "width", "height", "ascent", "depth", or "memory".
The string must be specified for calculating the width information.
In place of "width" you can use a font style which returns the pixel width of styled text.
Depth will be 8 for a grayscale font, or 1 for black and white.
Memory is the amount of diskspace the font takes up. Grayscale fonts take up more space.
framerateget, framerateset
milliseconds per frame # = framerateget() framerateset(milliseconds per frame #)
Get or set the milliseconds per frame used by the update and updatefx commands.
For example, if you set the frame rate to 50, DreamFactory will be running at 20 frames per second.
Very high frame rates should be reserved for special situations because this will consume large amounts of processor time.
The framerate value is automatically limited to a minimum of 5 and a maximum of 1000.
See: update, updatefx
globaltolocalhor, globaltolocalver, localtoglobalhor, localtoglobalver
hor # = globaltolocalhor(node name $, hor #) ver # = globaltolocalver(node name $, ver #) hor # = localtoglobalhor(node name $, hor #) ver # = localtoglobalver(node name $, ver #)
Translate a point in a node to the screen and back.
keyabortget, keyabortset
key aborts TF = keyabortget() keyabortset(key aborts TF)
Holding down and releasing the escape key will generate a key abort for stuck programming loops.
The keyaborts flag is always initialized to true when the project is first opened.
Turn keyaborts off for final delivery of your project.
keycontrol, keyescape, keyshift, keyspace, keytest
control TF = keycontrol() escape TF = keyescape() shift TF = keyshift() space TF = keyspace() is down TF = keytest(key name $)
Querry the immediate state of the keyboard.
Both keycontrol and keyshift can take the optional argument "event" which returns the state of the keyboard when the event was posted.
This is useful for testing for control-keyboard events. The control key is the control or command key on the Macintosh.
keyfocusget, keyfocusnow, keyfocusset
node name $ = keyfocusget() keyfocusnow() keyfocusset(node name $)
Keyfocusset takes a node name to receive the keyboard focus, or the empty string to remove the focus from all nodes.
Keyfocusget returns the node name with the current focus, or the empty string if there is no node with keyboard focus.
The node with keyboard focus receives all keyboard events: keydown, keyup, keyrepeat, keycommand, and keydata.
The keyfocusnow command changes the system keyboard focus to point to the desktop window.
See: keyenter, keyexit
librarycommentget, librarycommentset
comment $ = librarycommentget(library #) librarycommentset(library #, comment $)
Get or set a string of documentation about the library.
This user definable string sticks to the library forever.
librarycount, librarydelete, libraryinsert
total libraries # = librarycount() librarydelete(library #) libraryinsert(after index #)
Count, insert, and delete library scripts.
The initial library scripts come from the scripts folder when the project is created.
DreamFactory depends on libraries 1 through 4, do not change them. Insert new libraries above 4.
librarymessage, librarymessagefx
librarymessage(library #, message CODE) result = librarymessagefx(library #, message CODE)
Send a message to a command or function in a library script.
This is rarely necessary, because libraries are at the bottom of the hierarchy anyway.
See: libraryscriptedit
libraryscriptedit, libraryscriptget, libraryscriptset
libraryscriptedit(library #) text $ = libraryscriptget(library #) libraryscriptset(library #, text $)
Edit a library script, or get and set the script from a string.
The library scripts are a special set of scripts below the root node.
The library scripts will receive any message that other scripts have not handled.
machinebounds, machinedepth
bounds $ = machinebounds() depth # = machinedepth()
Machinebounds returns the boundary rectangle of the current hardware device. This will be larger than the desktop bounds.
Machinedepth returns the current color depth in bits per pixel, usually 16 or 32.
machineclicktime
maximum double click speed in milliseconds # = machineclicktime()
Returns the maximum number of milliseconds the user has set on this machine to designate a double click.
Clicks that occur faster than this can be assumed to be double clicks.
machinedate, machinedatetoseconds, machineseconds, machinesecondstodate, machinesecondstogmt
date $ = machinedate() seconds # = machinedatetoseconds(date $) seconds # = machineseconds() date $ = machinesecondstodate(seconds #) date $ = machinesecondstogmt(seconds #)
Machinedate returns a date string for the current time.
The data string is just the year, month, day, hour, minute, and second separated by commas.
Machineseconds returns the number of seconds that have elapsed since 1970.
Machinedatetoseconds and machinesecondstodate convert between date strings and seconds.
Machinesecondstogmt returns Greenwich Mean Time, while machinesecondstodate returns the local data and time.
machineduration, machinetime
milliseconds elapsed # = machineduration(old machine time #, new machine time #) machine time # = machinetime()
Machinetime returns a machine time value, which is used as an input argument to machineduration.
Machineduration will return the number of milliseconds that has elapsed between an older and newer machine time value.
Do not use a machine time value directly for other purposes.
Machinetime can take the optional argument "event" which returns the machine time when the last event was posted.
machinespeed, machinesystem, machinetype
speed $ = machinespeed() system $ = machinesystem() type $ = machinetype()
Machinetype returns "Windows" or "Macintosh."
On Macintosh, machinespeed returns: PPC followed by 601, 603, 604, 603e, 603ev, 750, 604e, 604ev, G4, or G47450
On Windows, machinespeed returns: Intel, MIPS, Alpha, or PPC followed by the vendor specific processor level.
On Macintosh, machinesystem returns: OS 9 or OS 10
On Windows, machinesystem returns: Win 95, Win 98, Win ME, Win NT, Win XP, or Win 2000
mathabs, mathatan, mathcos, mathexp, mathexp2, mathlog, mathlog2, mathmod, mathpow, mathround, mathsin, mathsqrt, mathtan, mathtrunc
abs x # = mathabs(x #.#) atan x # = mathatan(x #.#) cos x # = mathcos(x #.#) exp x # = mathexp(x #.#) exp2 x # = mathexp2(x #.#) log x # = mathlog(x #.#) log2 x # = mathlog2(x #.#) mod # = mathmod(numer #.#, denom #.#) pow # = mathpow(x #.#, y #.#) round x # = mathround(x #.#) sin x # = mathsin(x #.#) sqrt x # = mathsqrt(x #.#) tan x # = mathtan(x #.#) trunc x # = mathtrunc(x #.#)
Various math transendental functions.
mathrandom
number # = mathrandom(range #)
Random number generator.
memoryavail, memoryfree, memoryheap, memorystack, memorysystem
is avail TF = memoryavail(wanted #) raw free memory # = memoryfree() total heap memory # = memoryheap() total bytes left on stack = memorystack() total RAM = memorysystem()
Memoryheap returns the total size of the DreamFactory heap memory.
Memoryavail tries to clear up the specified amount of memory from the heap, will toss cached objects if necessary.
Memoryfree returns the current free size of the DreamFactory heap memory. Memoryavail will clear up more.
Memorysystem returns the total amount of installed RAM on the current machine.
Memorystack returns the bytes left on the stack.
memorycheckget, memorycheckset
check memory TF = memcheckget(system $) memcheckset(system $, check memory TF)
Use these functions to turn off the memory checking for variables, plugins, or sounds and allow extrordinary allocation sizes.
These values are always initialized to true when the project is first opened.
Use these functions at your own risk.
messageboxdelayget, messageboxdelayset, messageboxtargetget, messageboxtargetset
milliseconds per message # = messageboxdelayget() messageboxdelayset(milliseconds per message #) node name $ = messageboxtargetget() messageboxtargetset(node name $)
The message target will direct message box input to a node.
Messageboxtargetset with zero arguments targets the node at the current mouse position.
The delay controls how fast the message box prints the next message.
See: messageboxdisplay, messageboxevaluate
messageboxdisplay, messageboxevaluate
messageboxdisplay(any argument ?) result $ = messageboxevaluate(message $)
This command will print one argument of any type in the message box output.
Zero arguments will hide the box.
Two arguments will print the second argument in the input position.
The messageboxevaluate function is just like typing input in the message box.
See: messageboxdelayset, messageboxtargetset, messageboxdelayget, messageboxtargetget
mousebutton
currently down TF = mousebutton()
Returns true if the physical mouse button is currently down.
Optionally takes the argument "left", "middle" or "right" for different mouse buttons.
See: mousestilldown, mousewasdown
mousehor, mouseread, mousever
mousehor # = mousehor() mouseread() mousever # = mousever()
Mouseread grabs the current mouse location, then mousehor and mousever read that value.
mousestilldown
still down TF = mousestilldown()
True if the mouse is still down since the last mousedown event was sent.
Optionally takes the argument "left", "middle" or "right" for different mouse buttons.
See: mousebutton, mousewasdown
mousewasdown
was down TF = mousewasdown()
True if the mouse has been clicked since the last mousedown event was sent.
Optionally takes the argument "left", "middle" or "right" for different mouse buttons.
This function is useful for testing the mouse button in a loop without missing clicks.
See: mousebutton, mousestilldown
nodeattach, nodeattachfx
nodeattach(node name $, father node name $) new node name $ = nodeattachfx(node name $, father node name $)
These functions attach a node to another node in the same project.
Errors are returned if the connection is recursive or if the parent node already has a child with that name.
Nodeattachfx returns the fully specified path name of the newly attached child node.
nodebringtofront, nodesendtoback
nodebringtofront(node name $) nodesendtoback(node name $)
Moves a node to the front or back of the node's brothers visually.
See: nodeshuffleforward, nodeshufflebackward
nodebrotherback, nodebrotherfront, nodebrothernext, nodebrotherprev
back node name $ = nodebrotherback(node name $) front node name $ = nodebrotherfront(node name $) next node name $ = nodebrothernext(node name $) prev node name $ = nodebrotherprev(node name $)
These functions return the first, previous, next, and last brothers of the given node, or empty if there is no such brother.
This is useful for indexing through nodes.
See: nodebrotherget
nodebrotherget
next brother node name $ = nodebrotherget(node name $)
Nodebrotherget returns the next node brother, or if there is not one, the first brother.
This is useful for looking at the brother nodes in a circlular list.
See: nodebrotherback, nodebrotherfront, nodebrothernext, nodebrotherprev
nodechildget, nodefatherget
child node name $ = nodechildget(node name $) father node name $ = nodefatherget(node name $)
Nodechildget will return the child and nodefatherget will return the father of the given node.
nodeclipopenget, nodeclipopenset
clip open TF = nodeclipopenget(node name $) nodeclipopenset(node name $, clip open TF)
Get or set the clipopen property. If true, the node is not clipped by any parent node.
This is useful in the rare case that a node needs a different clipping state than other children.
nodecommentget, nodecommentset
comment $ = nodecommentget(node name $) nodecommentset(node name $, comment $)
Get or set a string of documentation about the node.
This user definable string sticks to the node forever.
See: nodeuserdataget, nodeuserdataset, noderefset, noderefget
nodecopy
nodecopy(node name $)
Nodecopy copies a node and all children to the clipboard file.
The clipboard file is called "clipfile" in the downloads folder.
Optionally nodecopy will take a second argument which is the name of a custom clipboard file.
See: nodedelete, nodepaste, nodepastefx
nodecountchildren, nodeindextochild
children # = nodecountchildren(node name $) child node name $ = nodeindextochild(node name $, child index #)
Nodecountchildren will return the total number of children for a father node.
Nodeindextochild will return the long node name of one of the children by number.
nodecreate, nodecreatefx
nodecreate(father node name $, plugin $, new short name $) child node name $ = nodecreatefx(father node name $, plugin $, new short name $)
Create a single node with the given plugin attached to the specified father node.
If the new short name is "" a unique name is assigned.
The fully specified name of the newly created child node is returned by nodecreatefx.
See: nodenew, nodenewfx, nodedelete
nodedelete
nodedelete(node name $)
The delete command will permanently delete a node and all children.
See: nodecopy, nodepaste, nodepastefx
nodeexistsget, nodepluginget
exists TF = nodeexistsget(node name $) plugin name $ = nodepluginget(node name $)
These functions return a node's plugin name, or test if a node is in the current project.
nodefindchild, nodefindplugin
child node name $ = nodefindchild(father node name $, short name $) child node name $ = nodefindplugin(father node name $, plugin name $)
Nodefindchild takes a father node name and a short child name and returns the long name of that child or empty if there is no such child.
Nodefindplugin takes a father node name and a short plugin name and returns the long name of the child with that plugin or empty if there is no such child.
If there are more than one children with the given plugin, then nodefindplugin returns the first child with the given plugin.
nodefirst
first node name $ = nodefirst()
Nodefirst will return the first node name, which is always the root node.
nodefontusage
font usage $ = nodefontusage(node name $)
This function returns an XML structure documenting the font usage of the given node.
nodehashandler
has handler TF = nodehashandler(node name $, handler name $)
Returns true if the specified handler is in the node. This test is very fast for system messages.
nodehittest
node name $ = nodehittest(hor #, ver #)
Returns the name of the topmost node that contains the point.
Used by the project script to send out the mousedown message.
Optionally takes zero arguments for the current mouse position.
nodeidtoname, nodenametoid
node name $ = nodeidtoname(node id #) id # = nodenametoid(node name $)
Convert back and forth between the nodeid and nodename.
Node ids stick to the node until it is destroyed.
nodelongnameget, nodenameget, nodenameset
long name $ = nodelongnameget(node name $) short name $ = nodenameget(node name $) nodenameset(node name $, short name $)
Get or set the name of a node.
Nodenameget returns the short version of the nodename, nodelongnameget returns the fully specified name.
nodemessage, nodemessagefx
nodemessage(node name $, message CODE) result = nodemessagefx(node name $, message CODE)
Send CODE messages to commands or functions in individual nodes. Example:
local arg = nodemessagefx("distantnode", distantfunction(3, myvar, "whatever"))
nodenew, nodenewfx
nodenewfx(father node name $, plugin $) child node name $ = nodenewfx(father node name $, plugin $)
Create a single node with the given plugin attached to the specified father node.
The fully specified name of the newly created child node is returned by nodenewfx.
See: nodecreate, nodecreatefx, nodedelete
nodeoutlineget, nodeoutlineset
outline TF = nodeoutlineget(node name $) nodeoutlineset(node name $, outline TF)
Get or set the node outline flag, which is used by the manager palette to remember node outlining information.
This flag should not be used for other purposes.
nodepaste, nodepastefx
nodepaste(father node name $, new short name $) child node name $ = nodepastefx(father node name $, new short name $)
Nodepaste and nodepastefx will paste a node and all children from the clipboard file onto the father node.
If the new short name is "" the name of the node on the clipboard is used.
The fully specified name of the newly pasted child node is returned by nodepastefx.
Optionally nodepaste and nodepastefx will take a third argument which is the name of a custom clipboard file.
See: nodedelete, nodecopy
nodepicture, nodepicturefx
nodepicture(node name $, file name $) did it TF = nodepicturefx(node name $, file name $)
Create a picture of the given node and all children.
Nodepicture depends on the Print_Information security permission.
If the file name is "" the user is asked to save the picture manually, a scripting error is generated if they cancel.
Nodepicturefx returns true if the picture was saved or false if there was an error.
nodeprint, nodeprintfx
nodeprint(node name $, layout $) did it TF = nodeprintfx(node name $, layout $)
Print the given node and all children.
The layout parameters include: left, center, scale, or pages.
The left and center options position the node on a single clipped page.
The scale option scales the node on a single page. The pages option will print multiple pages if necessary.
All printing occurs at 72 pixels per inch, so for example, an 8 X 10 page would be 576 X 720 pixels.
Nodeprint brings up the printing properties dialog, a scripting error is generated if they cancel.
Nodeprintfx returns true if the node was printed or false if the node was not printed.
noderefget, noderefset
ref # = noderefget(node name $) noderefset(node name $, ref #)
Get or set the node ref, which is a user definable number that sticks to the node forever.
See: nodeuserdataget, nodeuserdataset, nodecommentget, nodecommentset
nodescriptedit, nodescriptget, nodescriptset
nodescriptedit(node name $) text $ = nodescriptget(node name $) nodescriptset(node name $, text $)
Edit a node script, or get and set the script from a string.
nodeshufflebackward, nodeshuffleforward
nodeshufflebackward(node name $) nodeshuffleforward(node name $)
Moves a node forward or back one position relative to brother nodes.
See: nodesendtoback, nodebringtofront
nodesizeget
size in bytes # = nodesizeget(node name $)
Returns the size of the node data and script.
nodeuserdataget, nodeuserdataset
user data $ = nodeuserdataget(node name $) nodeuserdataset(node name $, user data $)
Get or set a string of user defined data about the node.
This user definable string sticks to the node forever.
See: nodecommentget, nodecommentset, noderefset, noderefget
nodevisibleget, nodevisibleset
visible TF = nodevisibleget(node name $) nodevisibleset(node name $, visible TF)
Nodevisibleget will return the visible flag for a node.
Nodevisibleset will hide or show a node and all of the visible children attached to it.
All the ancestors of a node marked visible must also be visible for the node to actually appear.
plugincountnames, pluginindextoname
count # = plugincountnames() plugin name $ = pluginindextoname(index #)
Cycle through the currently installed plugins.
plugincountroutines, pluginindextoroutine
total # = plugincountroutines(plugin name $) routine name $ = pluginindextoroutine(plugin name $, detail $, index #)
These functions return information about commands and functions in the plugins, or enter "system" for system routines.
The level of detail should be: high, medium, low, or help.
Medium detail is designed for runtime parsing of arguments.
The detail level help returns the help file information about the given plugin or system routine.
pluginexists, pluginloaded
exists TF = pluginexists(plugin name $) loaded TF = pluginloaded(plugin name $)
Pluginexists tests if the given plugin is in the plugin folder.
Pluginloaded tests if the plugin is in the folder and available for use.
pluginstatusget, pluginstatusset
status $ = pluginstatusget(plugin name $) pluginstatusset(plugin name $, status $)
Projects can prohibit the usage of a particular plugin, or declare their dependance on the latest version.
If the plugin status is set to "disabled" then attempts to use commands or functions in that plugin will cause a scripting error.
If the plugin status is set to "enabled" then new versions of the plugin are automatically downloaded with the project file.
The initial status of a plugin is set to "unknown", which allows scripting but does not trigger downloads.
pluginversion
version $ = pluginversion(plugin name $)
This routine returns the version of the given plugin.
See: projectversion, dreamfactoryversion
profilestart, profilestop
profilestart(counter #) milisecs time # = profilestop(counter #)
Used for keeping track of any duration in milliseconds.
Call profilestart to remember a start time, then profilestop will return the elapsed time in milliseconds.
There are up to 10 timer slots available, be sure to use the same counter for each profilestart / profilestop pair.
projectclosefile
projectclosefile(project name $)
Projectclosefile will close the given project, the project must be currently open.
See: projectopenfile, projectcreatefile
projectcountnames, projectindextoname
total # = projectcountnames() project name $ = projectindextoname(index #)
Cycle through the currently open projects.
projectcreatefile, projectcreatefilefx
projectcreatefile(project name $) did it TF = projectcreatefilefx(project name $)
Projectcreatefile creates and opens a new project.
If the project name is "" the user is asked to create a file manually, a scripting error is generated if they cancel.
Projectcreatefilefx returns true if the file was created or false if the file was not created.
See: projectopenfile, projectclosefile
projectexists
exists TF = projectexists(project name $)
Returns true if the given project is currently open.
projectlockedget, projectlockedset
locked TF = projectlockedget() projectlockedset(locked TF)
These routines allow you to lock a project so that the file cannot be changed.
This is a password protected project attribute, the physical file can be locked with filelockedget and filelockedset.
Projectlockedget always returns true if the physical file is locked, so check this attribute before creating new objects or importing media.
See: projectpasswordget, projectpasswordset, filelockedget, filelockedset
projectmessage, projectmessagefx
projectmessage(message CODE) result = projectmessagefx(message CODE)
Send a message to a command or function in the project script.
See: projectscriptedit
projectopenfile, projectopenfilefx
projectopenfile(project name $) did it TF = projectopenfilefx(project name $)
Projectopenfile opens an existing project.
If the project name is "" the user is asked to select a file manually, a scripting error is generated if they cancel.
Projectopenfile will exit all handlers if the new project is marked with the private security setting.
Projectopenfilefx returns true if the file was opened or false if the file was not opened.
See: projectprivacyget, projectprivacyset, projectclosefile
projectpasswordget, projectpasswordset
security level $ = projectpasswordget() projectpasswordset(security level $)
This command sets a password for the project. The password level is discussed below.
Level "open" requires a password to open the project, or anything below.
Level "locked" requires a password to lock/unlock the project for changes, or anything below.
Level "runtime" requires a password to activate/deactivate project editing and scripting, or anything below.
Level "privacy" requires a password to enable/disable project data sharing.
Level "none" removes all password protection, this is the lowest security level.
See: projectlockedget, projectlockedset, projectruntimeset, projectruntimeget, projectprivacyget, projectprivacyset
projectpath
folder path $ = projectpath()
Projectpath returns the path to the current project.
This path is the security sandbox for private file operations, which are safe to conduct in this area.
See: dreamfactorypath
projectpermissionget, projectpermissionset
permission $ = projectpermissionget(permission name $) projectpermissionset(permission name $, permission $)
Use projectpermissionget to test security permissions in the current project. The function returns: grant, prompt, or deny.
Projectpermissionget also accepts the argument "security_zone" to determine the current project's securty zone.
Use projectpermissionset to change various project permissions.
If the second argument is "grant" projectpermissionset will trigger a permissions request for the end user.
If the second argument is "prompt" projectpermissionset will set the given permission to prompt.
If the second argument is "deny" projectpermissionset will set the given permission to deny.
Once a permission has been set to "deny" it can only be changed manually from the securty dialog.
General Permissions: Use_Clipboard, Print_Information, Launch_Application, Run_Micro-Server
Internet Permissions: FTP_Originating_Host, HTTP_Originating_Host, SOAP_Originating_Host, FTP_Internet, HTTP_Internet, SOAP_Internet
File Permissions: Write_Sandbox_File, Read_Sandbox_File, Write_System_File, Read_System_File, Write_Manual_File, Read_Manual_File
Registry Permissions: Write_Sandbox_Registry, Read_Sandbox_Registry, Write_System_Registry, Read_System_Registry
See: dialogpolicy
projectprivacyget, projectprivacyset
privacy mode TF = projectprivacyget() projectprivacyset(privacy mode TF)
Projectprivacyset prevents other projects from looking at the private project's data or variables.
Opening or viewing a private project causes all handlers to exit, denying the current project access.
See: projectpasswordset, projectpasswordget, projectopenfile, projectviewset, projectviewget
projectruntimeget, projectruntimeset
runtime mode TF = projectruntimeget() projectruntimeset(runtime mode TF)
In runtime mode scripts can't be edited, and the debugger and messagebox will not come up. The menu bar is also hidden.
Set projectruntime to true when your project is ready for delivery. You might implement a switch to go back and author as desired.
See: projectpasswordset, projectpasswordget
projectsaveasfile, projectsaveasfilefx
projectsaveasfile(project name $) did it TF = projectsaveasfilefx(project name $)
Projectsaveasfile saves a copy of the given project to a different file selected by the user.
This is useful for making a quick backup copy of an open project.
If the project name is "" the user is asked to select a file manually, a scripting error is generated if they cancel.
Projectsaveasfilefx returns true if the file was saved or false if the file was not saved.
projectsavefile
projectsavefile(project name $)
Projectsavefile updates the given project file with any saved changes. Use this before zipping, copying, or uploading a running project.
Closing a project also updates the project file, but projectsavefile can be used while the project is open.
projectscriptedit, projectscriptget, projectscriptset
projectscriptedit() text $ = projectscriptget() projectscriptset(text $)
Edit the project script, or get and set the script from a string.
The project script is a special script above the hierarchy of nodes.
The project script receives and sends out various important system messages like mousedown and keydown.
projectversion
version $ = projectversion()
Projectversion returns the version number of the current project.
See: dreamfactoryversion, pluginversion
projectviewget, projectviewset
project name $ = projectviewget() projectviewset(project name $)
Get or set the project you are currently viewing. Multiple projects can be opened and fliped between.
Projectviewset will exit all handlers if the new project is private.
See: projectprivacyget, projectprivacyset
projectzipfile, projectzipfilefx
projectzipfile(project name $) did it TF = projectzipfilefx(project name $)
Projectzipfile prepares the given project for web deployment. The file name is unchanged, but the contents of the project are zipped.
This command must be used on a project file that is currently closed. When you open a zipped project, the file is automatically unzipped.
If the project name is "" the user is asked to select a file manually, a scripting error is generated if they cancel.
Projectzipfilefx returns true if the file was zipped or false if the file was not zipped.
quit
quit()
Quit current DreamFactory session.
This command will close the DreamFactory stand-alone application or current web browser.
See: webbrowseractive
registrynumberget, registrynumberset, registrystringget, registrystringset
number # = registrynumberget(key name $, value name $) registrynumberset(key name $, value name $, number #) string $ = registrystringget(key name $, value name $) registrystringset(key name $, value name $, string $)
Get or set numbers and strings out of the Windows System Registry or Macintosh Preferences File.
To access the private registry sandbox, the key names must be constructed in a particular manner.
For example, a browser-based project might use the key name: "DreamFactory\Sandbox\DreamFactory.Com\MyKey".
Information is stored in the Windows Registry at: HKEY_CURRENT_USER\Software\
serveraddress
local IP Address $ = serveraddress()
Serveraddress returns the IP address of the current machine in string-dotted format.
Sometimes the server must be running for this to work.
serverbody
body $ = serverbody(transaction ID #)
Given a server transaction ID, serverbody returns the body of the message.
serverheader
serverheader(transaction ID #, extra header $, good TF)
Given a server transaction ID, serverheader sets extra header information for the result.
Use the good flag to signal a successful transaction or a server error. Example:
serverheader(transid, "Content-Type: text/xml", true)
serverstart, serverstartfx, serverstop
serverstart(port #, max clients #, node name $) did it TF = serverstartfx(port #, max clients #, node name $) serverstop()
Serverstart begins operation of the DreamFactory micro-server.
If the port number is zero, the default HTTP port is used, usually port 80.
Max clients is the maximum expected number of simultaneous cilents.
The node name specifies the script to receive the servertransaction system message.
stringchartonumber, stringnumbertochar
unicode # = stringchartonumber(character $) character $ = stringnumbertochar(unicode #)
Convert the first character in a string to the unicode numeric equivalant and vica-versa.
The first 127 unicode character values are the sames as the ASCII character codes, the control characters are less than 32.
Many control character are available as reserved words: tab, cr, lf, quote, space, comma, slash, backslash, and colon.
stringformatfloat
string $ = stringformatfloat(float #.#, trailing zeros #)
Formats the floating point value with the given number of zeros after the decimal.
Use -1 for full precision with trimmed zeros, or zero for no decimals.
This function takes an optional third argument which is a currency symbol or the word "commas."
In this case the string is formatted for the given currency or simply with commas added.
stringhandler
handler $ = stringhandler(string $, old name $, new name $)
Grab a code / endcode handler out of any script. Usefull for assembling scripts at runtime.
If the new name is empty, stringhandler returns the entire script with the old handler removed.
stringitemget, stringitemset
total items # = stringitemget(string $, delim $) new string $ = stringitemset(string $, delim $, total items #)
Stringitemget returns the number of items in an item delimited string, or the string size if the delimiter is "".
Stringitemset sets the number of items in an item delimited string, or the string size if the delimiter is "". New items or spaces are added as necessary to the end of the string.
stringlistget, stringlistset
sub string $ = stringlistget(string $, delim $, item #) new string $ = stringlistset(string $, delim $, item #, insert $)
Get or set an item in a delimited string. If the delimeter is "", then this will get or set individual characters.
textfileread, textfilewrite, textfilewritefx
string $ = textfileread(file name $) textfilewrite(file name $, text $) did it TF = textfilewritefx(file name $, text $)
These routines convert text files into strings and strings into text files. Carriage returns and line feeds are properly translated.
If the file name is "" the user is asked to get or put a file manually, a scripting error is generated if they cancel.
Textfilewritefx returns true if the file was saved or false if the file was not saved.
Textfileread optionally takes a second argument which is a special value to return if the dialog is canceled.
If the file name is a simple file type like "html" then the user is asked to get or put a file of that type manually.
You can also use these special type names for more complex selections: textfiles, charfiles, xmlfiles, and htmlfiles.
See: binaryfileread, binaryfilewrite, fileselectednameget, fileselectednameset
threadcountnames, threadexists, threadindextoname, threadpauseget, threadpauseset, threadstart, threadstop
count # = threadcountnames() thread exists TF = threadexists(node name $) node name $ = threadindextoname(index #) pause TF = threadpauseget(node name $) threadpauseset(node name $, pause TF) threadstart(node name $, message CODE, time #) threadstop(node name $)
Threadstart sends a specified message to a node during the Update command.
A negative final argument specifies a millisecond delay, use a positive argument to delay for that many frames.
Threads automatically expire unless reset, usually the receiving handler will call Threadstart again.
See: framerateget, framerateset, update
typeof
type $ = typeof(any argument ?)
Returns "string", "binary", "float", "long", or "boolean".
See: coercetolong, coercetostring, coercetofloat, coercetoboolean
update
update()
Update is usually called from the project script projectidle handler and from inside animated loops.
This command must be called for any change to occur on the screen.
Update also fires threads, webtransferdone, and servertransaction system messages.
This is the heartbeat function for DreamFactory, the framerate determines how long the update takes.
See: updatefx, framerateget, framerateset
updatefx
updatefx(effect name $, duration in milliseconds #, node name $)
This is like update, except a visual effect is specified. If the node name is "", the entire screen is used.
The effects are: dissolve, venetian, checkerboard, randomrows, randomcols, barndoorclose, barndooropen, irisclose, irisopen.
And: scrolldown, scrollup, scrollright, scrollleft, wipedown, wipeup, wiperight, wipeleft, turnright, turnleft, turnup, turndown.
See: update, framerateget, framerateset
variablecountnames, variableindextoname
count # = variablecountnames(type $) variable name $ = variableindextoname(index #, type $)
These functions cycle through the variables by name. Type is: local, regional, or global.
variablecreate, variabledelete, variableexists, variableget, variableset
variablecreate(var name $, type $) variabledelete(var name $, type $) exists TF = variableexists(var name $, type $) value ? = variableget(var name $, type $) variableset(var name $, type $, value ?)
The equivalent of creating, assigning, reading, and dumping local, regional, or global vaiables.
This is useful because you can create variable names dynamically at runtime.
You may also use a node name instead of a type, which returns "regional" information for that node. Example:
variablecreate("var" @ 3, "global")
webbrowseractive
running in browser TF = webbrowseractive()
Return true if DreamFactory is running in the browser.
The commands webbrowserevent and webbrowsergoto only do something if webbrowseractive is true.
webbrowserevent
webbrowserevent(message sent to browser $)
Sends a message to the Internet Explorer, Netscape, Mozilla, or Firefox browser page.
The message is received by the DFEvent function written in either JavaScript or VB Script on the HTML page containing the DreamFactory control.
The Internet Explorer browser can only receive VB Script events, you can call JavaScript code from the VB Script event handler if necessary.
The Netscape, Mozilla, and Firefox browsers can only receive JavaScript events, and do not support the VB Script language.
webbrowsergoto
webbrowsergoto(url to link to $, in a new window TF)
Jumps to a new url. If the new window parameter is true, a new instance of the browser is opened.
If the new window parameter is false, DreamFactory is closed and the browser goes to the new url.
The new window parameter optionally takes a browser frame target: _top, _self, _blank.
webdownloadimmediate, webuploadimmediate
text data $ = webdownloadimmediate(url name $, name $, param $) text data $ = webuploadimmediate(url name $, name $, param $, text data $)
Upload or download text data and grab the result immediately.
If a FTP URL is specified, name is the username and param is the password.
If a HTTP URL is specified, name is the operation (like "GET" or "POST") and param is extra header information.
This is in contrast to webdownloadstart and webuploadstart which write data to a file and work in the background.
See: webdownloadstart, webuploadstart
webdownloadproject, webdownloadprojectfx
webdownloadproject(url name $, name $, param $, file dest $) did it TF = webdownloadprojectfx(url name $, name $, param $, file dest $)
Webdownloadproject downloads and opens a new project.
If no file destination is specified, one is automatically calculated, this is usually the case in the browser-based version.
If a FTP URL is specified, name is the username and param is the password.
If a HTTP URL is specified, name is the operation (like "GET" or "POST") and param is extra header information.
webdownloadstart, webuploadstart
webdownloadstart(url name $, name $, param $, dst file $, node name $) webuploadstart(url name $, name $, param $, src file $, node name $)
These commands initiate a transfer to a HTTP or FTP URL.
If a FTP URL is specified, name is the username and param is the password.
If a HTTP URL is specified, name is the operation (like "GET" or "POST") and param is extra header information.
When finished, the system message webtransferdone is sent to the specified node with the result of the transaction.
This is useful for conducting web services transactions or file upload and download in the background.
webhtmlparameters
parameters $ = webhtmlparameters()
This routine returns any parameters that follow the "htmldata" tag on the HTML page containing the DreamFactory control.
This is useful when you would like to pass additional information from the HTML page to your DreamFactory project.
See: weburlparameters, webbrowserevent
weblasterrorcode
error code # = weblasterrorcode()
This routine returns the HTTP error code from the most recent web transaction.
For example, a code of 200 signals a success and 500 signals a failure.
Webuploadimmediate and webdownloadimmediate set the last error code.
This routine can also be called from the webtransferdone system message handler after webuploadstart or webdownloadstart have terminated.
See: weblastresponseheader
weblastresponseheader
response header $ = weblastresponseheader()
This routine returns the HTTP response header from the most recent web transaction.
Webuploadimmediate and webdownloadimmediate set the last response header text.
This routine can also be called from the webtransferdone system message handler after webuploadstart or webdownloadstart have terminated.
See: weblasterrorcode
webmodificationdate
date $ = webmodificationdate(url name $, name $, param $)
Will return a date string on any internet file. This is useful for triggering file updates.
If the returned date string has all items set to zero, then the file server did not provide a modification date for the requested file.
If a FTP URL is specified, name is the username and param is the password.
If a HTTP URL is specified, name is the operation (like "GET" or "POST") and param is extra header information.
See: filemodificationdate
webofflineget, webofflineset
running offline TF = webofflineget() webofflineset(running offline TF)
Get or set the offline browsing mode. If offline browsing is turned on, all web opperations generate a scripting error.
On Windows, this is a global flag also available from the file menu in the web browser.
On Macintosh, this is a local flag that only limits DreamFactory internet opperations.
webtransferabort, webtransferstatus
webtransferabort(file name $) percent done # = webtransferstatus(file name $)
Webtransferstatus reports on the status of web uploads and downloads.
Webtransferabort can stop a download transfer.
See: webdownloadstart, webuploadstart
weburlparameters
parameters $ = weburlparameters()
This routine returns any extra parameters on the URL string used to launch the current project.
Such parameters usually follow the file name and a question mark on the URL string.
Individual name=value pairs are often separated by the ampersand symbol.
This is useful when the URL contains additional information or arguments intended for the DreamFactory project. Example:
"http://www.dreamfactory.com/bootfile.dfac?name1=param1&name2=param2"