/*
* woptions.c -- Options dialog box routines for WinBoard
- * $Id: woptions.c,v 2.1 2003/10/27 19:21:02 mann Exp $
*
* Copyright 2000,2009 Free Software Foundation, Inc.
*
+ * Enhancements Copyright 2005 Alessandro Scotti
+ *
* ------------------------------------------------------------------------
*
* GNU XBoard is free software: you can redistribute it and/or modify
#include <stdio.h>
#include <stdlib.h>
#include <shlobj.h> /* [AS] Requires NT 4.0 or Win95 */
+#include <ctype.h>
#include "common.h"
#include "winboard.h"
extern char *defaultTextAttribs[];
extern HWND commentDialog;
extern HWND moveHistoryDialog;
+extern HWND engineOutputDialog;
extern char installDir[];
extern HWND hCommPort; /* currently open comm port */
extern DCB dcb;
extern BOOLEAN chessProgram;
-extern startedFromPositionFile; /* [HGM] loadPos */
+extern int startedFromPositionFile; /* [HGM] loadPos */
/* types */
VOID SetLoadOptionEnables(HWND hDlg);
VOID SetSaveOptionEnables(HWND hDlg);
VOID SetTimeControlEnables(HWND hDlg);
+void NewSettingEvent(int option, char *command, int value);
/*---------------------------------------------------------------------------*\
*
appData.saveExtendedInfoInPGN= IS_CHECKED(OPT_SaveExtPGN);
appData.hideThinkingFromHuman= IS_CHECKED(OPT_HideThinkFromHuman);
appData.showEvalInMoveHistory= IS_CHECKED(OPT_ExtraInfoInMoveHistory);
-#if 0
- ShowThinkingEvent( IS_CHECKED(OPT_ShowThinking));
-#else
appData.showThinking = IS_CHECKED(OPT_ShowThinking);
ShowThinkingEvent(); // [HGM] thinking: tests four options
-#endif
appData.testLegality = IS_CHECKED(OPT_TestLegality);
appData.highlightMoveWithArrow=IS_CHECKED(OPT_HighlightMoveArrow);
HBRUSH brushSquareOutline;
HBRUSH brushPiece;
HBRUSH brushPieceDetail;
- HBRUSH oldBrushPiece;
+ HBRUSH oldBrushPiece = NULL;
HBRUSH oldBrushSquare;
HBITMAP oldBitmapMem;
HBITMAP oldBitmapTemp;
oldBrushPiece = SelectObject(hdcMem, brushPiece);
BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE,
hdcTemp, 0, 0, 0x00B8074A);
-#if 0
- /* Use pieceDetailColor for outline of white pieces */
- SelectObject(hdcTemp, pieces[OUTLINE]);
- SelectObject(hdcMem, brushPieceDetail);
- BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE,
- hdcTemp, 0, 0, 0x00B8074A);
-#else
/* Use black for outline of white pieces */
SelectObject(hdcTemp, pieces[OUTLINE]);
BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE,
hdcTemp, 0, 0, SRCAND);
-#endif
} else {
-#if 0
- /* Use pieceDetailColor for details of black pieces */
- /* Requires filled-in solid bitmaps (BLACK_PIECE class); the
- WHITE_PIECE ones aren't always the right shape. */
- oldBitmapTemp = SelectObject(hdcTemp, pieces[BLACK]);
- oldBrushPiece = SelectObject(hdcMem, brushPieceDetail);
- BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE,
- hdcTemp, 0, 0, 0x00B8074A);
- SelectObject(hdcTemp, pieces[SOLID]);
- SelectObject(hdcMem, brushPiece);
- BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE,
- hdcTemp, 0, 0, 0x00B8074A);
-#else
/* Use square color for details of black pieces */
oldBitmapTemp = SelectObject(hdcTemp, pieces[SOLID]);
oldBrushPiece = SelectObject(hdcMem, brushPiece);
BitBlt(hdcMem, x, y, SAMPLE_SQ_SIZE, SAMPLE_SQ_SIZE,
hdcTemp, 0, 0, 0x00B8074A);
-#endif
}
SelectObject(hdcMem, oldBrushPiece);
SelectObject(hdcTemp, oldBitmapTemp);
break;
case SizeTitanic:
CheckDlgButton(hDlg, OPT_SizeTitanic, TRUE);
+ default: ; // should not happen, but suppresses warning on pedantic compilers
}
if (appData.monoMode)
(IsDlgButtonChecked(hDlg, OPT_VariantJanus) ? VariantJanus :
(IsDlgButtonChecked(hDlg, OPT_VariantWildcastle) ? VariantWildCastle :
(IsDlgButtonChecked(hDlg, OPT_VariantNocastle) ? VariantNoCastle :
- VariantNormal ))))))))))))))))))))))));
+ (IsDlgButtonChecked(hDlg, OPT_Variant3Check) ? Variant3Check :
+ (IsDlgButtonChecked(hDlg, OPT_VariantGreat) ? VariantGreat :
+ (IsDlgButtonChecked(hDlg, OPT_VariantGiveaway) ? VariantGiveaway :
+ (IsDlgButtonChecked(hDlg, OPT_VariantTwilight) ? VariantTwilight :
+ VariantNormal ))))))))))))))))))))))))))));
}
LRESULT CALLBACK
NewVariantDialog(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
- static Boolean mono;
static VariantClass v;
- static COLORREF lsc, dsc, wpc, bpc, hsc, phc;
- static HBITMAP pieces[3];
static int n1_ok, n2_ok, n3_ok;
switch (message) {
CheckDlgButton(hDlg, OPT_VariantCylinder, TRUE);
break;
case Variant3Check:
+ CheckDlgButton(hDlg, OPT_Variant3Check, TRUE);
+ break;
case VariantSuper:
CheckDlgButton(hDlg, OPT_VariantSuper, TRUE);
break;
case VariantNoCastle:
CheckDlgButton(hDlg, OPT_VariantNocastle, TRUE);
break;
+ case VariantGreat:
+ CheckDlgButton(hDlg, OPT_VariantGreat, TRUE);
+ break;
+ case VariantGiveaway:
+ CheckDlgButton(hDlg, OPT_VariantGiveaway, TRUE);
+ break;
+ case VariantTwilight:
+ CheckDlgButton(hDlg, OPT_VariantTwilight, TRUE);
+ break;
+ default: ;
}
SetDlgItemInt( hDlg, IDC_Files, -1, TRUE );
font->mfp.italic = font->lf.lfItalic;
font->mfp.underline = font->lf.lfUnderline;
font->mfp.strikeout = font->lf.lfStrikeOut;
+ font->mfp.charset = font->lf.lfCharSet;
strcpy(font->mfp.faceName, font->lf.lfFaceName);
return TRUE;
}
CHARFORMAT cf;
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask =
- CFM_COLOR|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT|CFM_FACE|CFM_SIZE;
+ CFM_COLOR|CFM_CHARSET|CFM_BOLD|CFM_ITALIC|CFM_UNDERLINE|CFM_STRIKEOUT|CFM_FACE|CFM_SIZE;
cf.crTextColor = mca->color;
cf.dwEffects = mca->effects;
strcpy(cf.szFaceName, font[boardSize][CONSOLE_FONT]->mfp.faceName);
appData.colorize =
(Boolean)!IsDlgButtonChecked(hDlg, OPT_DontColorize);
- if (!appData.colorize) {
+ ChangedConsoleFont();\r
+\r
+ if (!appData.colorize) {
CHARFORMAT cf;
COLORREF background = ParseColorName(COLOR_BKGD);
/*
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_COLOR;
cf.crTextColor = ParseColorName(COLOR_NORMAL);
-
+\r
SendDlgItemMessage(hwndConsole, OPT_ConsoleInput,
EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
SendDlgItemMessage(hwndConsole, OPT_ConsoleText,
rectFormat.left = center.x - (size.cx / 2) - 1;
rectFormat.right = center.x + (size.cx / 2) + 1;
-#if 0
- fprintf(debugFP, "\nfont: %s\n"
- "center.x %d, centerY %d\n"
- "size.cx %d, size.cy %d\n"
- "client.top %d, bottom %d, left %d, right %d\n"
- "format.top %d, bottom %d, left %d, right %d\n",
- buf,
- center.x, center.y,
- size.cx, size.cy,
- rectClient.top, rectClient.bottom, rectClient.left,
- rectClient.right,
- rectFormat.top, rectFormat.bottom, rectFormat.left,
- rectFormat.right);
-#endif
-
cf.cbSize = sizeof(CHARFORMAT);
cf.dwMask = CFM_FACE|CFM_SIZE|CFM_CHARSET|CFM_BOLD|CFM_ITALIC;
cf.dwEffects = 0;
dest->mfp.italic = src->mfp.italic;
dest->mfp.underline = src->mfp.underline;
dest->mfp.strikeout = src->mfp.strikeout;
+ dest->mfp.charset = src->mfp.charset;
lstrcpy(dest->mfp.faceName, src->mfp.faceName);
CreateFontInMF(dest);
}
SendDlgItemMessage(moveHistoryDialog, IDC_MoveHistory,
WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf,
MAKELPARAM(TRUE, 0));
- InvalidateRect(editTagsDialog, NULL, TRUE);
+ SendMessage( moveHistoryDialog, WM_INITDIALOG, 0, 0 );
+// InvalidateRect(editTagsDialog, NULL, TRUE); // [HGM] this ws improperly cloned?
+ }
+
+ if( engineOutputDialog != NULL ) {
+ SendDlgItemMessage(engineOutputDialog, IDC_EngineMemo1,
+ WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf,
+ MAKELPARAM(TRUE, 0));
+ SendDlgItemMessage(engineOutputDialog, IDC_EngineMemo2,
+ WM_SETFONT, (WPARAM)font[boardSize][MOVEHISTORY_FONT]->hf,
+ MAKELPARAM(TRUE, 0));
}
if (hwndConsole) {
err = SendMessage(hwndCombo, CB_ADDSTRING, 0, (LPARAM) scd->label);
if (err != cnt++) {
sprintf(buf, "InitSoundCombo(): err '%d', cnt '%d'\n",
- err, cnt);
+ (int)err, (int)cnt);
MessageBox(NULL, buf, NULL, MB_OK);
}
scd++;
SoundClass sc;
ColorClass cc;
SoundComboData *scd;
+ int oldMute;
switch (message) {
case WM_INITDIALOG:
}
}
+ mute = FALSE; // [HGM] mute: switch sounds automatically on if we select one
+ CheckMenuItem(GetMenu(hwndMain),IDM_MuteSounds,MF_BYCOMMAND|MF_UNCHECKED);
ResetSoundComboData(soundComboData);
EndDialog(hDlg, TRUE);
return TRUE;
tmp.name = strdup(SoundDialogGetName(hDlg, radio));
tmp.data = NULL;
MyLoadSound(&tmp);
+ oldMute = mute; mute = FALSE; // [HGM] mute: always sound when user presses play, ignorig mute setting
MyPlaySound(&tmp);
- if (tmp.data != NULL) free(tmp.data);
+ mute = oldMute;
+ if (tmp.data != NULL) FreeResource(tmp.data); // technically obsolete fn, but tmp.data is NOT malloc'd mem
if (tmp.name != NULL) free(tmp.name);
return TRUE;
flow = cdFlow[FLOW_NONE].label;
}
fprintf(f, "/%s=%d,%d,%s,%s,%s\n", name,
- dcb->BaudRate, dcb->ByteSize, parity, stopBits, flow);
+ (int)dcb->BaudRate, dcb->ByteSize, parity, stopBits, flow);
}
hwndCombo = GetDlgItem(hDlg, OPT_DataRate);
InitCombo(hwndCombo, cdDataRate);
- sprintf(buf, "%u", dcb.BaudRate);
+ sprintf(buf, "%u", (int)dcb.BaudRate);
if (SendMessage(hwndCombo, CB_SELECTSTRING, (WPARAM) -1, (LPARAM) buf) == CB_ERR) {
SendMessage(hwndCombo, CB_SETCURSEL, (WPARAM) -1, (LPARAM) 0);
SendMessage(hwndCombo, WM_SETTEXT, (WPARAM) 0, (LPARAM) buf);
PeriodicUpdatesEvent( IS_CHECKED(IDC_EpPeriodicUpdates));
PonderNextMoveEvent( IS_CHECKED(IDC_EpPonder));
appData.hideThinkingFromHuman= IS_CHECKED(IDC_EpHideThinkingHuman); // [HGM] thinking: moved up
-#if 0
- ShowThinkingEvent( IS_CHECKED(IDC_EpShowThinking));
-#else
appData.showThinking = IS_CHECKED(IDC_EpShowThinking);
ShowThinkingEvent(); // [HGM] thinking: tests all options that need thinking output
-#endif
appData.testClaims = IS_CHECKED(IDC_TestClaims);
appData.checkMates = IS_CHECKED(IDC_DetectMates);
appData.materialDraws = IS_CHECKED(IDC_MaterialDraws);
appData.ruleMoves = GetDlgItemInt(hDlg, IDC_RuleMoves, NULL, FALSE );
appData.drawRepeats = (int) GetDlgItemInt(hDlg, IDC_DrawRepeats, NULL, FALSE );
- appData.firstScoreIsAbsolute = IS_CHECKED(IDC_ScoreAbs1);
- appData.secondScoreIsAbsolute = IS_CHECKED(IDC_ScoreAbs2);
+ first.scoreIsAbsolute = appData.firstScoreIsAbsolute = IS_CHECKED(IDC_ScoreAbs1);
+ second.scoreIsAbsolute = appData.secondScoreIsAbsolute = IS_CHECKED(IDC_ScoreAbs2);
EndDialog(hDlg, TRUE);
return TRUE;