Warning: session_start(): open(/var/lib/php/sessions/sess_ggfbp8rde0lj8qm2ajtt774pic, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!759
sS background = #1009931;
static JDesktopPane desktop;
static JTextField tfInput;
//static L modules;
static ReliableSingleThread rst = new(f updateModules);
p-subst {
autoRestart(5);
db();
desktop = jTiledBackgroundDesktopPane(background);
autoFixDesktopPane(desktop);
cleanExitOnFrameClose(showMaximizedFrame(desktop));
final JInternalFrame f = showCenteredInternalFrame(desktop, "Hello", 700, 150, setFontSize(20, tfInput = jcenteredtextfield("Find me some stuff")));
packInternalFrameVertically(f);
centerInternalFrame(f);
swing {
f.setLocation(f.getX(), 40);
}
cset(uniq(ModuleClasses), on := true, visible := true);
for (Module m : onModules())
startModule(m);
addConceptIndex(simpleConceptIndex(rTrigger(rst)));
}
svoid updateModules {
for (Module m : onModules())
pcall { m.update(); }
}
svoid cleanMeUp {
print('cleanMeUp);
for (Module m) if (m.vis != null) pcall {
print(m);
m.unvisualize();
}
print("done cleanMeUp");
}
static L onModules() {
ret conceptsWhere(Module, on := true);
}
sbool hasModuleWithFields(Class c, O... params) {
ret hasConcept(Module, c, concatArrays(new O[] {on := true}, params));
}
svoid startModule(Module m) {
//addIfNotThere(modules, m);
lock m.lock;
if (m.started) ret;
m.started = true;
m.start();
if (m.visible) showModule(m);
}
svoid showModule(final Module m) {
startModule(m);
lock m.lock;
cset(m, visible := true);
pcall-messagebox {
if (m.vis == null)
m.vis = m.visualize();
}
if (m.vis != null) swing {
Rect r = m.frameRect;
if (r == null) randomRect(desktop.getWidth(), desktop.getHeight(), 10, 150, 100);
if (r == null) r = Rect(10, 10, 200, 100);
print("Showing frame at " + r);
S frameTitle = humanizeFormLabel(shortClassName(m));
onInternalFrameClosing(showInternalFrame(desktop, frameTitle, r.x, r.y, r.w, r.h, m.vis), r {
cset(m, visible := false);
m.unvisualize();
});
}
}
concept Module {
transient Component vis;
transient bool started;
transient Lock lock = lock();
bool on = true, visible;
Rect frameRect;
JComponent visualize() { ret jCenteredMultiLineLabel(sfu(this)); }
void unvisualize() { unvisualize1(); unvisualize2(); }
void start() {}
void unvisualize1() {
print("unvisualize1");
JInternalFrame f = getInternalFrame(vis);
if (f != null)
cset(this, frameRect := toRect(getBounds(f)));
vis = null;
print("done unvisualize1");
}
void unvisualize2() {}
void update() {}
void delete() {
unvisualize();
cleanUp(this);
super.delete();
}
}
sclass InterestingStringModule extends Module {
S theString;
}
sclass InputToInterestingString extends Module {
transient java.util.Timer timer;
void start {
timer = doEvery(1000, r {
S s = getTextTrim(tfInput);
if (!hasModuleWithFields(InterestingStringModule, theString := s))
startModule(nu(InterestingStringModule, theString := s));
});
}
void cleanMeUp() { cancelTimer(timer); }
}
sclass ModuleCount extends Module {
transient JLabel label;
void update {
if (label != null)
setText(label, lstr(onModules()));
}
JComponent visualize() {
label = setFontSize(30, jcenteredlabel(lstr(onModules())));
ret label;
}
void unvisualize2() { label = null; }
}
sclass ModuleList extends Module {
transient JList list;
void update() {
if (list != null)
fillListWithStrings(list, calc());
}
JComponent visualize() {
list = jlist(calc());
listPopupMenuItem(list, "Delete", voidfunc(fS s) {
thread-messagebox {
Module m = getConcept(Module, parseFirstLong(s));
removeConcept(m);
}
});
ret list;
}
L calc() {
ret map(func(Module m) -> S { renderConcept(m) /* contains id as first int */ }, onModules());
}
void unvisualize2() { list = null; }
}
sclass ModuleClasses extends Module {
transient L> classes;
void start() {
classes = myNonAbstractClassesImplementing(Module);
}
JComponent visualize() {
JList list = jlist(map shortClassName(classes));
listPopupMenuItem(list, "Instantiate", voidfunc(fS s) {
thread-messagebox {
showModule((Module) nu(classForName("main$" + s)));
}
});
ret list;
}
}
sclass DynModule extends Module {
transient O o;
JComponent visualize() { ret (JComponent) callOpt(o, 'visualize); }
void start() {
callOpt(o, 'start, this); }
}
void unvisualize1() {
JInternalFrame f = getInternalFrame(vis);
if (f != null)
cset(this, frameRect := toRect(getBounds(f)));
vis = null;
}
void unvisualize2() { callOpt(o, 'unvisualize2); }
void update() { callOpt(o, 'update); }
}