- if (GetWindowLong(hwnd, GWL_USERDATA) == 1)
- switch (LOWORD(wParam)) {
- case IDOK:
- /* Behaviour of the "Open" button is different if the
- * session list has focus, *unless* the user just
- * double-clicked... */
- if (sesslist_has_focus && !readytogo) {
- if (!load_selected_session(hwnd)) {
- MessageBeep(0);
- return 0;
- }
- }
- /* If at this point we have a valid session, go! */
- if (*cfg.host)
- EndDialog(hwnd, 1);
- else
- MessageBeep(0);
- return 0;
- case IDCANCEL:
- EndDialog(hwnd, 0);
- return 0;
- case IDC_PROTTELNET:
- case IDC_PROTRLOGIN:
- case IDC_PROTSSH:
- case IDC_PROTRAW:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- int i = IsDlgButtonChecked(hwnd, IDC_PROTSSH);
- int j = IsDlgButtonChecked(hwnd, IDC_PROTTELNET);
- int k = IsDlgButtonChecked(hwnd, IDC_PROTRLOGIN);
- cfg.protocol =
- i ? PROT_SSH : j ? PROT_TELNET : k ? PROT_RLOGIN :
- PROT_RAW;
- if ((cfg.protocol == PROT_SSH && cfg.port != 22)
- || (cfg.protocol == PROT_TELNET && cfg.port != 23)
- || (cfg.protocol == PROT_RLOGIN
- && cfg.port != 513)) {
- cfg.port = i ? 22 : j ? 23 : 513;
- SetDlgItemInt(hwnd, IDC_PORT, cfg.port, FALSE);
- }
- }
- break;
- case IDC_HOST:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_HOST, cfg.host,
- sizeof(cfg.host) - 1);
- break;
- case IDC_PORT:
- if (HIWORD(wParam) == EN_CHANGE) {
- GetDlgItemText(hwnd, IDC_PORT, portname, 31);
- if (isdigit(portname[0]))
- MyGetDlgItemInt(hwnd, IDC_PORT, &cfg.port);
- else {
- service = getservbyname(portname, NULL);
- if (service)
- cfg.port = ntohs(service->s_port);
- else
- cfg.port = 0;
- }
- }
- break;
- case IDC_SESSEDIT:
- if (HIWORD(wParam) == EN_CHANGE) {
- SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_SETCURSEL,
- (WPARAM) - 1, 0);
- GetDlgItemText(hwnd, IDC_SESSEDIT,
- savedsession, sizeof(savedsession) - 1);
- savedsession[sizeof(savedsession) - 1] = '\0';
- }
- break;
- case IDC_SESSSAVE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- /*
- * Save a session
- */
- char str[2048];
- GetDlgItemText(hwnd, IDC_SESSEDIT, str,
- sizeof(str) - 1);
- if (!*str) {
- int n = SendDlgItemMessage(hwnd, IDC_SESSLIST,
- LB_GETCURSEL, 0, 0);
- if (n == LB_ERR) {
- MessageBeep(0);
- break;
- }
- strcpy(str, sessions[n]);
- }
- save_settings(str, !!strcmp(str, "Default Settings"),
- &cfg);
- get_sesslist(FALSE);
- get_sesslist(TRUE);
- SendDlgItemMessage(hwnd, IDC_SESSLIST, WM_SETREDRAW,
- FALSE, 0);
- SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_RESETCONTENT,
- 0, 0);
- for (i = 0; i < nsessions; i++)
- SendDlgItemMessage(hwnd, IDC_SESSLIST,
- LB_ADDSTRING, 0,
- (LPARAM) (sessions[i]));
- SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_SETCURSEL,
- (WPARAM) - 1, 0);
- SendDlgItemMessage(hwnd, IDC_SESSLIST, WM_SETREDRAW,
- TRUE, 0);
- InvalidateRect(GetDlgItem(hwnd, IDC_SESSLIST), NULL,
- TRUE);
- }
- break;
- case IDC_SESSLIST:
- case IDC_SESSLOAD:
- if (LOWORD(wParam) == IDC_SESSLIST) {
- if (HIWORD(wParam) == LBN_SETFOCUS)
- sesslist_has_focus = 1;
- else if (HIWORD(wParam) == LBN_KILLFOCUS)
- sesslist_has_focus = 0;
- }
- if (LOWORD(wParam) == IDC_SESSLOAD &&
- HIWORD(wParam) != BN_CLICKED &&
- HIWORD(wParam) != BN_DOUBLECLICKED) break;
- if (LOWORD(wParam) == IDC_SESSLIST &&
- HIWORD(wParam) != LBN_DBLCLK) break;
- /* Load the session selected in SESSLIST. */
- if (load_selected_session(hwnd) &&
- LOWORD(wParam) == IDC_SESSLIST) {
- /*
- * A double-click on a saved session should
- * actually start the session, not just load it.
- * Unless it's Default Settings or some other
- * host-less set of saved settings.
- */
- if (*cfg.host) {
- readytogo = TRUE;
- SetCapture(hwnd);
- }
- }
- break;
- case IDC_SESSDEL:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- int n = SendDlgItemMessage(hwnd, IDC_SESSLIST,
- LB_GETCURSEL, 0, 0);
- if (n == LB_ERR || n == 0) {
- MessageBeep(0);
- break;
- }
- del_settings(sessions[n]);
- get_sesslist(FALSE);
- get_sesslist(TRUE);
- SendDlgItemMessage(hwnd, IDC_SESSLIST, WM_SETREDRAW,
- FALSE, 0);
- SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_RESETCONTENT,
- 0, 0);
- for (i = 0; i < nsessions; i++)
- SendDlgItemMessage(hwnd, IDC_SESSLIST,
- LB_ADDSTRING, 0,
- (LPARAM) (sessions[i]));
- SendDlgItemMessage(hwnd, IDC_SESSLIST, LB_SETCURSEL,
- (WPARAM) - 1, 0);
- SendDlgItemMessage(hwnd, IDC_SESSLIST, WM_SETREDRAW,
- TRUE, 0);
- InvalidateRect(GetDlgItem(hwnd, IDC_SESSLIST), NULL,
- TRUE);
- }
- case IDC_PINGEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- MyGetDlgItemInt(hwnd, IDC_PINGEDIT,
- &cfg.ping_interval);
- break;
- case IDC_DEL008:
- case IDC_DEL127:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.bksp_is_delete =
- IsDlgButtonChecked(hwnd, IDC_DEL127);
- break;
- case IDC_HOMETILDE:
- case IDC_HOMERXVT:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.rxvt_homeend =
- IsDlgButtonChecked(hwnd, IDC_HOMERXVT);
- break;
- case IDC_FUNCTILDE:
- case IDC_FUNCLINUX:
- case IDC_FUNCXTERM:
- case IDC_FUNCVT400:
- case IDC_FUNCVT100P:
- case IDC_FUNCSCO:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- switch (LOWORD(wParam)) {
- case IDC_FUNCTILDE:
- cfg.funky_type = 0;
- break;
- case IDC_FUNCLINUX:
- cfg.funky_type = 1;
- break;
- case IDC_FUNCXTERM:
- cfg.funky_type = 2;
- break;
- case IDC_FUNCVT400:
- cfg.funky_type = 3;
- break;
- case IDC_FUNCVT100P:
- cfg.funky_type = 4;
- break;
- case IDC_FUNCSCO:
- cfg.funky_type = 5;
- break;
- }
- break;
- case IDC_KPNORMAL:
- case IDC_KPAPPLIC:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- cfg.app_keypad =
- IsDlgButtonChecked(hwnd, IDC_KPAPPLIC);
- cfg.nethack_keypad = FALSE;
- }
- break;
- case IDC_KPNH:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- cfg.app_keypad = FALSE;
- cfg.nethack_keypad = TRUE;
- }
- break;
- case IDC_CURNORMAL:
- case IDC_CURAPPLIC:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.app_cursor =
- IsDlgButtonChecked(hwnd, IDC_CURAPPLIC);
- break;
- case IDC_NOAPPLICC:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.no_applic_c =
- IsDlgButtonChecked(hwnd, IDC_NOAPPLICC);
- break;
- case IDC_NOAPPLICK:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.no_applic_k =
- IsDlgButtonChecked(hwnd, IDC_NOAPPLICK);
- break;
- case IDC_ALTF4:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.alt_f4 = IsDlgButtonChecked(hwnd, IDC_ALTF4);
- break;
- case IDC_ALTSPACE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.alt_space =
- IsDlgButtonChecked(hwnd, IDC_ALTSPACE);
- break;
- case IDC_ALTONLY:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.alt_only =
- IsDlgButtonChecked(hwnd, IDC_ALTONLY);
- break;
- case IDC_ECHOBACKEND:
- case IDC_ECHOYES:
- case IDC_ECHONO:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- if (LOWORD(wParam) == IDC_ECHOBACKEND)
- cfg.localecho = LD_BACKEND;
- if (LOWORD(wParam) == IDC_ECHOYES)
- cfg.localecho = LD_YES;
- if (LOWORD(wParam) == IDC_ECHONO)
- cfg.localecho = LD_NO;
- }
- break;
- case IDC_EDITBACKEND:
- case IDC_EDITYES:
- case IDC_EDITNO:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- if (LOWORD(wParam) == IDC_EDITBACKEND)
- cfg.localedit = LD_BACKEND;
- if (LOWORD(wParam) == IDC_EDITYES)
- cfg.localedit = LD_YES;
- if (LOWORD(wParam) == IDC_EDITNO)
- cfg.localedit = LD_NO;
- }
- break;
- case IDC_ANSWEREDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_ANSWEREDIT, cfg.answerback,
- sizeof(cfg.answerback) - 1);
- break;
- case IDC_ALWAYSONTOP:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.alwaysontop =
- IsDlgButtonChecked(hwnd, IDC_ALWAYSONTOP);
- break;
- case IDC_FULLSCREENONALTENTER:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.fullscreenonaltenter =
- IsDlgButtonChecked(hwnd, IDC_FULLSCREENONALTENTER);
- break;
- case IDC_SCROLLKEY:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.scroll_on_key =
- IsDlgButtonChecked(hwnd, IDC_SCROLLKEY);
- break;
- case IDC_SCROLLDISP:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.scroll_on_disp =
- IsDlgButtonChecked(hwnd, IDC_SCROLLDISP);
- break;
- case IDC_COMPOSEKEY:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.compose_key =
- IsDlgButtonChecked(hwnd, IDC_COMPOSEKEY);
- break;
- case IDC_CTRLALTKEYS:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.ctrlaltkeys =
- IsDlgButtonChecked(hwnd, IDC_CTRLALTKEYS);
- break;
- case IDC_TELNETKEY:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.telnet_keyboard =
- IsDlgButtonChecked(hwnd, IDC_TELNETKEY);
- break;
- case IDC_WRAPMODE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.wrap_mode =
- IsDlgButtonChecked(hwnd, IDC_WRAPMODE);
- break;
- case IDC_DECOM:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.dec_om = IsDlgButtonChecked(hwnd, IDC_DECOM);
- break;
- case IDC_LFHASCR:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.lfhascr =
- IsDlgButtonChecked(hwnd, IDC_LFHASCR);
- break;
- case IDC_ROWSEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- MyGetDlgItemInt(hwnd, IDC_ROWSEDIT, &cfg.height);
- break;
- case IDC_COLSEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- MyGetDlgItemInt(hwnd, IDC_COLSEDIT, &cfg.width);
- break;
- case IDC_SAVEEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- MyGetDlgItemInt(hwnd, IDC_SAVEEDIT, &cfg.savelines);
- break;
- case IDC_CHOOSEFONT:
- {
- HDC hdc = GetDC(0);
- lf.lfHeight = -MulDiv(cfg.fontheight,
- GetDeviceCaps(hdc, LOGPIXELSY),
- 72);
- ReleaseDC(0, hdc);
- }
- lf.lfWidth = lf.lfEscapement = lf.lfOrientation = 0;
- lf.lfItalic = lf.lfUnderline = lf.lfStrikeOut = 0;
- lf.lfWeight = (cfg.fontisbold ? FW_BOLD : 0);
- lf.lfCharSet = cfg.fontcharset;
- lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
- lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
- lf.lfQuality = DEFAULT_QUALITY;
- lf.lfPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
- strncpy(lf.lfFaceName, cfg.font,
- sizeof(lf.lfFaceName) - 1);
- lf.lfFaceName[sizeof(lf.lfFaceName) - 1] = '\0';
-
- cf.lStructSize = sizeof(cf);
- cf.hwndOwner = hwnd;
- cf.lpLogFont = &lf;
- cf.Flags = CF_FIXEDPITCHONLY | CF_FORCEFONTEXIST |
- CF_INITTOLOGFONTSTRUCT | CF_SCREENFONTS;
-
- if (ChooseFont(&cf)) {
- strncpy(cfg.font, lf.lfFaceName, sizeof(cfg.font) - 1);
- cfg.font[sizeof(cfg.font) - 1] = '\0';
- cfg.fontisbold = (lf.lfWeight == FW_BOLD);
- cfg.fontcharset = lf.lfCharSet;
- cfg.fontheight = cf.iPointSize / 10;
- fmtfont(fontstatic);
- SetDlgItemText(hwnd, IDC_FONTSTATIC, fontstatic);
- }
- break;
- case IDC_BELL_DISABLED:
- case IDC_BELL_DEFAULT:
- case IDC_BELL_WAVEFILE:
- case IDC_BELL_VISUAL:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- if (LOWORD(wParam) == IDC_BELL_DISABLED)
- cfg.beep = BELL_DISABLED;
- if (LOWORD(wParam) == IDC_BELL_DEFAULT)
- cfg.beep = BELL_DEFAULT;
- if (LOWORD(wParam) == IDC_BELL_WAVEFILE)
- cfg.beep = BELL_WAVEFILE;
- if (LOWORD(wParam) == IDC_BELL_VISUAL)
- cfg.beep = BELL_VISUAL;
- }
- break;
- case IDC_B_IND_DISABLED:
- case IDC_B_IND_FLASH:
- case IDC_B_IND_STEADY:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- if (LOWORD(wParam) == IDC_B_IND_DISABLED)
- cfg.beep_ind = B_IND_DISABLED;
- if (LOWORD(wParam) == IDC_B_IND_FLASH)
- cfg.beep_ind = B_IND_FLASH;
- if (LOWORD(wParam) == IDC_B_IND_STEADY)
- cfg.beep_ind = B_IND_STEADY;
- }
- break;
- case IDC_BELL_WAVEBROWSE:
- memset(&of, 0, sizeof(of));
-#ifdef OPENFILENAME_SIZE_VERSION_400
- of.lStructSize = OPENFILENAME_SIZE_VERSION_400;
-#else
- of.lStructSize = sizeof(of);
-#endif
- of.hwndOwner = hwnd;
- of.lpstrFilter = "Wave Files\0*.WAV\0AllFiles\0*\0\0\0";
- of.lpstrCustomFilter = NULL;
- of.nFilterIndex = 1;
- of.lpstrFile = filename;
- strcpy(filename, cfg.bell_wavefile);
- of.nMaxFile = sizeof(filename);
- of.lpstrFileTitle = NULL;
- of.lpstrInitialDir = NULL;
- of.lpstrTitle = "Select Bell Sound File";
- of.Flags = 0;
- if (GetOpenFileName(&of)) {
- strcpy(cfg.bell_wavefile, filename);
- SetDlgItemText(hwnd, IDC_BELL_WAVEEDIT,
- cfg.bell_wavefile);
- }
- break;
- case IDC_BELL_WAVEEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_BELL_WAVEEDIT,
- cfg.bell_wavefile,
- sizeof(cfg.bell_wavefile) - 1);
- break;
- case IDC_BELLOVL:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.bellovl =
- IsDlgButtonChecked(hwnd, IDC_BELLOVL);
- break;
- case IDC_BELLOVLN:
- if (HIWORD(wParam) == EN_CHANGE)
- MyGetDlgItemInt(hwnd, IDC_BELLOVLN, &cfg.bellovl_n);
- break;
- case IDC_BELLOVLT:
- if (HIWORD(wParam) == EN_CHANGE)
- MyGetDlgItemFlt(hwnd, IDC_BELLOVLT, &cfg.bellovl_t,
- 1000);
- break;
- case IDC_BELLOVLS:
- if (HIWORD(wParam) == EN_CHANGE)
- MyGetDlgItemFlt(hwnd, IDC_BELLOVLS, &cfg.bellovl_s,
- 1000);
- break;
- case IDC_BLINKTEXT:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.blinktext =
- IsDlgButtonChecked(hwnd, IDC_BLINKTEXT);
- break;
- case IDC_BCE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.bce = IsDlgButtonChecked(hwnd, IDC_BCE);
- break;
- case IDC_WINNAME:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.win_name_always =
- IsDlgButtonChecked(hwnd, IDC_WINNAME);
- break;
- case IDC_HIDEMOUSE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.hide_mouseptr =
- IsDlgButtonChecked(hwnd, IDC_HIDEMOUSE);
- break;
- case IDC_SUNKENEDGE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.sunken_edge =
- IsDlgButtonChecked(hwnd, IDC_SUNKENEDGE);
- break;
- case IDC_WINBEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- MyGetDlgItemInt(hwnd, IDC_WINBEDIT,
- &cfg.window_border);
- if (cfg.window_border > 32)
- cfg.window_border = 32;
- break;
- case IDC_CURBLOCK:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.cursor_type = 0;
- break;
- case IDC_CURUNDER:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.cursor_type = 1;
- break;
- case IDC_CURVERT:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.cursor_type = 2;
- break;
- case IDC_BLINKCUR:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.blink_cur =
- IsDlgButtonChecked(hwnd, IDC_BLINKCUR);
- break;
- case IDC_SCROLLBAR:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.scrollbar =
- IsDlgButtonChecked(hwnd, IDC_SCROLLBAR);
- break;
- case IDC_SCROLLBARFULLSCREEN:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.scrollbar_in_fullscreen =
- IsDlgButtonChecked(hwnd, IDC_SCROLLBARFULLSCREEN);
- break;
- case IDC_RESIZETERM:
- case IDC_RESIZEFONT:
- case IDC_RESIZENONE:
- case IDC_RESIZEEITHER:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- cfg.resize_action =
- IsDlgButtonChecked(hwnd,
- IDC_RESIZETERM) ? RESIZE_TERM :
- IsDlgButtonChecked(hwnd,
- IDC_RESIZEFONT) ? RESIZE_FONT :
- IsDlgButtonChecked(hwnd,
- IDC_RESIZEEITHER) ? RESIZE_EITHER :
- RESIZE_DISABLED;
- }
- break;
- case IDC_WINEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_WINEDIT, cfg.wintitle,
- sizeof(cfg.wintitle) - 1);
- break;
- case IDC_COEALWAYS:
- case IDC_COENEVER:
- case IDC_COENORMAL:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- cfg.close_on_exit =
- IsDlgButtonChecked(hwnd,
- IDC_COEALWAYS) ? COE_ALWAYS :
- IsDlgButtonChecked(hwnd,
- IDC_COENEVER) ? COE_NEVER :
- COE_NORMAL;
- }
- break;
- case IDC_CLOSEWARN:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.warn_on_close =
- IsDlgButtonChecked(hwnd, IDC_CLOSEWARN);
- break;
- case IDC_TTEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_TTEDIT, cfg.termtype,
- sizeof(cfg.termtype) - 1);
- break;
- case IDC_LGFEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_LGFEDIT, cfg.logfilename,
- sizeof(cfg.logfilename) - 1);
- break;
- case IDC_LGFBUTTON:
- memset(&of, 0, sizeof(of));
-#ifdef OPENFILENAME_SIZE_VERSION_400
- of.lStructSize = OPENFILENAME_SIZE_VERSION_400;
-#else
- of.lStructSize = sizeof(of);
-#endif
- of.hwndOwner = hwnd;
- of.lpstrFilter = "All Files\0*\0\0\0";
- of.lpstrCustomFilter = NULL;
- of.nFilterIndex = 1;
- of.lpstrFile = filename;
- strcpy(filename, cfg.logfilename);
- of.nMaxFile = sizeof(filename);
- of.lpstrFileTitle = NULL;
- of.lpstrInitialDir = NULL;
- of.lpstrTitle = "Select session log file";
- of.Flags = 0;
- if (GetSaveFileName(&of)) {
- strcpy(cfg.logfilename, filename);
- SetDlgItemText(hwnd, IDC_LGFEDIT, cfg.logfilename);
- }
- break;
- case IDC_LSTATOFF:
- case IDC_LSTATASCII:
- case IDC_LSTATRAW:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- if (IsDlgButtonChecked(hwnd, IDC_LSTATOFF))
- cfg.logtype = 0;
- if (IsDlgButtonChecked(hwnd, IDC_LSTATASCII))
- cfg.logtype = 1;
- if (IsDlgButtonChecked(hwnd, IDC_LSTATRAW))
- cfg.logtype = 2;
- }
- break;
- case IDC_LSTATXASK:
- case IDC_LSTATXAPN:
- case IDC_LSTATXOVR:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- if (IsDlgButtonChecked(hwnd, IDC_LSTATXASK))
- cfg.logxfovr = LGXF_ASK;
- if (IsDlgButtonChecked(hwnd, IDC_LSTATXAPN))
- cfg.logxfovr = LGXF_APN;
- if (IsDlgButtonChecked(hwnd, IDC_LSTATXOVR))
- cfg.logxfovr = LGXF_OVR;
- }
- break;
- case IDC_TSEDIT:
- case IDC_R_TSEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, LOWORD(wParam), cfg.termspeed,
- sizeof(cfg.termspeed) - 1);
- break;
- case IDC_LOGEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_LOGEDIT, cfg.username,
- sizeof(cfg.username) - 1);
- break;
- case IDC_RLLUSEREDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_RLLUSEREDIT,
- cfg.localusername,
- sizeof(cfg.localusername) - 1);
- break;
- case IDC_EMBSD:
- case IDC_EMRFC:
- cfg.rfc_environ = IsDlgButtonChecked(hwnd, IDC_EMRFC);
- break;
- case IDC_TPASSIVE:
- case IDC_TACTIVE:
- cfg.passive_telnet =
- IsDlgButtonChecked(hwnd, IDC_TPASSIVE);
- break;
- case IDC_ENVADD:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- char str[sizeof(cfg.environmt)];
- char *p;
- GetDlgItemText(hwnd, IDC_VAREDIT, str,
- sizeof(str) - 1);
- if (!*str) {
- MessageBeep(0);
- break;
- }
- p = str + strlen(str);
- *p++ = '\t';
- GetDlgItemText(hwnd, IDC_VALEDIT, p,
- sizeof(str) - 1 - (p - str));
- if (!*p) {
- MessageBeep(0);
- break;
- }
- p = cfg.environmt;
- while (*p) {
- while (*p)
- p++;
- p++;
- }
- if ((p - cfg.environmt) + strlen(str) + 2 <
- sizeof(cfg.environmt)) {
- strcpy(p, str);
- p[strlen(str) + 1] = '\0';
- SendDlgItemMessage(hwnd, IDC_ENVLIST, LB_ADDSTRING,
- 0, (LPARAM) str);
- SetDlgItemText(hwnd, IDC_VAREDIT, "");
- SetDlgItemText(hwnd, IDC_VALEDIT, "");
- } else {
- MessageBox(hwnd, "Environment too big",
- "PuTTY Error", MB_OK | MB_ICONERROR);
- }
- }
- break;
- case IDC_ENVREMOVE:
- if (HIWORD(wParam) != BN_CLICKED &&
- HIWORD(wParam) != BN_DOUBLECLICKED) break;
- i =
- SendDlgItemMessage(hwnd, IDC_ENVLIST, LB_GETCURSEL, 0,
- 0);
- if (i == LB_ERR)
- MessageBeep(0);
- else {
- char *p, *q;
-
- SendDlgItemMessage(hwnd, IDC_ENVLIST, LB_DELETESTRING,
- i, 0);
- p = cfg.environmt;
- while (i > 0) {
- if (!*p)
- goto disaster;
- while (*p)
- p++;
- p++;
- i--;
- }
- q = p;
- if (!*p)
- goto disaster;
- while (*p)
- p++;
- p++;
- while (*p) {
- while (*p)
- *q++ = *p++;
- *q++ = *p++;
- }
- *q = '\0';
- disaster:;
- }
- break;
- case IDC_NOPTY:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.nopty = IsDlgButtonChecked(hwnd, IDC_NOPTY);
- break;
- case IDC_COMPRESS:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.compression =
- IsDlgButtonChecked(hwnd, IDC_COMPRESS);
- break;
- case IDC_BUGGYMAC:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.buggymac =
- IsDlgButtonChecked(hwnd, IDC_BUGGYMAC);
- break;
- case IDC_AGENTFWD:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.agentfwd =
- IsDlgButtonChecked(hwnd, IDC_AGENTFWD);
- break;
- case IDC_CIPHERLIST:
- case IDC_CIPHERUP:
- case IDC_CIPHERDN:
- handle_prefslist(&cipherlist,
- cfg.ssh_cipherlist, CIPHER_MAX,
- 0, hwnd, wParam, lParam);
- break;
- case IDC_SSHPROT1:
- case IDC_SSHPROT2:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- if (IsDlgButtonChecked(hwnd, IDC_SSHPROT1))
- cfg.sshprot = 1;
- else if (IsDlgButtonChecked(hwnd, IDC_SSHPROT2))
- cfg.sshprot = 2;
- }
- break;
- case IDC_AUTHTIS:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.try_tis_auth =
- IsDlgButtonChecked(hwnd, IDC_AUTHTIS);
- break;
- case IDC_PKEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_PKEDIT, cfg.keyfile,
- sizeof(cfg.keyfile) - 1);
- break;
- case IDC_CMDEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_CMDEDIT, cfg.remote_cmd,
- sizeof(cfg.remote_cmd) - 1);
- break;
- case IDC_PKBUTTON:
- memset(&of, 0, sizeof(of));
-#ifdef OPENFILENAME_SIZE_VERSION_400
- of.lStructSize = OPENFILENAME_SIZE_VERSION_400;
-#else
- of.lStructSize = sizeof(of);
-#endif
- of.hwndOwner = hwnd;
- of.lpstrFilter = "All Files\0*\0\0\0";
- of.lpstrCustomFilter = NULL;
- of.nFilterIndex = 1;
- of.lpstrFile = filename;
- strcpy(filename, cfg.keyfile);
- of.nMaxFile = sizeof(filename);
- of.lpstrFileTitle = NULL;
- of.lpstrInitialDir = NULL;
- of.lpstrTitle = "Select Private Key File";
- of.Flags = 0;
- if (GetOpenFileName(&of)) {
- strcpy(cfg.keyfile, filename);
- SetDlgItemText(hwnd, IDC_PKEDIT, cfg.keyfile);
- }
- break;
- case IDC_RAWCNP:
- cfg.rawcnp = IsDlgButtonChecked(hwnd, IDC_RAWCNP);
- break;
- case IDC_RTFPASTE:
- cfg.rtf_paste = IsDlgButtonChecked(hwnd, IDC_RTFPASTE);
- break;
- case IDC_MBWINDOWS:
- case IDC_MBXTERM:
- cfg.mouse_is_xterm = IsDlgButtonChecked(hwnd, IDC_MBXTERM);
- break;
- case IDC_SELTYPELEX:
- case IDC_SELTYPERECT:
- cfg.rect_select = IsDlgButtonChecked(hwnd, IDC_SELTYPERECT);
- break;
- case IDC_MOUSEOVERRIDE:
- cfg.mouse_override = IsDlgButtonChecked(hwnd, IDC_MOUSEOVERRIDE);
- break;
- case IDC_CCSET:
- {
- BOOL ok;
- int i;
- int n = GetDlgItemInt(hwnd, IDC_CCEDIT, &ok, FALSE);
-
- if (!ok)
- MessageBeep(0);
- else {
- for (i = 0; i < 128; i++)
- if (SendDlgItemMessage
- (hwnd, IDC_CCLIST, LB_GETSEL, i, 0)) {
- char str[100];
- cfg.wordness[i] = n;
- SendDlgItemMessage(hwnd, IDC_CCLIST,
- LB_DELETESTRING, i, 0);
- sprintf(str, "%d\t(0x%02X)\t%c\t%d", i, i,
- (i >= 0x21 && i != 0x7F) ? i : ' ',
- cfg.wordness[i]);
- SendDlgItemMessage(hwnd, IDC_CCLIST,
- LB_INSERTSTRING, i,
- (LPARAM) str);
- }
- }
- }
- break;
- case IDC_BOLDCOLOUR:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- int n, i;
- cfg.bold_colour =
- IsDlgButtonChecked(hwnd, IDC_BOLDCOLOUR);
- SendDlgItemMessage(hwnd, IDC_COLOURLIST, WM_SETREDRAW,
- FALSE, 0);
- n =
- SendDlgItemMessage(hwnd, IDC_COLOURLIST,
- LB_GETCOUNT, 0, 0);
- if (n != 12 + 10 * cfg.bold_colour) {
- for (i = n; i-- > 0;)
- SendDlgItemMessage(hwnd, IDC_COLOURLIST,
- LB_DELETESTRING, i, 0);
- for (i = 0; i < 22; i++)
- if (cfg.bold_colour || permcolour[i])
- SendDlgItemMessage(hwnd, IDC_COLOURLIST,
- LB_ADDSTRING, 0,
- (LPARAM) colours[i]);
- }
- SendDlgItemMessage(hwnd, IDC_COLOURLIST, WM_SETREDRAW,
- TRUE, 0);
- InvalidateRect(GetDlgItem(hwnd, IDC_COLOURLIST), NULL,
- TRUE);
- }
- break;
- case IDC_PALETTE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.try_palette =
- IsDlgButtonChecked(hwnd, IDC_PALETTE);
- break;
- case IDC_COLOURLIST:
- if (HIWORD(wParam) == LBN_DBLCLK ||
- HIWORD(wParam) == LBN_SELCHANGE) {
- int i =
- SendDlgItemMessage(hwnd, IDC_COLOURLIST,
- LB_GETCURSEL,
- 0, 0);
- if (!cfg.bold_colour)
- i = (i < 3 ? i * 2 : i == 3 ? 5 : i * 2 - 2);
- SetDlgItemInt(hwnd, IDC_RVALUE, cfg.colours[i][0],
- FALSE);
- SetDlgItemInt(hwnd, IDC_GVALUE, cfg.colours[i][1],
- FALSE);
- SetDlgItemInt(hwnd, IDC_BVALUE, cfg.colours[i][2],
- FALSE);
- }
- break;
- case IDC_CHANGE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- static CHOOSECOLOR cc;
- static DWORD custom[16] = { 0 }; /* zero initialisers */
- int i =
- SendDlgItemMessage(hwnd, IDC_COLOURLIST,
- LB_GETCURSEL,
- 0, 0);
- if (!cfg.bold_colour)
- i = (i < 3 ? i * 2 : i == 3 ? 5 : i * 2 - 2);
- cc.lStructSize = sizeof(cc);
- cc.hwndOwner = hwnd;
- cc.hInstance = (HWND) hinst;
- cc.lpCustColors = custom;
- cc.rgbResult =
- RGB(cfg.colours[i][0], cfg.colours[i][1],
- cfg.colours[i][2]);
- cc.Flags = CC_FULLOPEN | CC_RGBINIT;
- if (ChooseColor(&cc)) {
- cfg.colours[i][0] =
- (unsigned char) (cc.rgbResult & 0xFF);
- cfg.colours[i][1] =
- (unsigned char) (cc.rgbResult >> 8) & 0xFF;
- cfg.colours[i][2] =
- (unsigned char) (cc.rgbResult >> 16) & 0xFF;
- SetDlgItemInt(hwnd, IDC_RVALUE, cfg.colours[i][0],
- FALSE);
- SetDlgItemInt(hwnd, IDC_GVALUE, cfg.colours[i][1],
- FALSE);
- SetDlgItemInt(hwnd, IDC_BVALUE, cfg.colours[i][2],
- FALSE);
- }
- }
- break;
- case IDC_CODEPAGE:
- if (HIWORD(wParam) == CBN_SELCHANGE) {
- int index = SendDlgItemMessage(hwnd, IDC_CODEPAGE,
- CB_GETCURSEL, 0, 0);
- SendDlgItemMessage(hwnd, IDC_CODEPAGE, CB_GETLBTEXT,
- index, (LPARAM)cfg.line_codepage);
- } else if (HIWORD(wParam) == CBN_EDITCHANGE) {
- GetDlgItemText(hwnd, IDC_CODEPAGE, cfg.line_codepage,
- sizeof(cfg.line_codepage) - 1);
- } else if (HIWORD(wParam) == CBN_KILLFOCUS) {
- strcpy(cfg.line_codepage,
- cp_name(decode_codepage(cfg.line_codepage)));
- SetDlgItemText(hwnd, IDC_CODEPAGE, cfg.line_codepage);
- }
- break;
- case IDC_CAPSLOCKCYR:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- cfg.xlat_capslockcyr =
- IsDlgButtonChecked (hwnd, IDC_CAPSLOCKCYR);
- }
- break;
- case IDC_VTXWINDOWS:
- case IDC_VTOEMANSI:
- case IDC_VTOEMONLY:
- case IDC_VTPOORMAN:
- case IDC_VTUNICODE:
- cfg.vtmode =
- (IsDlgButtonChecked(hwnd, IDC_VTXWINDOWS) ? VT_XWINDOWS
- : IsDlgButtonChecked(hwnd,
- IDC_VTOEMANSI) ? VT_OEMANSI :
- IsDlgButtonChecked(hwnd,
- IDC_VTOEMONLY) ? VT_OEMONLY :
- IsDlgButtonChecked(hwnd,
- IDC_VTUNICODE) ? VT_UNICODE :
- VT_POORMAN);
- break;
- case IDC_X11_FORWARD:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.x11_forward =
- IsDlgButtonChecked(hwnd, IDC_X11_FORWARD);
- break;
- case IDC_LPORT_ALL:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.lport_acceptall =
- IsDlgButtonChecked(hwnd, IDC_LPORT_ALL);
- break;
- case IDC_X11_DISPLAY:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText(hwnd, IDC_X11_DISPLAY, cfg.x11_display,
- sizeof(cfg.x11_display) - 1);
- break;
- case IDC_PFWDADD:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED) {
- char str[sizeof(cfg.portfwd)];
- char *p;
- if (IsDlgButtonChecked(hwnd, IDC_PFWDLOCAL))
- str[0] = 'L';
- else
- str[0] = 'R';
- GetDlgItemText(hwnd, IDC_SPORTEDIT, str+1,
- sizeof(str) - 2);
- if (!str[1]) {
- MessageBox(hwnd,
- "You need to specify a source port number",
- "PuTTY Error", MB_OK | MB_ICONERROR);
- break;
- }
- p = str + strlen(str);
- *p++ = '\t';
- GetDlgItemText(hwnd, IDC_DPORTEDIT, p,
- sizeof(str) - 1 - (p - str));
- if (!*p || !strchr(p, ':')) {
- MessageBox(hwnd,
- "You need to specify a destination address\n"
- "in the form \"host.name:port\"",
- "PuTTY Error", MB_OK | MB_ICONERROR);
- break;
- }
- p = cfg.portfwd;
- while (*p) {
- while (*p)
- p++;
- p++;
- }
- if ((p - cfg.portfwd) + strlen(str) + 2 <
- sizeof(cfg.portfwd)) {
- strcpy(p, str);
- p[strlen(str) + 1] = '\0';
- SendDlgItemMessage(hwnd, IDC_PFWDLIST, LB_ADDSTRING,
- 0, (LPARAM) str);
- SetDlgItemText(hwnd, IDC_SPORTEDIT, "");
- SetDlgItemText(hwnd, IDC_DPORTEDIT, "");
- } else {
- MessageBox(hwnd, "Too many forwardings",
- "PuTTY Error", MB_OK | MB_ICONERROR);
- }
- }
- break;
- case IDC_PFWDREMOVE:
- if (HIWORD(wParam) != BN_CLICKED &&
- HIWORD(wParam) != BN_DOUBLECLICKED) break;
- i = SendDlgItemMessage(hwnd, IDC_PFWDLIST,
- LB_GETCURSEL, 0, 0);
- if (i == LB_ERR)
- MessageBeep(0);
- else {
- char *p, *q;
-
- SendDlgItemMessage(hwnd, IDC_PFWDLIST, LB_DELETESTRING,
- i, 0);
- p = cfg.portfwd;
- while (i > 0) {
- if (!*p)
- goto disaster2;
- while (*p)
- p++;
- p++;
- i--;
- }
- q = p;
- if (!*p)
- goto disaster2;
- while (*p)
- p++;
- p++;
- while (*p) {
- while (*p)
- *q++ = *p++;
- *q++ = *p++;
- }
- *q = '\0';
- disaster2:;
- }
- break;
- }
- return 0;