View Raw SPL
#include
/* gui based readjson */
rtjson(fname)
{
local orgname, obj;
extern _dvar, _pickfile_status;
/* set default name to appear in dialog box */
if (argc > 0)
{
/* use input filename */
setvar("_rjsfname", fname);
setvar("_rjspickdir", strrev(strfind(pathchar, strrev(_rjsfname))));
}
else
{
/* just define the variable */
defvar("_rjsfname", "");
}
/* define start directory if it doesn't already exist */
defvar("_rjspickdir", "");
/* _pickfile_status == 1 if dialog was successful */
setvar("_pickfile_status", 0);
/* remember original name */
orgname = _rjsfname;
/* invoke dialog box */
_mf("readjson.pan");
if (_pickfile_status == 1)
{
/* remember default directory */
setvar("_rjspickdir", strrev(strfind(pathchar, strrev(_rjsfname))));
/* history */
pdchist(_rjsstr_title, "rtjson", _rjsstr_title);
if (strlen(_dvar) > 0)
{
eval(sprintf("setvar(%s, readjson(_rjsfname))", _dvar));
viewobject(eval(_dvar));
}
else
{
viewobject(readjson(_rjsfname));
}
}
else
{
/* reset to original name */
if (strlen(orgname) > 0)
{
setvar("_rjsfname", orgname);
}
}
}