X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/03169ad0902dcea0737ad7c92a9248e9fe6022e7..a8cc197c711b4381e8050e0ecfc3458873f24468:/windlg.c diff --git a/windlg.c b/windlg.c index 133c2d2a..95b48404 100644 --- a/windlg.c +++ b/windlg.c @@ -232,6 +232,10 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue, IDC_LGFSTATIC, IDC_LGFEDIT, IDC_LGFBUTTON, + IDC_LSTATXIST, + IDC_LSTATXOVR, + IDC_LSTATXAPN, + IDC_LSTATXASK, loggingpanelend, keyboardpanelstart, @@ -250,6 +254,8 @@ enum { IDCX_ABOUT = IDC_ABOUT, IDCX_TVSTATIC, IDCX_TREEVIEW, controlstartvalue, IDC_FUNCLINUX, IDC_FUNCXTERM, IDC_FUNCVT400, + IDC_FUNCVT100P, + IDC_FUNCSCO, IDC_KPSTATIC, IDC_KPNORMAL, IDC_KPAPPLIC, @@ -532,11 +538,13 @@ static void init_dlg_ctrls(HWND hwnd) { cfg.bksp_is_delete ? IDC_DEL127 : IDC_DEL008); CheckRadioButton (hwnd, IDC_HOMETILDE, IDC_HOMERXVT, cfg.rxvt_homeend ? IDC_HOMERXVT : IDC_HOMETILDE); - CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNCVT400, + CheckRadioButton (hwnd, IDC_FUNCTILDE, IDC_FUNCSCO, cfg.funky_type == 0 ? IDC_FUNCTILDE : cfg.funky_type == 1 ? IDC_FUNCLINUX : cfg.funky_type == 2 ? IDC_FUNCXTERM : cfg.funky_type == 3 ? IDC_FUNCVT400 : + cfg.funky_type == 4 ? IDC_FUNCVT100P : + cfg.funky_type == 5 ? IDC_FUNCSCO : IDC_FUNCTILDE ); CheckDlgButton (hwnd, IDC_NOAPPLICC, cfg.no_applic_c); CheckDlgButton (hwnd, IDC_NOAPPLICK, cfg.no_applic_k); @@ -607,6 +615,10 @@ static void init_dlg_ctrls(HWND hwnd) { cfg.logtype == 0 ? IDC_LSTATOFF : cfg.logtype == 1 ? IDC_LSTATASCII : IDC_LSTATRAW); + CheckRadioButton(hwnd, IDC_LSTATXOVR, IDC_LSTATXASK, + cfg.logxfovr == LGXF_OVR ? IDC_LSTATXOVR : + cfg.logxfovr == LGXF_ASK ? IDC_LSTATXASK : + IDC_LSTATXAPN); { char *p = cfg.environmt; while (*p) { @@ -766,7 +778,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) { } if (panel == loggingpanelstart) { - /* The Logging panel. Accelerators used: [acgo] tplfw */ + /* The Logging panel. Accelerators used: [acgo] tplfwes */ struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); bartitle(&cp, "Options controlling session logging", @@ -780,6 +792,11 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) { editbutton(&cp, "Log &file name:", IDC_LGFSTATIC, IDC_LGFEDIT, "Bro&wse...", IDC_LGFBUTTON); + radiobig(&cp, + "What to do if the log file already &exists:", IDC_LSTATXIST, + "Always overwrite it", IDC_LSTATXOVR, + "Always append to the end of it", IDC_LSTATXAPN, + "Ask the user every time", IDC_LSTATXASK, NULL); endbox(&cp); } @@ -815,7 +832,7 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) { } if (panel == bellpanelstart) { - /* The Bell panel. Accelerators used: [acgo] bdsm w */ + /* The Bell panel. Accelerators used: [acgo] bdsm wt */ struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); bartitle(&cp, "Options controlling the terminal bell", @@ -838,50 +855,54 @@ static void create_controls(HWND hwnd, int dlgtype, int panel) { IDC_BELLOVL); staticedit(&cp, "Over-use means this &many bells...", IDC_BELLOVLNSTATIC, IDC_BELLOVLN, 20); - staticedit(&cp, "... in this many &seconds", + staticedit(&cp, "... in &this many seconds", IDC_BELLOVLTSTATIC, IDC_BELLOVLT, 20); statictext(&cp, "The bell is re-enabled after a few seconds of silence.", IDC_BELLOVLEXPLAIN); - staticedit(&cp, "Seconds of silence required", + staticedit(&cp, "Seconds of &silence required", IDC_BELLOVLSSTATIC, IDC_BELLOVLS, 20); endbox(&cp); } if (panel == keyboardpanelstart) { - /* The Keyboard panel. Accelerators used: [acgo] h?sr~lxvunpymietd */ + /* The Keyboard panel. Accelerators used: [acgo] bhf ruyntd */ struct ctlpos cp; ctlposinit(&cp, hwnd, 80, 3, 13); + /* bartitle(&cp, "Options controlling the effects of keys", IDC_TITLE_KEYBOARD); + */ beginbox(&cp, "Change the sequences sent by:", IDC_BOX_KEYBOARD1); - radioline(&cp, "The Backspace key", IDC_DELSTATIC, 2, - "Control-&H", IDC_DEL008, - "Control-&? (127)", IDC_DEL127, NULL); - radioline(&cp, "The Home and End keys", IDC_HOMESTATIC, 2, - "&Standard", IDC_HOMETILDE, - "&rxvt", IDC_HOMERXVT, NULL); - radioline(&cp, "The Function keys and keypad", IDC_FUNCSTATIC, 4, - "ESC[n&~", IDC_FUNCTILDE, - "&Linux", IDC_FUNCLINUX, - "&Xterm R6", IDC_FUNCXTERM, - "&VT400", IDC_FUNCVT400, NULL); + radioline(&cp, "The &Backspace key", IDC_DELSTATIC, 2, + "Control-H", IDC_DEL008, + "Control-? (127)", IDC_DEL127, NULL); + radioline(&cp, "The &Home and End keys", IDC_HOMESTATIC, 2, + "Standard", IDC_HOMETILDE, + "rxvt", IDC_HOMERXVT, NULL); + radioline(&cp, "The &Function keys and keypad", IDC_FUNCSTATIC, 3, + "ESC[n~", IDC_FUNCTILDE, + "Linux", IDC_FUNCLINUX, + "Xterm R6", IDC_FUNCXTERM, + "VT400", IDC_FUNCVT400, + "VT100+", IDC_FUNCVT100P, + "SCO", IDC_FUNCSCO, NULL); endbox(&cp); beginbox(&cp, "Application keypad settings:", IDC_BOX_KEYBOARD2); checkbox(&cp, "Application c&ursor keys totally disabled", IDC_NOAPPLICC); - radioline(&cp, "Initial state of cursor keys:", IDC_CURSTATIC, 2, - "&Normal", IDC_CURNORMAL, - "A&pplication", IDC_CURAPPLIC, NULL); + radioline(&cp, "Initial state of cu&rsor keys:", IDC_CURSTATIC, 2, + "Normal", IDC_CURNORMAL, + "Application", IDC_CURAPPLIC, NULL); checkbox(&cp, "Application ke&ypad keys totally disabled", IDC_NOAPPLICK); - radioline(&cp, "Initial state of numeric keypad:", IDC_KPSTATIC, 3, - "Nor&mal", IDC_KPNORMAL, - "Appl&ication", IDC_KPAPPLIC, - "N&etHack", IDC_KPNH, NULL); + radioline(&cp, "Initial state of &numeric keypad:", IDC_KPSTATIC, 3, + "Normal", IDC_KPNORMAL, + "Application", IDC_KPAPPLIC, + "NetHack", IDC_KPNH, NULL); endbox(&cp); beginbox(&cp, "Enable extra keyboard features:", IDC_BOX_KEYBOARD3); @@ -1487,21 +1508,22 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) cfg.rxvt_homeend = IsDlgButtonChecked (hwnd, IDC_HOMERXVT); break; - case IDC_FUNCXTERM: - if (HIWORD(wParam) == BN_CLICKED || - HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.funky_type = 2; - break; - case IDC_FUNCVT400: - if (HIWORD(wParam) == BN_CLICKED || - HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.funky_type = 3; - 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) - cfg.funky_type = IsDlgButtonChecked (hwnd, IDC_FUNCLINUX); + 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: @@ -1823,6 +1845,16 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg, 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) @@ -2325,6 +2357,9 @@ int askappend(char *filename) { "or Cancel to disable logging."; char message[sizeof(msgtemplate) + FILENAME_MAX]; int mbret; + if ( cfg.logxfovr != LGXF_ASK ) { + return ( (cfg.logxfovr==LGXF_OVR) ? 2 : 1); + } sprintf(message, msgtemplate, FILENAME_MAX, filename); mbret = MessageBox(NULL, message, mbtitle,