diff options
| author | Simon Tatham <anakin@pobox.com> | 2011-04-02 15:36:30 +0000 |
|---|---|---|
| committer | Simon Tatham <anakin@pobox.com> | 2011-04-02 15:36:30 +0000 |
| commit | 8c6c8df8f4bd07602931485956fce524925dc2bb (patch) | |
| tree | 11b2abd4e36e1826f4076351d6a0791aabf2584d | |
| parent | 00a313f2d6d96257fd634c743b609cb5b6465e3c (diff) | |
| download | puzzles-8c6c8df8f4bd07602931485956fce524925dc2bb.zip puzzles-8c6c8df8f4bd07602931485956fce524925dc2bb.tar.gz puzzles-8c6c8df8f4bd07602931485956fce524925dc2bb.tar.bz2 puzzles-8c6c8df8f4bd07602931485956fce524925dc2bb.tar.xz | |
Add functions provided by the midend to tell a front end whether GUI
buttons for undo and redo should currently be greyed out.
[originally from svn r9139]
| -rw-r--r-- | devel.but | 18 | ||||
| -rw-r--r-- | midend.c | 10 | ||||
| -rw-r--r-- | puzzles.h | 2 |
3 files changed, 30 insertions, 0 deletions
@@ -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, @@ -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) { @@ -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, |