[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2] ui/cocoa.m: fix help menus
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v2] ui/cocoa.m: fix help menus |
Date: |
Tue, 15 Mar 2016 17:16:40 +0000 |
On 7 March 2016 at 16:03, Programmingkid <address@hidden> wrote:
> Make the help menus actually work. The code will search thru three different
> locations for the help file. If it can't be found, it will look on the web for
> it.
>
> Signed-off-by: John Arbuckle <address@hidden>
>
> ---
> Moved opening code to one method.
> Searches three different locations on the user's computer first.
> Attempts to open file on web if file can't be found on user's computer.
>
> ui/cocoa.m | 37 +++++++++++++++++++++++++++++++++----
> 1 file changed, 33 insertions(+), 4 deletions(-)
>
> diff --git a/ui/cocoa.m b/ui/cocoa.m
> index 3ee5549..66f0f79 100644
> --- a/ui/cocoa.m
> +++ b/ui/cocoa.m
> @@ -858,6 +858,7 @@ QemuCocoaView *cocoaView;
> - (void)ejectDeviceMedia:(id)sender;
> - (void)changeDeviceMedia:(id)sender;
> - (BOOL)verifyQuit;
> +- (void)openDocumentation:(NSString *)filename;
> @end
>
> @implementation QemuCocoaAppController
> @@ -994,20 +995,48 @@ QemuCocoaView *cocoaView;
> [cocoaView toggleFullScreen:sender];
> }
>
> +/* Tries to find then open the specified filename */
> +- (void) openDocumentation: (NSString *) filename
> +{
> + /* Where to look for local files */
> + NSString *path_array[] = {@"../share/doc/qemu/", @"../doc/qemu/",
> @"../"};
> + NSString *full_file_path;
> + const int number_of_paths = 3;
You should be able to use ARRAY_SIZE(path_array) here, you don't
need to hard code the 3.
> +
> + /* iterate thru the possible paths until the file is found */
> + int index;
> + for (index = 0; index < number_of_paths; index++) {
> + full_file_path = [[NSBundle mainBundle] executablePath];
> + full_file_path = [full_file_path stringByDeletingLastPathComponent];
> + full_file_path = [NSString stringWithFormat: @"%@/address@hidden@",
> full_file_path,
> + path_array[index], filename];
> + if ([[NSWorkspace sharedWorkspace] openFile: full_file_path] == YES)
> {
> + return;
> + }
> + }
> +
> + /* Try to open the file on the web if possible */
> + full_file_path = [NSString stringWithFormat: @"%s%@",
> + "http://qemu.weilnetz.de/", filename];
None of our other UI frontends try to look up the docs on the web.
If we do want to do this we should be using a qemu-project.org URL,
ie one we control directly as a project. Plus there's no versioning
here so it will show the docs for the latest version even if you're
running an old QEMU.
Adding a URL lookup should be a different patch if you want to do
it, but I don't think it is worth the effort of maintaining versioned
documentation on the web for all future QEMU releases, when the
local files should be right there anyway.
> + NSURL *url = [NSURL URLWithString: full_file_path];
> + if ([[NSWorkspace sharedWorkspace] openURL: url] == NO) {
> + NSBeep();
> + QEMU_Alert(@"Failed to open file");
> + }
> +}
> +
> - (void)showQEMUDoc:(id)sender
> {
> COCOA_DEBUG("QemuCocoaAppController: showQEMUDoc\n");
>
> - [[NSWorkspace sharedWorkspace] openFile:[NSString
> stringWithFormat:@"%@/../doc/qemu/qemu-doc.html",
> - [[NSBundle mainBundle] resourcePath]] withApplication:@"Help
> Viewer"];
> + [self openDocumentation: @"qemu-doc.html"];
> }
>
> - (void)showQEMUTec:(id)sender
> {
> COCOA_DEBUG("QemuCocoaAppController: showQEMUTec\n");
>
> - [[NSWorkspace sharedWorkspace] openFile:[NSString
> stringWithFormat:@"%@/../doc/qemu/qemu-tech.html",
> - [[NSBundle mainBundle] resourcePath]] withApplication:@"Help
> Viewer"];
> + [self openDocumentation: @"qemu-tech.html"];
> }
>
> /* Stretches video to fit host monitor size */
thanks
-- PMM