Warning: session_start(): open(/var/lib/php/sessions/sess_9pprif8ac7vod17vs6lc5oun54, 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
!7
concept Profile {
S name, options, computerID;
}
cmodule VNCViewerTrayIcon > DynCRUD {
transient TrayIcon trayIcon;
bool inProcess;
S switchableFields() { ret 'inProcess; }
*() { super(Profile); }
start {
db();
onConceptsChangeAndNow(r makeTrayIcon);
}
void makeTrayIcon enter {
disposeTrayIcon(trayIcon);
L menuItems = ll(r launchVNCViewer);
for (final Profile p : sortConceptsByID(list(Profile)))
addAll(menuItems, p.name, r { launch(p) });
add(menuItems, "---");
addAll(menuItems, "VNC Viewer Connection Dialog", r { if (inProcess) launchVNCViewer_inProcess(); else launchVNCViewer() });
addAll(menuItems, "Edit Profiles...", r dm_activateOSAndModule);
trayIcon = installTrayIcon(#1101468, "Start VNC Viewer", menuItems);
}
afterVisualize {
// TODO: disable when at beginning/end of list
addSelectionDependentButton("Move Up", r {
Profile a = selected(), b = itemBefore(list(), a);
if (a != null && b != null)
swapConceptIDs(a, b);
});
addSelectionDependentButton("Move Down", r {
Profile a = selected(), b = itemAfter(list(), a);
if (a != null && b != null)
swapConceptIDs(a, b);
});
addSelectionDependentButton("Connect", rThread {
launch(selected());
});
}
void cleanMeUp {
disposeTrayIcon(trayIcon);
}
void launch(Profile p) {
if (p == null) ret;
if (inProcess) launchVNCViewer_inProcess(p.options); else launchVNCViewer(p.options);
}
}