From ea6ffc86747062fbbe54d16e6929582f09e4342d Mon Sep 17 00:00:00 2001 From: simon Date: Sat, 2 Apr 2011 15:36:30 +0000 Subject: [PATCH] Add functions provided by the midend to tell a front end whether GUI buttons for undo and redo should currently be greyed out. git-svn-id: svn://svn.tartarus.org/sgt/puzzles@9139 cda61777-01e9-0310-a592-d414129be87e --- devel.but | 18 ++++++++++++++++++ midend.c | 10 ++++++++++ puzzles.h | 2 ++ 3 files changed, 30 insertions(+) diff --git a/devel.but b/devel.but index 8e35359..076ef8b 100644 --- a/devel.but +++ b/devel.but @@ -3096,6 +3096,24 @@ The front end can expect its drawing API and/or \cw{activate_timer()} to be called from within a call to this function. +\H{midend-can-undo} \cw{midend_can_undo()} + +\c int midend_can_undo(midend *me); + +Returns \cw{TRUE} if the midend is currently in a state where the undo +operation is meaningful (i.e. at least one position exists on the undo +chain before the present one). Front ends may wish to use this to +visually activate and deactivate an undo button. + +\H{midend-can-redo} \cw{midend_can_redo()} + +\c int midend_can_redo(midend *me); + +Returns \cw{TRUE} if the midend is currently in a state where the redo +operation is meaningful (i.e. at least one position exists on the redo +chain after the present one). Front ends may wish to use this to +visually activate and deactivate a redo button. + \H{midend-serialise} \cw{midend_serialise()} \c void midend_serialise(midend *me, diff --git a/midend.c b/midend.c index 05ea663..300e2bf 100644 --- a/midend.c +++ b/midend.c @@ -428,6 +428,16 @@ void midend_new_game(midend *me) me->pressed_mouse_button = 0; } +int midend_can_undo(midend *me) +{ + return (me->statepos > 1); +} + +int midend_can_redo(midend *me) +{ + return (me->statepos < me->nstates); +} + static int midend_undo(midend *me) { if (me->statepos > 1) { diff --git a/puzzles.h b/puzzles.h index 971cb29..6933e70 100644 --- a/puzzles.h +++ b/puzzles.h @@ -253,6 +253,8 @@ char *midend_get_game_id(midend *me); int midend_can_format_as_text_now(midend *me); char *midend_text_format(midend *me); char *midend_solve(midend *me); +int midend_can_undo(midend *me); +int midend_can_redo(midend *me); void midend_supersede_game_desc(midend *me, char *desc, char *privdesc); char *midend_rewrite_statusbar(midend *me, char *text); void midend_serialise(midend *me, -- 2.11.0