/*\r
* WinBoard.h -- Definitions for Windows NT front end to XBoard\r
*\r
- * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.\r
- * Enhancements Copyright 1992-97 Free Software Foundation, Inc.\r
+ * Copyright 1991 by Digital Equipment Corporation, Maynard,\r
+ * Massachusetts.\r
+ *\r
+ * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005, 2006,\r
+ * 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Free\r
+ * Software Foundation, Inc.\r
+ *\r
+ * Enhancements Copyright 2005 Alessandro Scotti\r
*\r
* The following terms apply to Digital Equipment Corporation's copyright\r
* interest in XBoard:\r
* SOFTWARE.\r
* ------------------------------------------------------------------------\r
*\r
- * The following terms apply to the enhanced version of XBoard distributed\r
- * by the Free Software Foundation:\r
+ * The following terms apply to the enhanced version of XBoard\r
+ * distributed by the Free Software Foundation:\r
* ------------------------------------------------------------------------\r
- * This program is free software; you can redistribute it and/or modify\r
+ *\r
+ * GNU XBoard is free software: you can redistribute it and/or modify\r
* it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
+ * the Free Software Foundation, either version 3 of the License, or (at\r
+ * your option) any later version.\r
*\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
+ * GNU XBoard is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+ * General Public License for more details.\r
*\r
* You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- * ------------------------------------------------------------------------\r
- */\r
+ * along with this program. If not, see http://www.gnu.org/licenses/. *\r
+ *\r
+ *------------------------------------------------------------------------\r
+ ** See the file ChangeLog for a revision history. */\r
+\r
#include "resource.h"\r
#include <dlgs.h>\r
\r
char faceName[LF_FACESIZE];\r
float pointSize;\r
BYTE bold, italic, underline, strikeout;\r
+ BYTE charset;\r
} MyFontParams;\r
\r
typedef struct {\r
typedef struct {\r
char* name;\r
void* data;\r
+ int flag; // [HGM] needed to indicate if data was malloc'ed or not\r
} MySound;\r
\r
typedef struct {\r
VOID InitDrawingColors(VOID);\r
VOID InitDrawingSizes(BoardSize boardSize, int flags);\r
VOID InitMenuChecks(VOID);\r
-VOID ICSInitScript(VOID);\r
+int ICSInitScript(VOID);\r
BOOL CenterWindow(HWND hwndChild, HWND hwndParent);\r
VOID ResizeEditPlusButtons(HWND hDlg, HWND hText, int sizeX, int sizeY, int newSizeX, int newSizeY);\r
VOID PromotionPopup(HWND hwnd);\r
-FILE *OpenFileDialog(HWND hWnd, BOOL write, char *defName, char *defExt, \r
+FILE *OpenFileDialog(HWND hWnd, char *write, char *defName, char *defExt, \r
char *nameFilt, char *dlgTitle, UINT *number,\r
char fileTitle[MSG_SIZ], char fileName[MSG_SIZ]);\r
VOID InputEvent(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);\r
VOID ChangeBoardSize(BoardSize newSize);\r
BOOL APIENTRY MyCreateFont(HWND hwnd, MyFont *font);\r
VOID ErrorPopDown(VOID);\r
-VOID EnsureOnScreen(int *x, int *y);\r
-typedef char GetFunc(void *getClosure);\r
-VOID ParseArgs(GetFunc get, void *cl);\r
+VOID EnsureOnScreen(int *x, int *y, int minX, int minY);\r
HBITMAP \r
DoLoadBitmap(HINSTANCE hinst, char *piece, int squareSize, char *suffix);\r
COLORREF ParseColorName(char *name);\r
void InitComboStrings(HANDLE hwndCombo, char **cd);\r
BOOLEAN MyLoadSound(MySound *ms);\r
BOOLEAN MyPlaySound(MySound *ms);\r
-VOID ExitArgError(char *msg, char *badArg);\r
+VOID ExitArgError(char *msg, char *badArg, Boolean quit);\r
+void SaveSettings(char* name);\r
+BOOL BrowseForFolder( const char * title, char * path );\r
+VOID TourneyPopup();\r
+VOID LoadEnginePopUp();\r
+VOID LoadOptionsPopup(HWND hDlg);\r
+VOID InitTextures();\r
+void ThemeOptionsPopup(HWND hwnd);\r
\r
/* Constants */\r
\r
#define COMMENT_FONT 4\r
#define EDITTAGS_FONT 5\r
#define MOVEHISTORY_FONT 6\r
-#define NUM_FONTS 7\r
+#define GAMELIST_FONT 7\r
+#define NUM_FONTS 8\r
\r
/* Positions of some menu items. Origin is zero and separator lines count. */\r
/* It's gross that these are needed. */\r
-#define ACTION_POS 2 /* Posn of "Action" on menu bar */\r
-#define OPTIONS_POS 4 /* Posn of "Options" on menu bar */\r
-#define ICS_POS 4 /* Posn of "ICS " on Options menu */\r
-#define SOUNDS_POS 6 /* Posn of "Sounds" on Options menu */\r
+#define ACTION_POS 4 /* Posn of "Action" on menu bar */\r
+#define OPTIONS_POS 6 /* Posn of "Options" on menu bar */\r
/* end grossness */\r
\r
extern MyFont *font[NUM_SIZES][NUM_FONTS];\r
#define COPY_TMP "wbcopy.tmp"\r
#define PASTE_TMP "wbpaste.tmp"\r
\r
-/* [AS] Layout management */\r
-typedef struct {\r
- Boolean visible;\r
- int x;\r
- int y;\r
- int width;\r
- int height;\r
-} WindowPlacement;\r
+/* variables */\r
+extern HINSTANCE hInst;\r
+extern HWND hwndMain;\r
+extern BoardSize boardSize;\r
\r
-VOID InitWindowPlacement( WindowPlacement * wp );\r
+// [HGM] Some stuff to allo a platform-independent reference to windows\r
+// This should be moved to frontend.h in due time\r
\r
-VOID RestoreWindowPlacement( HWND hWnd, WindowPlacement * wp );\r
+typedef enum {\r
+ W_Main, W_Console, W_Comment, W_Tags, W_GameList, \r
+ W_MoveHist, W_EngineOut, NUM_WINDOWS\r
+} WindowID;\r
+\r
+extern WindowPlacement placementTab[NUM_WINDOWS];\r
+extern HWND hwndTab[NUM_WINDOWS]; // this remains pure front-end.\r
\r
+void Translate( HWND hDlg, int id);\r
+VOID InitWindowPlacement( WindowPlacement * wp );\r
+VOID RestoreWindowPlacement( HWND hWnd, WindowPlacement * wp );\r
VOID ReattachAfterMove( LPRECT lprcOldPos, int new_x, int new_y, HWND hWndChild, WindowPlacement * pwpChild );\r
+VOID ReattachAfterSize( LPRECT lprcOldPos, int new_w, int new_h, HWND hWndChild, WindowPlacement * pwpChild );\r
+BOOL GetActualPlacement( HWND hWnd, WindowPlacement * wp );\r
+\r
+VOID MoveHistoryPopUp();\r
+VOID MoveHistoryPopDown();\r
+extern HWND moveHistoryDialog;\r
+\r
+VOID EvalGraphPopUp();\r
+VOID EvalGraphPopDown();\r
+extern HWND evalGraphDialog;\r
+\r
+extern HWND engineOutputDialog;\r
+\r
+struct GameListStats\r
+{\r
+ int white_wins;\r
+ int black_wins;\r
+ int drawn;\r
+ int unfinished;\r
+};\r
+\r
+int GameListToListBox( HWND hDlg, BOOL boReset, char * pszFilter, struct GameListStats * stats, BOOL byPos, BOOL narrow );\r
+VOID ShowGameListProc(void);\r
+extern HWND gameListDialog;\r
+\r
+VOID EditTagsProc(void);\r
+extern HWND editTagsDialog;\r
+extern int screenWidth, screenHeight;\r
+extern RECT screenGeometry; // Top-left coordiate of the screen can be different from (0,0)\r
+\r