Warning: session_start(): open(/var/lib/php/sessions/sess_he3ht0t8feoh3g4449l9ddjf6q, 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;
S computerID; // to send clipboard (optional)
}
cmodule VNCViewerTrayIcon > DynCRUD {
transient TrayIcon trayIcon;
switchable bool inProcess; // don't think true works yet
transient ReliableSingleThread rstMakeTrayIcon = dm_rst(this, rstMakeTrayIcon);
start {
db();
onConceptsChangeAndNow(doLater(2.0, rstMakeTrayIcon));
}
void makeTrayIcon enter {
disposeTrayIcon(trayIcon);
L menuItems = ll(r launchVNCViewer);
for (Profile p : sortConceptsByID(list(Profile)))
addAll(menuItems, p.name, r { launch(p) });
add(menuItems, "---");
L withComputerID = whereFieldNempty computerID(list(Profile));
if (nempty(withComputerID)) {
for (Profile p : withComputerID)
addAll(menuItems, "Send clipboard to " + p.name, r { dm_sendClipboardTo_verbose(p.computerID) });
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);
}
}