X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/97749503efe4cffb1c588588c8ff3b24bab2988b..a4e14164742bbf69bfc294167fd46e203f7eacdd:/windlg.c?ds=sidebyside diff --git a/windlg.c b/windlg.c index 60d19052..e870a8b4 100644 --- a/windlg.c +++ b/windlg.c @@ -16,9 +16,9 @@ #include "win_res.h" #include "storage.h" -#define NPANELS 8 -#define MAIN_NPANELS 8 -#define RECONF_NPANELS 5 +#define NPANELS 9 +#define MAIN_NPANELS 9 +#define RECONF_NPANELS 6 static char **events = NULL; static int nevents = 0, negsize = 0; @@ -93,6 +93,7 @@ static void save_settings (char *section, int do_host) { write_setting_i (sesskey, "AuthTIS", cfg.try_tis_auth); write_setting_i (sesskey, "SshProt", cfg.sshprot); write_setting_s (sesskey, "PublicKeyFile", cfg.keyfile); + write_setting_s (sesskey, "RemoteCommand", cfg.remote_cmd); write_setting_i (sesskey, "RFCEnviron", cfg.rfc_environ); write_setting_i (sesskey, "BackspaceIsDelete", cfg.bksp_is_delete); write_setting_i (sesskey, "RXVTHomeEnd", cfg.rxvt_homeend); @@ -110,6 +111,7 @@ static void save_settings (char *section, int do_host) { write_setting_i (sesskey, "AutoWrapMode", cfg.wrap_mode); write_setting_i (sesskey, "LFImpliesCR", cfg.lfhascr); write_setting_i (sesskey, "WinNameAlways", cfg.win_name_always); + write_setting_s (sesskey, "WinTitle", cfg.wintitle); write_setting_i (sesskey, "TermWidth", cfg.width); write_setting_i (sesskey, "TermHeight", cfg.height); write_setting_s (sesskey, "Font", cfg.font); @@ -210,6 +212,8 @@ static void load_settings (char *section, int do_host) { gppi (sesskey, "SshProt", 1, &cfg.sshprot); gppi (sesskey, "AuthTIS", 0, &cfg.try_tis_auth); gpps (sesskey, "PublicKeyFile", "", cfg.keyfile, sizeof(cfg.keyfile)); + gpps (sesskey, "RemoteCommand", "", cfg.remote_cmd, + sizeof(cfg.remote_cmd)); gppi (sesskey, "RFCEnviron", 0, &cfg.rfc_environ); gppi (sesskey, "BackspaceIsDelete", 1, &cfg.bksp_is_delete); gppi (sesskey, "RXVTHomeEnd", 0, &cfg.rxvt_homeend); @@ -227,6 +231,7 @@ static void load_settings (char *section, int do_host) { gppi (sesskey, "AutoWrapMode", 1, &cfg.wrap_mode); gppi (sesskey, "LFImpliesCR", 0, &cfg.lfhascr); gppi (sesskey, "WinNameAlways", 0, &cfg.win_name_always); + gpps (sesskey, "WinTitle", "", cfg.wintitle, sizeof(cfg.wintitle)); gppi (sesskey, "TermWidth", 80, &cfg.width); gppi (sesskey, "TermHeight", 24, &cfg.height); gpps (sesskey, "Font", "Courier", cfg.font, sizeof(cfg.font)); @@ -726,7 +731,6 @@ static int CALLBACK TerminalProc (HWND hwnd, UINT msg, switch (msg) { case WM_INITDIALOG: CheckDlgButton (hwnd, IDC2_WRAPMODE, cfg.wrap_mode); - CheckDlgButton (hwnd, IDC2_WINNAME, cfg.win_name_always); CheckDlgButton (hwnd, IDC2_DECOM, cfg.dec_om); CheckDlgButton (hwnd, IDC2_LFHASCR, cfg.lfhascr); SetDlgItemInt (hwnd, IDC2_ROWSEDIT, cfg.height, FALSE); @@ -734,10 +738,7 @@ static int CALLBACK TerminalProc (HWND hwnd, UINT msg, SetDlgItemInt (hwnd, IDC2_SAVEEDIT, cfg.savelines, FALSE); fmtfont (fontstatic); SetDlgItemText (hwnd, IDC2_FONTSTATIC, fontstatic); - CheckDlgButton (hwnd, IDC1_BLINKCUR, cfg.blink_cur); CheckDlgButton (hwnd, IDC1_BEEP, cfg.beep); - CheckDlgButton (hwnd, IDC2_SCROLLBAR, cfg.scrollbar); - CheckDlgButton (hwnd, IDC2_LOCKSIZE, cfg.locksize); CheckDlgButton (hwnd, IDC2_BCE, cfg.bce); CheckDlgButton (hwnd, IDC2_BLINKTEXT, cfg.blinktext); break; @@ -748,11 +749,6 @@ static int CALLBACK TerminalProc (HWND hwnd, UINT msg, HIWORD(wParam) == BN_DOUBLECLICKED) cfg.wrap_mode = IsDlgButtonChecked (hwnd, IDC2_WRAPMODE); break; - case IDC2_WINNAME: - if (HIWORD(wParam) == BN_CLICKED || - HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.win_name_always = IsDlgButtonChecked (hwnd, IDC2_WINNAME); - break; case IDC2_DECOM: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) @@ -804,26 +800,11 @@ static int CALLBACK TerminalProc (HWND hwnd, UINT msg, SetDlgItemText (hwnd, IDC2_FONTSTATIC, fontstatic); } break; - case IDC1_BLINKCUR: - if (HIWORD(wParam) == BN_CLICKED || - HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.blink_cur = IsDlgButtonChecked (hwnd, IDC1_BLINKCUR); - break; case IDC1_BEEP: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) cfg.beep = IsDlgButtonChecked (hwnd, IDC1_BEEP); break; - case IDC2_SCROLLBAR: - if (HIWORD(wParam) == BN_CLICKED || - HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.scrollbar = IsDlgButtonChecked (hwnd, IDC2_SCROLLBAR); - break; - case IDC2_LOCKSIZE: - if (HIWORD(wParam) == BN_CLICKED || - HIWORD(wParam) == BN_DOUBLECLICKED) - cfg.locksize = IsDlgButtonChecked (hwnd, IDC2_LOCKSIZE); - break; case IDC2_BLINKTEXT: if (HIWORD(wParam) == BN_CLICKED || HIWORD(wParam) == BN_DOUBLECLICKED) @@ -840,6 +821,49 @@ static int CALLBACK TerminalProc (HWND hwnd, UINT msg, return GeneralPanelProc (hwnd, msg, wParam, lParam); } +static int CALLBACK WindowProc (HWND hwnd, UINT msg, + WPARAM wParam, LPARAM lParam) { + switch (msg) { + case WM_INITDIALOG: + SetDlgItemText (hwnd, IDCW_WINEDIT, cfg.wintitle); + CheckDlgButton (hwnd, IDCW_WINNAME, cfg.win_name_always); + CheckDlgButton (hwnd, IDCW_BLINKCUR, cfg.blink_cur); + CheckDlgButton (hwnd, IDCW_SCROLLBAR, cfg.scrollbar); + CheckDlgButton (hwnd, IDCW_LOCKSIZE, cfg.locksize); + break; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCW_WINNAME: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.win_name_always = IsDlgButtonChecked (hwnd, IDCW_WINNAME); + break; + case IDCW_BLINKCUR: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.blink_cur = IsDlgButtonChecked (hwnd, IDCW_BLINKCUR); + break; + case IDCW_SCROLLBAR: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.scrollbar = IsDlgButtonChecked (hwnd, IDCW_SCROLLBAR); + break; + case IDCW_LOCKSIZE: + if (HIWORD(wParam) == BN_CLICKED || + HIWORD(wParam) == BN_DOUBLECLICKED) + cfg.locksize = IsDlgButtonChecked (hwnd, IDCW_LOCKSIZE); + break; + case IDCW_WINEDIT: + if (HIWORD(wParam) == EN_CHANGE) + GetDlgItemText (hwnd, IDCW_WINEDIT, cfg.wintitle, + sizeof(cfg.wintitle)-1); + break; + } + break; + } + return GeneralPanelProc (hwnd, msg, wParam, lParam); +} + static int CALLBACK TelnetProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { int i; @@ -975,6 +999,7 @@ static int CALLBACK SshProc (HWND hwnd, UINT msg, cfg.sshprot == 1 ? IDC3_SSHPROT1 : IDC3_SSHPROT2); CheckDlgButton (hwnd, IDC3_AUTHTIS, cfg.try_tis_auth); SetDlgItemText (hwnd, IDC3_PKEDIT, cfg.keyfile); + SetDlgItemText (hwnd, IDC3_CMDEDIT, cfg.remote_cmd); break; case WM_COMMAND: switch (LOWORD(wParam)) { @@ -1031,6 +1056,11 @@ static int CALLBACK SshProc (HWND hwnd, UINT msg, GetDlgItemText (hwnd, IDC3_PKEDIT, cfg.keyfile, sizeof(cfg.keyfile)-1); break; + case IDC3_CMDEDIT: + if (HIWORD(wParam) == EN_CHANGE) + GetDlgItemText (hwnd, IDC3_CMDEDIT, cfg.remote_cmd, + sizeof(cfg.remote_cmd)-1); + break; case IDC3_PKBUTTON: /* * FIXME: this crashes. Find out why. @@ -1282,13 +1312,14 @@ static int CALLBACK TranslationProc (HWND hwnd, UINT msg, } static DLGPROC panelproc[NPANELS] = { - ConnectionProc, KeyboardProc, TerminalProc, + ConnectionProc, KeyboardProc, TerminalProc, WindowProc, TelnetProc, SshProc, SelectionProc, ColourProc, TranslationProc }; static char *panelids[NPANELS] = { MAKEINTRESOURCE(IDD_PANEL0), MAKEINTRESOURCE(IDD_PANEL1), MAKEINTRESOURCE(IDD_PANEL2), + MAKEINTRESOURCE(IDD_PANELW), MAKEINTRESOURCE(IDD_PANEL3), MAKEINTRESOURCE(IDD_PANEL35), MAKEINTRESOURCE(IDD_PANEL4), @@ -1297,12 +1328,12 @@ static char *panelids[NPANELS] = { }; static char *names[NPANELS] = { - "Connection", "Keyboard", "Terminal", "Telnet", + "Connection", "Keyboard", "Terminal", "Window", "Telnet", "SSH", "Selection", "Colours", "Translation" }; -static int mainp[MAIN_NPANELS] = { 0, 1, 2, 3, 4, 5, 6, 7}; -static int reconfp[RECONF_NPANELS] = { 1, 2, 5, 6, 7}; +static int mainp[MAIN_NPANELS] = { 0, 1, 2, 3, 4, 5, 6, 7, 8}; +static int reconfp[RECONF_NPANELS] = { 1, 2, 3, 6, 7, 8}; static int GenericMainDlgProc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam,