X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/puzzles/blobdiff_plain/9709875736518ec7ae58ea474ac5130ae320158a..edf63745d9f5a4432e05eb6cb27b9c69b7caf237:/osx.m diff --git a/osx.m b/osx.m index 11436a8..039f081 100644 --- a/osx.m +++ b/osx.m @@ -383,7 +383,7 @@ struct frontend { - (void)keyDown:(NSEvent *)ev; - (void)activateTimer; - (void)deactivateTimer; -- (void)setStatusLine:(NSString *)text; +- (void)setStatusLine:(char *)text; @end @implementation MyImageView @@ -589,22 +589,34 @@ struct frontend { * function key codes. */ if (c >= 0x80) { + int mods = FALSE; switch (c) { case NSUpArrowFunctionKey: c = CURSOR_UP; + mods = TRUE; break; case NSDownArrowFunctionKey: c = CURSOR_DOWN; + mods = TRUE; break; case NSLeftArrowFunctionKey: c = CURSOR_LEFT; + mods = TRUE; break; case NSRightArrowFunctionKey: c = CURSOR_RIGHT; + mods = TRUE; break; default: continue; } + + if (mods) { + if ([ev modifierFlags] & NSShiftKeyMask) + c |= MOD_SHFT; + if ([ev modifierFlags] & NSControlKeyMask) + c |= MOD_CTRL; + } } if (c >= '0' && c <= '9' && ([ev modifierFlags] & NSNumericPadKeyMask)) @@ -651,7 +663,7 @@ struct frontend { } - (void)restartGame:(id)sender { - [self processButton:'r' x:-1 y:-1]; + midend_restart_game(me); } - (void)undoMove:(id)sender { @@ -1051,6 +1063,11 @@ struct frontend { - (void)specificGame:(id)sender { + [self startConfigureSheet:CFG_DESC]; +} + +- (void)specificRandomGame:(id)sender +{ [self startConfigureSheet:CFG_SEED]; } @@ -1114,9 +1131,11 @@ struct frontend { [self sheetEndWithStatus:NO]; } -- (void)setStatusLine:(NSString *)text +- (void)setStatusLine:(char *)text { - [[status cell] setTitle:text]; + char *rewritten = midend_rewrite_statusbar(me, text); + [[status cell] setTitle:[NSString stringWithCString:rewritten]]; + sfree(rewritten); } @end @@ -1250,7 +1269,7 @@ void activate_timer(frontend *fe) void status_bar(frontend *fe, char *text) { - [fe->window setStatusLine:[NSString stringWithCString:text]]; + [fe->window setStatusLine:text]; } /* ---------------------------------------------------------------------- @@ -1340,6 +1359,8 @@ int main(int argc, char **argv) item = newitem(menu, "New Game", "n", NULL, @selector(newGame:)); item = newitem(menu, "Restart Game", "r", NULL, @selector(restartGame:)); item = newitem(menu, "Specific Game", "", NULL, @selector(specificGame:)); + item = newitem(menu, "Specific Random Seed", "", NULL, + @selector(specificRandomGame:)); [menu addItem:[NSMenuItem separatorItem]]; { NSMenu *submenu = newsubmenu(menu, "New Window");