View Raw SPL
/* save image file */
simfname(fname)
{
        local orgname, fn;

        /* set default name to appear in dialog box */
        if (argc > 0)
        {
                /* use input filename */
                setvar("_sifname", fname);
                setvar("_sipickdir", strrev(strfind(pathchar, strrev(_sifname))));
        }
        else
        {
                /* just define the variable */
                defvar("_sifname", "");
        }

        /* define start directory if it doesn't already exist */
        defvar("_sipickdir", "");

        /* define overwrite mode */
        defvar("_simmode", 0);

        /* _pickfile_status == 1 if dialog was successful */
        setvar("_pickfile_status", 0);

        setvar("_simwin", sprintf("W%d", getwnum()));

        /* remember original name */
        orgname = _sifname;

        /* invoke dialog box */
        _mf("saveimg.pan");

        if (_pickfile_status == 1)   /* dialog was successful */
        {
                /* remember default directory */
                setvar("_sipickdir", strrev(strfind(pathchar, strrev(_sifname))));

                if (strlen(_sifname) > 0)
                {
                        fn = sprintf('"%s"', _sifname);
                        eval(sprintf("Saveimage(%s, %s, %d)", fn, _simwin, _simmode));
                }
        }
        else
        {
                /* reset to original name */
                if (strlen(orgname) > 0)
                {
                        setvar("_sifname", orgname);
                }
        }
}