File contents
//genesis
// xtools.g - a subset of the version in genesis/startup
int XTOOLSDEBUG // define as non-zero prior to including xtools to
// get debug output
/*
** user functions available in xtools
**
** function arguments
** ======================================================
** overlay path value
** overlaytoggle widget // also in buttons.g
** makeconfirm path title yes_script no_script x y
** setgraphscale graph
** showgraphscale graph // orig had y offset of -155
** makegraphscale graph
** fieldbutton path field widget
** quitbutton widget
** cancelquit widget
** stepbutton widget
** formtoggle widget form0 form1
** donebutton form // clicks all buttons in form except "DONE"
**
*/
function overlay(path, value)
str path
setfield {path}/##[ISA=xgraph] overlay {value}
echo "overlay " -nonewline
if (value == 0)
echo OFF
else
echo ON
end
end
// ==============================================
// toggles the overlaying of graph outputs
// ==============================================
function overlaytoggle(widget)
overlay / {getfield {widget} state}
end
function makeconfirm(path, title, yes_script, no_script, x, y)
if ({argc} < 6)
echo usage: makeconfirm path title yes_script no_script x y
return
end
str path, title, yes_script, no_script
float x, y
create xform {path}/confirm [{x},{y},200,80] -nolabel
create xlabel {path}/confirm/label [0,0,200,30] -title {title}
create xbutton {path}/confirm/yes [10,35,80,30] -script \
{yes_script}
create xbutton {path}/confirm/no [100,35,80,30] -script {no_script}
disable {path}/confirm
end
function setgraphscale(graph)
str graph
str form = graph @ "_scaleform"
str xmin = {getfield {form}/xmin value}
str xmax = {getfield {form}/xmax value}
str ymin = {getfield {form}/ymin value}
str ymax = {getfield {form}/ymax value}
setfield {graph} xmin {xmin} xmax {xmax} ymin {ymin} ymax {ymax}
xhide {form}
end
function showgraphscale(form)
if (XTOOLSDEBUG)
echo showgraphscale begin
end
str form
str x, y
// find the parent form
if (XTOOLSDEBUG)
echo " finding parent form"
end
str parent = {el {form}/..}
while (!{isa xform {parent}})
parent = {el {parent}/..}
end
if (XTOOLSDEBUG)
echo " getting parent geometry"
end
x = {getfield {parent} xgeom}
y = {getfield {parent} ygeom}
if (XTOOLSDEBUG)
echo " setting graphscale geometry"
end
setfield {form} xgeom {x} ygeom {y}
if (XTOOLSDEBUG)
echo " showing graphscale"
end
xshow {form}
if (XTOOLSDEBUG)
echo showgraphscale end
end
end
function makegraphscale(graph)
if ({argc} < 1)
echo usage: makegraphscale graph
return
end
str graph
str graphName = {getpath {graph} -tail}
float x, y
str form = graph @ "_scaleform"
str parent = {el {graph}/..}
while (!{isa xform {parent}})
parent = {el {parent}/..}
end
x = {getfield {graph} x}
y = {getfield {graph} y}
create xbutton {graph}_scalebutton \
[{getfield {graph} xgeom},{getfield {graph} ygeom},50,25] \
-title scale -script "showgraphscale "{form}
create xform {form} [{x},{y},180,170] -nolabel
disable {form}
pushe {form}
create xbutton DONE [10,5,55,25] -script "setgraphscale "{graph}
create xbutton CANCEL [70,5,55,25] -script "xhide "{form}
create xdialog xmin [10,35,160,25] -value {getfield {graph} xmin}
create xdialog xmax [10,65,160,25] -value {getfield {graph} xmax}
create xdialog ymin [10,95,160,25] -value {getfield {graph} ymin}
create xdialog ymax [10,125,160,25] -value {getfield {graph} ymax}
pope
end
// ==============================================
// sets the field of the specified element
// ==============================================
function fieldbutton(path, field, widget)
str path, field, widget
setfield {path} {field} {getfield {widget} value}
echo {path} {field} = {getfield {widget} value}
end
function quitbutton(widget)
str widget
// display the confirmation widget
xshowontop {widget}/confirm
end
function cancelquit(widget)
str widget
// hide the confirmation widget
xhide {widget}/..
end
// ==============================================
// advances the simulation by the amount of time given in the dialog
// ==============================================
function stepbutton(widget)
str widget
echo step {getfield {widget} value} msec.
step {getfield {widget} value} -time
end
// ==============================================
// toggles the display of two forms
// ==============================================
function formtoggle(widget, form0, form1)
if ({getfield {widget} state} == 1)
xshow {form1}
xhide {form0}
else
xshow {form0}
xhide {form1}
end
end