From b4c6a112dcfa1d24b905e6cccc763e02000937f1 Mon Sep 17 00:00:00 2001 From: Programmingkid Date: Tue, 19 May 2015 09:11:18 +0100 Subject: ui/cocoa: Add console items to the View menu Add any console that is available to the current emulator as a menu item under the View menu. Signed-off-by: John Arbuckle [PMM: Adjusted to apply after zoom-to-fit menu item was added; create the View menu at the same time as all the others, and only add the dynamically-determined items to it later] Signed-off-by: Peter Maydell --- ui/cocoa.m | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/ui/cocoa.m b/ui/cocoa.m index 0a51fbc518..85cb24c78d 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -799,6 +799,7 @@ QemuCocoaView *cocoaView; - (void)showQEMUDoc:(id)sender; - (void)showQEMUTec:(id)sender; - (void)zoomToFit:(id) sender; +- (void)displayConsole:(id)sender; @end @implementation QemuCocoaAppController @@ -970,8 +971,13 @@ QemuCocoaView *cocoaView; [sender setState: NSOffState]; } } -@end +/* Displays the console on the screen */ +- (void)displayConsole:(id)sender +{ + console_select([sender tag]); +} +@end int main (int argc, const char * argv[]) { @@ -1144,6 +1150,32 @@ static const DisplayChangeListenerOps dcl_ops = { .dpy_refresh = cocoa_refresh, }; +/* Returns a name for a given console */ +static NSString * getConsoleName(QemuConsole * console) +{ + return [NSString stringWithFormat: @"%s", qemu_console_get_label(console)]; +} + +/* Add an entry to the View menu for each console */ +static void add_console_menu_entries(void) +{ + NSMenu *menu; + NSMenuItem *menuItem; + int index = 0; + + menu = [[[NSApp mainMenu] itemWithTitle:@"View"] submenu]; + + [menu addItem:[NSMenuItem separatorItem]]; + + while (qemu_console_lookup_by_index(index) != NULL) { + menuItem = [[[NSMenuItem alloc] initWithTitle: getConsoleName(qemu_console_lookup_by_index(index)) + action: @selector(displayConsole:) keyEquivalent: @""] autorelease]; + [menuItem setTag: index]; + [menu addItem: menuItem]; + index++; + } +} + void cocoa_display_init(DisplayState *ds, int full_screen) { COCOA_DEBUG("qemu_cocoa: cocoa_display_init\n"); @@ -1162,4 +1194,9 @@ void cocoa_display_init(DisplayState *ds, int full_screen) // register cleanup function atexit(cocoa_cleanup); + + /* At this point QEMU has created all the consoles, so we can add View + * menu entries for them. + */ + add_console_menu_entries(); } -- cgit v1.2.3