X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xboard.c;h=1ec1cd2793d1a4538845b4960496773b8baad879;hb=b9641a5478e4828554c5a82cb11681281491db4c;hp=e9a4dc274da60c470467aac054f789d4a1b6e917;hpb=4a8d41d0be4291df44a78bbf346c841a8710799c;p=xboard.git diff --git a/xboard.c b/xboard.c index e9a4dc2..1ec1cd2 100644 --- a/xboard.c +++ b/xboard.c @@ -243,6 +243,7 @@ RETSIGTYPE CmailSigHandler P((int sig)); RETSIGTYPE IntSigHandler P((int sig)); RETSIGTYPE TermSizeSigHandler P((int sig)); void CreateGCs P((int redo)); +void CreateAnyPieces P((void)); void CreateXIMPieces P((void)); void CreateXPMPieces P((void)); void CreateXPMBoard P((char *s, int n)); @@ -261,6 +262,7 @@ void CreateGrid P((void)); int EventToSquare P((int x, int limit)); void DrawSquare P((int row, int column, ChessSquare piece, int do_flash)); void EventProc P((Widget widget, caddr_t unused, XEvent *event)); +void MoveTypeInProc P((Widget widget, caddr_t unused, XEvent *event)); void HandleUserMove P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void AnimateUserMove P((Widget w, XEvent * event, @@ -365,6 +367,7 @@ void ResignProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void AdjuWhiteProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void AdjuBlackProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void AdjuDrawProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void TypeInProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void EnterKeyProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void UpKeyProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void DownKeyProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); @@ -451,6 +454,7 @@ void TimeControlProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)) void OptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void NewVariantProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void IcsTextProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void LoadEngineProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void FirstSettingsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void SecondSettingsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void GameListOptionsPopUp P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); @@ -696,6 +700,8 @@ MenuItem actionMenu[] = { }; MenuItem engineMenu[] = { + {N_("Load New Engine ..."), "Load Engine", LoadEngineProc}, + {"----", NULL, NothingProc}, {N_("Engine #1 Settings ..."), "Engine #1 Settings", FirstSettingsProc}, {N_("Engine #2 Settings ..."), "Engine #2 Settings", SecondSettingsProc}, {"----", NULL, NothingProc}, @@ -950,6 +956,7 @@ XtActionsRec boardActions[] = { { "AdjuWhiteProc", AdjuWhiteProc }, { "AdjuBlackProc", AdjuBlackProc }, { "AdjuDrawProc", AdjuDrawProc }, + { "TypeInProc", TypeInProc }, { "EnterKeyProc", EnterKeyProc }, { "UpKeyProc", UpKeyProc }, { "DownKeyProc", DownKeyProc }, @@ -1506,7 +1513,7 @@ SaveFontArg(FILE *f, ArgDescriptor *ad) break; } for(i=0; iargName, i, fontTable[n][i]); + fprintf(f, OPTCHAR "%s" SEPCHAR "\"size%d:%s\"\n", ad->argName, i, fontTable[n][i]); } void @@ -1895,6 +1902,28 @@ int MakeColors() return forceMono; } +void +CreateAnyPieces() +{ // [HGM] taken out of main +#if HAVE_LIBXPM + if (appData.monoMode && // [HGM] no sense to go on to certain doom + (appData.bitmapDirectory == NULL || appData.bitmapDirectory[0] == NULLCHAR)) + appData.bitmapDirectory = DEF_BITMAP_DIR; + + if (appData.bitmapDirectory[0] != NULLCHAR) { + CreatePieces(); + } else { + CreateXPMPieces(); + CreateXPMBoard(appData.liteBackTextureFile, 1); + CreateXPMBoard(appData.darkBackTextureFile, 0); + } +#else + CreateXIMPieces(); + /* Create regular pieces */ + if (!useImages) CreatePieces(); +#endif +} + int main(argc, argv) int argc; @@ -1953,8 +1982,8 @@ main(argc, argv) { // [HGM] initstring: kludge to fix bad bug. expand '\n' characters in init string and computer string. static char buf[MSG_SIZ]; - EscapeExpand(buf, appData.initString); - appData.initString = strdup(buf); + EscapeExpand(buf, appData.firstInitString); + appData.firstInitString = strdup(buf); EscapeExpand(buf, appData.secondInitString); appData.secondInitString = strdup(buf); EscapeExpand(buf, appData.firstComputerString); @@ -2135,10 +2164,7 @@ XBoard square size (hint): %d\n\ if (forceMono) { fprintf(stderr, _("%s: too few colors available; trying monochrome mode\n"), programName); - - if (appData.bitmapDirectory == NULL || - appData.bitmapDirectory[0] == NULLCHAR) - appData.bitmapDirectory = DEF_BITMAP_DIR; + appData.monoMode = True; } if (appData.lowTimeWarning && !appData.monoMode) { @@ -2548,19 +2574,7 @@ XBoard square size (hint): %d\n\ CreateGCs(False); CreateGrid(); -#if HAVE_LIBXPM - if (appData.bitmapDirectory[0] != NULLCHAR) { - CreatePieces(); - } else { - CreateXPMPieces(); - CreateXPMBoard(appData.liteBackTextureFile, 1); - CreateXPMBoard(appData.darkBackTextureFile, 0); - } -#else - CreateXIMPieces(); - /* Create regular pieces */ - if (!useImages) CreatePieces(); -#endif + CreateAnyPieces(); CreatePieceMenus(); @@ -2581,6 +2595,8 @@ XBoard square size (hint): %d\n\ XtAddEventHandler(boardWidget, ExposureMask|PointerMotionMask, False, (XtEventHandler) EventProc, NULL); /* end why */ + XtAddEventHandler(formWidget, KeyPressMask, False, + (XtEventHandler) MoveTypeInProc, NULL); /* [AS] Restore layout */ if( wpMoveHistory.visible ) { @@ -2617,7 +2633,8 @@ XBoard square size (hint): %d\n\ } gameInfo.boardWidth = 0; // [HGM] pieces: kludge to ensure InitPosition() calls InitDrawingSizes() InitPosition(TRUE); - XtSetKeyboardFocus(shellWidget, formWidget); +// XtSetKeyboardFocus(shellWidget, formWidget); + XSetInputFocus(xDisplay, XtWindow(formWidget), RevertToPointerRoot, CurrentTime); XtAppMainLoop(appContext); if (appData.debugMode) fclose(debugFP); // [DM] debug @@ -2776,9 +2793,10 @@ Enables icsEnables[] = { { "menuOptions.Hide Thinking", False }, { "menuOptions.Ponder Next Move", False }, #endif - { "menuEngine.Engine #1 Settings", False }, #endif + { "menuEngine.Engine #1 Settings", False }, { "menuEngine.Engine #2 Settings", False }, + { "menuEngine.Load Engine", False }, { "menuEdit.Annotate", False }, { NULL, False } }; @@ -2838,6 +2856,20 @@ Enables gnuEnables[] = { { "menuFile.Mail Move", False }, { "menuFile.Reload CMail Message", False }, + // [HGM] The following have been added to make a switch from ncp to GNU mode possible + { "menuMode.Machine White", True }, + { "menuMode.Machine Black", True }, + { "menuMode.Analysis Mode", True }, + { "menuMode.Analyze File", True }, + { "menuMode.Two Machines", True }, + { "menuMode.Machine Match", True }, + { "menuEngine.Engine #1 Settings", True }, + { "menuEngine.Engine #2 Settings", True }, + { "menuEngine.Hint", True }, + { "menuEngine.Book", True }, + { "menuEngine.Move Now", True }, + { "menuEngine.Retract Move", True }, + { "Action", True }, { NULL, False } }; @@ -2921,8 +2953,10 @@ void SetICSMode() SetMenuEnables(icsEnables); #if ZIPPY - if (appData.zippyPlay && !appData.noChessProgram) /* [DM] icsEngineAnalyze */ + if (appData.zippyPlay && !appData.noChessProgram) { /* [DM] icsEngineAnalyze */ XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Analysis Mode"), True); + XtSetSensitive(XtNameToWidget(menuBarWidget, "menuEngine.Engine #1 Settings"), True); + } #endif } @@ -3057,7 +3091,6 @@ FindFont(pattern, targetPxlSize) char *def_string, *base_fnt_lst, strInt[3]; XFontSet fntSet; XFontStruct **fnt_list; - base_fnt_lst = calloc(1, strlen(pattern) + 3); snprintf(strInt, sizeof(strInt)/sizeof(strInt[0]), "%d", targetPxlSize); p = strstr(pattern, "--"); @@ -8005,8 +8038,7 @@ CreateAnimVars () /* For XPM pieces, we need bitmaps to use as masks. */ if (useImages) - CreateAnimMasks(info.depth); - xpmDone = 1; + CreateAnimMasks(info.depth), xpmDone = 1; } #ifndef HAVE_USLEEP