/* End Help Menu */
+/* Mode Menu */
+
+void MachineWhiteProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ MachineWhiteEvent();
+ return;
+}
+
+void MachineBlackProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ MachineBlackEvent();
+ return;
+}
+
+void TwoMachinesProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ TwoMachinesEvent();
+ return;
+}
+
void IcsClientProc(object, user_data)
GtkObject *object;
gpointer user_data;
return;
}
+void
+AnalyzeFileProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ if (!first.analysisSupport)
+ {
+ char buf[MSG_SIZ];
+ snprintf(buf, sizeof(buf), _("%s does not support analysis"), first.tidy);
+ DisplayError(buf, 0);
+ return;
+ };
+ Reset(FALSE, TRUE);
+
+ if (!appData.showThinking)
+ ShowThinkingProc(NULL,NULL);
+
+ AnalyzeFileEvent();
+ FileNamePopUp(_("File to analyze"), "", LoadGamePopUp, "rb");
+ AnalysisPeriodicEvent(1);
+ return;
+}
+
+void
+AnalyzeModeProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ char buf[MSG_SIZ];
+
+ if (!first.analysisSupport)
+ {
+ snprintf(buf, sizeof(buf), _("%s does not support analysis"), first.tidy);
+ DisplayError(buf, 0);
+ return;
+ }
+ /* [DM] icsEngineAnalyze [HGM] This is horrible code; reverse the gameMode and isEngineAnalyze tests! */
+ if (appData.icsActive)
+ {
+ if (gameMode != IcsObserving)
+ {
+ sprintf(buf,_("You are not observing a game"));
+ DisplayError(buf, 0);
+ /* secure check */
+ if (appData.icsEngineAnalyze)
+ {
+ if (appData.debugMode)
+ fprintf(debugFP, _("Found unexpected active ICS engine analyze \n"));
+ ExitAnalyzeMode();
+ ModeHighlight();
+ }
+ return;
+ }
+ /* if enable, use want disable icsEngineAnalyze */
+ if (appData.icsEngineAnalyze)
+ {
+ ExitAnalyzeMode();
+ ModeHighlight();
+ return;
+ }
+ appData.icsEngineAnalyze = TRUE;
+ if (appData.debugMode)
+ fprintf(debugFP, _("ICS engine analyze starting... \n"));
+ }
+ if (!appData.showThinking)
+ ShowThinkingProc(NULL,NULL);
+
+ AnalyzeModeEvent();
+ return;
+}
+
+void
+EditGameProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ EditGameEvent();
+ return;
+}
+
+void
+EditPositionProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ EditPositionEvent();
+ return;
+}
+
+void
+TrainingProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ TrainingEvent();
+ return;
+}
+
+
+
+/* End Mode Menu */
+
/*
* File menu
*/
return;
}
-void
-AnalyzeFileProc(object, user_data)
- GtkObject *object;
- gpointer user_data;
-{
- if (!first.analysisSupport)
- {
- char buf[MSG_SIZ];
- snprintf(buf, sizeof(buf), _("%s does not support analysis"), first.tidy);
- DisplayError(buf, 0);
- return;
- };
- Reset(FALSE, TRUE);
-
- if (!appData.showThinking)
- ShowThinkingProc(NULL,NULL);
-
- AnalyzeFileEvent();
- FileNamePopUp(_("File to analyze"), "", LoadGamePopUp, "rb");
- AnalysisPeriodicEvent(1);
- return;
-}
-
/* End File Menu */
-void MachineWhiteProc(object, user_data)
- GtkObject *object;
- gpointer user_data;
-{
- MachineWhiteEvent();
- return;
-}
-
-void MachineBlackProc(object, user_data)
- GtkObject *object;
- gpointer user_data;
-{
- MachineBlackEvent();
- return;
-}
-
-void TwoMachinesProc(object, user_data)
- GtkObject *object;
- gpointer user_data;
-{
- TwoMachinesEvent();
- return;
-}
-
void AcceptProc(object, user_data)
GtkObject *object;
gpointer user_data;
}
/* Option Menu */
-void AutocommProc(object, user_data)
+void
+AutocommProc(object, user_data)
GtkObject *object;
gpointer user_data;
{
return;
}
-void AutoflagProc(object, user_data)
+void
+AutoflagProc(object, user_data)
GtkObject *object;
gpointer user_data;
{
return;
}
-void AutoflipProc(object, user_data)
+void
+AutoflipProc(object, user_data)
GtkObject *object;
gpointer user_data;
{
return;
}
-void ShowThinkingProc(object, user_data)
+void
+ShowThinkingProc(object, user_data)
GtkObject *object;
gpointer user_data;
{
return;
}
-void HideThinkingProc(object, user_data)
+void
+HideThinkingProc(object, user_data)
GtkObject *object;
gpointer user_data;
{
return;
}
-void FlipViewProc(object, user_data)
+void
+FlipViewProc(object, user_data)
GtkObject *object;
gpointer user_data;
{
return;
}
+void
+AlwaysQueenProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.alwaysPromoteToQueen = !appData.alwaysPromoteToQueen;
+ return;
+}
+
+void
+AnimateDraggingProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.animateDragging = !appData.animateDragging;
+
+ if (appData.animateDragging)
+ {
+ // TODO convert to gtk
+ // CreateAnimVars();
+ };
+
+ return;
+}
+
+void
+AnimateMovingProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.animate = !appData.animate;
+
+ if (appData.animate)
+ {
+ // TODO convert to gtk
+ // CreateAnimVars();
+ };
+
+ return;
+}
+
+void
+AutobsProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.autoObserve = !appData.autoObserve;
+ return;
+}
+
+void
+AutoraiseProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.autoRaiseBoard = !appData.autoRaiseBoard;
+ return;
+}
+
+void
+AutosaveProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.autoSaveGames = !appData.autoSaveGames;
+ return;
+}
+
+void
+BlindfoldProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.blindfold = !appData.blindfold;
+ DrawPosition(True, NULL);
+ return;
+}
+
+void
+TestLegalityProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.testLegality = !appData.testLegality;
+ return;
+}
+
+void
+FlashMovesProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ if (appData.flashCount == 0)
+ {
+ appData.flashCount = 3;
+ }
+ else
+ {
+ appData.flashCount = -appData.flashCount;
+ };
+
+ // TODO: check if this is working correct*/
+ return;
+}
+
+#if HIGHDRAG
+void
+HighlightDraggingProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ /* TODO: connect to option menu */
+ appData.highlightDragging = !appData.highlightDragging;
+ return;
+}
+#endif
+
+void
+HighlightLastMoveProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.highlightLastMove = !appData.highlightLastMove;
+ return;
+}
+
+void
+IcsAlarmProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.icsAlarm = !appData.icsAlarm;
+ return;
+}
+
+void
+MoveSoundProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.ringBellAfterMoves = !appData.ringBellAfterMoves;
+ return;
+}
+
+void
+OldSaveStyleProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.oldSaveStyle = !appData.oldSaveStyle;
+ return;
+}
+
+void
+PeriodicUpdatesProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ PeriodicUpdatesEvent(!appData.periodicUpdates);
+ return;
+}
+
+void
+PremoveProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.premove = !appData.premove;
+ return;
+}
+
+void
+QuietPlayProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.quietPlay = !appData.quietPlay;
+ return;
+}
+
+
+void
+PonderNextMoveProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ PonderNextMoveEvent(!appData.ponderNextMove);
+ return;
+}
+
+void
+PopupExitMessageProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.popupExitMessage = !appData.popupExitMessage;
+ return;
+}
+
+void
+PopupMoveErrorsProc(object, user_data)
+ GtkObject *object;
+ gpointer user_data;
+{
+ appData.popupMoveErrors = !appData.popupMoveErrors;
+ return;
+}
+
+
+
+/* end option menu */
gboolean CloseWindowProc(GtkWidget *button)
{
gpointer user_data;
{
ResetGameEvent();
- EngineOutputPopDown();
+ return;
}
void WhiteClockProc(object, user_data)
GdkEvent *event;
gpointer data;
{
- int x, y;
- Boolean saveAnimate;
- static int second = 0;
-
if (errorExitStatus != -1) return;
- if (event->type == GDK_BUTTON_PRESS) ErrorPopDown();
-
- if (promotionUp)
+ if (promotionUp)
{
- if (event->type == GDK_BUTTON_PRESS)
+ if (event->type == GDK_BUTTON_PRESS)
{
- /* todo add promotionshellwidget
- XtPopdown(promotionShell);
- XtDestroyWidget(promotionShell); */
promotionUp = False;
ClearHighlights();
fromX = fromY = -1;
}
- else
- {
- return;
- }
- }
-
- x = EventToSquare( (int)event->button.x, BOARD_WIDTH );
- y = EventToSquare( (int)event->button.y, BOARD_HEIGHT );
- if (!flipView && y >= 0)
- {
- y = BOARD_HEIGHT - 1 - y;
- }
- if (flipView && x >= 0)
- {
- x = BOARD_WIDTH - 1 - x;
- }
-
- if (fromX == -1)
- {
- if (event->type == ButtonPress)
+ else
{
- /* First square */
- if (OKToStartUserMove(x, y))
- {
- fromX = x;
- fromY = y;
- second = 0;
- DragPieceBegin(event->button.x, event->button.y);
- if (appData.highlightDragging)
- {
- SetHighlights(x, y, -1, -1);
- }
- }
- }
- return;
- }
-
- /* fromX != -1 */
- if (event->type == GDK_BUTTON_PRESS && gameMode != EditPosition &&
- x >= 0 && y >= 0) {
- ChessSquare fromP;
- ChessSquare toP;
- /* Check if clicking again on the same color piece */
- fromP = boards[currentMove][fromY][fromX];
- toP = boards[currentMove][y][x];
- if ((WhitePawn <= fromP && fromP <= WhiteKing &&
- WhitePawn <= toP && toP <= WhiteKing) ||
- (BlackPawn <= fromP && fromP <= BlackKing &&
- BlackPawn <= toP && toP <= BlackKing)) {
- /* Clicked again on same color piece -- changed his mind */
- second = (x == fromX && y == fromY);
- if (appData.highlightDragging) {
- SetHighlights(x, y, -1, -1);
- } else {
- ClearHighlights();
- }
- if (OKToStartUserMove(x, y)) {
- fromX = x;
- fromY = y;
- DragPieceBegin(event->button.x, event->button.y);
- }
return;
- }
- }
-
- if (event->type == GDK_BUTTON_RELEASE && x == fromX && y == fromY)
- {
- DragPieceEnd(event->button.x, event->button.y);
- if (appData.animateDragging)
- {
- /* Undo animation damage if any */
- DrawPosition(FALSE, NULL);
- }
- if (second)
- {
- /* Second up/down in same square; just abort move */
- second = 0;
- fromX = fromY = -1;
- ClearHighlights();
- gotPremove = 0;
- ClearPremoveHighlights();
- }
- else
- {
- /* First upclick in same square; start click-click mode */
- SetHighlights(x, y, -1, -1);
- }
- return;
- }
-
- /* Completed move */
- toX = x;
- toY = y;
- saveAnimate = appData.animate;
-
- if (event->type == GDK_BUTTON_PRESS)
- {
- /* Finish clickclick move */
- if (appData.animate || appData.highlightLastMove)
- {
- SetHighlights(fromX, fromY, toX, toY);
- }
- else
- {
- ClearHighlights();
}
}
- else
- {
- /* Finish drag move */
- if (appData.highlightLastMove)
- {
- SetHighlights(fromX, fromY, toX, toY);
- }
- else
- {
- ClearHighlights();
- }
- DragPieceEnd(event->button.x, event->button.y);
- /* Don't animate move and drag both */
- appData.animate = FALSE;
- }
-
- if (IsPromotion(fromX, fromY, toX, toY))
- {
- if (appData.alwaysPromoteToQueen)
- {
- UserMoveEvent(fromX, fromY, toX, toY, 'q');
- if (!appData.highlightLastMove || gotPremove) ClearHighlights();
- if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY);
- fromX = fromY = -1;
- }
- else
- {
- SetHighlights(fromX, fromY, toX, toY);
- PromotionPopUp();
- }
- }
- else
- {
- UserMoveEvent(fromX, fromY, toX, toY, NULLCHAR);
-
- if (!appData.highlightLastMove || gotPremove) ClearHighlights();
- if (gotPremove) SetPremoveHighlights(fromX, fromY, toX, toY);
- fromX = fromY = -1;
- }
-
- appData.animate = saveAnimate;
- if (appData.animate || appData.animateDragging) {
- /* Undo animation damage if needed */
- DrawPosition(FALSE, NULL);
- }
+
+ // [HGM] mouse: the rest of the mouse handler is moved to the backend, and called here
+ if(event->type == GDK_BUTTON_PRESS) LeftClick(Press, (int)event->button.x, (int)event->button.y);
+ if(event->type == GDK_BUTTON_RELEASE) LeftClick(Release, (int)event->button.x, (int)event->button.y);
return;
}