You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1465 lines
41 KiB
1465 lines
41 KiB
/* File: D:\WACKER\emu\emudlg.c (Created: 14-Feb-1994)
|
|
*
|
|
* Copyright 1991, 1998 by Hilgraeve Inc. -- Monroe, MI
|
|
* All rights reserved
|
|
*
|
|
* $Revision: 21 $
|
|
* $Date: 5/15/02 4:43p $
|
|
*/
|
|
|
|
#include <windows.h>
|
|
#pragma hdrstop
|
|
|
|
#include <commctrl.h>
|
|
|
|
#include <tdll\stdtyp.h>
|
|
#include <tdll\tdll.h>
|
|
#include <tdll\assert.h>
|
|
#include <tdll\session.h>
|
|
#include <tdll\statusbr.h>
|
|
#include <tdll\misc.h>
|
|
#include <term\res.h>
|
|
#include <tdll\globals.h>
|
|
#include <tdll\load_res.h>
|
|
#include <tdll\htchar.h>
|
|
#include <tdll\hlptable.h>
|
|
|
|
#include "emu.h"
|
|
#include "emuid.h"
|
|
#include "emudlgs.h"
|
|
|
|
#include <tdll\term.hh> // This must be after emu.h
|
|
|
|
// Static function prototypes...
|
|
//
|
|
STATIC_FUNC void emudlgInitCursorSettings (HWND hDlg,
|
|
PSTEMUSET pstEmuSettings,
|
|
INT ID_UNDERLINE,
|
|
INT ID_BLOCK,
|
|
INT ID_BLINK);
|
|
#if DEADWOOD
|
|
STATIC_FUNC void emudlgInitCharSetSetting(HWND hDlg,
|
|
PSTEMUSET pstEmuSettings,
|
|
int nCharSetTableID,
|
|
int nDefaultCharSetID);
|
|
STATIC_FUNC BOOL emudlgFindCharSetName(HWND hDlg,
|
|
BYTE *pbCharSetTable,
|
|
int nCharSetID,
|
|
LPTSTR *ppszCharSetName,
|
|
BOOL fTellDlg);
|
|
#endif // DEADWOOD
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
STATIC_FUNC void emudlgInitRowsCols(HWND hDlg, PSTEMUSET pstEmuSettings);
|
|
STATIC_FUNC void emudlgGetRowColSettings(HWND hDlg, PSTEMUSET pstEmuSettings);
|
|
STATIC_FUNC void emudlgCreateUpDownControl(HWND hDlg,
|
|
PSTEMUSET pstEmuSettings);
|
|
STATIC_FUNC int emudlgValidateEntryFieldSetting(HWND hDlg,
|
|
int nIDC,
|
|
int nMinVal,
|
|
int nMaxVal);
|
|
#endif
|
|
|
|
// Defines...
|
|
//
|
|
#define IDC_KEYPAD_MODE 104
|
|
#define IDC_CURSOR_MODE 106
|
|
#define IDC_132_COLUMN 107
|
|
#define IDC_TF_CHARACTER_SET 109
|
|
#define IDC_CHARACTER_SET 110
|
|
#define IDC_BLOCK_CURSOR 112
|
|
#define IDC_UNDERLINE_CURSOR 113
|
|
#define IDC_BLINK_CURSOR 114
|
|
#define IDC_DESTRUCTIVE_BKSP 116
|
|
#define IDC_ALT_MODE 117
|
|
#define IDC_SEND_POUND_SYMBOL 122
|
|
#define IDC_HIDE_CURSOR 119
|
|
#define IDC_GR_CURSOR 111
|
|
#define IDC_GR_TERMINAL_MODES 118
|
|
#define IDC_USE_8_BIT_CODES 120
|
|
#define IDC_ALLOW_USERDEFINED_KEYS 121
|
|
#define IDC_GR_SCREEN 130
|
|
#define IDC_TF_ROWS 131
|
|
#define IDC_NUMBER_OF_ROWS 132
|
|
#define IDC_TF_COLUMNS 133
|
|
#define IDC_NUMBER_OF_COLS 134
|
|
#define IDC_PRINT_RAW 135
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuSettingsDlg
|
|
*
|
|
* DESCRIPTION:
|
|
* Decide which emulator settings dialog to call.
|
|
*
|
|
* ARGUMENTS:
|
|
* hSession - the session handle.
|
|
* nEmuId - emulator id.
|
|
* pstEmuSettings - settings structure to fill in. It should be initialized
|
|
* up above.
|
|
*
|
|
* RETURNS:
|
|
* fResult - return value from the DoDialog().
|
|
*
|
|
*/
|
|
BOOL emuSettingsDlg(const HSESSION hSession, const HWND hwndParent,
|
|
const int nEmuId, PSTEMUSET pstEmuSettings)
|
|
{
|
|
BOOL fResult = FALSE;
|
|
|
|
assert(hSession && hwndParent);
|
|
|
|
switch (nEmuId)
|
|
{
|
|
case EMU_ANSIW:
|
|
case EMU_ANSI:
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_ANSI_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuANSI_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
|
|
case EMU_TTY:
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_TTY_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuTTY_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
|
|
case EMU_VT52:
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_VT52_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuVT52_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
|
|
case EMU_VT100:
|
|
case EMU_VT100J:
|
|
#if defined(INCL_VTUTF8)
|
|
case EMU_VTUTF8:
|
|
#endif
|
|
#if defined(INCL_VT100PLUS)
|
|
case EMU_VT100PLUS:
|
|
#endif
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_VT100_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuVT100_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
|
|
#if defined(INCL_VT220) || defined(INCL_VT320)
|
|
#if defined(INCL_VT220)
|
|
case EMU_VT220:
|
|
#endif // defined(INCL_VT320)
|
|
#if defined(INCL_VT320)
|
|
case EMU_VT320:
|
|
#endif // defined(INCL_VT320)
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_VT220_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuVT220_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
#endif // defined(INCL_VT220) || defined(INCL_VT320)
|
|
|
|
case EMU_MINI:
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_MINITEL_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuMinitel_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
|
|
case EMU_VIEW:
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_VIEWDATA_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuViewdata_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
return fResult;
|
|
}
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuANSI_SettingsDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
* ANSI Settings dialog proc.
|
|
*
|
|
* ARGUMENTS:
|
|
* Standard window proc parameters.
|
|
*
|
|
* RETURNS:
|
|
* Standerd return value.
|
|
*
|
|
*/
|
|
INT_PTR CALLBACK emuANSI_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
PSTEMUSET pstEmuSettings;
|
|
static DWORD aHlpTable[] =
|
|
{
|
|
IDC_BLOCK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_UNDERLINE_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_BLINK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_GR_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDCANCEL, IDH_CANCEL,
|
|
IDOK, IDH_OK,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgInitRowsCols(hDlg, pstEmuSettings);
|
|
#endif
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
doContextHelp(aHlpTable, wPar, lPar, TRUE, TRUE);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
doContextHelp(aHlpTable, wPar, lPar, FALSE, FALSE);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLongPtr(hDlg, GWLP_USERDATA);
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgGetRowColSettings(hDlg, pstEmuSettings);
|
|
#endif
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) == BST_CHECKED) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR) == BST_CHECKED);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg, FALSE);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuTTY_SettingsDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
* TTY Settings dialog proc.
|
|
*
|
|
* ARGUMENTS:
|
|
* Standard window proc parameters.
|
|
*
|
|
* RETURNS:
|
|
* Standerd return value.
|
|
*
|
|
*/
|
|
INT_PTR CALLBACK emuTTY_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
PSTEMUSET pstEmuSettings;
|
|
static DWORD aHlpTable[] = {IDC_DESTRUCTIVE_BKSP, IDH_TERM_EMUSET_DESTRUCTIVE,
|
|
IDC_BLOCK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_UNDERLINE_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_BLINK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_GR_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDCANCEL, IDH_CANCEL,
|
|
IDOK, IDH_OK,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgInitRowsCols(hDlg, pstEmuSettings);
|
|
#endif
|
|
|
|
/* -------------- Destructive Backspace ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_DESTRUCTIVE_BKSP, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fDestructiveBk, 0);
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
doContextHelp(aHlpTable, wPar, lPar, TRUE, TRUE);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
doContextHelp(aHlpTable, wPar, lPar, FALSE, FALSE);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLongPtr(hDlg, GWLP_USERDATA);
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgGetRowColSettings(hDlg, pstEmuSettings);
|
|
#endif
|
|
/* -------------- Destructive Backspace ------------- */
|
|
|
|
pstEmuSettings->fDestructiveBk =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_DESTRUCTIVE_BKSP) == BST_CHECKED);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) == BST_CHECKED) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR) == BST_CHECKED);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg, FALSE);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuVT52_SettingsDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
* VT52 Settings dialog proc.
|
|
*
|
|
* ARGUMENTS:
|
|
* Standard window proc parameters.
|
|
*
|
|
* RETURNS:
|
|
* Standerd return value.
|
|
*
|
|
*/
|
|
INT_PTR CALLBACK emuVT52_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
PSTEMUSET pstEmuSettings;
|
|
static DWORD aHlpTable[] = {IDC_ALT_MODE, IDH_TERM_EMUSET_ALTMODE,
|
|
IDC_BLOCK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_UNDERLINE_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_BLINK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_GR_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDCANCEL, IDH_CANCEL,
|
|
IDOK, IDH_OK,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgInitRowsCols(hDlg, pstEmuSettings);
|
|
#endif
|
|
|
|
/* -------------- Alternate keypad mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_ALT_MODE, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fAltKeypadMode, 0);
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
doContextHelp(aHlpTable, wPar, lPar, TRUE, TRUE);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
doContextHelp(aHlpTable, wPar, lPar, FALSE, FALSE);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLongPtr(hDlg, GWLP_USERDATA);
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgGetRowColSettings(hDlg, pstEmuSettings);
|
|
#endif
|
|
/* -------------- Alternate keypad mode ------------- */
|
|
|
|
pstEmuSettings->fAltKeypadMode =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_ALT_MODE) == BST_CHECKED);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) == BST_CHECKED) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR) == BST_CHECKED);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg, FALSE);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuVT100_SettingsDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
* VT100 Settings dialog proc.
|
|
*
|
|
* ARGUMENTS:
|
|
* Standard window proc parameters.
|
|
*
|
|
* RETURNS:
|
|
* Standerd return value.
|
|
*
|
|
*/
|
|
INT_PTR CALLBACK emuVT100_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
int nIndex;
|
|
PSTEMUSET pstEmuSettings;
|
|
static DWORD aHlpTable[] = {IDC_KEYPAD_MODE, IDH_TERM_EMUSET_KEYPADMODE,
|
|
IDC_CURSOR_MODE, IDH_TERM_EMUSET_CURSORMODE,
|
|
IDC_132_COLUMN, IDH_TERM_EMUSET_132COLUMNS,
|
|
IDC_GR_TERMINAL_MODES,IDH_TERM_EMUSET_MODES,
|
|
#if DEADWOOD
|
|
IDC_CHARACTER_SET, IDH_TERM_EMUSET_CHARSETS,
|
|
IDC_TF_CHARACTER_SET, IDH_TERM_EMUSET_CHARSETS,
|
|
#endif // DEADWOOD
|
|
IDC_BLOCK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_UNDERLINE_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_BLINK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_GR_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
IDC_GR_SCREEN, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
IDC_TF_ROWS, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
IDC_NUMBER_OF_ROWS, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
IDC_TF_COLUMNS, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
IDC_NUMBER_OF_COLS, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
#endif // defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
IDC_USE_8_BIT_CODES, IDH_TERM_EMUSET_8BITCODES,
|
|
IDC_ALLOW_USERDEFINED_KEYS,IDH_TERM_EMUSET_USERDEFKEYS,
|
|
IDC_PRINT_RAW, IDH_TERM_EMUSET_PRINTRAW,
|
|
IDCANCEL, IDH_CANCEL,
|
|
IDOK, IDH_OK,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgInitRowsCols(hDlg, pstEmuSettings);
|
|
#endif
|
|
|
|
/* -------------- Keypad application mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_KEYPAD_MODE, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fKeypadAppMode, 0);
|
|
|
|
/* -------------- Cursor keypad mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_CURSOR_MODE, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fCursorKeypadMode, 0);
|
|
|
|
#if !defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- 132 Column Mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_132_COLUMN, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->f132Columns, 0);
|
|
#endif
|
|
|
|
#if defined(INCL_PRINT_PASSTHROUGH)
|
|
/* -------------- Host Print Mode ------------- */
|
|
|
|
// mpt;04-22-00 added interface to control host-controlled printing
|
|
SendDlgItemMessage(hDlg, IDC_PRINT_RAW, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fPrintRaw, 0);
|
|
#endif // INCL_PRINT_PASSTHROUGH
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
/* -------------- VT100 Character Sets ------------- */
|
|
|
|
#if DEADWOOD
|
|
emudlgInitCharSetSetting(hDlg, pstEmuSettings,
|
|
IDT_EMU_VT100_CHAR_SETS, EMU_CHARSET_ASCII);
|
|
#endif // DEADWOOD
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
doContextHelp(aHlpTable, wPar, lPar, TRUE, TRUE);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
doContextHelp(aHlpTable, wPar, lPar, FALSE, FALSE);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLongPtr(hDlg, GWLP_USERDATA);
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgGetRowColSettings(hDlg, pstEmuSettings);
|
|
#endif
|
|
/* -------------- Keypad Application mode ------------- */
|
|
|
|
pstEmuSettings->fKeypadAppMode =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_KEYPAD_MODE) == BST_CHECKED);
|
|
|
|
/* -------------- Cursor Keypad Mode ------------- */
|
|
|
|
pstEmuSettings->fCursorKeypadMode =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_CURSOR_MODE) == BST_CHECKED);
|
|
|
|
#if !defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- 132 Column Mode ------------- */
|
|
|
|
pstEmuSettings->f132Columns =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_132_COLUMN) == BST_CHECKED);
|
|
#endif
|
|
|
|
#if defined(INCL_PRINT_PASSTHROUGH)
|
|
/* -------------- Host Print Mode ------------- */
|
|
|
|
//mpt:04-22-00
|
|
pstEmuSettings->fPrintRaw =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_PRINT_RAW) == BST_CHECKED);
|
|
#endif // INCL_PRINT_PASSTHROUGH
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) == BST_CHECKED) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR) == BST_CHECKED);
|
|
|
|
/* -------------- VT100 Character Set ------------- */
|
|
|
|
nIndex = (int)SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_GETCURSEL, 0, 0);
|
|
assert(nIndex != CB_ERR);
|
|
|
|
//JMH 01-09-97 Get the nCharacterSet value associated with this entry
|
|
//
|
|
pstEmuSettings->nCharacterSet =
|
|
(int)SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_GETITEMDATA,
|
|
(WPARAM) nIndex, (LPARAM) 0);
|
|
assert(pstEmuSettings->nCharacterSet != CB_ERR);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg, FALSE);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
#if defined(INCL_VT220)
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuVT220_SettingsDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
* VT220 Settings dialog proc.
|
|
*
|
|
* ARGUMENTS:
|
|
* Standard window proc parameters.
|
|
*
|
|
* RETURNS:
|
|
* Standerd return value.
|
|
*
|
|
*/
|
|
INT_PTR CALLBACK emuVT220_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
PSTEMUSET pstEmuSettings;
|
|
int nIndex;
|
|
static DWORD aHlpTable[] = {IDC_KEYPAD_MODE, IDH_TERM_EMUSET_KEYPADMODE,
|
|
IDC_CURSOR_MODE, IDH_TERM_EMUSET_CURSORMODE,
|
|
IDC_132_COLUMN, IDH_TERM_EMUSET_132COLUMNS,
|
|
IDC_GR_TERMINAL_MODES,IDH_TERM_EMUSET_MODES,
|
|
#if DEADWOOD
|
|
IDC_CHARACTER_SET, IDH_TERM_EMUSET_CHARSETS,
|
|
IDC_TF_CHARACTER_SET, IDH_TERM_EMUSET_CHARSETS,
|
|
#endif // DEADWOOD
|
|
IDC_BLOCK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_UNDERLINE_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_BLINK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_GR_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
IDC_GR_SCREEN, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
IDC_TF_ROWS, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
IDC_NUMBER_OF_ROWS, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
IDC_TF_COLUMNS, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
IDC_NUMBER_OF_COLS, IDH_TERM_EMUSET_ROWSANDCOLS,
|
|
#endif // defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
IDC_USE_8_BIT_CODES, IDH_TERM_EMUSET_8BITCODES,
|
|
IDC_ALLOW_USERDEFINED_KEYS,IDH_TERM_EMUSET_USERDEFKEYS,
|
|
IDC_PRINT_RAW, IDH_TERM_EMUSET_PRINTRAW,
|
|
IDCANCEL, IDH_CANCEL,
|
|
IDOK, IDH_OK,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgInitRowsCols(hDlg, pstEmuSettings);
|
|
#endif
|
|
/* -------------- Keypad application mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_KEYPAD_MODE, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fKeypadAppMode, 0);
|
|
|
|
/* -------------- Cursor keypad mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_CURSOR_MODE, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fCursorKeypadMode, 0);
|
|
|
|
#if !defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- 132 Column Mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_132_COLUMN, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->f132Columns, 0);
|
|
#endif
|
|
|
|
#if defined(INCL_PRINT_PASSTHROUGH)
|
|
/* -------------- Host Print Mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_PRINT_RAW, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fPrintRaw, 0);
|
|
#endif // INCL_PRINT_PASSTHROUGH
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
/* -------------- 8 bit codes mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_USE_8_BIT_CODES, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fUse8BitCodes, 0);
|
|
|
|
/* -------------- User defined keys ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_ALLOW_USERDEFINED_KEYS, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fAllowUserKeys, 0);
|
|
|
|
/* -------------- VT220 Character Sets ------------- */
|
|
|
|
#if DEADWOOD
|
|
emudlgInitCharSetSetting(hDlg, pstEmuSettings,
|
|
IDT_EMU_VT220_CHAR_SETS, EMU_CHARSET_MULTINATIONAL);
|
|
#endif // DEADWOOD
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
doContextHelp(aHlpTable, wPar, lPar, TRUE, TRUE);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
doContextHelp(aHlpTable, wPar, lPar, FALSE, FALSE);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLongPtr(hDlg, GWLP_USERDATA);
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgGetRowColSettings(hDlg, pstEmuSettings);
|
|
#endif
|
|
/* -------------- Keypad Application mode ------------- */
|
|
|
|
pstEmuSettings->fKeypadAppMode =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_KEYPAD_MODE) == BST_CHECKED);
|
|
|
|
/* -------------- Cursor Keypad Mode ------------- */
|
|
|
|
pstEmuSettings->fCursorKeypadMode =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_CURSOR_MODE) == BST_CHECKED);
|
|
|
|
#if !defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- 132 Column Mode ------------- */
|
|
|
|
pstEmuSettings->f132Columns =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_132_COLUMN) == BST_CHECKED);
|
|
#endif
|
|
|
|
#if defined(INCL_PRINT_PASSTHROUGH)
|
|
/* -------------- Host Print Mode ------------- */
|
|
|
|
pstEmuSettings->fPrintRaw =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_PRINT_RAW) == BST_CHECKED);
|
|
#endif // INCL_PRINT_PASSTHROUGH
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) == BST_CHECKED) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR) == BST_CHECKED);
|
|
|
|
/* -------------- 8 bit codes mode ------------- */
|
|
|
|
pstEmuSettings->fUse8BitCodes =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_USE_8_BIT_CODES) == BST_CHECKED);
|
|
|
|
/* -------------- User defined keys ------------- */
|
|
|
|
pstEmuSettings->fAllowUserKeys =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_ALLOW_USERDEFINED_KEYS) == BST_CHECKED);
|
|
|
|
/* -------------- VT220 Character Set ------------- */
|
|
|
|
nIndex = SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_GETCURSEL, 0, 0);
|
|
assert(nIndex != CB_ERR);
|
|
|
|
//JMH 01-09-97 Get the nCharacterSet value associated with this entry
|
|
//
|
|
pstEmuSettings->nCharacterSet =
|
|
SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_GETITEMDATA,
|
|
(WPARAM) nIndex, (LPARAM) 0);
|
|
assert(pstEmuSettings->nCharacterSet != CB_ERR);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg, FALSE);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
#endif
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuMinitel_SettingsDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
* TTY Settings dialog proc.
|
|
*
|
|
* ARGUMENTS:
|
|
* Standard window proc parameters.
|
|
*
|
|
* RETURNS:
|
|
* Standerd return value.
|
|
*
|
|
*/
|
|
INT_PTR CALLBACK emuMinitel_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
PSTEMUSET pstEmuSettings;
|
|
static DWORD aHlpTable[] = {IDC_DESTRUCTIVE_BKSP, IDH_TERM_EMUSET_DESTRUCTIVE,
|
|
IDC_BLOCK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_UNDERLINE_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_BLINK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_GR_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDCANCEL, IDH_CANCEL,
|
|
IDOK, IDH_OK,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
doContextHelp(aHlpTable, wPar, lPar, TRUE, TRUE);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
doContextHelp(aHlpTable, wPar, lPar, FALSE, FALSE);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLongPtr(hDlg, GWLP_USERDATA);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) == BST_CHECKED) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR) == BST_CHECKED);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg, FALSE);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuViewdata_SettingsDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
* TTY Settings dialog proc.
|
|
*
|
|
* ARGUMENTS:
|
|
* Standard window proc parameters.
|
|
*
|
|
* RETURNS:
|
|
* Standerd return value.
|
|
*
|
|
*/
|
|
INT_PTR CALLBACK emuViewdata_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
PSTEMUSET pstEmuSettings;
|
|
static DWORD aHlpTable[] = {IDC_DESTRUCTIVE_BKSP, IDH_TERM_EMUSET_DESTRUCTIVE,
|
|
IDC_BLOCK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_UNDERLINE_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_BLINK_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_GR_CURSOR, IDH_TERM_EMUSET_CURSOR,
|
|
IDC_SEND_POUND_SYMBOL, IDH_TERM_SETTING_ENTER,
|
|
IDC_HIDE_CURSOR, IDH_TERM_SETTING_HIDE_CURSOR,
|
|
IDCANCEL, IDH_CANCEL,
|
|
IDOK, IDH_OK,
|
|
0,0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLongPtr(hDlg, GWLP_USERDATA, (LONG_PTR)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgInitRowsCols(hDlg, pstEmuSettings);
|
|
#endif
|
|
/* -------------- Hide cursor ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_HIDE_CURSOR, BM_SETCHECK,
|
|
(pstEmuSettings->nCursorType == EMU_CURSOR_NONE) ? 1 : 0,
|
|
0);
|
|
|
|
/* -------------- Enter key sends # ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_SEND_POUND_SYMBOL, BM_SETCHECK,
|
|
(pstEmuSettings->fLbSymbolOnEnter == TRUE) ? 1 : 0, 0);
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
doContextHelp(aHlpTable, wPar, lPar, TRUE, TRUE);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
doContextHelp(aHlpTable, wPar, lPar, FALSE, FALSE);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLongPtr(hDlg, GWLP_USERDATA);
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/* -------------- Screen rows and columns ------------- */
|
|
|
|
emudlgGetRowColSettings(hDlg, pstEmuSettings);
|
|
#endif
|
|
/* -------------- Hide cursor ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_HIDE_CURSOR) == BST_CHECKED) ?
|
|
EMU_CURSOR_NONE : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Enter key sends # ------------- */
|
|
|
|
pstEmuSettings->fLbSymbolOnEnter =
|
|
(int)(IsDlgButtonChecked(hDlg, IDC_SEND_POUND_SYMBOL) == BST_CHECKED);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg, FALSE);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emudlgInitCursorSettings
|
|
*
|
|
* DESCRIPTION:
|
|
* Initialize cursor settings.
|
|
*
|
|
* ARGUMENTS:
|
|
* hDlg - dialog window.
|
|
* pstEmuSettings - pointer to the emulator settings structure.
|
|
*
|
|
* RETURNS:
|
|
* void.
|
|
*
|
|
*/
|
|
STATIC_FUNC void emudlgInitCursorSettings(HWND hDlg,
|
|
PSTEMUSET pstEmuSettings,
|
|
INT ID_UNDERLINE,
|
|
INT ID_BLOCK,
|
|
INT ID_BLINK)
|
|
{
|
|
int i;
|
|
|
|
switch (pstEmuSettings->nCursorType)
|
|
{
|
|
case EMU_CURSOR_LINE: i = ID_UNDERLINE; break;
|
|
case EMU_CURSOR_BLOCK: i = ID_BLOCK; break;
|
|
default: i = ID_UNDERLINE; break;
|
|
}
|
|
|
|
SendDlgItemMessage(hDlg, i, BM_SETCHECK, 1, 0);
|
|
|
|
SendDlgItemMessage(hDlg, ID_BLINK, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->fCursorBlink, 0);
|
|
|
|
if (IsTerminalServicesEnabled())
|
|
{
|
|
EnableWindow(GetDlgItem(hDlg, ID_BLINK), FALSE);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
#if DEADWOOD
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emudlgInitCharSetSetting
|
|
*
|
|
* DESCRIPTION:
|
|
* Initialize the character set setting.
|
|
*
|
|
* ARGUMENTS:
|
|
* hDlg - dialog window.
|
|
* pstEmuSettings - pointer to the emulator settings structure.
|
|
*
|
|
* RETURNS:
|
|
* void.
|
|
*
|
|
* AUTHOR: Bob Everett - 3 Jun 98
|
|
*/
|
|
STATIC_FUNC void emudlgInitCharSetSetting(HWND hDlg,
|
|
PSTEMUSET pstEmuSettings,
|
|
int nCharSetTableID,
|
|
int nDefaultCharSetID)
|
|
{
|
|
BOOL fResult = TRUE;
|
|
DWORD nLen;
|
|
int nIndex;
|
|
BYTE *pb, *pbSel;
|
|
|
|
if (resLoadDataBlock(glblQueryDllHinst(), nCharSetTableID,
|
|
(LPVOID *)&pb, &nLen))
|
|
{
|
|
assert(FALSE);
|
|
}
|
|
else
|
|
{
|
|
if (!emudlgFindCharSetName(hDlg, pb, pstEmuSettings->nCharacterSet,
|
|
(LPTSTR *)&pbSel, TRUE))
|
|
{
|
|
// Couldn't find the current character set in the table of
|
|
// characters sets. This happens when switching from one
|
|
// terminal type to another that doesn't contain the char
|
|
// set. Use the default character set.
|
|
pstEmuSettings->nCharacterSet = nDefaultCharSetID;
|
|
if (!emudlgFindCharSetName(hDlg, pb, pstEmuSettings->nCharacterSet,
|
|
(LPTSTR *)&pbSel, FALSE))
|
|
{
|
|
// We've got problems.
|
|
fResult = FALSE;
|
|
assert(FALSE);
|
|
}
|
|
}
|
|
|
|
if (fResult)
|
|
{
|
|
//JMH 01-09-97 Now select the string corresponding to
|
|
// nCharacterSet.
|
|
nIndex = (int)SendDlgItemMessage(hDlg, IDC_CHARACTER_SET,
|
|
CB_SELECTSTRING, 0, (LPARAM)(LPTSTR)pbSel);
|
|
assert(nIndex != CB_ERR);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emudlgFindCharSetName
|
|
*
|
|
* DESCRIPTION:
|
|
* Finds the appropriate character set settings.
|
|
*
|
|
* ARGUMENTS:
|
|
* hDlg - dialog window handle
|
|
* pbCharSetTable - address of the emu's table of character sets
|
|
* pszCharSetName - address at which to put the char set name
|
|
* fTellDlg - TRUE if the dialog should be made aware of the table
|
|
*
|
|
* RETURNS:
|
|
* TRUE if successful, FALSE if not.
|
|
*
|
|
* AUTHOR: Bob Everett - 3 Jun 98
|
|
*/
|
|
STATIC_FUNC BOOL emudlgFindCharSetName(HWND hDlg,
|
|
BYTE *pbCharSetTable,
|
|
int nCharSetID,
|
|
LPTSTR *ppszCharSetName,
|
|
BOOL fTellDlg)
|
|
{
|
|
BOOL fRetVal = FALSE;
|
|
int nCnt, nLen, nEmuCount, nIndex, nCharSet;
|
|
BYTE *pb = pbCharSetTable;
|
|
|
|
nEmuCount = *(RCDATA_TYPE *)pb;
|
|
pb += sizeof(RCDATA_TYPE);
|
|
|
|
for (nCnt = 0 ; nCnt < nEmuCount; nCnt++)
|
|
{
|
|
nLen = StrCharGetByteCount((LPTSTR)pb) + (int)sizeof(BYTE);
|
|
|
|
if (fTellDlg)
|
|
{
|
|
nIndex = (int)SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_ADDSTRING, 0,
|
|
(LPARAM)(LPTSTR)pb);
|
|
assert(nIndex != CB_ERR);
|
|
}
|
|
|
|
#if FALSE // DEADWOOD:rde 10 Mar 98
|
|
//JMH 01-09-97 Because this list gets sorted, we have to store the
|
|
// table index with each entry, or else the selection index we get
|
|
// when OK is pressed won't mean much.
|
|
//
|
|
nIndex = SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_SETITEMDATA,
|
|
(WPARAM) nIndex, (LPARAM) i);
|
|
assert(nIndex != CB_ERR);
|
|
#endif
|
|
// Save the real char set id with the string. rde 10 Mar 98
|
|
nCharSet = *((RCDATA_TYPE *)(pb + nLen));
|
|
|
|
if (fTellDlg)
|
|
{
|
|
nIndex = (int)SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_SETITEMDATA,
|
|
(WPARAM)nIndex, (LPARAM)nCharSet);
|
|
assert(nIndex != CB_ERR);
|
|
}
|
|
|
|
// Must match the char set id to nCharacterSet, not the order in
|
|
// which they're listed in the resource data block. rde 10 Mar 98
|
|
//if (i == pstEmuSettings->nCharacterSet)
|
|
if (nCharSet == nCharSetID)
|
|
{
|
|
//JMH 01-09-97 Store a pointer to the string corresponding to
|
|
// nCharacterSet, so we can select the appropriate entry after
|
|
// they've all been sorted.
|
|
//
|
|
*ppszCharSetName = (LPTSTR)pb;
|
|
fRetVal = TRUE;
|
|
}
|
|
|
|
pb += (nLen + (int)sizeof(RCDATA_TYPE));
|
|
}
|
|
|
|
return fRetVal;
|
|
}
|
|
#endif // DEADWOOD
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* FUNCTION:
|
|
* emudlgInitRowsCols
|
|
*
|
|
* DESCRIPTION:
|
|
* Sets up the row and column fields.
|
|
*
|
|
* ARGUMENTS:
|
|
* hDlg - edit control window.
|
|
* pstEmuSettings - address of emulator settings structure.
|
|
*
|
|
* RETURNS:
|
|
* void.
|
|
*
|
|
* AUTHOR: Bob Everett - 22 Jun 1998
|
|
*/
|
|
STATIC_FUNC void emudlgInitRowsCols(HWND hDlg, PSTEMUSET pstEmuSettings)
|
|
{
|
|
TCHAR achString[20];
|
|
TCHAR achFormat[20];
|
|
|
|
//
|
|
// Since the number of columns can only be numeric and has a size
|
|
// between MIN_EMUROWS(10) and MAX_EMUROWS(50), limit to 2 characters.
|
|
//
|
|
SendDlgItemMessage(hDlg, IDC_NUMBER_OF_ROWS, EM_LIMITTEXT, 2, FALSE);
|
|
|
|
LoadString(glblQueryDllHinst(), IDS_XD_INT, achFormat,
|
|
sizeof(achFormat) / sizeof(TCHAR));
|
|
TCHAR_Fill(achString, TEXT('\0'), sizeof(achString) / sizeof(TCHAR));
|
|
wsprintf(achString, achFormat, pstEmuSettings->nUserDefRows);
|
|
SendDlgItemMessage(hDlg, IDC_NUMBER_OF_ROWS, WM_SETTEXT, 0,
|
|
(LPARAM)(LPTSTR)achString);
|
|
|
|
//
|
|
// Since the number of columns can only be numeric and has a size
|
|
// between MIN_EMUCOLS(20) and MAX_EMUCOLS(132), limit to 3 characters.
|
|
//
|
|
SendDlgItemMessage(hDlg, IDC_NUMBER_OF_COLS, EM_LIMITTEXT, 3, FALSE);
|
|
|
|
LoadString(glblQueryDllHinst(), IDS_XD_INT, achFormat,
|
|
sizeof(achFormat) / sizeof(TCHAR));
|
|
TCHAR_Fill(achString, TEXT('\0'), sizeof(achString) / sizeof(TCHAR));
|
|
wsprintf(achString, achFormat, pstEmuSettings->nUserDefCols);
|
|
SendDlgItemMessage(hDlg, IDC_NUMBER_OF_COLS, WM_SETTEXT, 0,
|
|
(LPARAM)(LPTSTR)achString);
|
|
|
|
// Put the spin buttons on the row and column fields.
|
|
emudlgCreateUpDownControl(hDlg, pstEmuSettings);
|
|
}
|
|
#endif
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* FUNCTION:
|
|
* emudlgCreateUpDownControl
|
|
*
|
|
* DESCRIPTION:
|
|
* Gets the final row and column settings.
|
|
*
|
|
* ARGUMENTS:
|
|
* hDlg - edit control window.
|
|
* pstEmuSettings - address of emulator settings structure.
|
|
*
|
|
* RETURNS:
|
|
* void.
|
|
*
|
|
* AUTHOR: Bob Everett - 22 Jun 1998
|
|
*/
|
|
STATIC_FUNC void emudlgGetRowColSettings(HWND hDlg, PSTEMUSET pstEmuSettings)
|
|
{
|
|
pstEmuSettings->nUserDefRows = emudlgValidateEntryFieldSetting(hDlg,
|
|
IDC_NUMBER_OF_ROWS, MIN_EMUROWS, MAX_EMUROWS);
|
|
|
|
pstEmuSettings->nUserDefCols = emudlgValidateEntryFieldSetting(hDlg,
|
|
IDC_NUMBER_OF_COLS, MIN_EMUCOLS, MAX_EMUCOLS);
|
|
|
|
pstEmuSettings->f132Columns =
|
|
(pstEmuSettings->nUserDefCols == 132 ? TRUE : FALSE);
|
|
}
|
|
#endif
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* FUNCTION:
|
|
* emudlgCreateUpDownControl
|
|
*
|
|
* DESCRIPTION:
|
|
* This function puts an up-down control on the edit field for the row and
|
|
* column fields. This gives us bounds checking for free... just set the
|
|
* appropriate parameters in the CreateUpDownControl call.
|
|
*
|
|
* NOTE: This is a duplicate of CreateUpDownControl
|
|
*
|
|
* ARGUMENTS:
|
|
* hDlg - edit control window.
|
|
*
|
|
* RETURNS:
|
|
* void.
|
|
*
|
|
* AUTHOR: Bob Everett - 8 Jun 1998
|
|
*/
|
|
STATIC_FUNC void emudlgCreateUpDownControl(HWND hDlg, PSTEMUSET pstEmuSettings)
|
|
{
|
|
RECT rc;
|
|
int nHeight, nWidth;
|
|
DWORD dwFlags;
|
|
HWND hwndChild;
|
|
|
|
// Draw a spin control for the rows field.
|
|
GetClientRect(GetDlgItem(hDlg, IDC_NUMBER_OF_ROWS), &rc);
|
|
nHeight = rc.top - rc.bottom;
|
|
nWidth = (nHeight / 3) * 2;
|
|
|
|
dwFlags = WS_CHILD | WS_VISIBLE |
|
|
UDS_ALIGNRIGHT | UDS_ARROWKEYS | UDS_SETBUDDYINT;
|
|
|
|
hwndChild = CreateUpDownControl(
|
|
dwFlags, // create window flags
|
|
rc.right, // left edge
|
|
rc.top, // top edge
|
|
nWidth, // width
|
|
nHeight, // height
|
|
hDlg, // parent window
|
|
IDC_EDIT_ROWS,
|
|
(HINSTANCE)GetWindowLongPtr(hDlg, GWLP_HINSTANCE),
|
|
GetDlgItem(hDlg, IDC_NUMBER_OF_ROWS),
|
|
MAX_EMUROWS,
|
|
MIN_EMUROWS,
|
|
pstEmuSettings->nUserDefRows);
|
|
|
|
// Repeat for the columns field.
|
|
GetClientRect(GetDlgItem(hDlg, IDC_NUMBER_OF_COLS), &rc);
|
|
nHeight = rc.top - rc.bottom;
|
|
nWidth = (nHeight / 3) * 2;
|
|
|
|
hwndChild = CreateUpDownControl(
|
|
dwFlags, // create window flags
|
|
rc.right, // left edge
|
|
rc.top, // top edge
|
|
nWidth, // width
|
|
nHeight, // height
|
|
hDlg, // parent window
|
|
IDC_EDIT_COLUMNS,
|
|
(HINSTANCE)GetWindowLongPtr(hDlg, GWLP_HINSTANCE),
|
|
GetDlgItem(hDlg, IDC_NUMBER_OF_COLS),
|
|
MAX_EMUCOLS,
|
|
MIN_EMUCOLS,
|
|
pstEmuSettings->nUserDefCols);
|
|
|
|
assert(hwndChild);
|
|
}
|
|
#endif
|
|
|
|
#if defined(INCL_TERMINAL_SIZE_AND_COLORS)
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
* FUNCTION:
|
|
* emudlgValidateEntryFieldSetting
|
|
*
|
|
* DESCRIPTION:
|
|
* If the user entered a value outside of the range we support force the
|
|
* value into the range.
|
|
*
|
|
* Note: copied from propValidateBackscrlSize.
|
|
*
|
|
* ARGUMENTS:
|
|
* hDlg - dialog window handle.
|
|
*
|
|
* RETURNS:
|
|
* nNewValue - number of lines to keep in the backscrol buffer.
|
|
*
|
|
* AUTHOR: Bob Everett - 8 Jun 1998
|
|
*/
|
|
STATIC_FUNC int emudlgValidateEntryFieldSetting(HWND hDlg,
|
|
int nIDC,
|
|
int nMinVal,
|
|
int nMaxVal)
|
|
{
|
|
int nValue = 0, nNewValue = 0;
|
|
TCHAR achStrEntered[20], achFormat[20];
|
|
|
|
TCHAR_Fill(achStrEntered, TEXT('\0'),
|
|
sizeof(achStrEntered) / sizeof(TCHAR));
|
|
GetDlgItemText(hDlg, nIDC, achStrEntered,
|
|
sizeof(achStrEntered) / sizeof(TCHAR));
|
|
|
|
nNewValue = nValue = atoi(achStrEntered);
|
|
if (nValue > nMaxVal)
|
|
nNewValue = nMaxVal;
|
|
else if (nValue < nMinVal)
|
|
nNewValue = nMinVal;
|
|
|
|
if (nNewValue != nValue)
|
|
{
|
|
LoadString(glblQueryDllHinst(),
|
|
IDS_XD_INT,
|
|
achFormat,
|
|
sizeof(achFormat) / sizeof(TCHAR));
|
|
TCHAR_Fill(achStrEntered,
|
|
TEXT('\0'),
|
|
sizeof(achStrEntered) / sizeof(TCHAR));
|
|
wsprintf(achStrEntered, achFormat, nNewValue);
|
|
SendDlgItemMessage(hDlg,
|
|
nIDC,
|
|
WM_SETTEXT,
|
|
0,
|
|
(LPARAM)(LPTSTR)achStrEntered);
|
|
}
|
|
|
|
return (nNewValue);
|
|
}
|
|
#endif
|