git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@4417 3789f03b-4d11-0410-bbf8-ca57d06f2519tags/v1.1.90
@@ -107,6 +107,39 @@ void CConn::refreshFramebuffer() | |||
forceNonincremental = true; | |||
} | |||
const char *CConn::connectionInfo() | |||
{ | |||
static char infoText[1024] = ""; | |||
char pfStr[100]; | |||
char spfStr[100]; | |||
cp.pf().print(pfStr, 100); | |||
serverPF.print(spfStr, 100); | |||
int secType = csecurity->getType(); | |||
snprintf(infoText, sizeof(infoText), | |||
_("Desktop name: %.80s\n" | |||
"Host: %.80s port: %d\n" | |||
"Size: %d x %d\n" | |||
"Pixel format: %s\n" | |||
"(server default %s)\n" | |||
"Requested encoding: %s\n" | |||
"Last used encoding: %s\n" | |||
"Line speed estimate: %d kbit/s\n" | |||
"Protocol version: %d.%d\n" | |||
"Security method: %s\n"), | |||
cp.name(), serverHost, serverPort, cp.width, cp.height, | |||
pfStr, spfStr, encodingName(currentEncoding), | |||
encodingName(lastServerEncoding), | |||
sock->inStream().kbitsPerSecond(), | |||
cp.majorVersion, cp.minorVersion, | |||
secTypeName(secType)); | |||
return infoText; | |||
} | |||
// The RFB core is not properly asynchronous, so it calls this callback | |||
// whenever it needs to block to wait for more data. Since FLTK is | |||
// monitoring the socket, we just make sure FLTK gets to run. |
@@ -34,6 +34,8 @@ public: | |||
void refreshFramebuffer(); | |||
const char *connectionInfo(); | |||
// FdInStreamBlockCallback methods | |||
void blockCallback(); | |||
@@ -22,6 +22,7 @@ | |||
#include <string.h> | |||
#include <FL/fl_draw.H> | |||
#include <FL/fl_ask.H> | |||
#include <rfb/CMsgWriter.h> | |||
#include <rfb/LogWriter.h> | |||
@@ -54,7 +55,7 @@ static rfb::LogWriter vlog("Viewport"); | |||
// Menu constants | |||
enum { ID_EXIT, ID_CTRL, ID_ALT, ID_MENUKEY, ID_CTRLALTDEL, | |||
ID_REFRESH, ID_OPTIONS, ID_ABOUT, ID_DISMISS }; | |||
ID_REFRESH, ID_OPTIONS, ID_INFO, ID_ABOUT, ID_DISMISS }; | |||
Viewport::Viewport(int w, int h, const rfb::PixelFormat& serverPF, CConn* cc_) | |||
: Fl_Widget(0, 0, w, h), cc(cc_), frameBuffer(NULL), pixelTrans(NULL), | |||
@@ -452,6 +453,7 @@ void Viewport::initContextMenu() | |||
contextMenu->add(_("Refresh screen"), 0, NULL, (void*)ID_REFRESH, FL_MENU_DIVIDER); | |||
contextMenu->add(_("Options..."), 0, NULL, (void*)ID_OPTIONS, 0); | |||
contextMenu->add(_("Connection info..."), 0, NULL, (void*)ID_INFO, 0); | |||
contextMenu->add(_("About TigerVNC viewer..."), 0, NULL, (void*)ID_ABOUT, FL_MENU_DIVIDER); | |||
contextMenu->add(_("Dismiss menu"), 0, NULL, (void*)ID_DISMISS, 0); | |||
@@ -503,6 +505,10 @@ void Viewport::popupContextMenu() | |||
case ID_OPTIONS: | |||
OptionsDialog::showDialog(); | |||
break; | |||
case ID_INFO: | |||
fl_message_title(_("VNC connection info")); | |||
fl_message(cc->connectionInfo()); | |||
break; | |||
case ID_ABOUT: | |||
about_vncviewer(); | |||
break; |