qemu-devel
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]