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 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));
fromX = -1, fromY = -1, toX, toY, commentUp = False, analysisUp = False,
ICSInputBoxUp = False, askQuestionUp = False,
filenameUp = False, promotionUp = False, pmFromX = -1, pmFromY = -1,
- editUp = False, errorUp = False, errorExitStatus = -1, lineGap;
+ editUp = False, errorUp = False, errorExitStatus = -1, lineGap, defaultLineGap;
Pixel timerForegroundPixel, timerBackgroundPixel;
Pixel buttonForegroundPixel, buttonBackgroundPixel;
char *chessDir, *programName, *programVersion,
{N_("Move History Alt+Shift+H"), "Show Move History", HistoryShowProc}, // [HGM] hist: activate 4.2.7 code
{N_("Evaluation Graph Alt+Shift+E"), "Show Evaluation Graph", EvalGraphProc},
{N_("Game List Alt+Shift+G"), "Show Game List", ShowGameListProc},
+ {N_("ICS text menu"), "ICStex", IcsTextProc},
{"----", NULL, NothingProc},
{N_("Tags"), "Show Tags", EditTagsProc},
{N_("Comments"), "Show Comments", EditCommentProc},
fprintf(stderr, _("Closest %s size: %d\n"), IMAGE_EXT, squareSize);
}
}
+ defaultLineGap = lineGap;
if(appData.overrideLineGap >= 0) lineGap = appData.overrideLineGap;
/* [HR] height treated separately (hacked) */
{ "menuMode.Two Machines", False },
{ "menuMode.Machine Match", False },
{ "menuMode.ICS Client", False },
+ { "menuView.ICStex", False },
{ "menuView.ICS Input Box", False },
{ "Action", False },
{ "menuEdit.Revert", False },
{ "menuEngine.Engine #2 Settings", False },
{ "menuEngine.Move Now", False },
{ "menuEngine.Retract Move", False },
+ { "menuOptions.ICS", False },
#ifndef OPTIONSDIALOG
{ "menuOptions.Auto Flag", False },
{ "menuOptions.Auto Flip View", False },
- { "menuOptions.ICS", False },
// { "menuOptions.ICS Alarm", False },
{ "menuOptions.Move Sound", False },
{ "menuOptions.Hide Thinking", False },
Enables gnuEnables[] = {
{ "menuMode.ICS Client", False },
+ { "menuView.ICStex", False },
{ "menuView.ICS Input Box", False },
{ "menuAction.Accept", False },
{ "menuAction.Decline", False },
XtReleaseGC(shellWidget, highlineGC);
XtReleaseGC(shellWidget, lightSquareGC);
XtReleaseGC(shellWidget, darkSquareGC);
+ XtReleaseGC(shellWidget, lineGC);
if (appData.monoMode) {
if (DefaultDepth(xDisplay, xScreen) == 1) {
XtReleaseGC(shellWidget, wbPieceGC);
DeleteGCs(); // called a second time; clean up old GCs first
} else { // [HGM] grid and font GCs created on first call only
gc_values.foreground = XBlackPixel(xDisplay, xScreen);
- gc_values.background = XBlackPixel(xDisplay, xScreen);
- lineGC = XtGetGC(shellWidget, value_mask, &gc_values);
-
- gc_values.foreground = XBlackPixel(xDisplay, xScreen);
gc_values.background = XWhitePixel(xDisplay, xScreen);
coordGC = XtGetGC(shellWidget, value_mask, &gc_values);
XSetFont(xDisplay, coordGC, coordFontID);
countGC = XtGetGC(shellWidget, value_mask, &gc_values);
XSetFont(xDisplay, countGC, countFontID);
}
+ gc_values.foreground = XBlackPixel(xDisplay, xScreen);
+ gc_values.background = XBlackPixel(xDisplay, xScreen);
+ lineGC = XtGetGC(shellWidget, value_mask, &gc_values);
+
if (appData.monoMode) {
gc_values.foreground = XWhitePixel(xDisplay, xScreen);
gc_values.background = XWhitePixel(xDisplay, xScreen);
XSynchronize(xDisplay, False); /* Work-around for xlib/xt buffering bug */
}
+static VariantClass oldVariant = (VariantClass) -1; // [HGM] pieces: redo every time variant changes
+
#if HAVE_LIBXPM
void CreateXPMBoard(char *s, int kind)
{
xpmJailSquare = xpmLightSquare;
fprintf(stderr, _("Done.\n"));
}
+ oldVariant = -1; // kludge to force re-makig of animation masks
XSynchronize(xDisplay, False); /* Work-around for xlib/xt
buffering bug */
}
return shell;
}
-/* Used for analysis window and ICS input window */
-Widget MiscCreate(name, text, mutable, callback, lines)
- char *name, *text;
- int /*Boolean*/ mutable;
- XtCallbackProc callback;
- int lines;
-{
- Arg args[16];
- Widget shell, layout, form, edit;
- Position x, y;
- Dimension bw_width, pw_height, ew_height, w, h;
- int j;
- int xx, yy;
- Window junk;
-
- j = 0;
- XtSetArg(args[j], XtNresizable, True); j++;
-#if TOPLEVEL
- shell =
- XtCreatePopupShell(name, topLevelShellWidgetClass,
- shellWidget, args, j);
-#else
- shell =
- XtCreatePopupShell(name, transientShellWidgetClass,
- shellWidget, args, j);
-#endif
- layout =
- XtCreateManagedWidget(layoutName, formWidgetClass, shell,
- layoutArgs, XtNumber(layoutArgs));
- form =
- XtCreateManagedWidget("form", formWidgetClass, layout,
- formArgs, XtNumber(formArgs));
-
- j = 0;
- if (mutable) {
- XtSetArg(args[j], XtNeditType, XawtextEdit); j++;
- XtSetArg(args[j], XtNuseStringInPlace, False); j++;
- }
- XtSetArg(args[j], XtNstring, text); j++;
- XtSetArg(args[j], XtNtop, XtChainTop); j++;
- XtSetArg(args[j], XtNbottom, XtChainBottom); j++;
- XtSetArg(args[j], XtNleft, XtChainLeft); j++;
- XtSetArg(args[j], XtNright, XtChainRight); j++;
- XtSetArg(args[j], XtNresizable, True); j++;
- /* !!Work around an apparent bug in XFree86 4.0.1 (X11R6.4.3) */
- XtSetArg(args[j], XtNscrollVertical, XawtextScrollAlways); j++;
- XtSetArg(args[j], XtNautoFill, True); j++;
- XtSetArg(args[j], XtNwrap, XawtextWrapWord); j++;
- edit =
- XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j);
-
- XtRealizeWidget(shell);
-
- j = 0;
- XtSetArg(args[j], XtNwidth, &bw_width); j++;
- XtGetValues(boardWidget, args, j);
-
- j = 0;
- XtSetArg(args[j], XtNheight, &ew_height); j++;
- XtGetValues(edit, args, j);
-
- j = 0;
- XtSetArg(args[j], XtNheight, &pw_height); j++;
- XtGetValues(shell, args, j);
- h = pw_height + (lines - 1) * ew_height;
- w = bw_width - 16;
-
- XSync(xDisplay, False);
-#ifdef NOTDEF
- /* This code seems to tickle an X bug if it is executed too soon
- after xboard starts up. The coordinates get transformed as if
- the main window was positioned at (0, 0).
- */
- XtTranslateCoords(shellWidget, (bw_width - w) / 2, 0 - h / 2, &x, &y);
-#else /*!NOTDEF*/
- XTranslateCoordinates(xDisplay, XtWindow(shellWidget),
- RootWindowOfScreen(XtScreen(shellWidget)),
- (bw_width - w) / 2, 0 - h / 2, &xx, &yy, &junk);
- x = xx;
- y = yy;
-#endif /*!NOTDEF*/
- if (y < 0) y = 0; /*avoid positioning top offscreen*/
-
- j = 0;
- XtSetArg(args[j], XtNheight, h); j++;
- XtSetArg(args[j], XtNwidth, w); j++;
- XtSetArg(args[j], XtNx, x); j++;
- XtSetArg(args[j], XtNy, y); j++;
- XtSetValues(shell, args, j);
-
- return shell;
-}
-
-
static int savedIndex; /* gross that this is global */
void CommentClick (Widget w, XEvent * event, String * params, Cardinal * nParams)
void ICSInputBoxPopUp()
{
- Widget edit;
- Arg args[16];
- int j;
- char *title = _("ICS Input");
- XtTranslations tr;
-
- if (ICSInputShell == NULL) {
- ICSInputShell = MiscCreate(title, "", True, NULL, 1);
- tr = XtParseTranslationTable(ICSInputTranslations);
- edit = XtNameToWidget(ICSInputShell, "*form.text");
- XtOverrideTranslations(edit, tr);
- XtRealizeWidget(ICSInputShell);
- CatchDeleteWindow(ICSInputShell, "ICSInputBoxPopDown");
-
- } else {
- edit = XtNameToWidget(ICSInputShell, "*form.text");
- j = 0;
- XtSetArg(args[j], XtNstring, ""); j++;
- XtSetValues(edit, args, j);
- j = 0;
- XtSetArg(args[j], XtNiconName, (XtArgVal) title); j++;
- XtSetArg(args[j], XtNtitle, (XtArgVal) title); j++;
- XtSetValues(ICSInputShell, args, j);
- }
-
- XtPopup(ICSInputShell, XtGrabNone);
- XtSetKeyboardFocus(ICSInputShell, edit);
-
- ICSInputBoxUp = True;
- j = 0;
- XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++;
- XtSetValues(XtNameToWidget(menuBarWidget, "menuView.ICS Input Box"),
- args, j);
+ InputBoxPopup();
}
+extern Option boxOptions[];
+
void ICSInputSendText()
{
Widget edit;
Arg args[16];
String val;
- edit = XtNameToWidget(ICSInputShell, "*form.text");
+ edit = boxOptions[0].handle;
j = 0;
XtSetArg(args[j], XtNstring, &val); j++;
XtGetValues(edit, args, j);
void ICSInputBoxPopDown()
{
- Arg args[16];
- int j;
-
- if (!ICSInputBoxUp) return;
- j = 0;
- XtPopdown(ICSInputShell);
- ICSInputBoxUp = False;
- j = 0;
- XtSetArg(args[j], XtNleftBitmap, None); j++;
- XtSetValues(XtNameToWidget(menuBarWidget, "menuView.ICS Input Box"),
- args, j);
+ PopDown(4);
}
void CommentPopUp(title, text)
String *prms;
Cardinal *nprms;
{
- if (ICSInputBoxUp) {
- ICSInputBoxPopDown();
- } else {
- ICSInputBoxPopUp();
- }
+ if (!PopDown(4)) ICSInputBoxPopUp();
}
void AcceptProc(w, event, prms, nprms)
String *prms;
Cardinal *nprms;
{
- if (ICSInputBoxUp == True)
+ if (shellUp[4] == True)
ICSInputSendText();
}
String val;
XawTextBlock t;
- if (!ICSInputBoxUp) return;
- edit = XtNameToWidget(ICSInputShell, "*form.text");
+ if (!shellUp[4]) return;
+ edit = boxOptions[0].handle;
j = 0;
XtSetArg(args[j], XtNstring, &val); j++;
XtGetValues(edit, args, j);
String val;
XawTextBlock t;
- if (!ICSInputBoxUp) return;
- edit = XtNameToWidget(ICSInputShell, "*form.text");
+ if (!shellUp[4]) return;
+ edit = boxOptions[0].handle;
val = NextInHistory();
XtCallActionProc(edit, "select-all", NULL, NULL, 0);
XtCallActionProc(edit, "kill-selection", NULL, NULL, 0);
static void
CreateAnimVars ()
{
- static VariantClass old = (VariantClass) -1; // [HGM] pieces: redo every time variant changes
XWindowAttributes info;
- if (xpmDone && gameInfo.variant == old) return;
- if(xpmDone) old = gameInfo.variant; // first time pieces might not be created yet
+ if (xpmDone && gameInfo.variant == oldVariant) return;
+ if(xpmDone) oldVariant = gameInfo.variant; // first time pieces might not be created yet
XGetWindowAttributes(xDisplay, xBoardWindow, &info);
InitAnimState(&game, &info);