updated timer
[xboard.git] / xboard.c
index c0c505c..c98396c 100644 (file)
--- a/xboard.c
+++ b/xboard.c
@@ -317,8 +317,6 @@ void AnalyzeModeProc P((Widget w, XEvent *event,
                         String *prms, Cardinal *nprms));
 void AnalyzeFileProc 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));
@@ -327,23 +325,7 @@ void EditCommentProc P((Widget w, XEvent *event,
                        String *prms, Cardinal *nprms));
 void IcsInputBoxProc 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 AlwaysQueenProc P((Widget w, XEvent *event, String *prms,
                        Cardinal *nprms));
 void AnimateDraggingProc P((Widget w, XEvent *event, String *prms,
@@ -361,7 +343,6 @@ void AutosaveProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms));
 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,
@@ -388,10 +369,6 @@ void HideThinkingProc 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));
@@ -706,7 +683,7 @@ MenuItem modeMenu[] = {
   //    {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},
@@ -722,42 +699,9 @@ MenuItem modeMenu[] = {
     {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},
@@ -794,33 +738,20 @@ MenuItem optionsMenu[] = {
     {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}
 };
 
@@ -870,15 +801,6 @@ DropMenuEnables dmEnables[] = {
     { 'Q', "Queen" }
 };
 
-Arg shellArgs[] = {
-    { XtNwidth, 0 },
-    { XtNheight, 0 },
-    { XtNminWidth, 0 },
-    { XtNminHeight, 0 },
-    { XtNmaxWidth, 0 },
-    { XtNmaxHeight, 0 }
-};
-
 Arg layoutArgs[] = {
     { XtNborderWidth, 0 },
     { XtNdefaultDistance, 0 },
@@ -895,25 +817,6 @@ Arg boardArgs[] = {
     { 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,
@@ -1920,7 +1823,7 @@ XtActionsRec boardActions[] = {
     { "AnalysisModeProc", AnalyzeModeProc },
     { "AnalyzeFileProc", AnalyzeFileProc },
     //    { "TwoMachinesProc", TwoMachinesProc },
-    { "IcsClientProc", IcsClientProc },
+    //    { "IcsClientProc", IcsClientProc },
     { "EditGameProc", EditGameProc },
     { "EditPositionProc", EditPositionProc },
     { "TrainingProc", EditPositionProc },
@@ -1939,20 +1842,20 @@ XtActionsRec boardActions[] = {
     //    { "AdjournProc", AdjournProc },
     //    { "AbortProc", AbortProc },
     //    { "ResignProc", ResignProc },
-    { "AdjuWhiteProc", AdjuWhiteProc },
-    { "AdjuBlackProc", AdjuBlackProc },
-    { "AdjuDrawProc", AdjuDrawProc },
+    //    { "AdjuWhiteProc", AdjuWhiteProc },
+    //    { "AdjuBlackProc", AdjuBlackProc },
+    //    { "AdjuDrawProc", AdjuDrawProc },
     { "EnterKeyProc", EnterKeyProc },
-    { "StopObservingProc", StopObservingProc },
-    { "StopExaminingProc", StopExaminingProc },
-    { "BackwardProc", BackwardProc },
-    { "ForwardProc", ForwardProc },
-    { "ToStartProc", ToStartProc },
-    { "ToEndProc", ToEndProc },
-    { "RevertProc", RevertProc },
-    { "TruncateGameProc", TruncateGameProc },
+    //    { "StopObservingProc", StopObservingProc },
+    //    { "StopExaminingProc", StopExaminingProc },
+    //    { "BackwardProc", BackwardProc },
+    //    { "ForwardProc", ForwardProc },
+    //    { "ToStartProc", ToStartProc },
+    //    { "ToEndProc", ToEndProc },
+    //    { "RevertProc", RevertProc },
+    //    { "TruncateGameProc", TruncateGameProc },
     //    { "MoveNowProc", MoveNowProc },
-    { "RetractMoveProc", RetractMoveProc },
+    //    { "RetractMoveProc", RetractMoveProc },
     { "AlwaysQueenProc", AlwaysQueenProc },
     { "AnimateDraggingProc", AnimateDraggingProc },
     { "AnimateMovingProc", AnimateMovingProc },
@@ -1963,7 +1866,7 @@ XtActionsRec boardActions[] = {
     { "AutosaveProc", AutosaveProc },
     { "BlindfoldProc", BlindfoldProc },
     { "FlashMovesProc", FlashMovesProc },
-    { "FlipViewProc", FlipViewProc },
+    //    { "FlipViewProc", FlipViewProc },
     { "GetMoveListProc", GetMoveListProc },
 #if HIGHDRAG
     { "HighlightDraggingProc", HighlightDraggingProc },
@@ -1981,10 +1884,10 @@ XtActionsRec boardActions[] = {
     { "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 },
@@ -3711,6 +3614,10 @@ 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);
@@ -5589,14 +5496,6 @@ void AnalyzeFileProc(w, event, prms, nprms)
     AnalysisPeriodicEvent(1);
 }
 
-void IcsClientProc(w, event, prms, nprms)
-     Widget w;
-     XEvent *event;
-     String *prms;
-     Cardinal *nprms;
-{
-    IcsClientEvent();
-}
 
 void EditGameProc(w, event, prms, nprms)
      Widget w;
@@ -5651,32 +5550,6 @@ void IcsInputBoxProc(w, event, prms, nprms)
     }
 }
 
-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;
@@ -5688,88 +5561,6 @@ void EnterKeyProc(w, event, prms, nprms)
       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 AlwaysQueenProc(w, event, prms, nprms)
      Widget w;
      XEvent *event;
@@ -6008,16 +5799,6 @@ void FlashMovesProc(w, event, prms, nprms)
                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;
@@ -6292,52 +6073,6 @@ void HideThinkingProc(w, event, prms, nprms)
                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;
@@ -6872,23 +6607,30 @@ char *HostName()
 #endif /* not HAVE_GETHOSTNAME */
 }
 
-gint delayedEventTimerTag = 0;
+guint delayedEventTimerTag = 0;
 DelayedEventCallback delayedEventCallback = 0;
 
 void
 FireDelayedEvent(data)
      gpointer data;
 {
-    delayedEventTimerTag = 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;
-    delayedEventTimerTag = gtk_timeout_add(millisec,(GtkFunction) FireDelayedEvent, NULL);
+    delayedEventTimerTag = g_timeout_add(millisec,(GSourceFunc) FireDelayedEvent, NULL);
+    return;
 }
 
 DelayedEventCallback
@@ -6909,14 +6651,14 @@ CancelDelayedEvent()
 {
   if (delayedEventTimerTag)
     {
-      gtk_timeout_remove(delayedEventTimerTag);
+      g_source_remove(delayedEventTimerTag);
       delayedEventTimerTag = 0;
     }
 
   return;
 }
 
-gint loadGameTimerTag = 0;
+guint loadGameTimerTag = 0;
 
 int LoadGameTimerRunning()
 {
@@ -6926,7 +6668,7 @@ int LoadGameTimerRunning()
 int StopLoadGameTimer()
 {
     if (loadGameTimerTag != 0) {
-       gtk_timeout_remove(loadGameTimerTag);
+       g_source_remove(loadGameTimerTag);
        loadGameTimerTag = 0;
        return TRUE;
     } else {
@@ -6938,8 +6680,12 @@ void
 LoadGameTimerCallback(data)
      gpointer data;
 {
-    loadGameTimerTag = 0;
-    AutoPlayGameLoop();
+  /* remove timer */
+  g_source_remove(loadGameTimerTag);
+  loadGameTimerTag = 0;
+
+  AutoPlayGameLoop();
+  return;
 }
 
 void
@@ -6947,12 +6693,13 @@ StartLoadGameTimer(millisec)
      long millisec;
 {
   loadGameTimerTag =
-    gtk_timeout_add( millisec, (GtkFunction) LoadGameTimerCallback, NULL);
+    g_timeout_add( millisec, (GSourceFunc) LoadGameTimerCallback, NULL);
+  return;
 }
 
-gint analysisClockTag = 0;
+guint analysisClockTag = 0;
 
-void
+gboolean
 AnalysisClockCallback(data)
      gpointer data;
 {
@@ -6960,18 +6707,20 @@ AnalysisClockCallback(data)
          || appData.icsEngineAnalyze)
       {
        AnalysisPeriodicEvent(0);
-       StartAnalysisClock();
+       return 1; /* keep on going */
       }
+    return 0; /* stop timer */
 }
 
 void
 StartAnalysisClock()
 {
-    analysisClockTag =
-      gtk_timeout_add( 2000,(GtkFunction) AnalysisClockCallback, NULL);
+  analysisClockTag =
+    g_timeout_add( 2000,(GSourceFunc) AnalysisClockCallback, NULL);
+  return;
 }
 
-gint clockTimerTag = 0;
+guint clockTimerTag = 0;
 
 int ClockTimerRunning()
 {
@@ -6982,7 +6731,7 @@ int StopClockTimer()
 {
     if (clockTimerTag != 0)
       {
-       gtk_timeout_remove(clockTimerTag);
+       g_source_remove(clockTimerTag);
        clockTimerTag = 0;
        return TRUE;
       }
@@ -6996,17 +6745,20 @@ 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