mirror of https://github.com/lianthony/NT4.0
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.
930 lines
23 KiB
930 lines
23 KiB
/* File: D:\WACKER\emu\emudlg.c (Created: 14-Feb-1994)
|
|
*
|
|
* Copyright 1991 by Hilgraeve Inc. -- Monroe, MI
|
|
* All rights reserved
|
|
*
|
|
* $Revision: 1.25 $
|
|
* $Date: 1995/04/13 16:24:48 $
|
|
*/
|
|
|
|
#include <windows.h>
|
|
#pragma hdrstop
|
|
|
|
#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\tchar.h>
|
|
#include <tdll\hlptable.h>
|
|
|
|
#include "emu.h"
|
|
#include "emuid.h"
|
|
#include "emudlgs.h"
|
|
|
|
// Static function prototypes...
|
|
//
|
|
STATIC_FUNC void emudlgInitCursorSettings (HWND hDlg,
|
|
PSTEMUSET pstEmuSettings,
|
|
INT ID_UNDERLINE,
|
|
INT ID_BLOCK,
|
|
INT ID_BLINK);
|
|
|
|
// 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 118
|
|
#define IDC_HIDE_CURSOR 119
|
|
#define IDC_GR_CURSOR 111
|
|
#define IDC_GR_TERMINAL_MODES 117
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* 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:
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_VT100_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuVT100_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
|
|
case EMU_VT100J:
|
|
fResult = (BOOL)DoDialog(glblQueryDllHinst(),
|
|
MAKEINTRESOURCE(IDD_VT100J_SETTINGS),
|
|
hwndParent,
|
|
(DLGPROC)emuVT100J_SettingsDlgProc,
|
|
(LPARAM)pstEmuSettings);
|
|
break;
|
|
|
|
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.
|
|
*
|
|
*/
|
|
LRESULT 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,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
WinHelp((HWND)wPar, glblQueryHelpFileName(), HELP_CONTEXTMENU,
|
|
(DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp(((LPHELPINFO)lPar)->hItemHandle, glblQueryHelpFileName(),
|
|
HELP_WM_HELP, (DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLong(hDlg, GWL_USERDATA);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR);
|
|
|
|
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.
|
|
*
|
|
*/
|
|
LRESULT 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,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
/* -------------- 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:
|
|
WinHelp((HWND)wPar, glblQueryHelpFileName(), HELP_CONTEXTMENU,
|
|
(DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp(((LPHELPINFO)lPar)->hItemHandle, glblQueryHelpFileName(),
|
|
HELP_WM_HELP, (DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLong(hDlg, GWL_USERDATA);
|
|
|
|
/* -------------- Destructive Backspace ------------- */
|
|
|
|
pstEmuSettings->fDestructiveBk =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_DESTRUCTIVE_BKSP);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR);
|
|
|
|
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.
|
|
*
|
|
*/
|
|
LRESULT 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,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
/* -------------- 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:
|
|
WinHelp((HWND)wPar, glblQueryHelpFileName(), HELP_CONTEXTMENU,
|
|
(DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp(((LPHELPINFO)lPar)->hItemHandle, glblQueryHelpFileName(),
|
|
HELP_WM_HELP, (DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLong(hDlg, GWL_USERDATA);
|
|
|
|
/* -------------- Alternate keypad mode ------------- */
|
|
|
|
pstEmuSettings->fAltKeypadMode =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_ALT_MODE);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR);
|
|
|
|
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.
|
|
*
|
|
*/
|
|
LRESULT CALLBACK emuVT100_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
PSTEMUSET pstEmuSettings;
|
|
BYTE *pv;
|
|
int i, nLen, nEmuCount;
|
|
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,
|
|
IDC_CHARACTER_SET, IDH_TERM_EMUSET_CHARSETS,
|
|
IDC_TF_CHARACTER_SET, IDH_TERM_EMUSET_CHARSETS,
|
|
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,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
/* -------------- 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);
|
|
|
|
/* -------------- 132 Column Mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_132_COLUMN, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->f132Columns, 0);
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
/* -------------- VT100 Character Sets ------------- */
|
|
|
|
if (resLoadDataBlock(glblQueryDllHinst(), IDT_EMU_VT100_CHAR_SETS,
|
|
(LPVOID *)&pv, &nLen))
|
|
{
|
|
assert(FALSE);
|
|
return 0;
|
|
}
|
|
|
|
nEmuCount = *(RCDATA_TYPE *)pv;
|
|
pv += sizeof(RCDATA_TYPE);
|
|
|
|
for (i = 0 ; i < nEmuCount; i++)
|
|
{
|
|
nLen = StrCharGetByteCount((LPTSTR)pv) + (int)sizeof(BYTE);
|
|
|
|
SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_ADDSTRING, 0,
|
|
(LPARAM)(LPTSTR)pv);
|
|
|
|
if (i == pstEmuSettings->nCharacterSet)
|
|
SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_SETCURSEL,
|
|
(unsigned int)i, 0);
|
|
|
|
pv += (nLen + (int)sizeof(RCDATA_TYPE));
|
|
}
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
WinHelp((HWND)wPar, glblQueryHelpFileName(), HELP_CONTEXTMENU,
|
|
(DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp(((LPHELPINFO)lPar)->hItemHandle, glblQueryHelpFileName(),
|
|
HELP_WM_HELP, (DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLong(hDlg, GWL_USERDATA);
|
|
|
|
/* -------------- Keypad Application mode ------------- */
|
|
|
|
pstEmuSettings->fKeypadAppMode =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_KEYPAD_MODE);
|
|
|
|
/* -------------- Cursor Keypad Mode ------------- */
|
|
|
|
pstEmuSettings->fCursorKeypadMode =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_CURSOR_MODE);
|
|
|
|
/* -------------- 132 Column Mode ------------- */
|
|
|
|
pstEmuSettings->f132Columns =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_132_COLUMN);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR);
|
|
|
|
/* -------------- VT100 Character Set ------------- */
|
|
|
|
pstEmuSettings->nCharacterSet =
|
|
SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_GETCURSEL, 0, 0);
|
|
|
|
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.
|
|
*
|
|
*/
|
|
LRESULT CALLBACK emuVT100J_SettingsDlgProc(HWND hDlg, UINT wMsg, WPARAM wPar, LPARAM lPar)
|
|
{
|
|
PSTEMUSET pstEmuSettings;
|
|
BYTE *pv;
|
|
int i, nLen, nEmuCount;
|
|
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,
|
|
IDC_CHARACTER_SET, IDH_TERM_EMUSET_CHARSETS,
|
|
IDC_TF_CHARACTER_SET, IDH_TERM_EMUSET_CHARSETS,
|
|
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,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
/* -------------- 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);
|
|
|
|
/* -------------- 132 Column Mode ------------- */
|
|
|
|
SendDlgItemMessage(hDlg, IDC_132_COLUMN, BM_SETCHECK,
|
|
(unsigned int)pstEmuSettings->f132Columns, 0);
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
/* -------------- VT100 Character Sets ------------- */
|
|
|
|
if (resLoadDataBlock(glblQueryDllHinst(), IDT_EMU_VT100_CHAR_SETS,
|
|
(LPVOID *)&pv, &nLen))
|
|
{
|
|
assert(FALSE);
|
|
return 0;
|
|
}
|
|
|
|
nEmuCount = *(RCDATA_TYPE *)pv;
|
|
pv += sizeof(RCDATA_TYPE);
|
|
|
|
for (i = 0 ; i < nEmuCount; i++)
|
|
{
|
|
nLen = StrCharGetByteCount((LPTSTR)pv) + (int)sizeof(BYTE);
|
|
|
|
SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_ADDSTRING, 0,
|
|
(LPARAM)(LPTSTR)pv);
|
|
|
|
if (i == pstEmuSettings->nCharacterSet)
|
|
SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_SETCURSEL,
|
|
(unsigned int)i, 0);
|
|
|
|
pv += (nLen + (int)sizeof(RCDATA_TYPE));
|
|
}
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
WinHelp((HWND)wPar, glblQueryHelpFileName(), HELP_CONTEXTMENU,
|
|
(DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp(((LPHELPINFO)lPar)->hItemHandle, glblQueryHelpFileName(),
|
|
HELP_WM_HELP, (DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLong(hDlg, GWL_USERDATA);
|
|
|
|
/* -------------- Keypad Application mode ------------- */
|
|
|
|
pstEmuSettings->fKeypadAppMode =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_KEYPAD_MODE);
|
|
|
|
/* -------------- Cursor Keypad Mode ------------- */
|
|
|
|
pstEmuSettings->fCursorKeypadMode =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_CURSOR_MODE);
|
|
|
|
/* -------------- 132 Column Mode ------------- */
|
|
|
|
pstEmuSettings->f132Columns =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_132_COLUMN);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR);
|
|
|
|
/* -------------- VT100 Character Set ------------- */
|
|
|
|
pstEmuSettings->nCharacterSet =
|
|
SendDlgItemMessage(hDlg, IDC_CHARACTER_SET, CB_GETCURSEL, 0, 0);
|
|
|
|
EndDialog(hDlg, TRUE);
|
|
break;
|
|
|
|
case IDCANCEL:
|
|
EndDialog(hDlg, FALSE);
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
/*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
|
|
* FUNCTION:
|
|
* emuMinitel_SettingsDlgProc
|
|
*
|
|
* DESCRIPTION:
|
|
* TTY Settings dialog proc.
|
|
*
|
|
* ARGUMENTS:
|
|
* Standard window proc parameters.
|
|
*
|
|
* RETURNS:
|
|
* Standerd return value.
|
|
*
|
|
*/
|
|
LRESULT 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,
|
|
0, 0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
/* -------------- Cursor characteristics ------------- */
|
|
|
|
emudlgInitCursorSettings(hDlg, pstEmuSettings, IDC_UNDERLINE_CURSOR,
|
|
IDC_BLOCK_CURSOR, IDC_BLINK_CURSOR);
|
|
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
WinHelp((HWND)wPar, glblQueryHelpFileName(), HELP_CONTEXTMENU,
|
|
(DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp(((LPHELPINFO)lPar)->hItemHandle, glblQueryHelpFileName(),
|
|
HELP_WM_HELP, (DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLong(hDlg, GWL_USERDATA);
|
|
|
|
/* -------------- Cursor type ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLOCK_CURSOR) ?
|
|
EMU_CURSOR_BLOCK : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Cursor Blink ------------- */
|
|
|
|
pstEmuSettings->fCursorBlink =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_BLINK_CURSOR);
|
|
|
|
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.
|
|
*
|
|
*/
|
|
LRESULT 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,
|
|
0,0};
|
|
|
|
switch (wMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
pstEmuSettings = (PSTEMUSET)lPar;
|
|
SetWindowLong(hDlg, GWL_USERDATA, (LONG)pstEmuSettings);
|
|
mscCenterWindowOnWindow(hDlg, GetParent(hDlg));
|
|
|
|
/* -------------- 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:
|
|
WinHelp((HWND)wPar, glblQueryHelpFileName(), HELP_CONTEXTMENU,
|
|
(DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp(((LPHELPINFO)lPar)->hItemHandle, glblQueryHelpFileName(),
|
|
HELP_WM_HELP, (DWORD)(LPSTR)aHlpTable);
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (wPar)
|
|
{
|
|
case IDOK:
|
|
pstEmuSettings = (PSTEMUSET)GetWindowLong(hDlg, GWL_USERDATA);
|
|
|
|
/* -------------- Hide cursor ------------- */
|
|
|
|
pstEmuSettings->nCursorType =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_HIDE_CURSOR) ?
|
|
EMU_CURSOR_NONE : EMU_CURSOR_LINE;
|
|
|
|
/* -------------- Enter key sends # ------------- */
|
|
|
|
pstEmuSettings->fLbSymbolOnEnter =
|
|
(int)IsDlgButtonChecked(hDlg, IDC_SEND_POUND_SYMBOL) ?
|
|
TRUE : FALSE;
|
|
|
|
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);
|
|
|
|
return;
|
|
}
|