diff options
author | Programmingkid <programmingkidx@gmail.com> | 2015-05-19 09:11:18 +0100 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2015-05-19 09:11:18 +0100 |
commit | b4c6a112dcfa1d24b905e6cccc763e02000937f1 (patch) | |
tree | 6eb038758042c2a6bc8e42e009ca209fbae3c117 /ui/cocoa.m | |
parent | 8617989eae7398e9e782a73857fc53a548692b31 (diff) |
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 <programmingkidx@gmail.com>
[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 <peter.maydell@linaro.org>
Diffstat (limited to 'ui/cocoa.m')
-rw-r--r-- | ui/cocoa.m | 39 |
1 files changed, 38 insertions, 1 deletions
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(); } |