Added debug level combo box and version number to title bar.

This commit is contained in:
crs 2002-09-14 12:05:06 +00:00
parent 06856e170d
commit 10bbf6f824
3 changed files with 329 additions and 294 deletions

View File

@ -16,6 +16,7 @@
#include "ProtocolTypes.h" #include "ProtocolTypes.h"
#include "CPlatform.h" #include "CPlatform.h"
#include "CNetwork.h" #include "CNetwork.h"
#include "CLog.h"
#include "Version.h" #include "Version.h"
#include "stdvector.h" #include "stdvector.h"
#include "resource.h" #include "resource.h"
@ -50,6 +51,17 @@ HINSTANCE s_instance = NULL;
static const TCHAR* s_mainClass = TEXT("GoSynergy"); static const TCHAR* s_mainClass = TEXT("GoSynergy");
static const TCHAR* s_layoutClass = TEXT("SynergyLayout"); static const TCHAR* s_layoutClass = TEXT("SynergyLayout");
static const char* s_debugName[][2] = {
{ TEXT("Error"), "ERROR" },
{ TEXT("Warning"), "WARNING" },
{ TEXT("Note"), "NOTE" },
{ TEXT("Info"), "INFO" },
{ TEXT("Debug"), "DEBUG" },
{ TEXT("Debug1"), "DEBUG1" },
{ TEXT("Debug2"), "DEBUG2" }
};
static const int s_defaultDebug = 3; // INFO
static HWND s_mainWindow; static HWND s_mainWindow;
static CConfig s_config; static CConfig s_config;
static CConfig s_oldConfig; static CConfig s_oldConfig;
@ -97,7 +109,7 @@ static
bool bool
isClientChecked(HWND hwnd) isClientChecked(HWND hwnd)
{ {
HWND child = GetDlgItem(hwnd, IDC_MAIN_CLIENT_RADIO); HWND child = getItem(hwnd, IDC_MAIN_CLIENT_RADIO);
return (SendMessage(child, BM_GETCHECK, 0, 0) == BST_CHECKED); return (SendMessage(child, BM_GETCHECK, 0, 0) == BST_CHECKED);
} }
@ -116,7 +128,7 @@ enableScreensControls(HWND hwnd)
bool client = isClientChecked(hwnd); bool client = isClientChecked(hwnd);
bool screenSelected = false; bool screenSelected = false;
if (!client) { if (!client) {
HWND child = GetDlgItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST);
if (SendMessage(child, LB_GETCURSEL, 0, 0) != LB_ERR) { if (SendMessage(child, LB_GETCURSEL, 0, 0) != LB_ERR) {
screenSelected = true; screenSelected = true;
} }
@ -167,7 +179,7 @@ updateNeighbor(HWND hwnd, const CString& screen, EDirection direction)
} }
// add empty neighbor to combo box // add empty neighbor to combo box
SendMessage(hwnd, CB_ADDSTRING, 0, (LPARAM)"---"); SendMessage(hwnd, CB_ADDSTRING, 0, (LPARAM)TEXT("---"));
// select neighbor in combo box // select neighbor in combo box
LRESULT index = 0; LRESULT index = 0;
@ -190,20 +202,20 @@ updateNeighbors(HWND hwnd)
{ {
// get selected screen name or empty string if no selection // get selected screen name or empty string if no selection
CString screen; CString screen;
HWND child = GetDlgItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST);
LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0); LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0);
if (index != LB_ERR) { if (index != LB_ERR) {
screen = s_screens[index]; screen = s_screens[index];
} }
// set neighbor combo boxes // set neighbor combo boxes
child = GetDlgItem(hwnd, IDC_MAIN_SERVER_LEFT_COMBO); child = getItem(hwnd, IDC_MAIN_SERVER_LEFT_COMBO);
updateNeighbor(child, screen, kLeft); updateNeighbor(child, screen, kLeft);
child = GetDlgItem(hwnd, IDC_MAIN_SERVER_RIGHT_COMBO); child = getItem(hwnd, IDC_MAIN_SERVER_RIGHT_COMBO);
updateNeighbor(child, screen, kRight); updateNeighbor(child, screen, kRight);
child = GetDlgItem(hwnd, IDC_MAIN_SERVER_TOP_COMBO); child = getItem(hwnd, IDC_MAIN_SERVER_TOP_COMBO);
updateNeighbor(child, screen, kTop); updateNeighbor(child, screen, kTop);
child = GetDlgItem(hwnd, IDC_MAIN_SERVER_BOTTOM_COMBO); child = getItem(hwnd, IDC_MAIN_SERVER_BOTTOM_COMBO);
updateNeighbor(child, screen, kBottom); updateNeighbor(child, screen, kBottom);
} }
@ -221,7 +233,7 @@ addScreen(HWND hwnd)
UInt32 i = s_screens.size(); UInt32 i = s_screens.size();
// add screen to list control // add screen to list control
HWND child = GetDlgItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST);
CString item = CStringUtil::print("%d. %s", CString item = CStringUtil::print("%d. %s",
i + 1, info.m_screen.c_str()); i + 1, info.m_screen.c_str());
SendMessage(child, LB_ADDSTRING, 0, (LPARAM)item.c_str()); SendMessage(child, LB_ADDSTRING, 0, (LPARAM)item.c_str());
@ -250,7 +262,7 @@ void
editScreen(HWND hwnd) editScreen(HWND hwnd)
{ {
// get selected list item // get selected list item
HWND child = GetDlgItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST);
LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0); LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0);
if (index == LB_ERR) { if (index == LB_ERR) {
// no selection // no selection
@ -311,7 +323,7 @@ void
removeScreen(HWND hwnd) removeScreen(HWND hwnd)
{ {
// get selected list item // get selected list item
HWND child = GetDlgItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST);
LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0); LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0);
if (index == LB_ERR) { if (index == LB_ERR) {
// no selection // no selection
@ -341,7 +353,7 @@ void
changeNeighbor(HWND hwnd, HWND combo, EDirection direction) changeNeighbor(HWND hwnd, HWND combo, EDirection direction)
{ {
// get selected screen // get selected screen
HWND child = GetDlgItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); HWND child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST);
LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0); LRESULT index = SendMessage(child, LB_GETCURSEL, 0, 0);
if (index == LB_ERR) { if (index == LB_ERR) {
// no selection // no selection
@ -430,7 +442,7 @@ getCommandLine(HWND hwnd, bool testing)
const bool isClient = isClientChecked(hwnd); const bool isClient = isClientChecked(hwnd);
// get and verify screen name // get and verify screen name
HWND child = GetDlgItem(hwnd, IDC_MAIN_ADVANCED_NAME_EDIT); HWND child = getItem(hwnd, IDC_MAIN_ADVANCED_NAME_EDIT);
CString name = getWindowText(child); CString name = getWindowText(child);
if (!s_config.isValidScreenName(name)) { if (!s_config.isValidScreenName(name)) {
showError(hwnd, CStringUtil::format( showError(hwnd, CStringUtil::format(
@ -448,7 +460,7 @@ getCommandLine(HWND hwnd, bool testing)
} }
// get and verify port // get and verify port
child = GetDlgItem(hwnd, IDC_MAIN_ADVANCED_PORT_EDIT); child = getItem(hwnd, IDC_MAIN_ADVANCED_PORT_EDIT);
CString portString = getWindowText(child); CString portString = getWindowText(child);
UInt32 port = (UInt32)atoi(portString.c_str()); UInt32 port = (UInt32)atoi(portString.c_str());
if (port < 1 || port > 65535) { if (port < 1 || port > 65535) {
@ -464,13 +476,19 @@ getCommandLine(HWND hwnd, bool testing)
// prepare command line // prepare command line
CString cmdLine; CString cmdLine;
if (testing) { if (testing) {
// constant testing args
cmdLine += " -z --no-restart --no-daemon"; cmdLine += " -z --no-restart --no-daemon";
// debug level testing arg
child = getItem(hwnd, IDC_MAIN_DEBUG);
cmdLine += " --debug ";
cmdLine += s_debugName[SendMessage(child, CB_GETCURSEL, 0, 0)][1];
} }
cmdLine += " --name "; cmdLine += " --name ";
cmdLine += name; cmdLine += name;
if (isClient) { if (isClient) {
// check server name // check server name
child = GetDlgItem(hwnd, IDC_MAIN_CLIENT_SERVER_NAME_EDIT); child = getItem(hwnd, IDC_MAIN_CLIENT_SERVER_NAME_EDIT);
CString server = getWindowText(child); CString server = getWindowText(child);
if (!s_config.isValidScreenName(server)) { if (!s_config.isValidScreenName(server)) {
showError(hwnd, CStringUtil::format( showError(hwnd, CStringUtil::format(
@ -633,6 +651,10 @@ initMainWindow(HWND hwnd)
{ {
CPlatform platform; CPlatform platform;
// append version number to title
CString titleFormat = getString(IDS_TITLE);
setWindowText(hwnd, CStringUtil::format(titleFormat.c_str(), VERSION));
// load configuration // load configuration
bool configLoaded = loadConfig(s_config); bool configLoaded = loadConfig(s_config);
s_oldConfig = s_config; s_oldConfig = s_config;
@ -640,17 +662,17 @@ initMainWindow(HWND hwnd)
// choose client/server radio buttons // choose client/server radio buttons
HWND child; HWND child;
child = GetDlgItem(hwnd, IDC_MAIN_CLIENT_RADIO); child = getItem(hwnd, IDC_MAIN_CLIENT_RADIO);
SendMessage(child, BM_SETCHECK, !configLoaded ? SendMessage(child, BM_SETCHECK, !configLoaded ?
BST_CHECKED : BST_UNCHECKED, 0); BST_CHECKED : BST_UNCHECKED, 0);
child = GetDlgItem(hwnd, IDC_MAIN_SERVER_RADIO); child = getItem(hwnd, IDC_MAIN_SERVER_RADIO);
SendMessage(child, BM_SETCHECK, configLoaded ? SendMessage(child, BM_SETCHECK, configLoaded ?
BST_CHECKED : BST_UNCHECKED, 0); BST_CHECKED : BST_UNCHECKED, 0);
// if config is loaded then initialize server controls // if config is loaded then initialize server controls
if (configLoaded) { if (configLoaded) {
int i = 1; int i = 1;
child = GetDlgItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST); child = getItem(hwnd, IDC_MAIN_SERVER_SCREENS_LIST);
for (CConfig::const_iterator index = s_config.begin(); for (CConfig::const_iterator index = s_config.begin();
index != s_config.end(); ++i, ++index) { index != s_config.end(); ++i, ++index) {
s_screens.push_back(*index); s_screens.push_back(*index);
@ -662,13 +684,20 @@ initMainWindow(HWND hwnd)
// initialize other controls // initialize other controls
char buffer[256]; char buffer[256];
sprintf(buffer, "%d", kDefaultPort); sprintf(buffer, "%d", kDefaultPort);
child = GetDlgItem(hwnd, IDC_MAIN_ADVANCED_PORT_EDIT); child = getItem(hwnd, IDC_MAIN_ADVANCED_PORT_EDIT);
SendMessage(child, WM_SETTEXT, 0, (LPARAM)buffer); SendMessage(child, WM_SETTEXT, 0, (LPARAM)buffer);
CNetwork::gethostname(buffer, sizeof(buffer)); CNetwork::gethostname(buffer, sizeof(buffer));
child = GetDlgItem(hwnd, IDC_MAIN_ADVANCED_NAME_EDIT); child = getItem(hwnd, IDC_MAIN_ADVANCED_NAME_EDIT);
SendMessage(child, WM_SETTEXT, 0, (LPARAM)buffer); SendMessage(child, WM_SETTEXT, 0, (LPARAM)buffer);
child = getItem(hwnd, IDC_MAIN_DEBUG);
for (unsigned int i = 0; i < sizeof(s_debugName) /
sizeof(s_debugName[0]); ++i) {
SendMessage(child, CB_ADDSTRING, 0, (LPARAM)s_debugName[i][0]);
}
SendMessage(child, CB_SETCURSEL, s_defaultDebug, 0);
// update neighbor combo boxes // update neighbor combo boxes
enableMainWindowControls(hwnd); enableMainWindowControls(hwnd);
updateNeighbors(hwnd); updateNeighbors(hwnd);
@ -686,7 +715,7 @@ addDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
info = (CScreenInfo*)lParam; info = (CScreenInfo*)lParam;
// fill in screen name // fill in screen name
HWND child = GetDlgItem(hwnd, IDC_ADD_SCREEN_NAME_EDIT); HWND child = getItem(hwnd, IDC_ADD_SCREEN_NAME_EDIT);
SendMessage(child, WM_SETTEXT, 0, (LPARAM)info->m_screen.c_str()); SendMessage(child, WM_SETTEXT, 0, (LPARAM)info->m_screen.c_str());
// fill in aliases // fill in aliases
@ -698,7 +727,7 @@ addDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
} }
aliases += *index; aliases += *index;
} }
child = GetDlgItem(hwnd, IDC_ADD_ALIASES_EDIT); child = getItem(hwnd, IDC_ADD_ALIASES_EDIT);
SendMessage(child, WM_SETTEXT, 0, (LPARAM)aliases.c_str()); SendMessage(child, WM_SETTEXT, 0, (LPARAM)aliases.c_str());
return TRUE; return TRUE;
@ -711,9 +740,9 @@ addDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
CStringList newAliases; CStringList newAliases;
// extract name and aliases // extract name and aliases
HWND child = GetDlgItem(hwnd, IDC_ADD_SCREEN_NAME_EDIT); HWND child = getItem(hwnd, IDC_ADD_SCREEN_NAME_EDIT);
newName = getWindowText(child); newName = getWindowText(child);
child = GetDlgItem(hwnd, IDC_ADD_ALIASES_EDIT); child = getItem(hwnd, IDC_ADD_ALIASES_EDIT);
tokenize(newAliases, getWindowText(child)); tokenize(newAliases, getWindowText(child));
// name must be valid // name must be valid

View File

@ -97,6 +97,9 @@ BEGIN
ES_NUMBER ES_NUMBER
LTEXT "Automatic Startup:",IDC_STATIC,12,212,59,8 LTEXT "Automatic Startup:",IDC_STATIC,12,212,59,8
PUSHBUTTON "Con&figure...",IDC_MAIN_AUTOSTART,78,210,50,14 PUSHBUTTON "Con&figure...",IDC_MAIN_AUTOSTART,78,210,50,14
LTEXT "Test &Debug Level:",IDC_STATIC,151,212,60,8
COMBOBOX IDC_MAIN_DEBUG,216,210,61,60,CBS_DROPDOWNLIST |
WS_VSCROLL | WS_TABSTOP
PUSHBUTTON "Sa&ve",IDC_MAIN_SAVE,75,241,50,14 PUSHBUTTON "Sa&ve",IDC_MAIN_SAVE,75,241,50,14
DEFPUSHBUTTON "&Test",IDC_MAIN_TEST,131,241,50,14 DEFPUSHBUTTON "&Test",IDC_MAIN_TEST,131,241,50,14
PUSHBUTTON "Start",IDOK,187,241,50,14 PUSHBUTTON "Start",IDOK,187,241,50,14
@ -250,6 +253,7 @@ BEGIN
IDS_UNINSTALLED_SYSTEM "Removed auto-start. Synergy will not automatically start each time you start or reboot your computer." IDS_UNINSTALLED_SYSTEM "Removed auto-start. Synergy will not automatically start each time you start or reboot your computer."
IDS_UNINSTALLED_USER "Removed auto-start. Synergy will not automatically start each time you log in." IDS_UNINSTALLED_USER "Removed auto-start. Synergy will not automatically start each time you log in."
IDS_INVALID_SERVER_NAME "Server name `%{1}' is invalid." IDS_INVALID_SERVER_NAME "Server name `%{1}' is invalid."
IDS_TITLE "Synergy - Version %{1}"
END END
#endif // English (U.S.) resources #endif // English (U.S.) resources

View File

@ -36,6 +36,7 @@
#define IDS_UNINSTALLED_SYSTEM 32 #define IDS_UNINSTALLED_SYSTEM 32
#define IDS_UNINSTALLED_USER 33 #define IDS_UNINSTALLED_USER 33
#define IDS_INVALID_SERVER_NAME 34 #define IDS_INVALID_SERVER_NAME 34
#define IDS_TITLE 35
#define IDD_MAIN 101 #define IDD_MAIN 101
#define IDD_ADD 102 #define IDD_ADD 102
#define IDD_WAIT 103 #define IDD_WAIT 103
@ -71,6 +72,7 @@
#define IDC_AUTOSTART_INSTALL_USER 1033 #define IDC_AUTOSTART_INSTALL_USER 1033
#define IDC_AUTOSTART_INSTALL_SYSTEM 1034 #define IDC_AUTOSTART_INSTALL_SYSTEM 1034
#define IDC_MAIN_AUTOSTART 1035 #define IDC_MAIN_AUTOSTART 1035
#define IDC_MAIN_DEBUG 1036
// Next default values for new objects // Next default values for new objects
// //
@ -79,7 +81,7 @@
#define _APS_NO_MFC 1 #define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 106 #define _APS_NEXT_RESOURCE_VALUE 106
#define _APS_NEXT_COMMAND_VALUE 40001 #define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1036 #define _APS_NEXT_CONTROL_VALUE 1037
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif
#endif #endif