X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/5b80d07f712ff90cfae4c89084e25eb90dd2e510..ec55b2200b3a40631648cfa02ed63207b58832fe:/windlg.c diff --git a/windlg.c b/windlg.c index 5184bdae..f51e412c 100644 --- a/windlg.c +++ b/windlg.c @@ -392,13 +392,14 @@ static void staticbtn(struct ctlpos *cp, char *stext, int sid, /* * An edit control on the right hand side, with a static to its left. */ -static void staticedit(struct ctlpos *cp, char *stext, int sid, int eid) { +static void staticedit(struct ctlpos *cp, char *stext, + int sid, int eid, int percentedit) { const int height = (EDITHEIGHT > STATICHEIGHT ? EDITHEIGHT : STATICHEIGHT); RECT r; int lwid, rwid, rpos; - rpos = GAPBETWEEN + (cp->width + GAPBETWEEN) / 2; + rpos = GAPBETWEEN + (100-percentedit) * (cp->width + GAPBETWEEN) / 100; lwid = rpos - 2*GAPBETWEEN; rwid = cp->width + GAPBETWEEN - rpos; @@ -766,8 +767,8 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TAB, controlstartvalue, IDC0_SESSLOAD, IDC0_SESSSAVE, IDC0_SESSDEL, - IDC0_CLOSEEXIT, - IDC0_CLOSEWARN, + IDC0_PINGSTATIC, + IDC0_PINGEDIT, connectionpanelend, keyboardpanelstart, @@ -781,6 +782,7 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TAB, controlstartvalue, IDC1_FUNCTILDE, IDC1_FUNCLINUX, IDC1_FUNCXTERM, + IDC1_FUNCVT400, IDC1_KPSTATIC, IDC1_KPNORMAL, IDC1_KPAPPLIC, @@ -819,6 +821,8 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TAB, controlstartvalue, IDC3_LOCKSIZE, IDC3_WINTITLE, IDC3_WINEDIT, + IDC3_CLOSEEXIT, + IDC3_CLOSEWARN, windowpanelend, telnetpanelstart, @@ -948,18 +952,18 @@ static void init_dlg_ctrls(HWND hwnd) { CheckRadioButton (hwnd, IDC0_PROTRAW, IDC0_PROTSSH, cfg.protocol==PROT_SSH ? IDC0_PROTSSH : cfg.protocol==PROT_TELNET ? IDC0_PROTTELNET : IDC0_PROTRAW ); - CheckDlgButton (hwnd, IDC0_CLOSEEXIT, cfg.close_on_exit); - CheckDlgButton (hwnd, IDC0_CLOSEWARN, cfg.warn_on_close); + SetDlgItemInt (hwnd, IDC0_PINGEDIT, cfg.ping_interval, FALSE); CheckRadioButton (hwnd, IDC1_DEL008, IDC1_DEL127, cfg.bksp_is_delete ? IDC1_DEL127 : IDC1_DEL008); CheckRadioButton (hwnd, IDC1_HOMETILDE, IDC1_HOMERXVT, cfg.rxvt_homeend ? IDC1_HOMERXVT : IDC1_HOMETILDE); CheckRadioButton (hwnd, IDC1_FUNCTILDE, IDC1_FUNCXTERM, - cfg.funky_type ? - (cfg.funky_type==2 ? IDC1_FUNCXTERM - : IDC1_FUNCLINUX ) - : IDC1_FUNCTILDE); + cfg.funky_type == 0 ? IDC1_FUNCTILDE : + cfg.funky_type == 1 ? IDC1_FUNCLINUX : + cfg.funky_type == 2 ? IDC1_FUNCXTERM : + cfg.funky_type == 3 ? IDC1_FUNCVT400 : + IDC1_FUNCTILDE ); CheckRadioButton (hwnd, IDC1_CURNORMAL, IDC1_CURAPPLIC, cfg.app_cursor ? IDC1_CURAPPLIC : IDC1_CURNORMAL); CheckRadioButton (hwnd, IDC1_KPNORMAL, IDC1_KPNH, @@ -987,6 +991,8 @@ static void init_dlg_ctrls(HWND hwnd) { CheckDlgButton (hwnd, IDC3_BLINKCUR, cfg.blink_cur); CheckDlgButton (hwnd, IDC3_SCROLLBAR, cfg.scrollbar); CheckDlgButton (hwnd, IDC3_LOCKSIZE, cfg.locksize); + CheckDlgButton (hwnd, IDC3_CLOSEEXIT, cfg.close_on_exit); + CheckDlgButton (hwnd, IDC3_CLOSEWARN, cfg.warn_on_close); SetDlgItemText (hwnd, IDC4_TTEDIT, cfg.termtype); SetDlgItemText (hwnd, IDC4_TSEDIT, cfg.termspeed); @@ -1155,8 +1161,8 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, "&Save", IDC0_SESSSAVE, "&Delete", IDC0_SESSDEL, NULL); } - checkbox(&cp, "Close Window on E&xit", IDC0_CLOSEEXIT); - checkbox(&cp, "&Warn on Close", IDC0_CLOSEWARN); + staticedit(&cp, "Keepalive inter&val (minutes)", + IDC0_PINGSTATIC, IDC0_PINGEDIT, 25); tab.mask = TCIF_TEXT; tab.pszText = "Connection"; TabCtrl_InsertItem (tabctl, i++, &tab); @@ -1172,10 +1178,11 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, radioline(&cp, "Action of Home and End:", IDC1_HOMESTATIC, 2, "&Standard", IDC1_HOMETILDE, "&rxvt", IDC1_HOMERXVT, NULL); - radioline(&cp, "Function key and keypad layout:", IDC1_FUNCSTATIC, 3, + radioline(&cp, "Function key and keypad layout:", IDC1_FUNCSTATIC, 4, "&VT400", IDC1_FUNCTILDE, "&Linux", IDC1_FUNCLINUX, - "&Xterm R6", IDC1_FUNCXTERM, NULL); + "&Xterm R6", IDC1_FUNCXTERM, + "&VT400", IDC1_FUNCVT400, NULL); radioline(&cp, "Initial state of cursor keys:", IDC1_CURSTATIC, 2, "&Normal", IDC1_CURNORMAL, "A&pplication", IDC1_CURAPPLIC, NULL); @@ -1192,7 +1199,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, TabCtrl_InsertItem (tabctl, i++, &tab); } - /* The Terminal panel. Accelerators used: [aco] dghlmnprsw */ + /* The Terminal panel. Accelerators used: [aco] dghlmnprsvw */ { struct ctlpos cp; ctlposinit(&cp, hwnd, 6, 30); @@ -1224,6 +1231,8 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, checkbox(&cp, "&Blinking cursor", IDC3_BLINKCUR); checkbox(&cp, "Displa&y scrollbar", IDC3_SCROLLBAR); checkbox(&cp, "Loc&k Window size", IDC3_LOCKSIZE); + checkbox(&cp, "Close Window on E&xit", IDC3_CLOSEEXIT); + checkbox(&cp, "&Warn on Close", IDC3_CLOSEWARN); tab.mask = TCIF_TEXT; tab.pszText = "Window"; TabCtrl_InsertItem (tabctl, i++, &tab); } @@ -1233,9 +1242,9 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, struct ctlpos cp; ctlposinit(&cp, hwnd, 6, 30); if (dlgtype == 0) { - staticedit(&cp, "Terminal-&type string", IDC4_TTSTATIC, IDC4_TTEDIT); - staticedit(&cp, "Terminal-&speed string", IDC4_TSSTATIC, IDC4_TSEDIT); - staticedit(&cp, "Auto-login &username", IDC4_LOGSTATIC, IDC4_LOGEDIT); + staticedit(&cp, "Terminal-&type string", IDC4_TTSTATIC, IDC4_TTEDIT, 50); + staticedit(&cp, "Terminal-&speed string", IDC4_TSSTATIC, IDC4_TSEDIT, 50); + staticedit(&cp, "Auto-login &username", IDC4_LOGSTATIC, IDC4_LOGEDIT, 50); envsetter(&cp, "Environment variables:", IDC4_ENVSTATIC, "&Variable", IDC4_VARSTATIC, IDC4_VAREDIT, "Va&lue", IDC4_VALSTATIC, IDC4_VALEDIT, @@ -1254,8 +1263,8 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, struct ctlpos cp; ctlposinit(&cp, hwnd, 6, 30); if (dlgtype == 0) { - staticedit(&cp, "Terminal-&type string", IDC5_TTSTATIC, IDC5_TTEDIT); - staticedit(&cp, "Auto-login &username", IDC5_LOGSTATIC, IDC5_LOGEDIT); + staticedit(&cp, "Terminal-&type string", IDC5_TTSTATIC, IDC5_TTEDIT, 50); + staticedit(&cp, "Auto-login &username", IDC5_LOGSTATIC, IDC5_LOGEDIT, 50); multiedit(&cp, "&Remote command:", IDC5_CMDSTATIC, IDC5_CMDEDIT, 100, NULL); @@ -1340,7 +1349,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, { HWND ctl; ctl = GetDlgItem(hwnd, IDC0_HOST); - if (!ctl) ctl = GetDlgItem(hwnd, IDC0_CLOSEEXIT); + if (!ctl) ctl = GetDlgItem(hwnd, IDC0_PINGEDIT); SetFocus(ctl); } @@ -1427,16 +1436,6 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, if (HIWORD(wParam) == EN_CHANGE) MyGetDlgItemInt (hwnd, IDC0_PORT, &cfg.port); break; - case IDC0_CLOSEEXIT: - if (HIWORD(wParam) == BN_CLICKED || - HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.close_on_exit = IsDlgButtonChecked (hwnd, IDC0_CLOSEEXIT); - break; - case IDC0_CLOSEWARN: - if (HIWORD(wParam) == BN_CLICKED || - HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.warn_on_close = IsDlgButtonChecked (hwnd, IDC0_CLOSEWARN); - break; case IDC0_SESSEDIT: if (HIWORD(wParam) == EN_CHANGE) { SendDlgItemMessage (hwnd, IDC0_SESSLIST, LB_SETCURSEL, @@ -1529,6 +1528,10 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, SendDlgItemMessage (hwnd, IDC0_SESSLIST, LB_SETCURSEL, (WPARAM) -1, 0); } + case IDC0_PINGEDIT: + if (HIWORD(wParam) == EN_CHANGE) + MyGetDlgItemInt (hwnd, IDC0_PINGEDIT, &cfg.ping_interval); + break; case IDC1_DEL008: case IDC1_DEL127: if (HIWORD(wParam) == BN_CLICKED || @@ -1546,6 +1549,11 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) cfg.funky_type = 2; break; + case IDC1_FUNCVT400: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.funky_type = 3; + break; case IDC1_FUNCTILDE: case IDC1_FUNCLINUX: if (HIWORD(wParam) == BN_CLICKED || @@ -1689,6 +1697,16 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, GetDlgItemText (hwnd, IDC3_WINEDIT, cfg.wintitle, sizeof(cfg.wintitle)-1); break; + case IDC3_CLOSEEXIT: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.close_on_exit = IsDlgButtonChecked (hwnd, IDC3_CLOSEEXIT); + break; + case IDC3_CLOSEWARN: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.warn_on_close = IsDlgButtonChecked (hwnd, IDC3_CLOSEWARN); + break; case IDC4_TTEDIT: if (HIWORD(wParam) == EN_CHANGE) GetDlgItemText (hwnd, IDC4_TTEDIT, cfg.termtype,