X-Git-Url: http://winboard.nl/cgi-bin?p=xboard.git;a=blobdiff_plain;f=nengineoutput.c;h=70fc9362789d355c9f7f51334f72d649259a4baa;hp=c925792b83c1145a7072df021e1d095e48d71831;hb=HEAD;hpb=cbb23e5f23cee542f8099c7f80fd07df8d9f0a08 diff --git a/nengineoutput.c b/nengineoutput.c index c925792..70fc936 100644 --- a/nengineoutput.c +++ b/nengineoutput.c @@ -5,7 +5,8 @@ * * Copyright 2005 Alessandro Scotti * - * Enhancements Copyright 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + * Enhancements Copyright 2009, 2010, 2011, 2012, 2013, 2014, 2015, + * 2016 Free Software Foundation, Inc. * * ------------------------------------------------------------------------ * @@ -69,44 +70,60 @@ extern char *getenv(); int windowMode = 1; char *mem1, *mem2; // dummies, as this dialog can never be OK'ed +int highTextStart[2], highTextEnd[2]; -void -MemoProc (Option *opt, int n, int x, int y) -{ +int MemoProc P((Option *opt, int n, int x, int y, char *text, int index)); + +Option engoutOptions[] = { +{ 0, LL|T2T, 18, NULL, NULL, NULL, NULL, Icon, " " }, +{ 0, L2L|T2T|SAME_ROW, 162, NULL, NULL, NULL, NULL, Label, N_("engine name") }, +{ 0, T2T|SAME_ROW, 30, NULL, NULL, NULL, NULL, Icon, " " }, +/* TRANSLATORS: noun, as in "the move Nf3"*/ +{ 0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") }, +{ 0, RR|T2T|SAME_ROW, 80, NULL, NULL, NULL, NULL, Label, N_("NPS") }, +{200, T_VSCRL | T_TOP, 500, NULL, (void*) &mem1, NULL, (char**) MemoProc, TextBox, "", &appData.historyFont }, +{ 0, 0, 0, NULL, NULL, "", NULL, Break , "" }, +{ 0, LL|T2T, 18, NULL, NULL, NULL, NULL, Icon, " " }, +{ 0, L2L|T2T|SAME_ROW, 162, NULL, NULL, NULL, NULL, Label, N_("engine name") }, +{ 0, T2T|SAME_ROW, 30, NULL, NULL, NULL, NULL, Icon, " " }, +/* TRANSLATORS: noun, as in "the move Nf3"*/ +{ 0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") }, +{ 0, RR|T2T|SAME_ROW, 80, NULL, NULL, NULL, NULL, Label, N_("NPS") }, +{200, T_VSCRL | T_TOP, 500, NULL, (void*) &mem2, NULL, (char**) MemoProc, TextBox, "", &appData.historyFont }, +{ 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" } +}; + +int +MemoProc (Option *opt, int n, int x, int y, char *text, int index) +{ // user callback for mouse events in memo static int pressed; // keep track of button 3 state + int start, end, currentPV = (opt != &engoutOptions[5]); + switch(n) { case 0: // pointer motion - if(!pressed) return; -// MovePV(x, y, lineGap + BOARD_HEIGHT * (squareSize + lineGap)); + if(!pressed) return FALSE; // only motion with button 3 down is of interest + MovePV(x, y, 500/*lineGap + BOARD_HEIGHT * (squareSize + lineGap)*/); break; case 3: // press button 3 pressed = 1; - SelectPV(opt, x, y); + if(LoadMultiPV(x, y, text, index, &start, &end, currentPV)) { + highTextStart[currentPV] = start; highTextEnd[currentPV] = end; + HighlightText(&engoutOptions[currentPV ? 12 : 5], start, end, TRUE); + } break; case -3: // release button 3 pressed = 0; - StopPV(opt); + if(highTextStart[currentPV] != highTextEnd[currentPV]) + HighlightText(&engoutOptions[currentPV ? 12 : 5], highTextStart[currentPV], highTextEnd[currentPV], FALSE); + highTextStart[currentPV] = highTextEnd[currentPV] = 0; + UnLoadPV(); break; + default: + return FALSE; // not meant for us; do regular event handler } + return TRUE; } -Option engoutOptions[] = { -{ 0, LL|T2T, 17, NULL, NULL, NULL, NULL, Label, " " }, -{ 0, L2L|T2T|SAME_ROW, 163, NULL, NULL, NULL, NULL, Label, N_("engine name") }, -{ 0, T2T|SAME_ROW, 30, NULL, NULL, NULL, NULL, Label, " " }, -{ 0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") }, -{ 0, RR|T2T|SAME_ROW, 80, NULL, NULL, NULL, NULL, Label, N_("NPS") }, -{200, T_VSCRL | T_TOP, 500, NULL, (void*) &mem1, "", (char**) MemoProc, TextBox, "" }, -{ 0, 0, 0, NULL, NULL, "", NULL, Break , "" }, -{ 0, LL|T2T, 17, NULL, NULL, NULL, NULL, Label, " " }, -{ 0, L2L|T2T|SAME_ROW, 163, NULL, NULL, NULL, NULL, Label, N_("engine name") }, -{ 0, T2T|SAME_ROW, 30, NULL, NULL, NULL, NULL, Label, " " }, -{ 0, R2R|T2T|SAME_ROW, 188, NULL, NULL, NULL, NULL, Label, N_("move") }, -{ 0, RR|T2T|SAME_ROW, 80, NULL, NULL, NULL, NULL, Label, N_("NPS") }, -{200, T_VSCRL | T_TOP, 500, NULL, (void*) &mem2, "", (char**) MemoProc, TextBox, "" }, -{ 0, NO_OK, 0, NULL, NULL, "", NULL, EndMark , "" } -}; - void SetIcon (int which, int field, int nIcon) { // first call into xengineoutput.c to pick up icon pixmap @@ -138,11 +155,11 @@ EngineOutputPopUp () static int needInit = TRUE; static char *title = N_("Engine output"); - if (GenericPopUp(engoutOptions, _(title), EngOutDlg, BoardWindow, NONMODAL, 1)) { + if (GenericPopUp(engoutOptions, _(title), EngOutDlg, BoardWindow, NONMODAL, appData.topLevel)) { if(engoutOptions[STRIDE-1].type != Break) DisplayFatalError(_("Mismatch of STRIDE in nengineoutput.c\nChange and recompile!"), 0, 2); - AddHandler(&engoutOptions[MEMO], 6); - AddHandler(&engoutOptions[MEMO+STRIDE], 6); + AddHandler(&engoutOptions[MEMO], EngOutDlg, 6); + AddHandler(&engoutOptions[MEMO+STRIDE], EngOutDlg, 6); if( needInit ) { InitEngineOutput(&engoutOptions[0], &engoutOptions[MEMO]); // make icon bitmaps needInit = FALSE; @@ -178,4 +195,3 @@ EngineOutputProc () { if (!PopDown(EngOutDlg)) EngineOutputPopUp(); } -