Added ability to set screen options from the windows launch dialog.
This commit is contained in:
parent
188d89108b
commit
6b3e451b83
|
@ -33,8 +33,9 @@ typedef std::vector<CString> CStringList;
|
||||||
|
|
||||||
class CScreenInfo {
|
class CScreenInfo {
|
||||||
public:
|
public:
|
||||||
CString m_screen;
|
CString m_screen;
|
||||||
CStringList m_aliases;
|
CStringList m_aliases;
|
||||||
|
CConfig::CScreenOptions m_options;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CChildWaitInfo {
|
class CChildWaitInfo {
|
||||||
|
@ -266,6 +267,14 @@ addScreen(HWND hwnd)
|
||||||
ARG->m_config.addAlias(info.m_screen, *index);
|
ARG->m_config.addAlias(info.m_screen, *index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set options
|
||||||
|
ARG->m_config.removeOptions(info.m_screen);
|
||||||
|
for (CConfig::CScreenOptions::const_iterator
|
||||||
|
index = info.m_options.begin();
|
||||||
|
index != info.m_options.end(); ++index) {
|
||||||
|
ARG->m_config.addOption(info.m_screen, index->first, index->second);
|
||||||
|
}
|
||||||
|
|
||||||
// update neighbors
|
// update neighbors
|
||||||
updateNeighbors(hwnd);
|
updateNeighbors(hwnd);
|
||||||
enableScreensControls(hwnd);
|
enableScreensControls(hwnd);
|
||||||
|
@ -295,6 +304,11 @@ editScreen(HWND hwnd)
|
||||||
info.m_aliases.push_back(index->first);
|
info.m_aliases.push_back(index->first);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
const CConfig::CScreenOptions* options =
|
||||||
|
ARG->m_config.getOptions(info.m_screen);
|
||||||
|
if (options != NULL) {
|
||||||
|
info.m_options = *options;
|
||||||
|
}
|
||||||
|
|
||||||
// save current info
|
// save current info
|
||||||
CScreenInfo oldInfo = info;
|
CScreenInfo oldInfo = info;
|
||||||
|
@ -320,6 +334,14 @@ editScreen(HWND hwnd)
|
||||||
ARG->m_config.addAlias(info.m_screen, *index);
|
ARG->m_config.addAlias(info.m_screen, *index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set options
|
||||||
|
ARG->m_config.removeOptions(info.m_screen);
|
||||||
|
for (CConfig::CScreenOptions::const_iterator
|
||||||
|
index = info.m_options.begin();
|
||||||
|
index != info.m_options.end(); ++index) {
|
||||||
|
ARG->m_config.addOption(info.m_screen, index->first, index->second);
|
||||||
|
}
|
||||||
|
|
||||||
// update list
|
// update list
|
||||||
CString item = CStringUtil::print("%d. %s",
|
CString item = CStringUtil::print("%d. %s",
|
||||||
index + 1, info.m_screen.c_str());
|
index + 1, info.m_screen.c_str());
|
||||||
|
@ -740,6 +762,18 @@ addDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
case WM_INITDIALOG: {
|
case WM_INITDIALOG: {
|
||||||
info = (CScreenInfo*)lParam;
|
info = (CScreenInfo*)lParam;
|
||||||
|
|
||||||
|
// set title
|
||||||
|
CString title;
|
||||||
|
if (info->m_screen.empty()) {
|
||||||
|
title = getString(IDS_ADD_SCREEN);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
title = CStringUtil::format(
|
||||||
|
getString(IDS_EDIT_SCREEN).c_str(),
|
||||||
|
info->m_screen.c_str());
|
||||||
|
}
|
||||||
|
SendMessage(hwnd, WM_SETTEXT, 0, (LPARAM)title.c_str());
|
||||||
|
|
||||||
// fill in screen name
|
// fill in screen name
|
||||||
HWND child = getItem(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());
|
||||||
|
@ -756,6 +790,25 @@ addDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
child = getItem(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());
|
||||||
|
|
||||||
|
// set options
|
||||||
|
CConfig::CScreenOptions::const_iterator index;
|
||||||
|
child = getItem(hwnd, IDC_ADD_HD_CAPS_CHECK);
|
||||||
|
index = info->m_options.find(kOptionHalfDuplexCapsLock);
|
||||||
|
if (index != info->m_options.end() && index->second != 0) {
|
||||||
|
SendMessage(child, BM_SETCHECK, BST_CHECKED, 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SendMessage(child, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
|
}
|
||||||
|
child = getItem(hwnd, IDC_ADD_HD_NUM_CHECK);
|
||||||
|
index = info->m_options.find(kOptionHalfDuplexNumLock);
|
||||||
|
if (index != info->m_options.end() && index->second != 0) {
|
||||||
|
SendMessage(child, BM_SETCHECK, BST_CHECKED, 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
SendMessage(child, BM_SETCHECK, BST_UNCHECKED, 0);
|
||||||
|
}
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -824,10 +877,26 @@ addDlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// save data
|
// save name data
|
||||||
info->m_screen = newName;
|
info->m_screen = newName;
|
||||||
info->m_aliases = newAliases;
|
info->m_aliases = newAliases;
|
||||||
|
|
||||||
|
// save options
|
||||||
|
child = getItem(hwnd, IDC_ADD_HD_CAPS_CHECK);
|
||||||
|
if (SendMessage(child, BM_GETCHECK, 0, 0) == BST_CHECKED) {
|
||||||
|
info->m_options[kOptionHalfDuplexCapsLock] = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
info->m_options.erase(kOptionHalfDuplexCapsLock);
|
||||||
|
}
|
||||||
|
child = getItem(hwnd, IDC_ADD_HD_NUM_CHECK);
|
||||||
|
if (SendMessage(child, BM_GETCHECK, 0, 0) == BST_CHECKED) {
|
||||||
|
info->m_options[kOptionHalfDuplexNumLock] = 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
info->m_options.erase(kOptionHalfDuplexNumLock);
|
||||||
|
}
|
||||||
|
|
||||||
// success
|
// success
|
||||||
EndDialog(hwnd, 1);
|
EndDialog(hwnd, 1);
|
||||||
info = NULL;
|
info = NULL;
|
||||||
|
|
|
@ -106,18 +106,25 @@ BEGIN
|
||||||
PUSHBUTTON "Quit",IDCANCEL,243,241,50,14
|
PUSHBUTTON "Quit",IDCANCEL,243,241,50,14
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_ADD DIALOG DISCARDABLE 0, 0, 172, 95
|
IDD_ADD DIALOG DISCARDABLE 0, 0, 192, 170
|
||||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION
|
||||||
CAPTION "Add Screen"
|
CAPTION "Add Screen"
|
||||||
FONT 8, "MS Sans Serif"
|
FONT 8, "MS Sans Serif"
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Screen Name:",IDC_STATIC,7,9,46,8
|
LTEXT "&Screen Name:",IDC_STATIC,7,9,46,8
|
||||||
EDITTEXT IDC_ADD_SCREEN_NAME_EDIT,59,7,106,12,ES_AUTOHSCROLL
|
EDITTEXT IDC_ADD_SCREEN_NAME_EDIT,79,7,106,12,ES_AUTOHSCROLL
|
||||||
LTEXT "Aliases:",IDC_STATIC,7,25,25,8
|
LTEXT "&Aliases:",IDC_STATIC,7,25,25,8
|
||||||
EDITTEXT IDC_ADD_ALIASES_EDIT,59,26,106,40,ES_MULTILINE |
|
EDITTEXT IDC_ADD_ALIASES_EDIT,79,26,106,40,ES_MULTILINE |
|
||||||
ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN
|
ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN
|
||||||
DEFPUSHBUTTON "OK",IDOK,59,74,50,14
|
LTEXT "If your Caps Lock or Num Lock keys behave strangely on this client screen then try turning the half-duplex options on and reconnect the client.",
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,115,74,50,14
|
IDC_STATIC,13,82,165,25
|
||||||
|
CONTROL "Half-duplex &Caps Lock",IDC_ADD_HD_CAPS_CHECK,"Button",
|
||||||
|
BS_AUTOCHECKBOX | WS_TABSTOP,13,110,165,10
|
||||||
|
CONTROL "Half-duplex &Num Lock",IDC_ADD_HD_NUM_CHECK,"Button",
|
||||||
|
BS_AUTOCHECKBOX | WS_TABSTOP,13,122,165,10
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,79,149,50,14
|
||||||
|
PUSHBUTTON "Cancel",IDCANCEL,135,149,50,14
|
||||||
|
GROUPBOX "Options",IDC_STATIC,7,72,178,64
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_WAIT DIALOG DISCARDABLE 0, 0, 186, 54
|
IDD_WAIT DIALOG DISCARDABLE 0, 0, 186, 54
|
||||||
|
@ -170,9 +177,9 @@ BEGIN
|
||||||
IDD_ADD, DIALOG
|
IDD_ADD, DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
LEFTMARGIN, 7
|
LEFTMARGIN, 7
|
||||||
RIGHTMARGIN, 165
|
RIGHTMARGIN, 185
|
||||||
TOPMARGIN, 7
|
TOPMARGIN, 7
|
||||||
BOTTOMMARGIN, 88
|
BOTTOMMARGIN, 163
|
||||||
END
|
END
|
||||||
|
|
||||||
IDD_WAIT, DIALOG
|
IDD_WAIT, DIALOG
|
||||||
|
@ -255,6 +262,8 @@ BEGIN
|
||||||
IDS_INVALID_SERVER_NAME "Server name `%{1}' is invalid."
|
IDS_INVALID_SERVER_NAME "Server name `%{1}' is invalid."
|
||||||
IDS_TITLE "Synergy - Version %{1}"
|
IDS_TITLE "Synergy - Version %{1}"
|
||||||
IDS_SERVER_IS_CLIENT "Please enter the computer name of the synergy server, not\nthe name of this computer, in the Server Host Name field."
|
IDS_SERVER_IS_CLIENT "Please enter the computer name of the synergy server, not\nthe name of this computer, in the Server Host Name field."
|
||||||
|
IDS_ADD_SCREEN "Add Screen"
|
||||||
|
IDS_EDIT_SCREEN "Edit Screen %{1}"
|
||||||
END
|
END
|
||||||
|
|
||||||
#endif // English (U.S.) resources
|
#endif // English (U.S.) resources
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
#define IDS_INVALID_SERVER_NAME 34
|
#define IDS_INVALID_SERVER_NAME 34
|
||||||
#define IDS_TITLE 35
|
#define IDS_TITLE 35
|
||||||
#define IDS_SERVER_IS_CLIENT 36
|
#define IDS_SERVER_IS_CLIENT 36
|
||||||
|
#define IDS_ADD_SCREEN 37
|
||||||
|
#define IDS_EDIT_SCREEN 38
|
||||||
#define IDD_MAIN 101
|
#define IDD_MAIN 101
|
||||||
#define IDD_ADD 102
|
#define IDD_ADD 102
|
||||||
#define IDD_WAIT 103
|
#define IDD_WAIT 103
|
||||||
|
@ -59,6 +61,7 @@
|
||||||
#define IDC_ADD_SCREEN_NAME_EDIT 1020
|
#define IDC_ADD_SCREEN_NAME_EDIT 1020
|
||||||
#define IDC_MAIN_SERVER_REMOVE_BUTTON 1020
|
#define IDC_MAIN_SERVER_REMOVE_BUTTON 1020
|
||||||
#define IDC_ADD_ALIASES_EDIT 1021
|
#define IDC_ADD_ALIASES_EDIT 1021
|
||||||
|
#define IDC_MAIN_SERVER_OPTIONS_BUTTON 1021
|
||||||
#define IDC_MAIN_SERVER_LEFT_COMBO 1022
|
#define IDC_MAIN_SERVER_LEFT_COMBO 1022
|
||||||
#define IDC_MAIN_SERVER_RIGHT_COMBO 1023
|
#define IDC_MAIN_SERVER_RIGHT_COMBO 1023
|
||||||
#define IDC_MAIN_SERVER_TOP_COMBO 1024
|
#define IDC_MAIN_SERVER_TOP_COMBO 1024
|
||||||
|
@ -74,6 +77,8 @@
|
||||||
#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
|
#define IDC_MAIN_DEBUG 1036
|
||||||
|
#define IDC_ADD_HD_CAPS_CHECK 1037
|
||||||
|
#define IDC_ADD_HD_NUM_CHECK 1038
|
||||||
|
|
||||||
// Next default values for new objects
|
// Next default values for new objects
|
||||||
//
|
//
|
||||||
|
@ -82,7 +87,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 1037
|
#define _APS_NEXT_CONTROL_VALUE 1038
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -241,7 +241,7 @@ CConfig::setHTTPAddress(const CNetworkAddress& addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CConfig::addOption(const CString& name, UInt32 option, SInt32 value)
|
CConfig::addOption(const CString& name, OptionID option, OptionValue value)
|
||||||
{
|
{
|
||||||
// find cell
|
// find cell
|
||||||
CCellMap::iterator index = m_map.find(name);
|
CCellMap::iterator index = m_map.find(name);
|
||||||
|
@ -255,7 +255,7 @@ CConfig::addOption(const CString& name, UInt32 option, SInt32 value)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CConfig::removeOption(const CString& name, UInt32 option)
|
CConfig::removeOption(const CString& name, OptionID option)
|
||||||
{
|
{
|
||||||
// find cell
|
// find cell
|
||||||
CCellMap::iterator index = m_map.find(name);
|
CCellMap::iterator index = m_map.find(name);
|
||||||
|
@ -268,6 +268,20 @@ CConfig::removeOption(const CString& name, UInt32 option)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
CConfig::removeOptions(const CString& name)
|
||||||
|
{
|
||||||
|
// find cell
|
||||||
|
CCellMap::iterator index = m_map.find(name);
|
||||||
|
if (index == m_map.end()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// remove option
|
||||||
|
index->second.m_options.clear();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
CConfig::isValidScreenName(const CString& name) const
|
CConfig::isValidScreenName(const CString& name) const
|
||||||
{
|
{
|
||||||
|
@ -421,6 +435,17 @@ CConfig::operator==(const CConfig& x) const
|
||||||
for (CCellMap::const_iterator index1 = m_map.begin(),
|
for (CCellMap::const_iterator index1 = m_map.begin(),
|
||||||
index2 = x.m_map.begin();
|
index2 = x.m_map.begin();
|
||||||
index1 != m_map.end(); ++index1, ++index2) {
|
index1 != m_map.end(); ++index1, ++index2) {
|
||||||
|
// compare names
|
||||||
|
if (!CStringUtil::CaselessCmp::equal(index1->first, index2->first)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare options
|
||||||
|
if (index1->second.m_options != index2->second.m_options) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// compare neighbors
|
||||||
for (UInt32 i = 0; i <= kLastDirection - kFirstDirection; ++i) {
|
for (UInt32 i = 0; i <= kLastDirection - kFirstDirection; ++i) {
|
||||||
if (!CStringUtil::CaselessCmp::equal(index1->second.m_neighbor[i],
|
if (!CStringUtil::CaselessCmp::equal(index1->second.m_neighbor[i],
|
||||||
index2->second.m_neighbor[i])) {
|
index2->second.m_neighbor[i])) {
|
||||||
|
|
|
@ -188,7 +188,7 @@ public:
|
||||||
is a known screen.
|
is a known screen.
|
||||||
*/
|
*/
|
||||||
bool addOption(const CString& name,
|
bool addOption(const CString& name,
|
||||||
UInt32 option, SInt32 value);
|
OptionID option, OptionValue value);
|
||||||
|
|
||||||
//! Remove a screen option
|
//! Remove a screen option
|
||||||
/*!
|
/*!
|
||||||
|
@ -196,7 +196,14 @@ public:
|
||||||
nothing if the option doesn't exist on the screen. Returns true
|
nothing if the option doesn't exist on the screen. Returns true
|
||||||
iff \c name is a known screen.
|
iff \c name is a known screen.
|
||||||
*/
|
*/
|
||||||
bool removeOption(const CString& name, UInt32 option);
|
bool removeOption(const CString& name, OptionID option);
|
||||||
|
|
||||||
|
//! Remove a screen options
|
||||||
|
/*!
|
||||||
|
Removes all options and values from the named screen. Returns true
|
||||||
|
iff \c name is a known screen.
|
||||||
|
*/
|
||||||
|
bool removeOptions(const CString& name);
|
||||||
|
|
||||||
//@}
|
//@}
|
||||||
//! @name accessors
|
//! @name accessors
|
||||||
|
|
Loading…
Reference in New Issue