#include <X11/Xaw/Text.h>
#include <X11/Xaw/AsciiText.h>
#include <X11/Xaw/Viewport.h>
+#include <X11/Xatom.h>
+#include <X11/Xmu/Atoms.h>
#include "common.h"
#include "frontend.h"
#define _LL_ 100
// imports from xboard.c
-extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
-extern Display *xDisplay;
+extern Widget formWidget, boardWidget, menuBarWidget;
extern Window xBoardWindow;
extern int squareSize;
extern Pixmap xMarkPixmap, wIconPixmap, bIconPixmap;
void SetEngineColorIcon( int which );
/* Imports from backend.c */
-char * SavePart(char *str);
extern int opponentKibitzes;
/* Imports from xboard.c */
{
int r;
- if ((r=XpmCreatePixmapFromData(xDisplay, XtWindow(outputField[0][nColorIcon]),
- pixData,
- &(icons[iconNr]),
- NULL, NULL /*&attr*/)) != 0) {
- fprintf(stderr, _("Error %d loading icon image\n"), r);
- exit(1);
- }
+// if ((r=XpmCreatePixmapFromData(xDisplay, XtWindow(outputField[0][nColorIcon]),
+// pixData,
+// &(icons[iconNr]),
+// NULL, NULL /*&attr*/)) != 0) {
+// fprintf(stderr, _("Error %d loading icon image\n"), r);
+// exit(1);
+// }
}
static void InitializeEngineOutput()
XtCallActionProc(edit, "kill-selection", NULL, NULL, 0);
}
+// 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
+void SetFocus(Widget w, XtPointer data, XEvent *event, Boolean *b); // from xoptions.c
+
+char memoTranslations[] =
+":Ctrl<Key>c: CopyMemoProc() \n";
+
+static void
+MemoCB(Widget w, XtPointer client_data, Atom *selection,
+ Atom *type, XtPointer value, unsigned long *len, int *format)
+{
+ if (value==NULL || *len==0) return; /* nothing had been selected to copy */
+ selected_fen_position = value;
+ selected_fen_position[*len]='\0'; /* normally this string is terminated, but be safe */
+// XtOwnSelection(menuBarWidget, XA_CLIPBOARD(xDisplay),
+// CurrentTime,
+// SendPositionSelection,
+// NULL/* lose_ownership_proc */ ,
+// NULL/* transfer_done_proc */);
+}
+
+void CopyMemoProc(w, event, prms, nprms)
+ Widget w;
+ XEvent *event;
+ String *prms;
+ Cardinal *nprms;
+{
+ if(appData.pasteSelection) return;
+ if (selected_fen_position) free(selected_fen_position);
+ XtGetSelectionValue(menuBarWidget,
+ XA_PRIMARY, XA_STRING,
+ /* (XtSelectionCallbackProc) */ MemoCB,
+ NULL, /* client_data passed to PastePositionCB */
+
+ /* better to use the time field from the event that triggered the
+ * call to this function, but that isn't trivial to get
+ */
+ CurrentTime
+ );
+}
+
// The following routines are mutated clones of the commentPopUp routines
-void PositionControlSet(which, form, bw_width)
+void PositionControlSet(which, shell, form, bw_width)
int which;
- Widget form;
+ Widget shell, form;
Dimension bw_width;
{
Arg args[16];
outputField[which][nMemo] = edit =
XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j);
+ XtOverrideTranslations(edit, XtParseTranslationTable(memoTranslations));
+ XtAddEventHandler(edit, ButtonPressMask, False, SetFocus, (XtPointer) shell);
+
j = 0;
XtSetArg(args[j], XtNfromVert, ColorWidget); j++;
// XtSetArg(args[j], XtNresizable, (XtArgVal) True); j++;
XtSetArg(args[j], XtNresizable, True); j++;
shell =
#if TOPLEVEL
- XtCreatePopupShell(name, topLevelShellWidgetClass,
+ // XtCreatePopupShell(name, topLevelShellWidgetClass,
#else
- XtCreatePopupShell(name, transientShellWidgetClass,
+ // XtCreatePopupShell(name, transientShellWidgetClass,
#endif
- shellWidget, args, j);
- layout =
- XtCreateManagedWidget(layoutName, formWidgetClass, shell,
- layoutArgs, XtNumber(layoutArgs));
+ // shellWidget, args, j);
+// layout =
+// XtCreateManagedWidget(layoutName, formWidgetClass, shell,
+// layoutArgs, XtNumber(layoutArgs));
// divide window vertically into two equal parts, by creating two forms
form =
XtCreateManagedWidget("form", formWidgetClass, layout,
XtSetValues(shell, args, j);
// fill up both forms with control elements
- PositionControlSet(0, form, bw_width);
- PositionControlSet(1, form2, bw_width);
+ PositionControlSet(0, shell, form, bw_width);
+ PositionControlSet(1, shell, form2, bw_width);
XtRealizeWidget(shell);
engineOutputH = bw_height/2;
engineOutputW = bw_width-16;
- XSync(xDisplay, False);
+ // XSync(xDisplay, False);
#ifdef NOTDEF
/* This code seems to tickle an X bug if it is executed too soon
after xboard starts up. The coordinates get transformed as if
the main window was positioned at (0, 0).
*/
- XtTranslateCoords(shellWidget,
- (bw_width - engineOutputW) / 2, 0 - engineOutputH / 2,
- &engineOutputX, &engineOutputY);
+// XtTranslateCoords(shellWidget,
+// (bw_width - engineOutputW) / 2, 0 - engineOutputH / 2,
+// &engineOutputX, &engineOutputY);
#else /*!NOTDEF*/
- XTranslateCoordinates(xDisplay, XtWindow(shellWidget),
- RootWindowOfScreen(XtScreen(shellWidget)),
- (bw_width - engineOutputW) / 2, 0 - engineOutputH / 2,
- &xx, &yy, &junk);
+// XTranslateCoordinates(xDisplay, XtWindow(shellWidget),
+// RootWindowOfScreen(XtScreen(shellWidget)),
+// (bw_width - engineOutputW) / 2, 0 - engineOutputH / 2,
+// &xx, &yy, &junk);
engineOutputX = xx;
engineOutputY = yy;
#endif /*!NOTDEF*/
void
EngineOutputPopUp()
{
+ return;
+ //TODO
Arg args[16];
int j;
Widget edit;
engineOutputShell =
EngineOutputCreate(title, text);
XtRealizeWidget(engineOutputShell);
- CatchDeleteWindow(engineOutputShell, "EngineOutputPopDown");
+ // CatchDeleteWindow(engineOutputShell, "EngineOutputPopDown");
if( needInit ) {
InitializeEngineOutput();
needInit = FALSE;
}
XtPopup(engineOutputShell, XtGrabNone);
- XSync(xDisplay, False);
+ // XSync(xDisplay, False);
j=0;
XtSetArg(args[j], XtNleftBitmap, xMarkPixmap); j++;
void EngineOutputPopDown()
{
+ return;
+ //TODO
+
Arg args[16];
int j;
wpEngineOutput.width = engineOutputW;
wpEngineOutput.height = engineOutputH;
XtPopdown(engineOutputShell);
- XSync(xDisplay, False);
+ // XSync(xDisplay, False);
j=0;
XtSetArg(args[j], XtNleftBitmap, None); j++;
XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Show Engine Output"),