- }
- }
- return GeneralPanelProc (hwnd, msg, wParam, lParam);
-}
-
-static void fmtfont (char *buf) {
- sprintf (buf, "Font: %s, ", cfg.font);
- if (cfg.fontisbold)
- strcat(buf, "bold, ");
- if (cfg.fontheight == 0)
- strcat (buf, "default height");
- else
- sprintf (buf+strlen(buf), "%d-%s",
- (cfg.fontheight < 0 ? -cfg.fontheight : cfg.fontheight),
- (cfg.fontheight < 0 ? "pixel" : "point"));
-}
-
-static int CALLBACK TerminalProc (HWND hwnd, UINT msg,
- WPARAM wParam, LPARAM lParam) {
- struct ctlpos cp;
- CHOOSEFONT cf;
- LOGFONT lf;
- char fontstatic[256];
- enum { controlstartvalue = 1000,
- IDC_WRAPMODE,
- IDC_DECOM,
- IDC_DIMSTATIC,
- IDC_ROWSSTATIC,
- IDC_ROWSEDIT,
- IDC_COLSSTATIC,
- IDC_COLSEDIT,
- IDC_SAVESTATIC,
- IDC_SAVEEDIT,
- IDC_FONTSTATIC,
- IDC_CHOOSEFONT,
- IDC_LFHASCR,
- IDC_BEEP,
- IDC_BCE,
- IDC_BLINKTEXT
- };
-
- switch (msg) {
- case WM_INITDIALOG:
- /* Accelerators used: [aco] dghlmnprsw */
- ctlposinit(&cp, hwnd);
- multiedit(&cp,
- "&Rows", IDC_ROWSSTATIC, IDC_ROWSEDIT, 33,
- "Colu&mns", IDC_COLSSTATIC, IDC_COLSEDIT, 33,
- "&Scrollback", IDC_SAVESTATIC, IDC_SAVEEDIT, 33,
- NULL);
- staticbtn(&cp, "", IDC_FONTSTATIC, "C&hange...", IDC_CHOOSEFONT);
- checkbox(&cp, "Auto &wrap mode initially on", IDC_WRAPMODE);
- checkbox(&cp, "&DEC Origin Mode initially on", IDC_DECOM);
- checkbox(&cp, "Implicit CR in every &LF", IDC_LFHASCR);
- checkbox(&cp, "Bee&p enabled", IDC_BEEP);
- checkbox(&cp, "Use Back&ground colour erase", IDC_BCE);
- checkbox(&cp, "Enable bli&nking text", IDC_BLINKTEXT);
-
- CheckDlgButton (hwnd, IDC_WRAPMODE, cfg.wrap_mode);
- CheckDlgButton (hwnd, IDC_DECOM, cfg.dec_om);
- CheckDlgButton (hwnd, IDC_LFHASCR, cfg.lfhascr);
- SetDlgItemInt (hwnd, IDC_ROWSEDIT, cfg.height, FALSE);
- SetDlgItemInt (hwnd, IDC_COLSEDIT, cfg.width, FALSE);
- SetDlgItemInt (hwnd, IDC_SAVEEDIT, cfg.savelines, FALSE);
- fmtfont (fontstatic);
- SetDlgItemText (hwnd, IDC_FONTSTATIC, fontstatic);
- CheckDlgButton (hwnd, IDC_BEEP, cfg.beep);
- CheckDlgButton (hwnd, IDC_BCE, cfg.bce);
- CheckDlgButton (hwnd, IDC_BLINKTEXT, cfg.blinktext);
- break;
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- 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:
- lf.lfHeight = cfg.fontheight;
- 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 = lf.lfHeight;
- fmtfont (fontstatic);
- SetDlgItemText (hwnd, IDC_FONTSTATIC, fontstatic);
- }
- break;
- case IDC_BEEP:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.beep = IsDlgButtonChecked (hwnd, IDC_BEEP);
- 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;
- }
- break;
- }
- return GeneralPanelProc (hwnd, msg, wParam, lParam);
-}
-
-static int CALLBACK WindowProc (HWND hwnd, UINT msg,
- WPARAM wParam, LPARAM lParam) {
- struct ctlpos cp;
- enum { controlstartvalue = 1000,
- IDC_WINNAME,
- IDC_BLINKCUR,
- IDC_SCROLLBAR,
- IDC_LOCKSIZE,
- IDC_WINTITLE,
- IDC_WINEDIT
- };
-
- switch (msg) {
- case WM_INITDIALOG:
- /* Accelerators used: [aco] bikty */
- ctlposinit(&cp, hwnd);
- multiedit(&cp,
- "Initial window &title:", IDC_WINTITLE, IDC_WINEDIT, 100,
- NULL);
- checkbox(&cp, "Avoid ever using &icon title", IDC_WINNAME);
- checkbox(&cp, "&Blinking cursor", IDC_BLINKCUR);
- checkbox(&cp, "Displa&y scrollbar", IDC_SCROLLBAR);
- checkbox(&cp, "Loc&k Window size", IDC_LOCKSIZE);
-
- SetDlgItemText (hwnd, IDC_WINEDIT, cfg.wintitle);
- CheckDlgButton (hwnd, IDC_WINNAME, cfg.win_name_always);
- CheckDlgButton (hwnd, IDC_BLINKCUR, cfg.blink_cur);
- CheckDlgButton (hwnd, IDC_SCROLLBAR, cfg.scrollbar);
- CheckDlgButton (hwnd, IDC_LOCKSIZE, cfg.locksize);
- break;
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDC_WINNAME:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.win_name_always = IsDlgButtonChecked (hwnd, IDC_WINNAME);
- 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_LOCKSIZE:
- if (HIWORD(wParam) == BN_CLICKED ||
- HIWORD(wParam) == BN_DOUBLECLICKED)
- cfg.locksize = IsDlgButtonChecked (hwnd, IDC_LOCKSIZE);
- break;
- case IDC_WINEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText (hwnd, IDC_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;
- struct ctlpos cp;
- enum { controlstartvalue = 1000,
- IDC_TTSTATIC,
- IDC_TTEDIT,
- IDC_TSSTATIC,
- IDC_TSEDIT,
- IDC_LOGSTATIC,
- IDC_LOGEDIT,
- IDC_ENVSTATIC,
- IDC_VARSTATIC,
- IDC_VAREDIT,
- IDC_VALSTATIC,
- IDC_VALEDIT,
- IDC_ENVLIST,
- IDC_ENVADD,
- IDC_ENVREMOVE,
- IDC_EMSTATIC,
- IDC_EMBSD,
- IDC_EMRFC
- };
-
- switch (msg) {
- case WM_INITDIALOG:
- /* Accelerators used: [aco] bdflrstuv */
- ctlposinit(&cp, hwnd);
- staticedit(&cp, "Terminal-&type string", IDC_TTSTATIC, IDC_TTEDIT);
- staticedit(&cp, "Terminal-&speed string", IDC_TSSTATIC, IDC_TSEDIT);
- staticedit(&cp, "Auto-login &username", IDC_LOGSTATIC, IDC_LOGEDIT);
- envsetter(&cp, "Environment variables:", IDC_ENVSTATIC,
- "&Variable", IDC_VARSTATIC, IDC_VAREDIT,
- "Va&lue", IDC_VALSTATIC, IDC_VALEDIT,
- IDC_ENVLIST,
- "A&dd", IDC_ENVADD, "&Remove", IDC_ENVREMOVE);
- radioline(&cp, "Handling of OLD_ENVIRON ambiguity:", IDC_EMSTATIC, 2,
- "&BSD (commonplace)", IDC_EMBSD,
- "R&FC 1408 (unusual)", IDC_EMRFC, NULL);
-
- SetDlgItemText (hwnd, IDC_TTEDIT, cfg.termtype);
- SetDlgItemText (hwnd, IDC_TSEDIT, cfg.termspeed);
- SetDlgItemText (hwnd, IDC_LOGEDIT, cfg.username);
- {
- char *p = cfg.environmt;
- while (*p) {
- SendDlgItemMessage (hwnd, IDC_ENVLIST, LB_ADDSTRING, 0,
- (LPARAM) p);
- p += strlen(p)+1;
- }
- }
- CheckRadioButton (hwnd, IDC_EMBSD, IDC_EMRFC,
- cfg.rfc_environ ? IDC_EMRFC : IDC_EMBSD);
- break;
- case WM_COMMAND:
- switch (LOWORD(wParam)) {
- case IDC_TTEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText (hwnd, IDC_TTEDIT, cfg.termtype,
- sizeof(cfg.termtype)-1);
- break;
- case IDC_TSEDIT:
- if (HIWORD(wParam) == EN_CHANGE)
- GetDlgItemText (hwnd, IDC_TSEDIT, 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_EMBSD:
- case IDC_EMRFC:
- cfg.rfc_environ = IsDlgButtonChecked (hwnd, IDC_EMRFC);
- 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;