Print 50-move counter in Engine-Output title
[xboard.git] / xengineoutput.c
index 2d2a9a7..11b0695 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright 2005 Alessandro Scotti
  *
- * Enhancements Copyright 2009, 2010 Free Software Foundation, Inc.
+ * Enhancements Copyright 2009, 2010, 2011 Free Software Foundation, Inc.
  *
  * ------------------------------------------------------------------------
  *
@@ -100,14 +100,6 @@ extern char *getenv();
 
 #define _LL_ 100
 
-// imports from xboard.c
-extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
-extern Display *xDisplay;
-extern Window xBoardWindow;
-extern int squareSize;
-extern Pixmap xMarkPixmap, wIconPixmap, bIconPixmap;
-extern char *layoutName;
-
 Pixmap icons[8]; // [HGM] this front-end array translates back-end icon indicator to handle
 Widget outputField[2][7]; // [HGM] front-end array to translate output field to window handle
 
@@ -116,12 +108,6 @@ void engineOutputPopUp();
 int  EngineOutputIsUp();
 void SetEngineColorIcon( int which );
 
-/* Imports from backend.c */
-extern int opponentKibitzes;
-
-/* Imports from xboard.c */
-extern Arg layoutArgs[2], formArgs[2], messageArgs[4];
-
 //extern WindowPlacement wpEngineOutput;
 
 Position engineOutputX = -1, engineOutputY = -1;
@@ -157,13 +143,12 @@ void ReadIcon(char *pixData[], int iconNr)
                                       &(icons[iconNr]),
                                       NULL, NULL /*&attr*/)) != 0) {
          fprintf(stderr, _("Error %d loading icon image\n"), r);
-         exit(1); 
-       }       
+         exit(1);
+       }
 }
 
 static void InitializeEngineOutput()
-{ int i;
-
+{
         ReadIcon(WHITE_14,   nColorWhite);
         ReadIcon(BLACK_14,   nColorBlack);
         ReadIcon(UNKNOWN_14, nColorUnknown);
@@ -175,18 +160,26 @@ static void InitializeEngineOutput()
 }
 
 void DoSetWindowText(int which, int field, char *s_label)
-{ 
+{
        Arg arg;
 
        XtSetArg(arg, XtNlabel, (XtArgVal) s_label);
        XtSetValues(outputField[which][field], &arg, 1);
 }
 
+void SetEngineOutputTitle(char *title)
+{
+       Arg arg;
+       XtSetArg(arg, XtNtitle, (XtArgVal) title);
+       XtSetValues(engineOutputShell, &arg, 1);
+}
+
 void InsertIntoMemo( int which, char * text, int where )
 {
-       Arg arg; XawTextBlock t; Widget edit;
+       XawTextBlock t;
+       Widget edit;
 
-       /* the backend adds \r\n, which is needed for winboard, 
+       /* the backend adds \r\n, which is needed for winboard,
         * for xboard we delete them again over here */
        if(t.ptr = strchr(text, '\r')) *t.ptr = ' ';
 
@@ -211,20 +204,17 @@ void SetIcon( int which, int field, int nIcon )
 }
 
 void DoClearMemo(int which)
-{ 
-    Arg args[16];
-    int j;
-    Widget edit;
-
-       edit = XtNameToWidget(engineOutputShell, which ? "*form2.text" : "*form.text");
-       XtCallActionProc(edit, "select-all", NULL, NULL, 0);
-       XtCallActionProc(edit, "kill-selection", NULL, NULL, 0);
+{
+    Widget edit = XtNameToWidget(engineOutputShell, which ? "*form2.text" : "*form.text");
+    Arg arg;
+//    XtCallActionProc(edit, "select-all", NULL, NULL, 0);
+//    XtCallActionProc(edit, "kill-selection", NULL, NULL, 0);
+    XtSetArg(arg, XtNstring, ""); // clear without disturbing selection!
+    XtSetValues(edit, &arg, 1);
 }
 
 // cloned from CopyPositionProc. Abuse selected_fen_position to hold selection
 
-extern char *selected_fen_position;
-
 Boolean SendPositionSelection(Widget w, Atom *selection, Atom *target,
                 Atom *type_return, XtPointer *value_return,
                 unsigned long *length_return, int *format_return); // from xboard.c
@@ -233,14 +223,15 @@ void SetFocus(Widget w, XtPointer data, XEvent *event, Boolean *b); // from xopt
 char memoTranslations[] =
 ":Ctrl<Key>c: CopyMemoProc() \n \
 <Btn3Motion>: HandlePV() \n \
-<Btn3Down>: select-start() SelectPV() \n \
+Shift<Btn3Down>: select-start() SelectPV(1) \n \
+Any<Btn3Down>: select-start() SelectPV(0) \n \
 <Btn3Up>: extend-end() StopPV() \n";
 
 void
 SelectPV (Widget w, XEvent * event, String * params, Cardinal * nParams)
 {      // [HGM] pv: translate click to PV line, and load it for display
        String val;
-       int start, end, memo, j;
+       int start, end;
        XawTextPosition index, dummy;
        int x, y;
        Arg arg;
@@ -250,6 +241,7 @@ SelectPV (Widget w, XEvent * event, String * params, Cardinal * nParams)
        XawTextGetSelectionPos(w, &index, &dummy);
        XtSetArg(arg, XtNstring, &val);
        XtGetValues(w, &arg, 1);
+       shiftKey = strcmp(params[0], "0");
        if(LoadMultiPV(x, y, val, index, &start, &end)) {
            XawTextSetSelection( outputField[currentPV][nMemo], start, end );
            highTextStart[currentPV] = start; highTextEnd[currentPV] = end;
@@ -286,7 +278,7 @@ void CopyMemoProc(w, event, prms, nprms)
 {
     if(appData.pasteSelection) return;
     if (selected_fen_position) free(selected_fen_position);
-    XtGetSelectionValue(menuBarWidget, 
+    XtGetSelectionValue(menuBarWidget,
       XA_PRIMARY, XA_STRING,
       /* (XtSelectionCallbackProc) */ MemoCB,
       NULL, /* client_data passed to PastePositionCB */
@@ -410,7 +402,7 @@ Widget EngineOutputCreate(name, text)
      char *name, *text;
 {
     Arg args[16];
-    Widget shell, layout, form, form2, edit;
+    Widget shell, layout, form, form2;
     Dimension bw_width, bw_height;
     int j;
 
@@ -424,7 +416,7 @@ Widget EngineOutputCreate(name, text)
     j = 0;
     XtSetArg(args[j], XtNresizable, True);  j++;
     shell =
-#if TOPLEVEL 
+#if TOPLEVEL
      XtCreatePopupShell(name, topLevelShellWidgetClass,
 #else
       XtCreatePopupShell(name, transientShellWidgetClass,
@@ -465,8 +457,7 @@ Widget EngineOutputCreate(name, text)
     if (engineOutputX == -1) {
        int xx, yy;
        Window junk;
-       Dimension pw_height;
-       Dimension ew_height;
+
        engineOutputH = bw_height/2;
        engineOutputW = bw_width-16;
 
@@ -495,7 +486,6 @@ Widget EngineOutputCreate(name, text)
     XtSetArg(args[j], XtNx, engineOutputX);  j++;
     XtSetArg(args[j], XtNy, engineOutputY);  j++;
     XtSetValues(shell, args, j);
-//    XtSetKeyboardFocus(shell, edit);
 
     return shell;
 }
@@ -537,18 +527,18 @@ void ResizeWindowControls(mode)
     }
 }
 
-void 
+void
 EngineOutputPopUp()
 {
     Arg args[16];
     int j;
     Widget edit;
     static int  needInit = TRUE;
-    static char *title = _("Engine output"), *text = _("This feature is experimental");
+    static char *title = N_("Engine output"), *text = N_("This feature is experimental");
 
     if (engineOutputShell == NULL) {
        engineOutputShell =
-         EngineOutputCreate(title, text);
+         EngineOutputCreate(_(title), _(text));
        XtRealizeWidget(engineOutputShell);
        CatchDeleteWindow(engineOutputShell, "EngineOutputPopDown");
        if( needInit ) {
@@ -565,8 +555,8 @@ EngineOutputPopUp()
        XtSetArg(args[j], XtNstring, text); j++;
        XtSetValues(edit, args, j);
        j = 0;
-       XtSetArg(args[j], XtNiconName, (XtArgVal) title);   j++;
-       XtSetArg(args[j], XtNtitle, (XtArgVal) title);      j++;
+       XtSetArg(args[j], XtNiconName, (XtArgVal) _(title));   j++;
+       XtSetArg(args[j], XtNtitle, (XtArgVal) _(title));      j++;
        XtSetValues(engineOutputShell, args, j);
     }
 
@@ -575,7 +565,7 @@ EngineOutputPopUp()
 
     j=0;
     XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++;
-    XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Engine Output"),
+    XtSetValues(XtNameToWidget(menuBarWidget, "menuView.Show Engine Output"),
                args, j);
 
     engineOutputDialogUp = True;
@@ -603,7 +593,7 @@ void EngineOutputPopDown()
     XSync(xDisplay, False);
     j=0;
     XtSetArg(args[j], XtNleftBitmap, None); j++;
-    XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Engine Output"),
+    XtSetValues(XtNameToWidget(menuBarWidget, "menuView.Show Engine Output"),
                args, j);
 
     engineOutputDialogUp = False;