#include <stdio.h>
#include <stdlib.h>
-
-#include <X11/Intrinsic.h>
-#include <X11/StringDefs.h>
-#include <X11/Shell.h>
-#include <X11/Xaw/Dialog.h>
-#include <X11/Xaw/Form.h>
-#include <X11/Xaw/List.h>
-#include <X11/Xaw/Label.h>
-#include <X11/Xaw/SimpleMenu.h>
-#include <X11/Xaw/SmeBSB.h>
-#include <X11/Xaw/SmeLine.h>
-#include <X11/Xaw/Box.h>
-#include <X11/Xaw/Paned.h>
-#include <X11/Xaw/MenuButton.h>
-#include <X11/cursorfont.h>
-#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 <gtk/gtk.h>
#include "common.h"
-#include "frontend.h"
#include "backend.h"
#include "xhistory.h"
-#include "xboard.h"
#include "dialogs.h"
#include "gettext.h"
#endif
// templates for calls into back-end (= history.c; should be moved to history.h header shared with it!)
-void RefreshMemoContent P((void));
-void MemoContentUpdated P((void));
void FindMoveByCharIndex P(( int char_index ));
-// variables in xoptions.c
+// variables in nhistory.c
extern Option historyOptions[];
// ------------- low-level front-end actions called by MoveHistory back-end -----------------
void
-HighlightMove (int from, int to, Boolean highlight)
-{
- if(highlight)
- XawTextSetSelection( historyOptions[0].handle, from, to ); // for lack of a better method, use selection for highighting
-}
-
-void
-ClearHistoryMemo ()
-{
- SetWidgetText(&historyOptions[0], "", HistoryDlg);
-}
-
-// the bold argument says 0 = normal, 1 = bold typeface
-// the colorNr argument says 0 = font-default, 1 = gray
-int
-AppendToHistoryMemo (char * text, int bold, int colorNr)
-{
- return AppendText(&historyOptions[0], text); // for now ignore bold & color stuff, as Xaw cannot handle that
-}
-
-void
ScrollToCurrent (int caretPos)
{
- Arg args[10];
- char *s;
- int len;
- GetWidgetText(&historyOptions[0], &s);
- len = strlen(s);
- if(caretPos < 0 || caretPos > len) caretPos = len;
- if(caretPos > len-30) { // scroll to end, which causes no flicker
- static XEvent event;
- XtCallActionProc(historyOptions[0].handle, "end-of-file", &event, NULL, 0);
- return;
- }
- // the following leads to a very annoying flicker, even when no scrolling is done at all.
- XtSetArg(args[0], XtNinsertPosition, caretPos); // this triggers scrolling in Xaw
- XtSetArg(args[1], XtNdisplayCaret, False);
- XtSetValues(historyOptions[0].handle, args, 2);
+ static GtkTextIter iter;
+ gtk_text_buffer_get_iter_at_offset((GtkTextBuffer *) historyOptions[0].handle, &iter, caretPos);
+ gtk_text_view_scroll_to_iter((GtkTextView *) historyOptions[0].textValue, &iter, 0.0, 0, 0.5, 0.5);
}
// ------------------------------ callbacks --------------------------
-char *historyText;
char historyTranslations[] =
"<Btn3Down>: select-start() \n \
<Btn3Up>: extend-end() SelectMove() \n";
-void
-SelectMove (Widget w, XEvent * event, String * params, Cardinal * nParams)
-{
- XawTextPosition index, dummy;
-
- XawTextGetSelectionPos(w, &index, &dummy);
- FindMoveByCharIndex( index ); // [HGM] also does the actual moving to it, now
-}
-
-Option historyOptions[] = {
-{ 0xD, 200, 400, NULL, (void*) &historyText, "", NULL, TextBox, "" },
-{ 0, 2, 0, NULL, (void*) NULL, "", NULL, EndMark , "" }
-};
-
-// ------------ standard entry points into MoveHistory code -----------
-
-Boolean
-MoveHistoryIsUp ()
-{
- return shellUp[HistoryDlg];
-}
-
-Boolean
-MoveHistoryDialogExists ()
-{
- return DialogExists(HistoryDlg);
-}
-
-void
-HistoryPopUp ()
-{
- if(GenericPopUp(historyOptions, _("Move list"), HistoryDlg))
- AddHandler(&historyOptions[0], 0);
- MarkMenu("Show Move History", HistoryDlg);
-}
-
-void
-HistoryShowProc ()
-{
- if (!shellUp[HistoryDlg]) {
- ASSIGN(historyText, "");
- HistoryPopUp();
- RefreshMemoContent();
- MemoContentUpdated();
- } else PopDown(HistoryDlg);
- ToNrEvent(currentMove);
-}