View Raw SPL
#include
extern _wtxval;
/* delimiters */
extern _wttab;
extern _wtspace;
extern _wtcomma;
extern _wtsemi;
extern _wtother;
extern _wtotherstr;
extern _wthex;
extern _wtcsv;
extern _wtlbf;
extern _wtlidt;
extern _cvs_wttab;
extern _cvs_wtspace;
extern _cvs_wtcomma;
extern _cvs_wtsemi;
extern _cvs_wtother;
extern _cvs_wtotherstr;
extern _cvs_wthex;
static _wttab_save;
static _wtspace_save;
static _wtcomma_save;
static _wtsemi_save;
static _wtother_save;
static _wtotherstr_save;
/* gui based writet */
wtfname(fname)
{
local orgname, fn, dl, collist, hformat, form, wlist;
/* set default name to appear in dialog box */
if (argc > 0)
{
/* use input filename */
setvar("_wtfname", fname);
setvar("_wtpickdir", strrev(strfind(pathchar, strrev(_wtfname))));
}
else
{
/* just define the variable */
defvar("_wtfname", "");
}
/* define start directory if it doesn't already exist */
defvar("_wtpickdir", "");
/* define savemode */
defvar("_wtsmode", 0);
/* precision */
defvar("_wtprec", castint(getconf("DISPLAY_PRECISION")));
defvar("_wtdprec", 1);
/* hex */
defvar("_wthex", 0);
/* csv */
defvar("_wtcsv", 0);
/* show formula */
defvar("_wtwinf", 0);
/* header */
defvar("_wtlheader", 0);
defvar("_wtcheader", 0);
defvar("_wtuheader", 0);
/* _pickfile_status == 1 if dialog was successful */
setvar("_pickfile_status", 0);
/* series name state */
setvar("_wtser", 1);
/* input windows */
defvar("_wtwins", "");
/* remember original name */
orgname = _wtfname;
/* xvals */
defvar("_wtxval", 0);
/* default delimiters */
if (_wtcsv)
{
wtfname_def_csv_delim();
}
else
{
wtfname_def_delim();
}
/* save initial delimiters */
wtfname_save_delim();
setvar("_wtwlist", "");
/* invoke dialog box */
_mf("writet.tab");
if (_pickfile_status != 0) /* dialog was successful */
{
/* set delimiters */
_setwtdl(_wttab, _wtspace, _wtcomma, _wtsemi, _wtother, _wtotherstr);
if (_wtcsv)
{
/* save CSV delimiters */
wtfname_save_csv_delim();
}
/* remember default directory */
setvar("_wtpickdir", strrev(strfind(pathchar, strrev(_wtfname))));
fn = sprintf('"%s"', _wtfname);
/* check if double quote a delimiter */
if (strlen(strfind('"', _writet_delimiters)) > 0)
{
dl = sprintf("'%s'", _writet_delimiters);
}
else
{
dl = sprintf('"%s"', _writet_delimiters);
}
verbose = 1;
/* column label options */
header = _wtlheader + _wtcheader + _wtuheader;
if (strlen(_wtwlist) <= 0)
{
/* no data to write */
error(sprintf("writetable: %s", _rwterr_ndw));
}
else
{
/* get window list with x vals */
wlist = wtfname_series(_wtwlist)
}
if (strlen(_wtfname) > 0 && strlen(wlist) > 0)
{
if (setwfmode == 1)
{
if (_wthex)
{
hformat = sprintf('"%s%d.%dx"', "%", _wtprec, _wtprec);
form = sprintf("setwf('writet(%s, %s, %d, %s, %s, %d, %d, %d, %d)')", fn, wlist, _wtsmode, dl, hformat, -1, header, verbose, _wtxval);
}
else
{
form = sprintf("setwf('writet(%s, %s, %d, %s, %d, %d, %d, %d)')", fn, wlist, _wtsmode, dl, _wtprec, header, verbose, _wtxval);
}
}
else
{
if (_wthex)
{
hformat = sprintf('"%s%d.%dx"', "%", _wtprec, _wtprec);
form = sprintf('writet(%s, %s, %d, %s, %s, %d, %d, %d, %d)', fn, wlist, _wtsmode, dl, hformat, -1, header, verbose, _wtxval);
}
else
{
form = sprintf('writet(%s, %s, %d, %s, %d, %d, %d, %d)', fn, wlist, _wtsmode, dl, _wtprec, header, verbose, _wtxval);
}
}
/* evaluate */
eval(form);
}
}
else
{
/* reset to original name */
setvar("_wtfname", orgname);
}
if (_wtcsv)
{
wtfname_restore_delim();
}
}
wtfname_series(wlist)
{
local ser, k = 1, outlist = "";
/* remove empty windows */
wlist = _remempty_winlist(wlist);
return(wlist); //
/* add x vals */
while (1)
{
ser = strget(k, wlist, ",");
if (strlen(ser) == 0)
{
break;
}
outlist += wtfname_series_x(ser) + ",";
k++;
}
outlist = strextract(outlist, 1, strlen(outlist) - 1);
return(outlist);
}
wtfname_series_x(ser)
{
local xser, yser, zser, is_xy, is_xyz;
is_xy = eval(sprintf("isxy(%s)", ser));
is_xyz = eval(sprintf("isxyz(%s)", ser));
if (is_xy)
{
xser = sprintf("xvals(%s)", ser);
yser = sprintf("yvals(%s)", ser);
}
else if (is_xyz)
{
xser = sprintf("xvals(%s)", ser);
yser = sprintf("yvals(%s)", ser);
zser = sprintf("zvals(%s)", ser);
}
else
{
xser = sprintf("col(xvals(%s), 1)", ser);
yser = ser;
}
switch (_wtxval)
{
case 0:
default:
ser = (is_xyz) ? zser : yser;
break;
case 1:
ser = (is_xyz) ? sprintf("ravel(%s, %s, %s)", xser, yser, zser) :
sprintf("ravel(%s, %s)", xser, yser);
break;
case 2:
ser = (is_xyz) ? sprintf("ravel(%s, %s, %s)", zser, yser, xser) :
sprintf("ravel(%s, %s)", yser, xser);
break;
}
return(ser);
}
wtfname_def_delim()
{
defvar("_wttab", "0");
defvar("_wtspace", "1");
defvar("_wtcomma", "0");
defvar("_wtsemi", "0");
defvar("_wtother", "0");
defvar("_wtotherstr", "");
}
wtfname_def_csv_delim()
{
defvar("_cvs_wttab", "0");
defvar("_cvs_wtspace", "0");
defvar("_cvs_wtcomma", "1");
defvar("_cvs_wtsemi", "0");
defvar("_cvs_wtother", "0");
defvar("_cvs_wtotherstr", "");
defvar("_cvs_wthex", "0");
}
wtfname_save_delim()
{
_wttab_save = _wttab;
_wtspace_save = _wtspace;
_wtcomma_save = _wtcomma;
_wtsemi_save = _wtsemi;
_wtother_save = _wtother;
_wtotherstr_save = _wtotherstr;
_wthex_save = _wthex;
}
wtfname_set_csv_delim()
{
_wttab = _cvs_wttab;
_wtspace = _cvs_wtspace;
_wtcomma = _cvs_wtcomma;
_wtsemi = _cvs_wtsemi;
_wtother = _cvs_wtother;
_wtotherstr = _cvs_wtotherstr;
}
wtfname_save_csv_delim()
{
_cvs_wttab = _wttab;
_cvs_wtspace = _wtspace;
_cvs_wtcomma = _wtcomma;
_cvs_wtsemi = _wtsemi;
_cvs_wtother = _wtother;
_cvs_wtotherstr = _wtotherstr;
_cvs_wthex = _wthex;
}
wtfname_restore_delim()
{
_wttab = _wttab_save;
_wtspace = _wtspace_save;
_wtcomma = _wtcomma_save;
_wtsemi = _wtsemi_save;
_wtother = _wtother_save;
_wtotherstr = _wtotherstr_save;
}
wtfname_setdelim()
{
if (_wtcsv)
{
wtfname_def_csv_delim();
wtfname_set_csv_delim();
}
else
{
wtfname_restore_delim();
}
}
wtfname_filespec()
{
if (_wtcsv)
{
/* CSV, DAT, TXT files */
spec = _wrtopt_cdt;
}
else
{
/* DAT, TXT, CSV files */
spec = _wrtopt_dtc;
}
return(spec);
}