Message ID | 358BAD94-9E5B-4E19-AC9F-C6DC90200774@gmail.com |
---|---|
State | New |
Headers | show |
On 29 September 2015 at 18:03, Programmingkid <programmingkidx@gmail.com> wrote: > Allow the user the ability to run a custom script file. > This patch adds a menu item called "Run Custom Script". > When the user selects it, a open-file dialog has the > user select a text file with the custom scripts to run. > This allows for virtually unlimited expandability. All > monitor commands should work with this feature. > > Signed-off-by: John Arbuckle <programmingkidx@gmail.com> > > --- > To test this patch, save this text "sendkey ctrl-alt-delete" > in a text file. Then run a Windows guest to try out this > feature. That is only a sample of what this patch could do. > Mounting image files, debugging, and saving states are just > a few of the things this patch can help the user to accomplish. Not a feature I want in the cocoa UI, please. thanks -- PMM
On 29 September 2015 at 18:53, Programmingkid <programmingkidx@gmail.com> wrote: > > On Sep 29, 2015, at 1:18 PM, Peter Maydell wrote: > >> On 29 September 2015 at 18:03, Programmingkid <programmingkidx@gmail.com> wrote: >>> Allow the user the ability to run a custom script file. >>> This patch adds a menu item called "Run Custom Script". >>> When the user selects it, a open-file dialog has the >>> user select a text file with the custom scripts to run. >>> This allows for virtually unlimited expandability. All >>> monitor commands should work with this feature. >> Not a feature I want in the cocoa UI, please. > > It can be consider it a poor man's Virt-manager. It is very small > and light. It can help a lot of people out. I really believe in this > feature. It can encompass a lot of the GUI features in most > front-ends. Think about it, the user might never have to enter > long file paths again with this feature. It makes life so much > easier for QEMU users. I simply do not have the time or expertise to review these patches for significant new OSX UI layer features. (OSX host support is something I do as a sideline to the work I'm paid to do on QEMU, and so my time for it is decidedly limited.) This leaves you with three choices: * find another core developer who will review these for you * implement them for some other QEMU UI layer on a platform which has more people who care about it and thus gets more review (ie Linux+GTK or SDL), and then do the OSX UI updates second as a "bring in line with GTK" change * implement these features in a separate virt-manager for OSX I can continue to review bugfix patches and similar. thanks -- PMM
On Sep 29, 2015, at 2:00 PM, Peter Maydell wrote: > On 29 September 2015 at 18:53, Programmingkid <programmingkidx@gmail.com> wrote: >> >> On Sep 29, 2015, at 1:18 PM, Peter Maydell wrote: >> >>> On 29 September 2015 at 18:03, Programmingkid <programmingkidx@gmail.com> wrote: >>>> Allow the user the ability to run a custom script file. >>>> This patch adds a menu item called "Run Custom Script". >>>> When the user selects it, a open-file dialog has the >>>> user select a text file with the custom scripts to run. >>>> This allows for virtually unlimited expandability. All >>>> monitor commands should work with this feature. > >>> Not a feature I want in the cocoa UI, please. >> >> It can be consider it a poor man's Virt-manager. It is very small >> and light. It can help a lot of people out. I really believe in this >> feature. It can encompass a lot of the GUI features in most >> front-ends. Think about it, the user might never have to enter >> long file paths again with this feature. It makes life so much >> easier for QEMU users. > > I simply do not have the time or expertise to review > these patches for significant new OSX UI layer features. > (OSX host support is something I do as a sideline to the work I'm > paid to do on QEMU, and so my time for it is decidedly limited.) > > This leaves you with three choices: > * find another core developer who will review these for you > * implement them for some other QEMU UI layer on a platform > which has more people who care about it and thus gets more > review (ie Linux+GTK or SDL), and then do the OSX UI updates > second as a "bring in line with GTK" change > * implement these features in a separate virt-manager for OSX > > I can continue to review bugfix patches and similar. > > thanks > -- PMM Adding more maintainers sounds like a great idea.
diff --git a/ui/cocoa.m b/ui/cocoa.m index 334e6f6..15a28f0 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -263,6 +263,44 @@ static void handleAnyDeviceErrors(Error * err) } } +/* Sends a command to the monitor console */ +static void sendMonitorCommand(const char *command_string) +{ + int index; + char *console_name; + static QemuConsole *monitor = NULL; + + /* If the monitor console hasn't been found yet */ + if(!monitor) { + index = 0; + /* Find the monitor console */ + while (qemu_console_lookup_by_index(index) != NULL) { + console_name = qemu_console_get_label( + qemu_console_lookup_by_index(index)); + if(strstr(console_name, "monitor")) { + monitor = qemu_console_lookup_by_index(index); + break; + } + index++; + } + } + + /* If the monitor console was not found */ + if(!monitor) { + NSBeep(); + QEMU_Alert(@"Sorry but the monitor isn't available."); + return; + } + + /* send each letter in the commandString to the monitor */ + for (index = 0; index < strlen(command_string); index++) { + kbd_put_keysym_console(monitor, command_string[index]); + } + + /* simulate the user pushing the return key */ + kbd_put_keysym_console(monitor, '\n'); +} + /* ------------------------------------------------------ QemuCocoaView @@ -829,6 +867,7 @@ QemuCocoaView *cocoaView; - (void)powerDownQEMU:(id)sender; - (void)ejectDeviceMedia:(id)sender; - (void)changeDeviceMedia:(id)sender; +- (void)runScript:(id)sender; @end @implementation QemuCocoaAppController @@ -1125,6 +1164,31 @@ QemuCocoaView *cocoaView; } } +/* Runs a user's custom script */ +- (void)runScript:(id)sender +{ + NSOpenPanel *openPanel = [NSOpenPanel openPanel]; + [openPanel setTitle: @"Select a script file"]; + if([openPanel runModal] == NSFileHandlingPanelOKButton) { + NSString *file_buffer, *file_path; + NSError *err = nil; + file_path = [[openPanel URL] path]; + file_buffer = [NSString stringWithContentsOfFile:file_path + encoding:NSASCIIStringEncoding + error:&err]; + + if(err) { + NSString *message = [NSString stringWithFormat: @"Error: %@", + [err localizedFailureReason]]; + NSBeep(); + QEMU_Alert(message); + return; + } + sendMonitorCommand([file_buffer cStringUsingEncoding: + NSASCIIStringEncoding]); + } +} + @end @@ -1184,6 +1248,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+) + // File menu + menu = [[NSMenu alloc] initWithTitle:@"File"]; + [menu addItem: [[[NSMenuItem alloc] initWithTitle:@"Run custom script..." + action:@selector(runScript:) + keyEquivalent:@""] autorelease]]; + menuItem = [[[NSMenuItem alloc] initWithTitle:@"File" + action:nil keyEquivalent:@""] + autorelease]; + [menuItem setSubmenu:menu]; + [[NSApp mainMenu] addItem:menuItem]; + // Machine menu menu = [[NSMenu alloc] initWithTitle: @"Machine"]; [menu setAutoenablesItems: NO];
Allow the user the ability to run a custom script file. This patch adds a menu item called "Run Custom Script". When the user selects it, a open-file dialog has the user select a text file with the custom scripts to run. This allows for virtually unlimited expandability. All monitor commands should work with this feature. Signed-off-by: John Arbuckle <programmingkidx@gmail.com> --- To test this patch, save this text "sendkey ctrl-alt-delete" in a text file. Then run a Windows guest to try out this feature. That is only a sample of what this patch could do. Mounting image files, debugging, and saving states are just a few of the things this patch can help the user to accomplish. ui/cocoa.m | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 75 insertions(+), 0 deletions(-)