ui/cocoa.m: Add Machine menu with pause and resume menu items
Add Machine menu to the Macintosh interface with pause and resume menu items. These items can either pause or resume execution of the guest operating system. Signed-off-by: John Arbuckle <programmingkidx@gmail.com> Message-id: 6D7AE6AA-0595-4FAD-AACF-9DFAB87248F0@gmail.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
473a49460d
commit
8524f1c79e
67
ui/cocoa.m
67
ui/cocoa.m
@ -29,6 +29,7 @@
|
||||
#include "ui/console.h"
|
||||
#include "ui/input.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "qmp-commands.h"
|
||||
|
||||
#ifndef MAC_OS_X_VERSION_10_5
|
||||
#define MAC_OS_X_VERSION_10_5 1050
|
||||
@ -65,6 +66,7 @@ static int last_buttons;
|
||||
int gArgc;
|
||||
char **gArgv;
|
||||
bool stretch_video;
|
||||
NSTextField *pauseLabel;
|
||||
|
||||
// keymap conversion
|
||||
int keymap[] =
|
||||
@ -800,6 +802,10 @@ QemuCocoaView *cocoaView;
|
||||
- (void)showQEMUTec:(id)sender;
|
||||
- (void)zoomToFit:(id) sender;
|
||||
- (void)displayConsole:(id)sender;
|
||||
- (void)pauseQEMU:(id)sender;
|
||||
- (void)resumeQEMU:(id)sender;
|
||||
- (void)displayPause;
|
||||
- (void)removePause;
|
||||
@end
|
||||
|
||||
@implementation QemuCocoaAppController
|
||||
@ -834,6 +840,18 @@ QemuCocoaView *cocoaView;
|
||||
[normalWindow makeKeyAndOrderFront:self];
|
||||
[normalWindow center];
|
||||
stretch_video = false;
|
||||
|
||||
/* Used for displaying pause on the screen */
|
||||
pauseLabel = [NSTextField new];
|
||||
[pauseLabel setBezeled:YES];
|
||||
[pauseLabel setDrawsBackground:YES];
|
||||
[pauseLabel setBackgroundColor: [NSColor whiteColor]];
|
||||
[pauseLabel setEditable:NO];
|
||||
[pauseLabel setSelectable:NO];
|
||||
[pauseLabel setStringValue: @"Paused"];
|
||||
[pauseLabel setFont: [NSFont fontWithName: @"Helvetica" size: 90]];
|
||||
[pauseLabel setTextColor: [NSColor blackColor]];
|
||||
[pauseLabel sizeToFit];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
@ -977,6 +995,44 @@ QemuCocoaView *cocoaView;
|
||||
{
|
||||
console_select([sender tag]);
|
||||
}
|
||||
|
||||
/* Pause the guest */
|
||||
- (void)pauseQEMU:(id)sender
|
||||
{
|
||||
qmp_stop(NULL);
|
||||
[sender setEnabled: NO];
|
||||
[[[sender menu] itemWithTitle: @"Resume"] setEnabled: YES];
|
||||
[self displayPause];
|
||||
}
|
||||
|
||||
/* Resume running the guest operating system */
|
||||
- (void)resumeQEMU:(id) sender
|
||||
{
|
||||
qmp_cont(NULL);
|
||||
[sender setEnabled: NO];
|
||||
[[[sender menu] itemWithTitle: @"Pause"] setEnabled: YES];
|
||||
[self removePause];
|
||||
}
|
||||
|
||||
/* Displays the word pause on the screen */
|
||||
- (void)displayPause
|
||||
{
|
||||
/* Coordinates have to be calculated each time because the window can change its size */
|
||||
int xCoord, yCoord, width, height;
|
||||
xCoord = ([normalWindow frame].size.width - [pauseLabel frame].size.width)/2;
|
||||
yCoord = [normalWindow frame].size.height - [pauseLabel frame].size.height - ([pauseLabel frame].size.height * .5);
|
||||
width = [pauseLabel frame].size.width;
|
||||
height = [pauseLabel frame].size.height;
|
||||
[pauseLabel setFrame: NSMakeRect(xCoord, yCoord, width, height)];
|
||||
[cocoaView addSubview: pauseLabel];
|
||||
}
|
||||
|
||||
/* Removes the word pause from the screen */
|
||||
- (void)removePause
|
||||
{
|
||||
[pauseLabel removeFromSuperview];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@ -1036,6 +1092,17 @@ int main (int argc, const char * argv[]) {
|
||||
[[NSApp mainMenu] addItem:menuItem];
|
||||
[NSApp performSelector:@selector(setAppleMenu:) withObject:menu]; // Workaround (this method is private since 10.4+)
|
||||
|
||||
// Machine menu
|
||||
menu = [[NSMenu alloc] initWithTitle: @"Machine"];
|
||||
[menu setAutoenablesItems: NO];
|
||||
[menu addItem: [[[NSMenuItem alloc] initWithTitle: @"Pause" action: @selector(pauseQEMU:) keyEquivalent: @""] autorelease]];
|
||||
menuItem = [[[NSMenuItem alloc] initWithTitle: @"Resume" action: @selector(resumeQEMU:) keyEquivalent: @""] autorelease];
|
||||
[menu addItem: menuItem];
|
||||
[menuItem setEnabled: NO];
|
||||
menuItem = [[[NSMenuItem alloc] initWithTitle: @"Machine" action:nil keyEquivalent:@""] autorelease];
|
||||
[menuItem setSubmenu:menu];
|
||||
[[NSApp mainMenu] addItem:menuItem];
|
||||
|
||||
// View menu
|
||||
menu = [[NSMenu alloc] initWithTitle:@"View"];
|
||||
[menu addItem: [[[NSMenuItem alloc] initWithTitle:@"Enter Fullscreen" action:@selector(doToggleFullScreen:) keyEquivalent:@"f"] autorelease]]; // Fullscreen
|
||||
|
Loading…
Reference in New Issue
Block a user