implement Pimpl;
include "sys.m";
sys: Sys;
sprint, fprint: import sys;
include "styx.m";
include "styxservers.m";
Styxserver: import Styxservers;
include "daytime.m";
include "dat.m";
dat: Dat;
mnt, evc, Qdir, debug, appl, slash: import dat;
include "string.m";
str: String;
splitl: import str;
include "names.m";
names: Names;
dirname: import names;
include "error.m";
err: Error;
checkload, panic, stderr: import err;
include "tbl.m";
tbl: Tbl;
Table: import tbl;
include "mpanel.m";
Amax, Panel, Repl, Tappl, Trepl: import Panels;
init(d: Dat): list of string
{
dat = d;
sys = dat->sys;
err = dat->err;
str = dat->str;
names = dat->names;
return list of {"gauge:", "slider:"};
}
pinit(p: ref Panel)
{
p.data = array of byte "30\n";
}
rinit(nil: ref Panel, r: ref Repl)
{
nattrs := array[len r.attrs] of string;
nattrs[0:] = r.attrs;
r.attrs = nattrs;
}
strchr(s : string, c : int) : int
{
for (i := 0; i < len s; i++)
if (s[i] == c)
return i;
return -1;
}
newdata(p: ref Panel): string
{
s := string p.data;
for (i := 0; i < len s; i++)
if (strchr("0123456789", s[i]) < 0)
break;
if ((i == '\n' && i == len s - 1) || i == len s){
n := int s;
if (n < 0 || n > 100)
return "value not in [0,100]";
p.data = array of byte(string n + "\n");
return nil;
}
return "not a number";
}
ctl(nil: ref Panel, nil: ref Repl, nil: list of string): (int, string)
{
return (0, "not mine");
}
|