aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorProgrammingkid <programmingkidx@gmail.com>2015-05-19 09:11:18 +0100
committerPeter Maydell <peter.maydell@linaro.org>2015-05-19 09:11:18 +0100
commitb4c6a112dcfa1d24b905e6cccc763e02000937f1 (patch)
tree6eb038758042c2a6bc8e42e009ca209fbae3c117
parent8617989eae7398e9e782a73857fc53a548692b31 (diff)
ui/cocoa: Add console items to the View menupull-cocoa-20150519
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>
-rw-r--r--ui/cocoa.m39
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();
}