MenuItem *mi;
} Menu;
+typedef struct {
+ char *name;
+ gboolean value;
+} Enables;
+
+
+
int main P((int argc, char **argv));
RETSIGTYPE CmailSigHandler P((int sig));
RETSIGTYPE IntSigHandler P((int sig));
String *prms, Cardinal *nprms));
void BlackClock P((Widget w, XEvent *event,
String *prms, Cardinal *nprms));
-void DrawPositionProc P((Widget w, XEvent *event,
- String *prms, Cardinal *nprms));
void CommentPopUp P((char *title, char *label));
void CommentPopDown P((void));
void CommentCallback P((Widget w, XtPointer client_data,
void MailMoveProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void ReloadCmailMsgProc P((Widget w, XEvent *event, String *prms,
Cardinal *nprms));
-void MachineBlackProc P((Widget w, XEvent *event, String *prms,
- Cardinal *nprms));
-void MachineWhiteProc P((Widget w, XEvent *event,
- String *prms, Cardinal *nprms));
void AnalyzeModeProc P((Widget w, XEvent *event,
String *prms, Cardinal *nprms));
void AnalyzeFileProc P((Widget w, XEvent *event,
String *prms, Cardinal *nprms));
-void TwoMachinesProc P((Widget w, XEvent *event, String *prms,
- Cardinal *nprms));
-void IcsClientProc P((Widget w, XEvent *event, String *prms,
- Cardinal *nprms));
void EditGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void EditPositionProc P((Widget w, XEvent *event,
String *prms, Cardinal *nprms));
String *prms, Cardinal *nprms));
void IcsInputBoxProc P((Widget w, XEvent *event,
String *prms, Cardinal *nprms));
-void AcceptProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void DeclineProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void RematchProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void CallFlagProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void DrawProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void AbortProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void AdjournProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-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 EnterKeyProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void StopObservingProc P((Widget w, XEvent *event, String *prms,
- Cardinal *nprms));
-void StopExaminingProc P((Widget w, XEvent *event, String *prms,
- Cardinal *nprms));
-void BackwardProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void ForwardProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void ToStartProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void ToEndProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void RevertProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void TruncateGameProc P((Widget w, XEvent *event, String *prms,
- Cardinal *nprms));
-void RetractMoveProc P((Widget w, XEvent *event, String *prms,
- Cardinal *nprms));
-void MoveNowProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void AlwaysQueenProc P((Widget w, XEvent *event, String *prms,
Cardinal *nprms));
void AnimateDraggingProc P((Widget w, XEvent *event, String *prms,
void BlindfoldProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void FlashMovesProc P((Widget w, XEvent *event, String *prms,
Cardinal *nprms));
-void FlipViewProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void GetMoveListProc P((Widget w, XEvent *event, String *prms,
Cardinal *nprms));
void HighlightDraggingProc P((Widget w, XEvent *event, String *prms,
Cardinal *nprms));
void TestLegalityProc P((Widget w, XEvent *event, String *prms,
Cardinal *nprms));
-void InfoProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void ManProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void HintProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
-void BookProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void AboutGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void DebugProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void NothingProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void TimeControlPopDown P(());
void NewVariantPopDown P(());
void SettingsPopDown P(());
+void SetMenuEnables P((Enables *enab));
+
/*
* XBoard depends on Xt R4 or higher
*/
GC lightSquareGC, darkSquareGC, jailSquareGC, wdPieceGC, wlPieceGC,
bdPieceGC, blPieceGC, wbPieceGC, bwPieceGC, coordGC,
- wjPieceGC, bjPieceGC, countGC;
+ wjPieceGC, bjPieceGC;
Pixmap iconPixmap, wIconPixmap, bIconPixmap, xMarkPixmap;
Widget shellWidget, layoutWidget, formWidget, boardWidget, messageWidget,
whiteTimerWidget, blackTimerWidget, titleWidget, widgetList[16],
SizeDefaults sizeDefaults[] = SIZE_DEFAULTS;
+Enables icsEnables[] = {
+ { "menuFile.Mail Move", False },
+ { "menuFile.Reload CMail Message", False },
+ { "menuMode.Machine Black", False },
+ { "menuMode.Machine White", False },
+ { "menuMode.Analysis Mode", False },
+ { "menuMode.Analyze File", False },
+ { "menuMode.Two Machines", False },
+#ifndef ZIPPY
+ { "menuHelp.Hint", False },
+ { "menuHelp.Book", False },
+ { "menuStep.Move Now", False },
+ { "menuOptions.Periodic Updates", False },
+ { "menuOptions.Hide Thinking", False },
+ { "menuOptions.Ponder Next Move", False },
+#endif
+ { NULL, False }
+};
+
+Enables ncpEnables[] = {
+ { "menuFile.Mail Move", False },
+ { "menuFile.Reload CMail Message", False },
+ { "menuMode.Machine White", False },
+ { "menuMode.Machine Black", False },
+ { "menuMode.Analysis Mode", False },
+ { "menuMode.Analyze File", False },
+ { "menuMode.Two Machines", False },
+ { "menuMode.ICS Client", False },
+ { "menuMode.ICS Input Box", False },
+ { "Action", False },
+ { "menuStep.Revert", False },
+ { "menuStep.Move Now", False },
+ { "menuStep.Retract Move", False },
+ { "menuOptions.Auto Comment", False },
+ { "menuOptions.Auto Flag", False },
+ { "menuOptions.Auto Flip View", False },
+ { "menuOptions.Auto Observe", False },
+ { "menuOptions.Auto Raise Board", False },
+ { "menuOptions.Get Move List", False },
+ { "menuOptions.ICS Alarm", False },
+ { "menuOptions.Move Sound", False },
+ { "menuOptions.Quiet Play", False },
+ { "menuOptions.Hide Thinking", False },
+ { "menuOptions.Periodic Updates", False },
+ { "menuOptions.Ponder Next Move", False },
+ { "menuHelp.Hint", False },
+ { "menuHelp.Book", False },
+ { NULL, False }
+};
+
+Enables gnuEnables[] = {
+ { "menuMode.ICS Client", False },
+ { "menuMode.ICS Input Box", False },
+ { "menuAction.Accept", False },
+ { "menuAction.Decline", False },
+ { "menuAction.Rematch", False },
+ { "menuAction.Adjourn", False },
+ { "menuAction.Stop Examining", False },
+ { "menuAction.Stop Observing", False },
+ { "menuStep.Revert", False },
+ { "menuOptions.Auto Comment", False },
+ { "menuOptions.Auto Observe", False },
+ { "menuOptions.Auto Raise Board", False },
+ { "menuOptions.Get Move List", False },
+ { "menuOptions.Premove", False },
+ { "menuOptions.Quiet Play", False },
+
+ /* The next two options rely on SetCmailMode being called *after* */
+ /* SetGNUMode so that when GNU is being used to give hints these */
+ /* menu options are still available */
+
+ { "menuFile.Mail Move", False },
+ { "menuFile.Reload CMail Message", False },
+ { NULL, False }
+};
+
+Enables cmailEnables[] = {
+ { "Action", True },
+ { "menuAction.Call Flag", False },
+ { "menuAction.Draw", True },
+ { "menuAction.Adjourn", False },
+ { "menuAction.Abort", False },
+ { "menuAction.Stop Observing", False },
+ { "menuAction.Stop Examining", False },
+ { "menuFile.Mail Move", True },
+ { "menuFile.Reload CMail Message", True },
+ { NULL, False }
+};
+
+Enables trainingOnEnables[] = {
+ { "menuMode.Edit Comment", False },
+ { "menuMode.Pause", False },
+ { "menuStep.Forward", False },
+ { "menuStep.Backward", False },
+ { "menuStep.Forward to End", False },
+ { "menuStep.Back to Start", False },
+ { "menuStep.Move Now", False },
+ { "menuStep.Truncate Game", False },
+ { NULL, False }
+};
+
+Enables trainingOffEnables[] = {
+ { "menuMode.Edit Comment", True },
+ { "menuMode.Pause", True },
+ { "menuStep.Forward", True },
+ { "menuStep.Backward", True },
+ { "menuStep.Forward to End", True },
+ { "menuStep.Back to Start", True },
+ { "menuStep.Move Now", True },
+ { "menuStep.Truncate Game", True },
+ { NULL, False }
+};
+
+Enables machineThinkingEnables[] = {
+ { "menuFile.Load Game", False },
+ { "menuFile.Load Next Game", False },
+ { "menuFile.Load Previous Game", False },
+ { "menuFile.Reload Same Game", False },
+ { "menuFile.Paste Game", False },
+ { "menuFile.Load Position", False },
+ { "menuFile.Load Next Position", False },
+ { "menuFile.Load Previous Position", False },
+ { "menuFile.Reload Same Position", False },
+ { "menuFile.Paste Position", False },
+ { "menuMode.Machine White", False },
+ { "menuMode.Machine Black", False },
+ { "menuMode.Two Machines", False },
+ { "menuStep.Retract Move", False },
+ { NULL, False }
+};
+
+Enables userThinkingEnables[] = {
+ { "menuFile.Load Game", True },
+ { "menuFile.Load Next Game", True },
+ { "menuFile.Load Previous Game", True },
+ { "menuFile.Reload Same Game", True },
+ { "menuFile.Paste Game", True },
+ { "menuFile.Load Position", True },
+ { "menuFile.Load Next Position", True },
+ { "menuFile.Load Previous Position", True },
+ { "menuFile.Reload Same Position", True },
+ { "menuFile.Paste Position", True },
+ { "menuMode.Machine White", True },
+ { "menuMode.Machine Black", True },
+ { "menuMode.Two Machines", True },
+ { "menuStep.Retract Move", True },
+ { NULL, False }
+};
+
+
+
MenuItem fileMenu[] = {
{N_("New Shuffle Game ..."), ShuffleMenuProc},
{N_("New Variant ..."), NewVariantProc}, // [HGM] variant: not functional yet
};
MenuItem modeMenu[] = {
- {N_("Machine White"), MachineWhiteProc},
- {N_("Machine Black"), MachineBlackProc},
- {N_("Two Machines"), TwoMachinesProc},
+ // {N_("Machine White"), MachineWhiteProc},
+ // {N_("Machine Black"), MachineBlackProc},
+ // {N_("Two Machines"), TwoMachinesProc},
{N_("Analysis Mode"), AnalyzeModeProc},
{N_("Analyze File"), AnalyzeFileProc },
- {N_("ICS Client"), IcsClientProc},
+ // {N_("ICS Client"), IcsClientProc},
{N_("Edit Game"), EditGameProc},
{N_("Edit Position"), EditPositionProc},
{N_("Training"), TrainingProc},
{NULL, NULL}
};
-MenuItem actionMenu[] = {
- {N_("Accept"), AcceptProc},
- {N_("Decline"), DeclineProc},
- {N_("Rematch"), RematchProc},
- {"----", NothingProc},
- {N_("Call Flag"), CallFlagProc},
- {N_("Draw"), DrawProc},
- {N_("Adjourn"), AdjournProc},
- {N_("Abort"), AbortProc},
- {N_("Resign"), ResignProc},
- {"----", NothingProc},
- {N_("Stop Observing"), StopObservingProc},
- {N_("Stop Examining"), StopExaminingProc},
- {"----", NothingProc},
- {N_("Adjudicate to White"), AdjuWhiteProc},
- {N_("Adjudicate to Black"), AdjuBlackProc},
- {N_("Adjudicate Draw"), AdjuDrawProc},
- {NULL, NULL}
-};
-
-MenuItem stepMenu[] = {
- {N_("Backward"), BackwardProc},
- {N_("Forward"), ForwardProc},
- {N_("Back to Start"), ToStartProc},
- {N_("Forward to End"), ToEndProc},
- {N_("Revert"), RevertProc},
- {N_("Truncate Game"), TruncateGameProc},
- {"----", NothingProc},
- {N_("Move Now"), MoveNowProc},
- {N_("Retract Move"), RetractMoveProc},
- {NULL, NULL}
-};
-
MenuItem optionsMenu[] = {
- {N_("Flip View"), FlipViewProc},
- {"----", NothingProc},
+ // {N_("Flip View"), FlipViewProc},
+ // {"----", NothingProc},
{N_("Adjudications ..."), EngineMenuProc},
{N_("General Settings ..."), UciMenuProc},
{N_("Engine #1 Settings ..."), FirstSettingsProc},
{NULL, NULL}
};
-MenuItem helpMenu[] = {
- {N_("Info XBoard"), InfoProc},
- {N_("Man XBoard"), ManProc},
- {"----", NothingProc},
- {N_("Hint"), HintProc},
- {N_("Book"), BookProc},
- {"----", NothingProc},
- {NULL, NULL}
-};
-
Menu menuBar[] = {
{N_("File"), fileMenu},
{N_("Mode"), modeMenu},
- {N_("Action"), actionMenu},
- {N_("Step"), stepMenu},
{N_("Options"), optionsMenu},
- {N_("Help"), helpMenu},
{NULL, NULL}
};
#define PAUSE_BUTTON N_("P")
MenuItem buttonBar[] = {
- {"<<", ToStartProc},
- {"<", BackwardProc},
+ // {"<<", ToStartProc},
+ // {"<", BackwardProc},
// {PAUSE_BUTTON, PauseProc},
- {">", ForwardProc},
- {">>", ToEndProc},
+ // {">", ForwardProc},
+ // {">>", ToEndProc},
{NULL, NULL}
};
{ 'Q', "Queen" }
};
-Arg shellArgs[] = {
- { XtNwidth, 0 },
- { XtNheight, 0 },
- { XtNminWidth, 0 },
- { XtNminHeight, 0 },
- { XtNmaxWidth, 0 },
- { XtNmaxHeight, 0 }
-};
-
Arg layoutArgs[] = {
{ XtNborderWidth, 0 },
{ XtNdefaultDistance, 0 },
{ XtNheight, 0 }
};
-Arg titleArgs[] = {
- { XtNjustify, (XtArgVal) XtJustifyRight },
- { XtNlabel, (XtArgVal) "..." },
- { XtNresizable, (XtArgVal) True },
- { XtNresize, (XtArgVal) False }
-};
-
-Arg messageArgs[] = {
- { XtNjustify, (XtArgVal) XtJustifyLeft },
- { XtNlabel, (XtArgVal) "..." },
- { XtNresizable, (XtArgVal) True },
- { XtNresize, (XtArgVal) False }
-};
-
-Arg timerArgs[] = {
- { XtNborderWidth, 0 },
- { XtNjustify, (XtArgVal) XtJustifyLeft }
-};
-
XtResource clientResources[] = {
{ "whitePieceColor", "whitePieceColor", XtRString, sizeof(String),
XtOffset(AppDataPtr, whitePieceColor), XtRString,
{ "localLineEditing", "localLineEditing", XtRBoolean,
sizeof(Boolean), XtOffset(AppDataPtr, localLineEditing),
XtRImmediate, (XtPointer) True }, /* not implemented, must be True */
-#ifdef ZIPPY
+#if ZIPPY
{ "zippyTalk", "zippyTalk", XtRBoolean,
sizeof(Boolean), XtOffset(AppDataPtr, zippyTalk),
XtRImmediate, (XtPointer) ZIPPY_TALK },
{ "adjudicateLossThreshold", "adjudicateLossThreshold", XtRInt,
sizeof(int), XtOffset(AppDataPtr, adjudicateLossThreshold),
XtRImmediate, (XtPointer) 0},
+ { "adjudicateDrawMoves", "adjudicateDrawMoves", XtRInt,
+ sizeof(int), XtOffset(AppDataPtr, adjudicateDrawMoves),
+ XtRImmediate, (XtPointer) 0},
{ "pgnEventHeader", "pgnEventHeader", XtRString,
sizeof(String), XtOffset(AppDataPtr, pgnEventHeader),
XtRImmediate, (XtPointer) "Computer Chess Game" },
{ "-pgnExtendedInfo", "pgnExtendedInfo", XrmoptionSepArg, NULL },
{ "-hideThinkingFromHuman", "hideThinkingFromHuman", XrmoptionSepArg, NULL },
{ "-adjudicateLossThreshold", "adjudicateLossThreshold", XrmoptionSepArg, NULL },
+ { "-adjudicateDrawMoves", "adjudicateDrawMoves", XrmoptionSepArg, NULL },
{ "-pgnEventHeader", "pgnEventHeader", XrmoptionSepArg, NULL },
{ "-firstIsUCI", "firstIsUCI", XrmoptionSepArg, NULL },
{ "-secondIsUCI", "secondIsUCI", XrmoptionSepArg, NULL },
XtActionsRec boardActions[] = {
- { "DrawPosition", DrawPositionProc },
{ "HandleUserMove", HandleUserMove },
{ "AnimateUserMove", AnimateUserMove },
{ "FileNameAction", FileNameAction },
{ "SavePositionProc", SavePositionProc },
{ "MailMoveProc", MailMoveProc },
{ "ReloadCmailMsgProc", ReloadCmailMsgProc },
- { "MachineWhiteProc", MachineWhiteProc },
- { "MachineBlackProc", MachineBlackProc },
+ // { "MachineWhiteProc", MachineWhiteProc },
+ // { "MachineBlackProc", MachineBlackProc },
{ "AnalysisModeProc", AnalyzeModeProc },
{ "AnalyzeFileProc", AnalyzeFileProc },
- { "TwoMachinesProc", TwoMachinesProc },
- { "IcsClientProc", IcsClientProc },
+ // { "TwoMachinesProc", TwoMachinesProc },
+ // { "IcsClientProc", IcsClientProc },
{ "EditGameProc", EditGameProc },
{ "EditPositionProc", EditPositionProc },
{ "TrainingProc", EditPositionProc },
{ "EditCommentProc", EditCommentProc },
{ "IcsAlarmProc", IcsAlarmProc },
{ "IcsInputBoxProc", IcsInputBoxProc },
- { "AcceptProc", AcceptProc },
- { "DeclineProc", DeclineProc },
- { "RematchProc", RematchProc },
- { "CallFlagProc", CallFlagProc },
- { "DrawProc", DrawProc },
- { "AdjournProc", AdjournProc },
- { "AbortProc", AbortProc },
- { "ResignProc", ResignProc },
- { "AdjuWhiteProc", AdjuWhiteProc },
- { "AdjuBlackProc", AdjuBlackProc },
- { "AdjuDrawProc", AdjuDrawProc },
+ // { "AcceptProc", AcceptProc },
+ // { "DeclineProc", DeclineProc },
+ // { "RematchProc", RematchProc },
+ // { "CallFlagProc", CallFlagProc },
+ // { "DrawProc", DrawProc },
+ // { "AdjournProc", AdjournProc },
+ // { "AbortProc", AbortProc },
+ // { "ResignProc", ResignProc },
+ // { "AdjuWhiteProc", AdjuWhiteProc },
+ // { "AdjuBlackProc", AdjuBlackProc },
+ // { "AdjuDrawProc", AdjuDrawProc },
{ "EnterKeyProc", EnterKeyProc },
- { "StopObservingProc", StopObservingProc },
- { "StopExaminingProc", StopExaminingProc },
- { "BackwardProc", BackwardProc },
- { "ForwardProc", ForwardProc },
- { "ToStartProc", ToStartProc },
- { "ToEndProc", ToEndProc },
- { "RevertProc", RevertProc },
- { "TruncateGameProc", TruncateGameProc },
- { "MoveNowProc", MoveNowProc },
- { "RetractMoveProc", RetractMoveProc },
+ // { "StopObservingProc", StopObservingProc },
+ // { "StopExaminingProc", StopExaminingProc },
+ // { "BackwardProc", BackwardProc },
+ // { "ForwardProc", ForwardProc },
+ // { "ToStartProc", ToStartProc },
+ // { "ToEndProc", ToEndProc },
+ // { "RevertProc", RevertProc },
+ // { "TruncateGameProc", TruncateGameProc },
+ // { "MoveNowProc", MoveNowProc },
+ // { "RetractMoveProc", RetractMoveProc },
{ "AlwaysQueenProc", AlwaysQueenProc },
{ "AnimateDraggingProc", AnimateDraggingProc },
{ "AnimateMovingProc", AnimateMovingProc },
{ "AutosaveProc", AutosaveProc },
{ "BlindfoldProc", BlindfoldProc },
{ "FlashMovesProc", FlashMovesProc },
- { "FlipViewProc", FlipViewProc },
+ // { "FlipViewProc", FlipViewProc },
{ "GetMoveListProc", GetMoveListProc },
#if HIGHDRAG
{ "HighlightDraggingProc", HighlightDraggingProc },
{ "ShowThinkingProc", ShowThinkingProc },
{ "HideThinkingProc", HideThinkingProc },
{ "TestLegalityProc", TestLegalityProc },
- { "InfoProc", InfoProc },
- { "ManProc", ManProc },
- { "HintProc", HintProc },
- { "BookProc", BookProc },
+ // { "InfoProc", InfoProc },
+ // { "ManProc", ManProc },
+ // { "HintProc", HintProc },
+ // { "BookProc", BookProc },
{ "AboutGameProc", AboutGameProc },
{ "DebugProc", DebugProc },
{ "NothingProc", NothingProc },
{ "SettingsPopDown", (XtActionProc) SettingsPopDown },
};
-char globalTranslations[] =
- ":<Key>R: ResignProc() \n \
- :<Key>F: ToEndProc() \n \
- :<Key>f: ForwardProc() \n \
- :<Key>B: ToStartProc() \n \
- :<Key>b: BackwardProc() \n \
- :<Key>d: DrawProc() \n \
- :<Key>t: CallFlagProc() \n \
- :<Key>i: Iconify() \n \
- :<Key>c: Iconify() \n \
- :<Key>v: FlipViewProc() \n \
- <KeyDown>Control_L: BackwardProc() \n \
- <KeyUp>Control_L: ForwardProc() \n \
- <KeyDown>Control_R: BackwardProc() \n \
- <KeyUp>Control_R: ForwardProc() \n \
- Shift<Key>1: AskQuestionProc(\"Direct command\",\
- \"Send to chess program:\",,1) \n \
- Shift<Key>2: AskQuestionProc(\"Direct command\",\
- \"Send to second chess program:\",,2) \n";
-
-char boardTranslations[] =
- "<Btn1Down>: HandleUserMove() \n \
- <Btn1Up>: HandleUserMove() \n \
- <Btn1Motion>: AnimateUserMove() \n \
- Shift<Btn2Down>: XawPositionSimpleMenu(menuB) XawPositionSimpleMenu(menuD)\
- PieceMenuPopup(menuB) \n \
- Any<Btn2Down>: XawPositionSimpleMenu(menuW) XawPositionSimpleMenu(menuD) \
- PieceMenuPopup(menuW) \n \
- Shift<Btn3Down>: XawPositionSimpleMenu(menuW) XawPositionSimpleMenu(menuD)\
- PieceMenuPopup(menuW) \n \
- Any<Btn3Down>: XawPositionSimpleMenu(menuB) XawPositionSimpleMenu(menuD) \
- PieceMenuPopup(menuB) \n";
-
-char whiteTranslations[] = "<BtnDown>: WhiteClock()\n";
-char blackTranslations[] = "<BtnDown>: BlackClock()\n";
char ICSInputTranslations[] =
"<Key>Return: EnterKeyProc() \n";
NULL
};
-
-/* Max possible square size */
-#define MAXSQSIZE 256
-
-static int xpm_avail[MAXSQSIZE];
-
-#ifdef HAVE_DIR_STRUCT
-
-/* Extract piece size from filename */
-static int
-xpm_getsize(name, len, ext)
- char *name;
- int len;
- char *ext;
-{
- char *p, *d;
- char buf[10];
-
- if (len < 4)
- return 0;
-
- if ((p=strchr(name, '.')) == NULL ||
- StrCaseCmp(p+1, ext) != 0)
- return 0;
-
- p = name + 3;
- d = buf;
-
- while (*p && isdigit(*p))
- *(d++) = *(p++);
-
- *d = 0;
- return atoi(buf);
-}
-
-/* Setup xpm_avail */
-static int
-xpm_getavail(dirname, ext)
- char *dirname;
- char *ext;
-{
- DIR *dir;
- struct dirent *ent;
- int i;
-
- for (i=0; i<MAXSQSIZE; ++i)
- xpm_avail[i] = 0;
-
- if (appData.debugMode)
- fprintf(stderr, "XPM dir:%s:ext:%s:\n", dirname, ext);
-
- dir = opendir(dirname);
- if (!dir)
- {
- fprintf(stderr, _("%s: Can't access XPM directory %s\n"),
- programName, dirname);
- exit(1);
- }
-
- while ((ent=readdir(dir)) != NULL) {
- i = xpm_getsize(ent->d_name, NAMLEN(ent), ext);
- if (i > 0 && i < MAXSQSIZE)
- xpm_avail[i] = 1;
- }
-
- closedir(dir);
-
- return 0;
-}
-
-void
-xpm_print_avail(fp, ext)
- FILE *fp;
- char *ext;
-{
- int i;
-
- fprintf(fp, _("Available `%s' sizes:\n"), ext);
- for (i=1; i<MAXSQSIZE; ++i) {
- if (xpm_avail[i])
- printf("%d\n", i);
- }
-}
-
-/* Return XPM piecesize closest to size */
-int
-xpm_closest_to(dirname, size, ext)
- char *dirname;
- int size;
- char *ext;
-{
- int i;
- int sm_diff = MAXSQSIZE;
- int sm_index = 0;
- int diff;
-
- xpm_getavail(dirname, ext);
-
- if (appData.debugMode)
- xpm_print_avail(stderr, ext);
-
- for (i=1; i<MAXSQSIZE; ++i) {
- if (xpm_avail[i]) {
- diff = size - i;
- diff = (diff<0) ? -diff : diff;
- if (diff < sm_diff) {
- sm_diff = diff;
- sm_index = i;
- }
- }
- }
-
- if (!sm_index) {
- fprintf(stderr, _("Error: No `%s' files!\n"), ext);
- exit(1);
- }
-
- return sm_index;
-}
-#else /* !HAVE_DIR_STRUCT */
-/* If we are on a system without a DIR struct, we can't
- read the directory, so we can't collect a list of
- filenames, etc., so we can't do any size-fitting. */
-int
-xpm_closest_to(dirname, size, ext)
- char *dirname;
- int size;
- char *ext;
-{
- fprintf(stderr, _("\
-Warning: No DIR structure found on this system --\n\
- Unable to autosize for XPM/XIM pieces.\n\
- Please report this error to frankm@hiwaay.net.\n\
- Include system type & operating system in message.\n"));
- return size;
-}
-#endif /* HAVE_DIR_STRUCT */
-
static char *cnames[9] = { "black", "red", "green", "yellow", "blue",
"magenta", "cyan", "white" };
typedef struct {
XtGeometryResult gres;
int i;
- // if(!formWidget) return;
-
- /*
- * Enable shell resizing.
- */
-// shellArgs[0].value = (XtArgVal) &w;
-// shellArgs[1].value = (XtArgVal) &h;
-// XtGetValues(shellWidget, shellArgs, 2);
-//
-// shellArgs[4].value = 2*w; shellArgs[2].value = 10;
-// shellArgs[5].value = 2*h; shellArgs[3].value = 10;
-// XtSetValues(shellWidget, &shellArgs[2], 4);
-//
-// XtSetArg(args[0], XtNdefaultDistance, &sep);
-// XtGetValues(formWidget, args, 1);
-
- boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap);
+ boardWidth = lineGap + BOARD_WIDTH * (squareSize + lineGap);
boardHeight = lineGap + BOARD_HEIGHT * (squareSize + lineGap);
-// XtSetArg(args[0], XtNwidth, boardWidth);
-// XtSetArg(args[1], XtNheight, boardHeight);
-// XtSetValues(boardWidget, args, 2);
-
timerWidth = (boardWidth - sep) / 2;
-// XtSetArg(args[0], XtNwidth, timerWidth);
-// XtSetValues(whiteTimerWidget, args, 1);
-// XtSetValues(blackTimerWidget, args, 1);
-//
-// XawFormDoLayout(formWidget, False);
- if (appData.titleInWindow) {
+ if (appData.titleInWindow)
+ {
i = 0;
-// XtSetArg(args[i], XtNborderWidth, &bor); i++;
-// XtSetArg(args[i], XtNheight, &h); i++;
-// XtGetValues(titleWidget, args, i);
- if (smallLayout) {
+ if (smallLayout)
+ {
w = boardWidth - 2*bor;
- } else {
-// XtSetArg(args[0], XtNwidth, &w);
-// XtGetValues(menuBarWidget, args, 1);
+ }
+ else
+ {
w = boardWidth - w - sep - 2*bor - 2; // WIDTH_FUDGE
- }
+ }
+ }
-// gres = XtMakeResizeRequest(titleWidget, w, h, &wr, &hr);
-// if (gres != XtGeometryYes && appData.debugMode) {
-// fprintf(stderr,
-// _("%s: titleWidget geometry error %d %d %d %d %d\n"),
-// programName, gres, w, h, wr, hr);
-// }
- }
if(!formWidget) return;
- // XawFormDoLayout(formWidget, True);
-
/*
* Inhibit shell resizing.
*/
- shellArgs[0].value = w = (XtArgVal) boardWidth + marginW;
- shellArgs[1].value = h = (XtArgVal) boardHeight + marginH;
- shellArgs[4].value = shellArgs[2].value = w;
- shellArgs[5].value = shellArgs[3].value = h;
- // XtSetValues(shellWidget, &shellArgs[0], 6);
// [HGM] pieces: tailor piece bitmaps to needs of specific variant
// (only for xpm)
}
#endif
+void EscapeExpand(char *p, char *q)
+{ // [HGM] initstring: routine to shape up string arguments
+ while(*p++ = *q++) if(p[-1] == '\\')
+ switch(*q++) {
+ case 'n': p[-1] = '\n'; break;
+ case 'r': p[-1] = '\r'; break;
+ case 't': p[-1] = '\t'; break;
+ case '\\': p[-1] = '\\'; break;
+ case 0: *p = 0; return;
+ default: p[-1] = q[-1]; break;
+ }
+}
+
int
main(argc, argv)
int argc;
#endif
#endif
-
setbuf(stdout, NULL);
setbuf(stderr, NULL);
debugFP = stderr;
XtNumber(shellOptions),
&argc, argv, xboardResources, NULL, 0);
+
+ /* set up GTK */
gtk_init (&argc, &argv);
- /* parse glade file */
+ /* parse glade file to build widgets */
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "gtk-interface.xml", NULL);
+ /* test if everything worked ok */
+
GUI_Window = GTK_WIDGET (gtk_builder_get_object (builder, "MainWindow"));
if(!GUI_Window) printf("Error: gtk_builder didn't work!\n");
GUI_Board = GTK_WIDGET (gtk_builder_get_object (builder, "Board"));
if(!GUI_Blackclock) printf("Error: gtk_builder didn't work!\n");
gtk_builder_connect_signals (builder, NULL);
+
// don't unref the builder, since we use it to get references to widgets
// g_object_unref (G_OBJECT (builder));
clientResources, XtNumber(clientResources),
NULL, 0);
+ { // [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.secondInitString);
+ appData.secondInitString = strdup(buf);
+ EscapeExpand(buf, appData.firstComputerString);
+ appData.firstComputerString = strdup(buf);
+ EscapeExpand(buf, appData.secondComputerString);
+ appData.secondComputerString = strdup(buf);
+ }
+
+ if ((chessDir = (char *) getenv("CHESSDIR")) == NULL) {
+ chessDir = ".";
+ } else {
+ if (chdir(chessDir) != 0) {
+ fprintf(stderr, _("%s: can't cd to CHESSDIR: "), programName);
+ perror(chessDir);
+ exit(1);
+ }
+ }
+
if (appData.debugMode && appData.nameOfDebugFile && strcmp(appData.nameOfDebugFile, "stderr")) {
/* [DM] debug info to file [HGM] make the filename a command-line option, and allow it to remain stderr */
if ((debugFP = fopen(appData.nameOfDebugFile, "w")) == NULL) {
gameInfo.variant = StringToVariant(appData.variant);
InitPosition(FALSE);
#if 0
+
/*
* Determine boardSize
*/
gameInfo.boardWidth = gameInfo.boardHeight = 8; // [HGM] boardsize: make sure we start as 8x8
-//#ifndef IDSIZE
+ //#ifndef IDSIZE
// [HGM] as long as we have not created the possibility to change size while running, start with requested size
gameInfo.boardWidth = appData.NrFiles > 0 ? appData.NrFiles : 8;
gameInfo.boardHeight = appData.NrRanks > 0 ? appData.NrRanks : 8;
} else {
layoutName = "normalLayout";
}
- /* Outer layoutWidget is there only to provide a name for use in
- resources that depend on the layout style */
- layoutWidget =
- XtCreateManagedWidget(layoutName, formWidgetClass, shellWidget,
- layoutArgs, XtNumber(layoutArgs));
- formWidget =
- XtCreateManagedWidget("form", formWidgetClass, layoutWidget,
- formArgs, XtNumber(formArgs));
- XtSetArg(args[0], XtNdefaultDistance, &sep);
- XtGetValues(formWidget, args, 1);
-
- j = 0;
- widgetList[j++] = menuBarWidget = CreateMenuBar(menuBar);
- XtSetArg(args[0], XtNtop, XtChainTop);
- XtSetArg(args[1], XtNbottom, XtChainTop);
- XtSetValues(menuBarWidget, args, 2);
-
- widgetList[j++] = whiteTimerWidget =
- XtCreateWidget("whiteTime", labelWidgetClass,
- formWidget, timerArgs, XtNumber(timerArgs));
- XtSetArg(args[0], XtNfont, clockFontStruct);
- XtSetArg(args[1], XtNtop, XtChainTop);
- XtSetArg(args[2], XtNbottom, XtChainTop);
- XtSetValues(whiteTimerWidget, args, 3);
-
- widgetList[j++] = blackTimerWidget =
- XtCreateWidget("blackTime", labelWidgetClass,
- formWidget, timerArgs, XtNumber(timerArgs));
- XtSetArg(args[0], XtNfont, clockFontStruct);
- XtSetArg(args[1], XtNtop, XtChainTop);
- XtSetArg(args[2], XtNbottom, XtChainTop);
- XtSetValues(blackTimerWidget, args, 3);
if (appData.titleInWindow) {
- widgetList[j++] = titleWidget =
- XtCreateWidget("title", labelWidgetClass, formWidget,
- titleArgs, XtNumber(titleArgs));
- XtSetArg(args[0], XtNtop, XtChainTop);
- XtSetArg(args[1], XtNbottom, XtChainTop);
- XtSetValues(titleWidget, args, 2);
+ /* todo check what this appdata does */
}
if (appData.showButtonBar) {
- widgetList[j++] = buttonBarWidget = CreateButtonBar(buttonBar);
- XtSetArg(args[0], XtNleft, XtChainRight); // [HGM] glue to right window edge
- XtSetArg(args[1], XtNright, XtChainRight); // for good run-time sizing
- XtSetArg(args[2], XtNtop, XtChainTop);
- XtSetArg(args[3], XtNbottom, XtChainTop);
- XtSetValues(buttonBarWidget, args, 4);
- }
-
-// widgetList[j++] = messageWidget =
-// XtCreateWidget("message", labelWidgetClass, formWidget,
-// messageArgs, XtNumber(messageArgs));
-// XtSetArg(args[0], XtNtop, XtChainTop);
-// XtSetArg(args[1], XtNbottom, XtChainTop);
-// XtSetValues(messageWidget, args, 2);
-//
-// widgetList[j++] = boardWidget =
-// XtCreateWidget("board", widgetClass, formWidget, boardArgs,
-// XtNumber(boardArgs));
-//
-// XtManageChildren(widgetList, j);
-//
-// timerWidth = (boardWidth - sep) / 2;
-// XtSetArg(args[0], XtNwidth, timerWidth);
-// XtSetValues(whiteTimerWidget, args, 1);
-// XtSetValues(blackTimerWidget, args, 1);
-//
-// XtSetArg(args[0], XtNbackground, &timerBackgroundPixel);
-// XtSetArg(args[1], XtNforeground, &timerForegroundPixel);
-// XtGetValues(whiteTimerWidget, args, 2);
-//
-// if (appData.showButtonBar) {
-// XtSetArg(args[0], XtNbackground, &buttonBackgroundPixel);
-// XtSetArg(args[1], XtNforeground, &buttonForegroundPixel);
-// XtGetValues(XtNameToWidget(buttonBarWidget, PAUSE_BUTTON), args, 2);
-// }
-//
+ /* TODO hide button bar if requested */
+ }
/*
* gtk set properties of widgets
/* end gtk set properties of widgets */
- /*
- * formWidget uses these constraints but they are stored
- * in the children.
- */
-// i = 0;
-// XtSetArg(args[i], XtNfromHoriz, 0); i++;
-// XtSetValues(menuBarWidget, args, i);
-// if (appData.titleInWindow) {
-// if (smallLayout) {
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, menuBarWidget); i++;
-// XtSetValues(whiteTimerWidget, args, i);
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, menuBarWidget); i++;
-// XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++;
-// XtSetValues(blackTimerWidget, args, i);
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++;
-// XtSetArg(args[i], XtNjustify, XtJustifyLeft); i++;
-// XtSetValues(titleWidget, args, i);
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, titleWidget); i++;
-// XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++;
-// XtSetValues(messageWidget, args, i);
-// if (appData.showButtonBar) {
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, titleWidget); i++;
-// XtSetArg(args[i], XtNfromHoriz, messageWidget); i++;
-// XtSetValues(buttonBarWidget, args, i);
-// }
-// } else {
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, titleWidget); i++;
-// XtSetValues(whiteTimerWidget, args, i);
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, titleWidget); i++;
-// XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++;
-// XtSetValues(blackTimerWidget, args, i);
-// i = 0;
-// XtSetArg(args[i], XtNfromHoriz, menuBarWidget); i++;
-// XtSetValues(titleWidget, args, i);
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++;
-// XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++;
-// XtSetValues(messageWidget, args, i);
-// if (appData.showButtonBar) {
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++;
-// XtSetArg(args[i], XtNfromHoriz, messageWidget); i++;
-// XtSetValues(buttonBarWidget, args, i);
-// }
-// }
-// } else {
-//
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, menuBarWidget); i++;
-// XtSetValues(whiteTimerWidget, args, i);
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, menuBarWidget); i++;
-// XtSetArg(args[i], XtNfromHoriz, whiteTimerWidget); i++;
-// XtSetValues(blackTimerWidget, args, i);
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++;
-// XtSetArg(args[i], XtNresizable, (XtArgVal) True); i++;
-// XtSetValues(messageWidget, args, i);
-// if (appData.showButtonBar) {
-// i = 0;
-// XtSetArg(args[i], XtNfromVert, whiteTimerWidget); i++;
-// XtSetArg(args[i], XtNfromHoriz, messageWidget); i++;
-// XtSetValues(buttonBarWidget, args, i);
-// }
-// }
-// i = 0;
-// XtSetArg(args[0], XtNfromVert, messageWidget);
-// XtSetArg(args[1], XtNtop, XtChainTop);
-// XtSetArg(args[2], XtNbottom, XtChainBottom);
-// XtSetArg(args[3], XtNleft, XtChainLeft);
-// XtSetArg(args[4], XtNright, XtChainRight);
-// XtSetValues(boardWidget, args, 5);
-//
-// XtRealizeWidget(shellWidget);
-//
-
- /*
- * Correct the width of the message and title widgets.
- * It is not known why some systems need the extra fudge term.
- * The value "2" is probably larger than needed.
- */
- // XawFormDoLayout(formWidget, False);
+ if (appData.titleInWindow)
+ {
+ if (smallLayout)
+ {
+ /* make it small */
+ if (appData.showButtonBar)
+ {
-#define WIDTH_FUDGE 2
-// i = 0;
-// XtSetArg(args[i], XtNborderWidth, &bor); i++;
-// XtSetArg(args[i], XtNheight, &h); i++;
-// XtGetValues(messageWidget, args, i);
- if (appData.showButtonBar) {
-// i = 0;
-// XtSetArg(args[i], XtNwidth, &w); i++;
-// XtGetValues(buttonBarWidget, args, i);
-// w = boardWidth - w - sep - 2*bor - WIDTH_FUDGE;
- } else {
-// w = boardWidth - 2*bor + 1; /*!! +1 compensates for kludge below */
- }
-//
-// gres = XtMakeResizeRequest(messageWidget, w, h, &wr, &hr);
- if (gres != XtGeometryYes && appData.debugMode) {
- fprintf(stderr, _("%s: messageWidget geometry error %d %d %d %d %d\n"),
- programName, gres, w, h, wr, hr);
- }
-
- /* !! Horrible hack to work around bug in XFree86 4.0.1 (X11R6.4.3) */
- /* The size used for the child widget in layout lags one resize behind
- its true size, so we resize a second time, 1 pixel smaller. Yeech! */
- w--;
-// gres = XtMakeResizeRequest(messageWidget, w, h, &wr, &hr);
- if (gres != XtGeometryYes && appData.debugMode) {
- fprintf(stderr, _("%s: messageWidget geometry error %d %d %d %d %d\n"),
- programName, gres, w, h, wr, hr);
- }
- /* !! end hack */
-// XtSetArg(args[0], XtNleft, XtChainLeft); // [HGM] glue ends for good run-time sizing
-// XtSetArg(args[1], XtNright, XtChainRight);
-// XtSetValues(messageWidget, args, 2);
-//
- if (appData.titleInWindow) {
- i = 0;
-// XtSetArg(args[i], XtNborderWidth, &bor); i++;
-// XtSetArg(args[i], XtNheight, &h); i++;
-// XtGetValues(titleWidget, args, i);
- if (smallLayout) {
- w = boardWidth - 2*bor;
- } else {
-// XtSetArg(args[0], XtNwidth, &w);
-// XtGetValues(menuBarWidget, args, 1);
-// w = boardWidth - w - sep - 2*bor - WIDTH_FUDGE;
- }
+ }
+ }
+ else
+ {
+ if (appData.showButtonBar)
+ {
+ }
+ }
+ }
+ else
+ {
+ }
-// gres = XtMakeResizeRequest(titleWidget, w, h, &wr, &hr);
- if (gres != XtGeometryYes && appData.debugMode) {
- fprintf(stderr,
- _("%s: titleWidget geometry error %d %d %d %d %d\n"),
- programName, gres, w, h, wr, hr);
- }
- }
-// XawFormDoLayout(formWidget, True);
-//
-// xBoardWindow = XtWindow(boardWidget);
-//
// [HGM] it seems the layout code ends here, but perhaps the color stuff is size independent and would
// not need to go into InitDrawingSizes().
#endif
- if (appData.alwaysPromoteToQueen) {
+ /* set some checkboxes in the menu according to appData */
+
+ if (appData.alwaysPromoteToQueen)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Always Queen")),TRUE);
- }
- if (appData.animateDragging) {
+
+ if (appData.animateDragging)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Animate Dragging")),TRUE);
- }
- if (appData.animate) {
+
+ if (appData.animate)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Animate Moving")),TRUE);
- }
- if (appData.autoComment) {
+
+ if (appData.autoComment)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Auto Comment")),TRUE);
- }
- if (appData.autoCallFlag) {
+
+ if (appData.autoCallFlag)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Auto Flag")),TRUE);
- }
- if (appData.autoFlipView) {
+
+ if (appData.autoFlipView)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Auto Flip View")),TRUE);
- }
- if (appData.autoObserve) {
+
+ if (appData.autoObserve)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Auto Observe")),TRUE);
- }
- if (appData.autoRaiseBoard) {
+
+ if (appData.autoRaiseBoard)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Auto Raise Board")),TRUE);
- }
- if (appData.autoSaveGames) {
- gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Auto Save")),TRUE);
- }
- if (appData.saveGameFile[0] != NULLCHAR) {
- /* Can't turn this off from menu */
+
+ if (appData.autoSaveGames)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Auto Save")),TRUE);
- gtk_action_set_sensitive(GTK_ACTION (gtk_builder_get_object (builder, "menuOptions.Auto Save")),FALSE);
- }
- if (appData.blindfold) {
+
+ if (appData.saveGameFile[0] != NULLCHAR)
+ {
+ /* Can't turn this off from menu */
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Auto Save")),TRUE);
+ gtk_action_set_sensitive(GTK_ACTION (gtk_builder_get_object (builder, "menuOptions.Auto Save")),FALSE);
+ }
+
+ if (appData.blindfold)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Blindfold")),TRUE);
- }
- if (appData.flashCount > 0) {
+
+ if (appData.flashCount > 0)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Flash Moves")),TRUE);
- }
- if (appData.getMoveList) {
+
+ if (appData.getMoveList)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Get Move List")),TRUE);
- }
+
#if HIGHDRAG
- if (appData.highlightDragging) {
+ if (appData.highlightDragging)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Highlight Dragging")),TRUE);
- }
#endif
- if (appData.highlightLastMove) {
+
+ if (appData.highlightLastMove)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Highlight Last Move")),TRUE);
- }
- if (appData.icsAlarm) {
+
+ if (appData.icsAlarm)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.ICS Alarm")),TRUE);
- }
- if (appData.ringBellAfterMoves) {
+
+ if (appData.ringBellAfterMoves)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Move Sound")),TRUE);
- }
- if (appData.oldSaveStyle) {
+
+ if (appData.oldSaveStyle)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Old Save Style")),TRUE);
- }
- if (appData.periodicUpdates) {
+
+ if (appData.periodicUpdates)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Periodic Updates")),TRUE);
- }
- if (appData.ponderNextMove) {
+
+ if (appData.ponderNextMove)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Ponder Next Move")),TRUE);
- }
- if (appData.popupExitMessage) {
+
+ if (appData.popupExitMessage)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Popup Exit Message")),TRUE);
- }
- if (appData.popupMoveErrors) {
+
+ if (appData.popupMoveErrors)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Popup Move Errors")),TRUE);
- }
- if (appData.premove) {
+
+ if (appData.premove)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Premove")),TRUE);
- }
- if (appData.quietPlay) {
+
+ if (appData.quietPlay)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Quit Play")),TRUE);
- }
- if (appData.showCoords) {
+
+ if (appData.showCoords)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Show Coords")),TRUE);
- }
- if (appData.showThinking) {
+
+ if (appData.showThinking)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Show Thinking")),TRUE);
- }
- if (appData.testLegality) {
+
+ if (appData.testLegality)
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "menuOptions.Test Legality")),TRUE);
- }
- /*
- * Create an icon.
- */
-// ReadBitmap(&wIconPixmap, "icon_white.bm",
-// icon_white_bits, icon_white_width, icon_white_height);
-// ReadBitmap(&bIconPixmap, "icon_black.bm",
-// icon_black_bits, icon_black_width, icon_black_height);
-// iconPixmap = wIconPixmap;
-// i = 0;
-// XtSetArg(args[i], XtNiconPixmap, iconPixmap); i++;
-// XtSetValues(shellWidget, args, i);
-//
+ /* end setting check boxes */
+
/* load square colors */
SVGLightSquare = load_pixbuf("svg/LightSquare.svg",squareSize);
gtk_window_set_icon(GTK_WINDOW(GUI_Window),WindowIcon);
/* do resizing to a fixed aspect ratio */
- GUI_SetAspectRatio(0.8);
+
+ {
+ int i,j;
+ }
+ GUI_SetAspectRatio(0.7);
/* realize window */
gtk_widget_show (GUI_Window);
CreateGCs();
CreatePieces();
-
CreatePieceMenus();
if (appData.animate || appData.animateDragging)
CreateAnimVars();
-// XtAugmentTranslations(formWidget,
-// XtParseTranslationTable(globalTranslations));
-// XtAugmentTranslations(boardWidget,
-// XtParseTranslationTable(boardTranslations));
-// XtAugmentTranslations(whiteTimerWidget,
-// XtParseTranslationTable(whiteTranslations));
-// XtAugmentTranslations(blackTimerWidget,
-// XtParseTranslationTable(blackTranslations));
-//
InitBackEnd2();
if (errorExitStatus == -1) {
return;
}
-typedef struct {
- char *name;
- gboolean value;
-} Enables;
-
void
SetMenuEnables(enab)
Enables *enab;
}
}
-Enables icsEnables[] = {
- { "menuFile.Mail Move", False },
- { "menuFile.Reload CMail Message", False },
- { "menuMode.Machine Black", False },
- { "menuMode.Machine White", False },
- { "menuMode.Analysis Mode", False },
- { "menuMode.Analyze File", False },
- { "menuMode.Two Machines", False },
-#ifndef ZIPPY
- { "menuHelp.Hint", False },
- { "menuHelp.Book", False },
- { "menuStep.Move Now", False },
- { "menuOptions.Periodic Updates", False },
- { "menuOptions.Hide Thinking", False },
- { "menuOptions.Ponder Next Move", False },
-#endif
- { NULL, False }
-};
-
-Enables ncpEnables[] = {
- { "menuFile.Mail Move", False },
- { "menuFile.Reload CMail Message", False },
- { "menuMode.Machine White", False },
- { "menuMode.Machine Black", False },
- { "menuMode.Analysis Mode", False },
- { "menuMode.Analyze File", False },
- { "menuMode.Two Machines", False },
- { "menuMode.ICS Client", False },
- { "menuMode.ICS Input Box", False },
- { "Action", False },
- { "menuStep.Revert", False },
- { "menuStep.Move Now", False },
- { "menuStep.Retract Move", False },
- { "menuOptions.Auto Comment", False },
- { "menuOptions.Auto Flag", False },
- { "menuOptions.Auto Flip View", False },
- { "menuOptions.Auto Observe", False },
- { "menuOptions.Auto Raise Board", False },
- { "menuOptions.Get Move List", False },
- { "menuOptions.ICS Alarm", False },
- { "menuOptions.Move Sound", False },
- { "menuOptions.Quiet Play", False },
- { "menuOptions.Hide Thinking", False },
- { "menuOptions.Periodic Updates", False },
- { "menuOptions.Ponder Next Move", False },
- { "menuHelp.Hint", False },
- { "menuHelp.Book", False },
- { NULL, False }
-};
-
-Enables gnuEnables[] = {
- { "menuMode.ICS Client", False },
- { "menuMode.ICS Input Box", False },
- { "menuAction.Accept", False },
- { "menuAction.Decline", False },
- { "menuAction.Rematch", False },
- { "menuAction.Adjourn", False },
- { "menuAction.Stop Examining", False },
- { "menuAction.Stop Observing", False },
- { "menuStep.Revert", False },
- { "menuOptions.Auto Comment", False },
- { "menuOptions.Auto Observe", False },
- { "menuOptions.Auto Raise Board", False },
- { "menuOptions.Get Move List", False },
- { "menuOptions.Premove", False },
- { "menuOptions.Quiet Play", False },
-
- /* The next two options rely on SetCmailMode being called *after* */
- /* SetGNUMode so that when GNU is being used to give hints these */
- /* menu options are still available */
-
- { "menuFile.Mail Move", False },
- { "menuFile.Reload CMail Message", False },
- { NULL, False }
-};
-
-Enables cmailEnables[] = {
- { "Action", True },
- { "menuAction.Call Flag", False },
- { "menuAction.Draw", True },
- { "menuAction.Adjourn", False },
- { "menuAction.Abort", False },
- { "menuAction.Stop Observing", False },
- { "menuAction.Stop Examining", False },
- { "menuFile.Mail Move", True },
- { "menuFile.Reload CMail Message", True },
- { NULL, False }
-};
-
-Enables trainingOnEnables[] = {
- { "menuMode.Edit Comment", False },
- { "menuMode.Pause", False },
- { "menuStep.Forward", False },
- { "menuStep.Backward", False },
- { "menuStep.Forward to End", False },
- { "menuStep.Back to Start", False },
- { "menuStep.Move Now", False },
- { "menuStep.Truncate Game", False },
- { NULL, False }
-};
-
-Enables trainingOffEnables[] = {
- { "menuMode.Edit Comment", True },
- { "menuMode.Pause", True },
- { "menuStep.Forward", True },
- { "menuStep.Backward", True },
- { "menuStep.Forward to End", True },
- { "menuStep.Back to Start", True },
- { "menuStep.Move Now", True },
- { "menuStep.Truncate Game", True },
- { NULL, False }
-};
-
-Enables machineThinkingEnables[] = {
- { "menuFile.Load Game", False },
- { "menuFile.Load Next Game", False },
- { "menuFile.Load Previous Game", False },
- { "menuFile.Reload Same Game", False },
- { "menuFile.Paste Game", False },
- { "menuFile.Load Position", False },
- { "menuFile.Load Next Position", False },
- { "menuFile.Load Previous Position", False },
- { "menuFile.Reload Same Position", False },
- { "menuFile.Paste Position", False },
- { "menuMode.Machine White", False },
- { "menuMode.Machine Black", False },
- { "menuMode.Two Machines", False },
- { "menuStep.Retract Move", False },
- { NULL, False }
-};
-
-Enables userThinkingEnables[] = {
- { "menuFile.Load Game", True },
- { "menuFile.Load Next Game", True },
- { "menuFile.Load Previous Game", True },
- { "menuFile.Reload Same Game", True },
- { "menuFile.Paste Game", True },
- { "menuFile.Load Position", True },
- { "menuFile.Load Next Position", True },
- { "menuFile.Load Previous Position", True },
- { "menuFile.Reload Same Position", True },
- { "menuFile.Paste Position", True },
- { "menuMode.Machine White", True },
- { "menuMode.Machine Black", True },
- { "menuMode.Two Machines", True },
- { "menuStep.Retract Move", True },
- { NULL, False }
-};
-
void SetICSMode()
{
SetMenuEnables(icsEnables);
#ifdef ZIPPY
if (appData.zippyPlay && !appData.noChessProgram) /* [DM] icsEngineAnalyze */
- XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Analysis Mode"), True);
+ {}; // XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Analysis Mode"), True);
#endif
}
{
SetMenuEnables(trainingOnEnables);
if (appData.showButtonBar) {
- XtSetSensitive(buttonBarWidget, False);
+ // XtSetSensitive(buttonBarWidget, False);
}
CommentPopDown();
}
{
SetMenuEnables(trainingOffEnables);
if (appData.showButtonBar) {
- XtSetSensitive(buttonBarWidget, True);
+ // XtSetSensitive(buttonBarWidget, True);
}
}
case MachinePlaysBlack:
case MachinePlaysWhite:
case TwoMachinesPlay:
- XtSetSensitive(XtNameToWidget(menuBarWidget,
- ModeToWidgetName(gameMode)), True);
+// XtSetSensitive(XtNameToWidget(menuBarWidget,
+// ModeToWidgetName(gameMode)), True);
break;
default:
break;
coordGC = XtGetGC(shellWidget, value_mask, &gc_values);
XSetFont(xDisplay, coordGC, coordFontID);
- // [HGM] make font for holdings counts (white on black0
- gc_values.foreground = XWhitePixel(xDisplay, xScreen);
- gc_values.background = XBlackPixel(xDisplay, xScreen);
- countGC = XtGetGC(shellWidget, value_mask, &gc_values);
- XSetFont(xDisplay, countGC, countFontID);
-
if (appData.monoMode) {
gc_values.foreground = XWhitePixel(xDisplay, xScreen);
gc_values.background = XBlackPixel(xDisplay, xScreen);
WhitePawn, WhiteKnight, WhiteBishop, WhiteRook, WhiteQueen, WhiteKing,
BlackPawn, BlackKnight, BlackBishop, BlackRook, BlackQueen, BlackKing,
*/
+ int i;
+
+ /* get some defaults going */
+ for(i=WhitePawn; i<DemotePiece+1; i++)
+ SVGpieces[i] = load_pixbuf("svg/NeutralSquare.svg",squareSize);
+
SVGpieces[WhitePawn] = load_pixbuf("svg/WhitePawn.svg",squareSize);
SVGpieces[WhiteKnight] = load_pixbuf("svg/WhiteKnight.svg",squareSize);
Drawable dest;
{
GdkPixbuf *pb;
- switch (color) {
- case 1: /* light */
- pb = SVGLightSquare;
- break;
- case 0: /* dark */
- pb = SVGDarkSquare;
- break;
- case 2: /* neutral */
- default:
- pb = SVGNeutralSquare;
- break;
- }
+
+ switch (color)
+ {
+ case 0: /* dark */
+ pb = SVGDarkSquare;
+ break;
+ case 1: /* light */
+ pb = SVGLightSquare;
+ break;
+ case 2: /* neutral */
+ default:
+ pb = SVGNeutralSquare;
+ break;
+ }
gdk_draw_pixbuf(GDK_WINDOW(GUI_Board->window),NULL,pb,0,0,x,y,-1,-1, GDK_RGB_DITHER_NORMAL, 0, 0);
+ return;
}
static void DrawPiece(piece, square_color, x, y, dest)
int square_color, x, y;
Drawable dest;
{
+ /* redraw background, since piece might be transparent in some areas */
+ BlankSquare(x,y,square_color,piece,dest);
+
+ /* draw piece */
gdk_draw_pixbuf(GDK_WINDOW(GUI_Board->window),NULL,
GDK_PIXBUF(SVGpieces[piece]),0,0,x,y,-1,-1,
GDK_RGB_DITHER_NORMAL, 0, 0);
int row, column, do_flash;
ChessSquare piece;
{
- int square_color, x, y, direction, font_ascent, font_descent;
+ int square_color, x, y;
int i;
char string[2];
- XCharStruct overall;
int flash_delay;
/* Calculate delay in milliseconds (2-delays per complete flash) */
// [HGM] print piece counts next to holdings
string[1] = NULLCHAR;
- if (column == (flipView ? BOARD_LEFT-1 : BOARD_RGHT) && piece > 1 )
- {
- string[0] = '0' + piece;
- XTextExtents(countFontStruct, string, 1, &direction,
- &font_ascent, &font_descent, &overall);
- if (appData.monoMode)
- {
- XDrawImageString(xDisplay, xBoardWindow, countGC,
- x + squareSize - overall.width - 2,
- y + font_ascent + 1, string, 1);
- }
- else
- {
- XDrawString(xDisplay, xBoardWindow, countGC,
- x + squareSize - overall.width - 2,
- y + font_ascent + 1, string, 1);
- }
- }
- if (column == (flipView ? BOARD_RGHT : BOARD_LEFT-1) && piece > 1)
+ if(piece > 1)
{
+ cairo_text_extents_t extents;
+ cairo_t *cr;
+ int xpos, ypos;
+
+ /* get a cairo_t */
+ cr = gdk_cairo_create (GDK_WINDOW(GUI_Board->window));
+
string[0] = '0' + piece;
- XTextExtents(countFontStruct, string, 1, &direction,
- &font_ascent, &font_descent, &overall);
- if (appData.monoMode)
+
+ /* TODO this has to go into the font-selection */
+ cairo_select_font_face (cr, "Sans",
+ CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+
+ cairo_set_font_size (cr, 12.0);
+ cairo_text_extents (cr, string, &extents);
+
+ if (column == (flipView ? BOARD_LEFT-1 : BOARD_RGHT) )
{
- XDrawImageString(xDisplay, xBoardWindow, countGC,
- x + 2, y + font_ascent + 1, string, 1);
+ xpos= x + squareSize - extents.width - 2;
+ ypos= y + extents.y_bearing + 1;
}
- else
+ if (column == (flipView ? BOARD_RGHT : BOARD_LEFT-1) && piece > 1)
{
- XDrawString(xDisplay, xBoardWindow, countGC,
- x + 2, y + font_ascent + 1, string, 1);
+ xpos= x + 2;
+ ypos = y + extents.y_bearing + 1;
}
+
+ /* TODO mono mode? */
+ cairo_move_to (cr, xpos, ypos);
+ cairo_text_path (cr, string);
+ cairo_set_source_rgb (cr, 1.0, 1.0, 1);
+ cairo_fill_preserve (cr);
+ cairo_set_source_rgb (cr, 0, 0, 0);
+ cairo_set_line_width (cr, 0.1);
+ cairo_stroke (cr);
+
+ /* free memory */
+ cairo_destroy (cr);
}
}
else
}
/* show coordinates if necessary */
- string[1] = NULLCHAR;
- if (appData.showCoords && row == (flipView ? BOARD_HEIGHT-1 : 0)
- && column >= BOARD_LEFT && column < BOARD_RGHT)
+ if(appData.showCoords)
{
- string[0] = 'a' + column - BOARD_LEFT;
- XTextExtents(coordFontStruct, string, 1, &direction,
- &font_ascent, &font_descent, &overall);
- if (appData.monoMode)
- {
- XDrawImageString(xDisplay, xBoardWindow, coordGC,
- x + squareSize - overall.width - 2,
- y + squareSize - font_descent - 1, string, 1);
- }
- else
- {
- XDrawString(xDisplay, xBoardWindow, coordGC,
- x + squareSize - overall.width - 2,
- y + squareSize - font_descent - 1, string, 1);
- }
- }
- if (appData.showCoords && column == (flipView ? BOARD_RGHT-1 : BOARD_LEFT))
- {
- string[0] = ONE + row;
- XTextExtents(coordFontStruct, string, 1, &direction,
- &font_ascent, &font_descent, &overall);
- if (appData.monoMode)
+ cairo_text_extents_t extents;
+ cairo_t *cr;
+ int xpos, ypos;
+
+ /* TODO this has to go into the font-selection */
+ cairo_select_font_face (cr, "Sans",
+ CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size (cr, 12.0);
+
+ string[1] = NULLCHAR;
+
+ /* get a cairo_t */
+ cr = gdk_cairo_create (GDK_WINDOW(GUI_Board->window));
+
+ if (row == (flipView ? BOARD_HEIGHT-1 : 0) &&
+ column >= BOARD_LEFT && column < BOARD_RGHT)
{
- XDrawImageString(xDisplay, xBoardWindow, coordGC,
- x + 2, y + font_ascent + 1, string, 1);
+ string[0] = 'a' + column - BOARD_LEFT;
+ cairo_text_extents (cr, string, &extents);
+
+ xpos = x + squareSize - extents.width - 2;
+ ypos = y + squareSize - extents.height - extents.y_bearing - 1;
+
+ if (appData.monoMode)
+ { /*TODO*/
+ }
+ else
+ {
+ }
+
+ cairo_move_to (cr, xpos, ypos);
+ cairo_text_path (cr, string);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0);
+ cairo_fill_preserve (cr);
+ cairo_set_source_rgb (cr, 0, 1.0, 0);
+ cairo_set_line_width (cr, 0.1);
+ cairo_stroke (cr);
}
- else
+ if ( column == (flipView ? BOARD_RGHT-1 : BOARD_LEFT))
{
- XDrawString(xDisplay, xBoardWindow, coordGC,
- x + 2, y + font_ascent + 1, string, 1);
+
+ string[0] = ONE + row;
+ cairo_text_extents (cr, string, &extents);
+
+ xpos = x + 2;
+ ypos = y + extents.height + 1;
+
+ if (appData.monoMode)
+ { /*TODO*/
+ }
+ else
+ {
+ }
+
+ cairo_move_to (cr, xpos, ypos);
+ cairo_text_path (cr, string);
+ cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
+ cairo_fill_preserve (cr);
+ cairo_set_source_rgb (cr, 0, 0, 1.0);
+ cairo_set_line_width (cr, 0.1);
+ cairo_stroke (cr);
+
}
+ /* free memory */
+ cairo_destroy (cr);
}
return;
static int lastFlipView = 0;
static int lastBoardValid = 0;
static Board lastBoard;
- Arg args[16];
int rrow, rcol;
if (board == NULL) {
board = lastBoard;
}
if (!lastBoardValid || lastFlipView != flipView) {
- XtSetArg(args[0], XtNleftBitmap, (flipView ? xMarkPixmap : None));
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Flip View"),
- args, 1);
+ // XtSetArg(args[0], XtNleftBitmap, (flipView ? xMarkPixmap : None));
+ // XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Flip View"),
+ // args, 1);
}
/*
/* If piece being dragged around board, must redraw that too */
DrawDragPiece();
-}
-
-/*
- * event handler for redrawing the board
- */
-void DrawPositionProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- DrawPosition(True, NULL);
+ return;
}
-
/*
* event handler for parsing user moves
*/
if (promotionUp) {
if (event->type == ButtonPress) {
- XtPopdown(promotionShell);
- XtDestroyWidget(promotionShell);
+// XtPopdown(promotionShell);
+// XtDestroyWidget(promotionShell);
promotionUp = False;
ClearHighlights();
fromX = fromY = -1;
/* [HGM] holdings: next 5 lines: ignore all clicks between board and holdings */
if(event->type == ButtonPress
- && ( x == BOARD_LEFT-1 || x == BOARD_RGHT
- || x == BOARD_LEFT-2 && y < BOARD_HEIGHT-gameInfo.holdingsSize
- || x == BOARD_RGHT+1 && y >= gameInfo.holdingsSize) )
+ && ( x == BOARD_LEFT-1 ||
+ x == BOARD_RGHT ||
+ (x == BOARD_LEFT-2 && y < BOARD_HEIGHT-gameInfo.holdingsSize ) ||
+ (x == BOARD_RGHT+1 && y >= gameInfo.holdingsSize)) )
return;
if (fromX == -1) {
x >= 0 && y >= 0) {
ChessSquare fromP;
ChessSquare toP;
+ int frc;
/* Check if clicking again on the same color piece */
fromP = boards[currentMove][fromY][fromX];
toP = boards[currentMove][y][x];
- if ((WhitePawn <= fromP && fromP < WhiteKing && // [HGM] this test should go, as UserMoveTest now does it.
- WhitePawn <= toP && toP <= WhiteKing) || // For now I made it less critical by exempting King
- (BlackPawn <= fromP && fromP < BlackKing && // moves, to not interfere with FRC castlings.
- BlackPawn <= toP && toP <= BlackKing)) {
+ frc = gameInfo.variant == VariantFischeRandom || gameInfo.variant == VariantCapaRandom;
+ if ((WhitePawn <= fromP && fromP <= WhiteKing && // [HGM] this test should go, as UserMoveTest now does it.
+ WhitePawn <= toP && toP <= WhiteKing &&
+ !(fromP == WhiteKing && toP == WhiteRook && frc)) ||
+ (BlackPawn <= fromP && fromP <= BlackKing &&
+ BlackPawn <= toP && toP <= BlackKing &&
+ !(fromP == BlackKing && toP == BlackRook && frc))) {
/* Clicked again on same color piece -- changed his mind */
second = (x == fromX && y == fromY);
if (appData.highlightDragging) {
{
if (!errorUp) return;
errorUp = False;
- XtPopdown(errorShell);
- XtDestroyWidget(errorShell);
+
+ if(GUI_Error)
+ gtk_widget_destroy(GTK_WIDGET(GUI_Error));
+
if (errorExitStatus != -1) ExitEvent(errorExitStatus);
+
+ return;
}
void ErrorPopUp(title, label, modal)
char *title, *label;
int modal;
{
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(GTK_WINDOW(GUI_Window),
+ GUI_Error = gtk_message_dialog_new(GTK_WINDOW(GUI_Window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
(gchar *)label);
- gtk_window_set_title(GTK_WINDOW(dialog),(gchar *) title);
+ gtk_window_set_title(GTK_WINDOW(GUI_Error),(gchar *) title);
if(modal)
{
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(GTK_WIDGET(dialog));
+ gtk_dialog_run(GTK_DIALOG(GUI_Error));
+ gtk_widget_destroy(GTK_WIDGET(GUI_Error));
}
else
{
- g_signal_connect_swapped (dialog, "response",
+ g_signal_connect_swapped (GUI_Error, "response",
G_CALLBACK (ErrorPopDownProc),
- dialog);
+ GUI_Error);
errorUp = True;
- gtk_widget_show(GTK_WIDGET(dialog));
+ gtk_widget_show(GTK_WIDGET(GUI_Error));
}
+
+ return;
}
/* Disable all user input other than deleting the window */
void ThawUI()
{
if (!frozen) return;
- XtRemoveGrab(messageWidget);
+ // XtRemoveGrab(messageWidget);
frozen = 0;
}
SaveGameProc(NULL, NULL, NULL, NULL);
}
-void MachineBlackProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- MachineBlackEvent();
-}
-
-void MachineWhiteProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- MachineWhiteEvent();
-}
-
void AnalyzeModeProc(w, event, prms, nprms)
Widget w;
XEvent *event;
AnalysisPeriodicEvent(1);
}
-void TwoMachinesProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- TwoMachinesEvent();
-}
-
-void IcsClientProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- IcsClientEvent();
-}
void EditGameProc(w, event, prms, nprms)
Widget w;
}
}
-void AcceptProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- AcceptEvent();
-}
-
-void DeclineProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- DeclineEvent();
-}
-
-void RematchProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- RematchEvent();
-}
-
-void CallFlagProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- CallFlagEvent();
-}
-
-void DrawProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- DrawEvent();
-}
-
-void AbortProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- AbortEvent();
-}
-
-void AdjournProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- AdjournEvent();
-}
-
-void ResignProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- ResignEvent();
-}
-
-void AdjuWhiteProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- UserAdjudicationEvent(+1);
-}
-
-void AdjuBlackProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- UserAdjudicationEvent(-1);
-}
-
-void AdjuDrawProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- UserAdjudicationEvent(0);
-}
void EnterKeyProc(w, event, prms, nprms)
Widget w;
ICSInputSendText();
}
-void StopObservingProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- StopObservingEvent();
-}
-
-void StopExaminingProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- StopExaminingEvent();
-}
-
-
-void ForwardProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- ForwardEvent();
-}
-
-
-void BackwardProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- BackwardEvent();
-}
-
-void ToStartProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- ToStartEvent();
-}
-
-void ToEndProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- ToEndEvent();
-}
-
-void RevertProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- RevertEvent();
-}
-
-void TruncateGameProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- TruncateGameEvent();
-}
-void RetractMoveProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- RetractMoveEvent();
-}
-
-void MoveNowProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- MoveNowEvent();
-}
-
-
void AlwaysQueenProc(w, event, prms, nprms)
Widget w;
XEvent *event;
args, 1);
}
-void FlipViewProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- flipView = !flipView;
- DrawPosition(True, NULL);
-}
-
void GetMoveListProc(w, event, prms, nprms)
Widget w;
XEvent *event;
args, 1);
}
-void InfoProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- char buf[MSG_SIZ];
- snprintf(buf, sizeof(buf), "xterm -e info --directory %s --directory . -f %s &",
- INFODIR, INFOFILE);
- system(buf);
-}
-
-void ManProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- char buf[MSG_SIZ];
- String name;
- if (nprms && *nprms > 0)
- name = prms[0];
- else
- name = "xboard";
- snprintf(buf, sizeof(buf), "xterm -e man %s &", name);
- system(buf);
-}
-
-void HintProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- HintEvent();
-}
-
-void BookProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
-{
- BookEvent();
-}
-
void DebugProc(w, event, prms, nprms)
Widget w;
XEvent *event;
}
}
gtk_label_set_text( GTK_LABEL(gtk_builder_get_object (builder, "Messages")),message);
+
+ return;
}
void DisplayTitle(text)
char *text;
{
- Arg args[16];
- int i;
- char title[MSG_SIZ];
- char icon[MSG_SIZ];
+ gchar title[MSG_SIZ];
if (text == NULL) text = "";
- if (appData.titleInWindow) {
- i = 0;
- XtSetArg(args[i], XtNlabel, text); i++;
- XtSetValues(titleWidget, args, i);
- }
+ if (appData.titleInWindow)
+ {
+ /* TODO */
+ }
- if (*text != NULLCHAR) {
- strcpy(icon, text);
+ if (*text != NULLCHAR)
+ {
strcpy(title, text);
- } else if (appData.icsActive) {
- snprintf(icon, sizeof(icon), "%s", appData.icsHost);
+ }
+ else if (appData.icsActive)
+ {
snprintf(title, sizeof(title), "%s: %s", programName, appData.icsHost);
- } else if (appData.cmailGameName[0] != NULLCHAR) {
- snprintf(icon, sizeof(icon), "%s", "CMail");
+ }
+ else if (appData.cmailGameName[0] != NULLCHAR)
+ {
snprintf(title,sizeof(title), "%s: %s", programName, "CMail");
#ifdef GOTHIC
// [HGM] license: This stuff should really be done in back-end, but WinBoard already had a pop-up for it
- } else if (gameInfo.variant == VariantGothic) {
- strcpy(icon, programName);
+ }
+ else if (gameInfo.variant == VariantGothic)
+ {
strcpy(title, GOTHIC);
#endif
#ifdef FALCON
- } else if (gameInfo.variant == VariantFalcon) {
- strcpy(icon, programName);
+ }
+ else if (gameInfo.variant == VariantFalcon)
+ {
strcpy(title, FALCON);
#endif
- } else if (appData.noChessProgram) {
- strcpy(icon, programName);
+ }
+ else if (appData.noChessProgram)
+ {
strcpy(title, programName);
- } else {
- strcpy(icon, first.tidy);
+ }
+ else
+ {
snprintf(title,sizeof(title), "%s: %s", programName, first.tidy);
- }
- i = 0;
- XtSetArg(args[i], XtNiconName, (XtArgVal) icon); i++;
- XtSetArg(args[i], XtNtitle, (XtArgVal) title); i++;
- XtSetValues(shellWidget, args, i);
+ }
+ gtk_window_set_title(GTK_WINDOW(GUI_Window),title);
+
+ return;
}
#endif /* not HAVE_GETHOSTNAME */
}
-XtIntervalId delayedEventTimerXID = 0;
+guint delayedEventTimerTag = 0;
DelayedEventCallback delayedEventCallback = 0;
void
-FireDelayedEvent()
+FireDelayedEvent(data)
+ gpointer data;
{
- delayedEventTimerXID = 0;
- delayedEventCallback();
+ /* remove timer */
+ g_source_remove(delayedEventTimerTag);
+ delayedEventTimerTag = 0;
+
+ /* call function */
+ delayedEventCallback();
+
+ return;
}
void
ScheduleDelayedEvent(cb, millisec)
- DelayedEventCallback cb; long millisec;
+ DelayedEventCallback cb; guint millisec;
{
delayedEventCallback = cb;
- delayedEventTimerXID =
- XtAppAddTimeOut(appContext, millisec,
- (XtTimerCallbackProc) FireDelayedEvent, (XtPointer) 0);
+ delayedEventTimerTag = g_timeout_add(millisec,(GSourceFunc) FireDelayedEvent, NULL);
+ return;
}
DelayedEventCallback
GetDelayedEvent()
{
- if (delayedEventTimerXID) {
- return delayedEventCallback;
- } else {
- return NULL;
- }
+ if (delayedEventTimerTag)
+ {
+ return delayedEventCallback;
+ }
+ else
+ {
+ return NULL;
+ }
}
void
CancelDelayedEvent()
{
- if (delayedEventTimerXID) {
- XtRemoveTimeOut(delayedEventTimerXID);
- delayedEventTimerXID = 0;
- }
+ if (delayedEventTimerTag)
+ {
+ g_source_remove(delayedEventTimerTag);
+ delayedEventTimerTag = 0;
+ }
+
+ return;
}
-XtIntervalId loadGameTimerXID = 0;
+guint loadGameTimerTag = 0;
int LoadGameTimerRunning()
{
- return loadGameTimerXID != 0;
+ return loadGameTimerTag != 0;
}
int StopLoadGameTimer()
{
- if (loadGameTimerXID != 0) {
- XtRemoveTimeOut(loadGameTimerXID);
- loadGameTimerXID = 0;
+ if (loadGameTimerTag != 0) {
+ g_source_remove(loadGameTimerTag);
+ loadGameTimerTag = 0;
return TRUE;
} else {
return FALSE;
}
void
-LoadGameTimerCallback(arg, id)
- XtPointer arg;
- XtIntervalId *id;
+LoadGameTimerCallback(data)
+ gpointer data;
{
- loadGameTimerXID = 0;
- AutoPlayGameLoop();
+ /* remove timer */
+ g_source_remove(loadGameTimerTag);
+ loadGameTimerTag = 0;
+
+ AutoPlayGameLoop();
+ return;
}
void
StartLoadGameTimer(millisec)
long millisec;
{
- loadGameTimerXID =
- XtAppAddTimeOut(appContext, millisec,
- (XtTimerCallbackProc) LoadGameTimerCallback,
- (XtPointer) 0);
+ loadGameTimerTag =
+ g_timeout_add( millisec, (GSourceFunc) LoadGameTimerCallback, NULL);
+ return;
}
-XtIntervalId analysisClockXID = 0;
+guint analysisClockTag = 0;
-void
-AnalysisClockCallback(arg, id)
- XtPointer arg;
- XtIntervalId *id;
+gboolean
+AnalysisClockCallback(data)
+ gpointer data;
{
if (gameMode == AnalyzeMode || gameMode == AnalyzeFile
- || appData.icsEngineAnalyze) { // [DM]
+ || appData.icsEngineAnalyze)
+ {
AnalysisPeriodicEvent(0);
- StartAnalysisClock();
- }
+ return 1; /* keep on going */
+ }
+ return 0; /* stop timer */
}
void
StartAnalysisClock()
{
- analysisClockXID =
- XtAppAddTimeOut(appContext, 2000,
- (XtTimerCallbackProc) AnalysisClockCallback,
- (XtPointer) 0);
+ analysisClockTag =
+ g_timeout_add( 2000,(GSourceFunc) AnalysisClockCallback, NULL);
+ return;
}
-gint clockTimerTag = 0;
+guint clockTimerTag = 0;
int ClockTimerRunning()
{
int StopClockTimer()
{
- if (clockTimerTag != 0) {
- gtk_timeout_remove(clockTimerTag);
+ if (clockTimerTag != 0)
+ {
+ g_source_remove(clockTimerTag);
clockTimerTag = 0;
return TRUE;
- } else {
+ }
+ else
+ {
return FALSE;
- }
+ }
}
void
ClockTimerCallback(data)
gpointer data;
{
- clockTimerTag = 0;
- DecrementClocks();
- return;
+ /* remove timer */
+ g_source_remove(clockTimerTag);
+ clockTimerTag = 0;
+
+ DecrementClocks();
+ return;
}
void
StartClockTimer(millisec)
long millisec;
{
- clockTimerTag = gtk_timeout_add(millisec,(GtkFunction) ClockTimerCallback,NULL);
- return;
+ clockTimerTag = g_timeout_add(millisec,(GSourceFunc) ClockTimerCallback,NULL);
+ return;
}
void
if(appData.noGUI) return;
DisplayTimerLabel(GUI_Whiteclock, _("White"), timeRemaining, highlight);
- if (highlight && WindowIcon == BlackIcon) {
- WindowIcon = WhiteIcon;
- gtk_window_set_icon(GTK_WINDOW(GUI_Window),WindowIcon);
- }
+ if (highlight && WindowIcon == BlackIcon)
+ {
+ WindowIcon = WhiteIcon;
+ gtk_window_set_icon(GTK_WINDOW(GUI_Window),WindowIcon);
+ }
}
void
int highlight;
{
if(appData.noGUI) return;
+
DisplayTimerLabel(GUI_Blackclock, _("Black"), timeRemaining, highlight);
- if (highlight && WindowIcon == WhiteIcon) {
+ if (highlight && WindowIcon == WhiteIcon)
+ {
WindowIcon = BlackIcon;
gtk_window_set_icon(GTK_WINDOW(GUI_Window),WindowIcon);
- }
+ }
}
#define CPNone 0
int lineByLine;
char *unused;
InputCallback func;
- XtInputId xid;
+ guint sid;
char buf[INPUT_SOURCE_BUF_SIZE];
VOIDSTAR closure;
} InputSource;
void
-DoInputCallback(closure, source, xid)
- caddr_t closure;
- int *source;
- XtInputId *xid;
+DoInputCallback(io,cond,data)
+ GIOChannel *io;
+ GIOCondition cond;
+ gpointer *data;
{
- InputSource *is = (InputSource *) closure;
- int count;
- int error;
- char *p, *q;
+ /* read input from one of the input source (for example a chess program, ICS, etc).
+ * and call a function that will handle the input
+ */
- if (is->lineByLine) {
- count = read(is->fd, is->unused,
- INPUT_SOURCE_BUF_SIZE - (is->unused - is->buf));
- if (count <= 0) {
- (is->func)(is, is->closure, is->buf, count, count ? errno : 0);
- return;
+ int count; /* how many bytes did we read */
+ int error;
+ char *p, *q;
+
+ /* All information (callback function, file descriptor, etc) is
+ * saved in an InputSource structure
+ */
+ InputSource *is = (InputSource *) data;
+
+ if (is->lineByLine)
+ {
+ count = read(is->fd, is->unused,
+ INPUT_SOURCE_BUF_SIZE - (is->unused - is->buf));
+
+ if (count <= 0)
+ {
+ (is->func)(is, is->closure, is->buf, count, count ? errno : 0);
+ return;
}
- is->unused += count;
- p = is->buf;
- while (p < is->unused) {
- q = memchr(p, '\n', is->unused - p);
- if (q == NULL) break;
- q++;
- (is->func)(is, is->closure, p, q - p, 0);
- p = q;
+ is->unused += count;
+ p = is->buf;
+ /* break input into lines and call the callback function on each
+ * line
+ */
+ while (p < is->unused)
+ {
+ q = memchr(p, '\n', is->unused - p);
+ if (q == NULL) break;
+ q++;
+ (is->func)(is, is->closure, p, q - p, 0);
+ p = q;
}
- q = is->buf;
- while (p < is->unused) {
- *q++ = *p++;
+ /* remember not yet used part of the buffer */
+ q = is->buf;
+ while (p < is->unused)
+ {
+ *q++ = *p++;
}
- is->unused = q;
- } else {
- count = read(is->fd, is->buf, INPUT_SOURCE_BUF_SIZE);
- if (count == -1)
- error = errno;
- else
- error = 0;
- (is->func)(is, is->closure, is->buf, count, error);
+ is->unused = q;
+ }
+ else
+ {
+ /* read maximum length of input buffer and send the whole buffer
+ * to the callback function
+ */
+ count = read(is->fd, is->buf, INPUT_SOURCE_BUF_SIZE);
+ if (count == -1)
+ error = errno;
+ else
+ error = 0;
+ (is->func)(is, is->closure, is->buf, count, error);
}
+
+ return;
}
InputSourceRef AddInputSource(pr, lineByLine, func, closure)
VOIDSTAR closure;
{
InputSource *is;
+ GIOChannel *channel;
ChildProc *cp = (ChildProc *) pr;
is = (InputSource *) calloc(1, sizeof(InputSource));
is->kind = cp->kind;
is->fd = cp->fdFrom;
}
- if (lineByLine) {
- is->unused = is->buf;
- }
+ if (lineByLine)
+ is->unused = is->buf;
+ else
+ is->unused = NULL;
+
+// is->xid = XtAppAddInput(appContext, is->fd,
+// (XtPointer) (XtInputReadMask),
+// (XtInputCallbackProc) DoInputCallback,
+// (XtPointer) is);
+//
- is->xid = XtAppAddInput(appContext, is->fd,
- (XtPointer) (XtInputReadMask),
- (XtInputCallbackProc) DoInputCallback,
- (XtPointer) is);
+ /* TODO: will this work on windows?*/
+ printf("DEBUG: fd=%d %d\n",is->fd,is);
+
+ channel = g_io_channel_unix_new(is->fd);
+ g_io_channel_set_close_on_unref (channel, TRUE);
+ is->sid = g_io_add_watch(channel, G_IO_IN,(GIOFunc) DoInputCallback, is);
is->closure = closure;
return (InputSourceRef) is;
}
{
InputSource *is = (InputSource *) isr;
- if (is->xid == 0) return;
- XtRemoveInput(is->xid);
- is->xid = 0;
+ if (is->sid == 0) return;
+ g_source_remove(is->sid);
+ is->sid = 0;
+ return;
}
int OutputToProcess(pr, message, count, outError)
unsigned long plane;
XGCValues values;
+ /* just return for gtk at the moment */
+ return;
+
/* Need a bitmap just to get a GC with right depth */
buf = XCreatePixmap(xDisplay, xBoardWindow,
8, 8, 1);
XGCValues values;
/* Each buffer is square size, same depth as window */
- anim->saveBuf = XCreatePixmap(xDisplay, xBoardWindow,
- squareSize, squareSize, info->depth);
- anim->newBuf = XCreatePixmap(xDisplay, xBoardWindow,
- squareSize, squareSize, info->depth);
-
- /* Create a plain GC for blitting */
- mask = GCForeground | GCBackground | GCFunction |
- GCPlaneMask | GCGraphicsExposures;
- values.foreground = XBlackPixel(xDisplay, xScreen);
- values.background = XWhitePixel(xDisplay, xScreen);
- values.function = GXcopy;
- values.plane_mask = AllPlanes;
- values.graphics_exposures = False;
- anim->blitGC = XCreateGC(xDisplay, xBoardWindow, mask, &values);
-
- /* Piece will be copied from an existing context at
- the start of each new animation/drag. */
- anim->pieceGC = XCreateGC(xDisplay, xBoardWindow, 0, &values);
-
- /* Outline will be a read-only copy of an existing */
- anim->outlineGC = None;
+// anim->saveBuf = XCreatePixmap(xDisplay, xBoardWindow,
+// squareSize, squareSize, info->depth);
+// anim->newBuf = XCreatePixmap(xDisplay, xBoardWindow,
+// squareSize, squareSize, info->depth);
+//
+// /* Create a plain GC for blitting */
+// mask = GCForeground | GCBackground | GCFunction |
+// GCPlaneMask | GCGraphicsExposures;
+// values.foreground = XBlackPixel(xDisplay, xScreen);
+// values.background = XWhitePixel(xDisplay, xScreen);
+// values.function = GXcopy;
+// values.plane_mask = AllPlanes;
+// values.graphics_exposures = False;
+// anim->blitGC = XCreateGC(xDisplay, xBoardWindow, mask, &values);
+//
+// /* Piece will be copied from an existing context at
+// the start of each new animation/drag. */
+// anim->pieceGC = XCreateGC(xDisplay, xBoardWindow, 0, &values);
+//
+// /* Outline will be a read-only copy of an existing */
+// anim->outlineGC = None;
}
static void
static VariantClass old = (VariantClass) -1; // [HGM] pieces: redo every time variant changes
XWindowAttributes info;
+ /* for gtk at the moment just ... */
+ return;
+
if (xpmDone && gameInfo.variant == old) return;
if(xpmDone) old = gameInfo.variant; // first time pieces might not be created yet
// XGetWindowAttributes(xDisplay, xBoardWindow, &info);
- InitAnimState(&game, &info);
- InitAnimState(&player, &info);
+ // InitAnimState(&game, &info);
+ // InitAnimState(&player, &info);
/* For XPM pieces, we need bitmaps to use as masks. */
- if (useImages)
- CreateAnimMasks(info.depth);
+ // if (useImages)
+ // CreateAnimMasks(info.depth);
xpmDone = 1;
}
FrameDelay (time)
int time;
{
- XSync(xDisplay, False);
+ // XSync(xDisplay, False);
if (time > 0)
usleep(time * 1000);
}
else
source = blPieceGC;
}
- XCopyGC(xDisplay, source, 0xFFFFFFFF, *clip);
+ // XCopyGC(xDisplay, source, 0xFFFFFFFF, *clip);
/* Outline only used in mono mode and is not modified */
if (White(piece))
if (!useImages) {
/* Draw solid rectangle which will be clipped to shape of piece */
- XFillRectangle(xDisplay, dest, clip,
- 0, 0, squareSize, squareSize);
+// XFillRectangle(xDisplay, dest, clip,
+// 0, 0, squareSize, squareSize)
+;
if (appData.monoMode)
/* Also draw outline in contrasting color for black
on black / white on white cases */
- XCopyPlane(xDisplay, *pieceToOutline(piece), dest, outline,
- 0, 0, squareSize, squareSize, 0, 0, 1);
+// XCopyPlane(xDisplay, *pieceToOutline(piece), dest, outline,
+// 0, 0, squareSize, squareSize, 0, 0, 1)
+;
} else {
/* Copy the piece */
if (White(piece))
kind = 0;
else
kind = 2;
- XCopyArea(xDisplay, xpmPieceBitmap[kind][piece],
- dest, clip,
- 0, 0, squareSize, squareSize,
- 0, 0);
+// XCopyArea(xDisplay, xpmPieceBitmap[kind][piece],
+// dest, clip,
+// 0, 0, squareSize, squareSize,
+// 0, 0);
}
}
anim->prevFrame = *start;
/* The piece will be drawn using its own bitmap as a matte */
- SelectGCMask(piece, &anim->pieceGC, &anim->outlineGC, &mask);
- XSetClipMask(xDisplay, anim->pieceGC, mask);
+// SelectGCMask(piece, &anim->pieceGC, &anim->outlineGC, &mask);
+// XSetClipMask(xDisplay, anim->pieceGC, mask);
}
static void
int count, i;
/* Save what we are about to draw into the new buffer */
- XCopyArea(xDisplay, xBoardWindow, anim->newBuf, anim->blitGC,
- frame->x, frame->y, squareSize, squareSize,
- 0, 0);
+// XCopyArea(xDisplay, xBoardWindow, anim->newBuf, anim->blitGC,
+// frame->x, frame->y, squareSize, squareSize,
+// 0, 0);
/* Erase bits of the previous frame */
if (Intersect(&anim->prevFrame, frame, squareSize, &overlap, &pt)) {
/* Where the new frame overlapped the previous,
the contents in newBuf are wrong. */
- XCopyArea(xDisplay, anim->saveBuf, anim->newBuf, anim->blitGC,
- overlap.x, overlap.y,
- overlap.width, overlap.height,
- pt.x, pt.y);
+// XCopyArea(xDisplay, anim->saveBuf, anim->newBuf, anim->blitGC,
+// overlap.x, overlap.y,
+// overlap.width, overlap.height,
+// pt.x, pt.y);
/* Repaint the areas in the old that don't overlap new */
CalcUpdateRects(&anim->prevFrame, frame, squareSize, updates, &count);
for (i = 0; i < count; i++)
- XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC,
- updates[i].x - anim->prevFrame.x,
- updates[i].y - anim->prevFrame.y,
- updates[i].width, updates[i].height,
- updates[i].x, updates[i].y);
+// XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC,
+// updates[i].x - anim->prevFrame.x,
+// updates[i].y - anim->prevFrame.y,
+// updates[i].width, updates[i].height,
+// updates[i].x, updates[i].y)
+;
} else {
/* Easy when no overlap */
- XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC,
- 0, 0, squareSize, squareSize,
- anim->prevFrame.x, anim->prevFrame.y);
+// XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC,
+// 0, 0, squareSize, squareSize,
+// anim->prevFrame.x, anim->prevFrame.y);
}
/* Save this frame for next time round */
- XCopyArea(xDisplay, anim->newBuf, anim->saveBuf, anim->blitGC,
- 0, 0, squareSize, squareSize,
- 0, 0);
+// XCopyArea(xDisplay, anim->newBuf, anim->saveBuf, anim->blitGC,
+// 0, 0, squareSize, squareSize,
+// 0, 0);
anim->prevFrame = *frame;
/* Draw piece over original screen contents, not current,
and copy entire rect. Wipes out overlapping piece images. */
OverlayPiece(piece, anim->pieceGC, anim->outlineGC, anim->newBuf);
- XCopyArea(xDisplay, anim->newBuf, xBoardWindow, anim->blitGC,
- 0, 0, squareSize, squareSize,
- frame->x, frame->y);
+// XCopyArea(xDisplay, anim->newBuf, xBoardWindow, anim->blitGC,
+// 0, 0, squareSize, squareSize,
+// frame->x, frame->y);
}
static void
if (Intersect(&anim->prevFrame, finish, squareSize, &overlap, &pt)) {
CalcUpdateRects(&anim->prevFrame, finish, squareSize, updates, &count);
for (i = 0; i < count; i++)
- XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC,
- updates[i].x - anim->prevFrame.x,
- updates[i].y - anim->prevFrame.y,
- updates[i].width, updates[i].height,
- updates[i].x, updates[i].y);
+// XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC,
+// updates[i].x - anim->prevFrame.x,
+// updates[i].y - anim->prevFrame.y,
+// updates[i].width, updates[i].height,
+// updates[i].x, updates[i].y)
+;
} else {
- XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC,
- 0, 0, squareSize, squareSize,
- anim->prevFrame.x, anim->prevFrame.y);
+// XCopyArea(xDisplay, anim->saveBuf, xBoardWindow, anim->blitGC,
+// 0, 0, squareSize, squareSize,
+// anim->prevFrame.x, anim->prevFrame.y);
}
}
as seen by opponent) the move hasn't been made yet. */
if(boardX == BOARD_RGHT+1 && PieceForSquare(boardX-1, boardY) > 1 ||
boardX == BOARD_LEFT-2 && PieceForSquare(boardX+1, boardY) > 1)
- XCopyArea(xDisplay, xBoardWindow, player.saveBuf, player.blitGC,
- corner.x, corner.y, squareSize, squareSize,
- 0, 0); // [HGM] zh: unstack in stead of grab
+// XCopyArea(xDisplay, xBoardWindow, player.saveBuf, player.blitGC,
+// corner.x, corner.y, squareSize, squareSize,
+// 0, 0); // [HGM] zh: unstack in stead of grab
damage[boardY][boardX] = True;
} else {
player.dragActive = False;