X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=dialogs.c;h=32f1e34d7ba768b2ad2154357da9e4d04bfb265c;hb=ad2b3cdfb2502c0cded2425a6fd1dd6f87b6c97e;hp=ca2bd12ca4c9899d540c69456b6d79c2065597c2;hpb=6f01cd3e57fc068f24d8075c1dbb87ebef635e6a;p=xboard.git diff --git a/dialogs.c b/dialogs.c index ca2bd12..32f1e34 100644 --- a/dialogs.c +++ b/dialogs.c @@ -261,8 +261,8 @@ static Option matchOptions[] = { { 0, SAME_ROW|LL, 0, NULL, NULL, "", NULL, Label, N_(" (for concurrent playing of a single") }, { 0, 0, 0, NULL, (void*) &appData.cycleSync, "", NULL, CheckBox, N_("Sync after cycle") }, { 0, SAME_ROW|LL, 0, NULL, NULL, "", NULL, Label, N_(" tourney with multiple XBoards)") }, -{ 0, LR, 200, NULL, NULL, "", NULL, Label, N_("Tourney participants:") }, -{ 0, SAME_ROW|RR, 0, NULL, NULL, "", NULL, Label, N_("Select Engine:") }, +{ 0, LR, 175, NULL, NULL, "", NULL, Label, N_("Tourney participants:") }, +{ 0, SAME_ROW|RR, 175, NULL, NULL, "", NULL, Label, N_("Select Engine:") }, { 150, T_VSCRL | T_FILL | T_WRAP, 175, NULL, (void*) &engineName, "", NULL, TextBox, "" }, { 150, SAME_ROW|RR, @@ -921,6 +921,9 @@ static char *commentText; static int commentIndex; static void ClearComment P((int n)); static void SaveChanges P((int n)); +int savedIndex; /* gross that this is global (and even across files...) */ + +static int CommentClick P((Option *opt, int n, int x, int y, char *val, int index)); static int NewComCallback (int n) @@ -930,12 +933,22 @@ NewComCallback (int n) } Option commentOptions[] = { -{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 250, NULL, (void*) &commentText, "", NULL, TextBox, "" }, +{ 200, T_VSCRL | T_FILL | T_WRAP | T_TOP, 250, NULL, (void*) &commentText, "", (MemoCallback *) &CommentClick, TextBox, "" }, { 0, 0, 50, NULL, (void*) &ClearComment, NULL, NULL, Button, N_("clear") }, { 0, SAME_ROW, 100, NULL, (void*) &SaveChanges, NULL, NULL, Button, N_("save changes") }, { 0, SAME_ROW, 0, NULL, (void*) &NewComCallback, "", NULL, EndMark , "" } }; +static int +CommentClick (Option *opt, int n, int x, int y, char *val, int index) +{ + if(n != 3) return FALSE; // only button-3 press is of interest + ReplaceComment(savedIndex, val); + if(savedIndex != currentMove) ToNrEvent(savedIndex); + LoadVariation( index, val ); // [HGM] also does the actual moving to it, now + return TRUE; +} + static void SaveChanges (int n) { @@ -960,10 +973,32 @@ NewCommentPopup (char *title, char *text, int index) commentIndex = index; MarkMenu("View.Comments", CommentDlg); if(GenericPopUp(commentOptions, title, CommentDlg, BoardWindow, NONMODAL, 1)) - AddHandler(&commentOptions[0], 1); + AddHandler(&commentOptions[0], CommentDlg, 1); +} + +void +EditCommentPopUp (int index, char *title, char *text) +{ + savedIndex = index; + if (text == NULL) text = ""; + NewCommentPopup(title, text, index); } void +CommentPopUp (char *title, char *text) +{ + savedIndex = currentMove; // [HGM] vari + NewCommentPopup(title, text, currentMove); +} + +void +CommentPopDown () +{ + PopDown(CommentDlg); +} + + +void EditCommentProc () { if (PopDown(CommentDlg)) { // popdown succesful @@ -1145,7 +1180,8 @@ ICSInputBoxPopUp () { MarkMenu("View.ICSInputBox", InputBoxDlg); if(GenericPopUp(boxOptions, _("ICS input box"), InputBoxDlg, BoardWindow, NONMODAL, 0)) - AddHandler(&boxOptions[0], 3); + AddHandler(&boxOptions[0], InputBoxDlg, 3); + CursorAtEnd(&boxOptions[0]); } void @@ -1176,7 +1212,8 @@ PopUpMoveDialog (char firstchar) static char buf[2]; buf[0] = firstchar; ASSIGN(icsText, buf); if(GenericPopUp(typeOptions, _("Type a move"), TransientDlg, BoardWindow, MODAL, 0)) - AddHandler(&typeOptions[0], 2); + AddHandler(&typeOptions[0], TransientDlg, 2); + CursorAtEnd(&typeOptions[0]); } void @@ -1467,7 +1504,7 @@ AskQuestion (char *title, char *question, char *replyPrefix, ProcRef pr) ASSIGN(answer, ""); askOptions[0].name = question; if(GenericPopUp(askOptions, title, AskDlg, BoardWindow, MODAL, 0)) - AddHandler(&askOptions[1], 2); + AddHandler(&askOptions[1], AskDlg, 2); } //---------------------------- Promotion Popup -------------------------------------- @@ -1649,7 +1686,7 @@ void ChatProc () { if(GenericPopUp(chatOptions, _("Chat box"), ChatDlg, BoardWindow, NONMODAL, 0)) - AddHandler(&chatOptions[0], 2), AddHandler(&chatOptions[6], 2); // treats return as OK + AddHandler(&chatOptions[0], ChatDlg, 2), AddHandler(&chatOptions[6], ChatDlg, 2); // treats return as OK MarkMenu("View.OpenChatWindow", ChatDlg); } @@ -1688,7 +1725,7 @@ static void GLT_Button P((int n)); static int GLT_OK P((int n)); static Option listOptions[] = { -{ 0, LR|TB, 200, NULL, (void*) strings, "", NULL, ListBox, "" }, +{300, LR|TB, 200, NULL, (void*) strings, "", NULL, ListBox, "" }, // For GTK we need to specify a height, as default would just show 3 lines { 0, 0, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("factory") }, { 0, SAME_ROW, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("up") }, { 0, SAME_ROW, 0, NULL, (void*) &GLT_Button, NULL, NULL, Button, N_("down") }, @@ -1717,13 +1754,13 @@ GLT_Button (int n) if(index >= strlen(GLT_ALL_TAGS)) return; strings[index] = strings[index+1]; strings[++index] = p; - LoadListBox(&listOptions[0], "?", index, index-1); // only change the two specified entries + LoadListBox(&listOptions[0], "?", index, index-1); // only change the two specified entries } else if (n == 2) { if(index == 0) return; strings[index] = strings[index-1]; strings[--index] = p; - LoadListBox(&listOptions[0], "?", index, index+1); + LoadListBox(&listOptions[0], "?", index, index+1); } else if (n == 1) { safeStrCpy(lpUserGLT, GLT_DEFAULT_TAGS, LPUSERGLT_SIZE); @@ -2025,8 +2062,8 @@ Option mainOptions[] = { // description of main window in terms of generic dialo { 0, 0, 0, NULL, (void*)&SizeKludge, "", NULL, BarEnd, "" }, { 0, LR|T2T|BORDER|SAME_ROW, 0, NULL, NULL, "", NULL, Label, "1" }, // optional title in window { 50, LL|TT, 100, NULL, (void*) &LogoW, NULL, NULL, -1, "LogoW" }, // white logo -{ 0, L2L|T2T, 200, NULL, (void*) &CCB, NULL, NULL, Label, "White" }, // white clock -{ 0, R2R|T2T|SAME_ROW, 200, NULL, (void*) &CCB, NULL, NULL, Label, "Black" }, // black clock +{ 12, L2L|T2T, 200, NULL, (void*) &CCB, NULL, NULL, Label, "White" }, // white clock +{ 13, R2R|T2T|SAME_ROW, 200, NULL, (void*) &CCB, NULL, NULL, Label, "Black" }, // black clock { 50, RR|TT|SAME_ROW, 100, NULL, (void*) &LogoB, NULL, NULL, -1, "LogoB" }, // black logo { 0, LR|T2T|BORDER, 401, NULL, NULL, "", NULL, -1, "2" }, // backup for title in window (if no room for other) { 0, LR|T2T|BORDER, 270, NULL, NULL, "", NULL, Label, "message" }, // message field @@ -2073,7 +2110,7 @@ MenuCallback (int n) { MenuProc *proc = (MenuProc *) (((MenuItem*)(mainOptions[n].choice))[values[n]].proc); - (proc)(); + if(!proc) RecentEngineEvent(values[n] - firstEngineItem); else (proc)(); } static Option * @@ -2143,6 +2180,7 @@ BoardPopUp (int squareSize, int lineGap, void *clockFontThingy) } if(!appData.showButtonBar) for(i=W_BUTTON; i