void PastePositionProc P((Widget w, XEvent *event, String *prms,
Cardinal *nprms));
void CopyGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
+void CopyGameListProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void PasteGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void SaveGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
void SavePositionProc P((Widget w, XEvent *event,
WindowPlacement wpGameList;
WindowPlacement wpTags;
+extern Widget shells[];
+extern Boolean shellUp[];
+
#define SOLID 0
#define OUTLINE 1
Pixmap pieceBitmap[2][(int)BlackPawn];
MenuItem editMenu[] = {
{N_("Copy Game Ctrl+C"), "Copy Game", CopyGameProc},
{N_("Copy Position Ctrl+Shift+C"), "Copy Position", CopyPositionProc},
+ {N_("Copy Game List"), "Copy Game List", CopyGameListProc},
{"----", NULL, NothingProc},
{N_("Paste Game Ctrl+V"), "Paste Game", PasteGameProc},
{N_("Paste Position Ctrl+Shift+V"), "Paste Position", PastePositionProc},
{ "CopyPositionProc", CopyPositionProc },
{ "PastePositionProc", PastePositionProc },
{ "CopyGameProc", CopyGameProc },
+ { "CopyGameListProc", CopyGameListProc },
{ "PasteGameProc", PasteGameProc },
{ "SaveGameProc", SaveGameProc },
{ "SavePositionProc", SavePositionProc },
}
extern Widget engineOutputShell;
-extern Widget tagsShell, editTagsShell;
+
void
GetActualPlacement(Widget wg, WindowPlacement *wp)
{
if(MoveHistoryIsUp()) GetActualPlacement(historyShell, &wpMoveHistory);
if(EvalGraphIsUp()) GetActualPlacement(evalGraphShell, &wpEvalGraph);
if(GameListIsUp()) GetActualPlacement(gameListShell, &wpGameList);
- if(commentShell) GetActualPlacement(commentShell, &wpComment);
- else GetActualPlacement(editShell, &wpComment);
- if(tagsShell) GetActualPlacement(tagsShell, &wpTags);
- else GetActualPlacement(editTagsShell, &wpTags);
+ if(shellUp[1]) GetActualPlacement(shells[1], &wpComment);
+ if(shellUp[2]) GetActualPlacement(shells[2], &wpTags);
}
void
Cardinal *num_params;
{
String whichMenu; int menuNr;
+ shiftKey = strcmp(params[0], "menuW"); // used to indicate black
if (event->type == ButtonRelease)
menuNr = RightClick(Release, event->xbutton.x, event->xbutton.y, &pmFromX, &pmFromY);
else if (event->type == ButtonPress)
void AnimateUserMove (Widget w, XEvent * event,
String * params, Cardinal * nParams)
{
+ if(!PromoScroll(event->xmotion.x, event->xmotion.y))
DragPieceMove(event->xmotion.x, event->xmotion.y);
}
}
}
-/* note: when called from menu all parameters are NULL, so no clue what the
- * Widget which was clicked on was, or what the click event was
- */
-void CopyGameProc(w, event, prms, nprms)
- Widget w;
- XEvent *event;
- String *prms;
- Cardinal *nprms;
+void CopySomething()
{
int ret;
- ret = SaveGameToFile(gameCopyFilename, FALSE);
- if (!ret) return;
-
/*
* Set both PRIMARY (the selection) and CLIPBOARD, since we don't
* have a notion of a game that is selected but not copied.
NULL/* transfer_done_proc */);
}
+/* note: when called from menu all parameters are NULL, so no clue what the
+ * Widget which was clicked on was, or what the click event was
+ */
+void CopyGameProc(w, event, prms, nprms)
+ Widget w;
+ XEvent *event;
+ String *prms;
+ Cardinal *nprms;
+{
+ int ret;
+
+ ret = SaveGameToFile(gameCopyFilename, FALSE);
+ if (!ret) return;
+
+ CopySomething();
+}
+
+void CopyGameListProc(w, event, prms, nprms)
+ Widget w;
+ XEvent *event;
+ String *prms;
+ Cardinal *nprms;
+{
+ if(!SaveGameListAsText(fopen(gameCopyFilename, "w"))) return;
+ CopySomething();
+}
+
/* function called when the data to Paste is ready */
static void
PasteGameCB(Widget w, XtPointer client_data, Atom *selection,
Cardinal *nprms;
{
if(gameMode != BeginningOfGame) { DisplayError(_("You can only start a match from the initial position."), 0); return; }
- matchMode = 2; // This is back-end, really\r
- appData.matchGames = appData.defaultMatchGames;\r
- matchGame = 1;\r
- first.matchWins = second.matchWins = 0;\r
- TwoMachinesEvent();
+ appData.matchGames = appData.defaultMatchGames;
+ MatchEvent(2);\r
}
void IcsClientProc(w, event, prms, nprms)
}
}
+void
+ChangeDragPiece(ChessSquare piece)
+{
+ Pixmap mask;
+ player.dragPiece = piece;
+ /* The piece will be drawn using its own bitmap as a matte */
+ SelectGCMask(piece, &player.pieceGC, &player.outlineGC, &mask);
+ XSetClipMask(xDisplay, player.pieceGC, mask);
+}
+
static void
DragPieceMove(x, y)
int x; int y;