X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xengineoutput.c;h=4d94616369146c7d6f5c9a93da720e043bbcaaf0;hb=0aa6203676d6c3e1bfb8fb6a17d801ebecf4c317;hp=927f2f4746562a576988d45ecd63bab8596a002a;hpb=f38964b851874781439f481fd00b3eef6f592603;p=xboard.git diff --git a/xengineoutput.c b/xengineoutput.c index 927f2f4..4d94616 100644 --- a/xengineoutput.c +++ b/xengineoutput.c @@ -48,25 +48,7 @@ extern char *getenv(); # include #endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include #include "common.h" #include "frontend.h" @@ -84,8 +66,6 @@ extern char *getenv(); # define N_(s) s #endif -#include - // [HGM] pixmaps of some ICONS used in the engine-outut window #include "pixmaps/WHITE_14.xpm" #include "pixmaps/BLACK_14.xpm" @@ -95,13 +75,17 @@ extern char *getenv(); #include "pixmaps/PONDER_14.xpm" #include "pixmaps/ANALYZING_14.xpm" +extern Option engoutOptions[]; // must go in header, but which? /* Module variables */ static int currentPV, highTextStart[2], highTextEnd[2]; +#ifdef TODO_GTK static Pixmap icons[8]; // [HGM] this front-end array translates back-end icon indicator to handle static Widget memoWidget; +#endif +static void *memoWidget; - +#ifdef TODO_GTK static void ReadIcon (char *pixData[], int iconNr, Widget w) { @@ -115,10 +99,12 @@ ReadIcon (char *pixData[], int iconNr, Widget w) exit(1); } } +#endif void InitEngineOutput (Option *opt, Option *memo2) { // front-end, because it must have access to the pixmaps +#ifdef TODO_GTK Widget w = opt->handle; memoWidget = memo2->handle; @@ -130,34 +116,39 @@ InitEngineOutput (Option *opt, Option *memo2) ReadIcon(PONDER_14, nPondering, w); ReadIcon(THINK_14, nThinking, w); ReadIcon(ANALYZE_14, nAnalyzing, w); +#endif } void DrawWidgetIcon (Option *opt, int nIcon) { // as we are already in X front-end, so do X-stuff here - Arg arg; - XtSetArg(arg, XtNleftBitmap, (XtArgVal) icons[nIcon]); - XtSetValues(opt->handle, &arg, 1); +#ifdef TODO_GTK + gchar widgetname[50]; + + if( nIcon != 0 ) { + gtk_image_set_from_pixbuf(GTK_IMAGE(opt->handle), GDK_PIXBUF(iconsGTK[nIcon])); + } +#endif } void InsertIntoMemo (int which, char * text, int where) { - XawTextBlock t; - Widget edit; - - /* 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 = ' '; - - t.ptr = text; t.firstPos = 0; t.length = strlen(text); t.format = XawFmt8Bit; - edit = XtNameToWidget(shells[EngOutDlg], which ? "*paneB.text" : "*paneA.text"); - XawTextReplace(edit, where, where, &t); - if(where < highTextStart[which]) { // [HGM] multiPVdisplay: move highlighting - int len = strlen(text); - highTextStart[which] += len; highTextEnd[which] += len; - XawTextSetSelection( edit, highTextStart[which], highTextEnd[which] ); - } + char *p; + GtkTextIter start; + + /* the backend adds \r\n, which is needed for winboard, + * for xboard we delete them again over here */ + if(p = strchr(text, '\r')) *p = ' '; + + GtkTextBuffer *tb = (GtkTextBuffer *) (engoutOptions[which ? 12 : 5].handle); +// gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(tb), &start); + gtk_text_buffer_get_iter_at_offset(tb, &start, where); + gtk_text_buffer_insert(tb, &start, text, -1); + if(where < highTextStart[which]) { // [HGM] multiPVdisplay: move highlighting + int len = strlen(text); + highTextStart[which] += len; highTextEnd[which] += len; + } } //--------------------------------- PV walking --------------------------------------- @@ -165,83 +156,9 @@ InsertIntoMemo (int which, char * text, int where) char memoTranslations[] = ":Ctrlc: CopyMemoProc() \n \ : HandlePV() \n \ -Shift: select-start() SelectPV(1) \n \ -Any: select-start() SelectPV(0) \n \ -: 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; - XawTextPosition index, dummy; - int x, y; - Arg arg; - - x = event->xmotion.x; y = event->xmotion.y; - currentPV = (w != memoWidget); - 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, currentPV)) { - XawTextSetSelection( w, start, end ); - highTextStart[currentPV] = start; highTextEnd[currentPV] = end; - } -} - -void -StopPV (Widget w, XEvent * event, String * params, Cardinal * nParams) -{ // [HGM] pv: on right-button release, stop displaying PV - XawTextUnsetSelection( w ); - highTextStart[currentPV] = highTextEnd[currentPV] = 0; - UnLoadPV(); -} - -//------------------------- Ctrl-C copying of memo texts --------------------------- - -// Awfull code: first read our own primary selection into selected_fen_position, -// and then transfer ownership of this to the clipboard, so that the -// copy-position callback can fetch it there when somebody pastes it -// Worst of all is that I only added it because I did not know how to copy primary: -// my laptop has no middle button. Ctrl-C might not be needed at all... [HGM] - -// cloned from CopyPositionProc. Abuse selected_fen_position to hold selection - -Boolean SendPositionSelection(Widget w, Atom *selection, Atom *target, - Atom *type_return, XtPointer *value_return, - unsigned long *length_return, int *format_return); // from xboard.c - -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 (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 - ); -} +Shift: select-start() extend-end() SelectPV(1) \n \ +Any: select-start() extend-end() SelectPV(0) \n \ +: StopPV() \n"; //------------------------------- pane switching ----------------------------------- @@ -249,6 +166,7 @@ void ResizeWindowControls (int mode) { // another hideous kludge: to have only a single pane, we resize the // second to 5 pixels (which makes it too small to display anything) +#ifdef TODO_GTK Widget form1, form2; Arg args[16]; int j; @@ -281,5 +199,6 @@ ResizeWindowControls (int mode) XtSetArg(args[j], XtNheight, (XtArgVal) (ew_height/2)); j++; XtSetValues(form2, args, j); } +#endif }