All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v2] ui/cocoa.m: fix help menus
@ 2016-03-07 16:03 Programmingkid
  2016-03-15 17:16 ` Peter Maydell
  0 siblings, 1 reply; 2+ messages in thread
From: Programmingkid @ 2016-03-07 16:03 UTC (permalink / raw)
  To: Peter Maydell; +Cc: qemu-devel qemu-devel

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 <programmingkidx@gmail.com>

---
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;
+
+    /* 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: @"%@/%@%@", 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];
+    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 */
-- 
2.7.2

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Qemu-devel] [PATCH v2] ui/cocoa.m: fix help menus
  2016-03-07 16:03 [Qemu-devel] [PATCH v2] ui/cocoa.m: fix help menus Programmingkid
@ 2016-03-15 17:16 ` Peter Maydell
  0 siblings, 0 replies; 2+ messages in thread
From: Peter Maydell @ 2016-03-15 17:16 UTC (permalink / raw)
  To: Programmingkid; +Cc: qemu-devel qemu-devel

On 7 March 2016 at 16:03, Programmingkid <programmingkidx@gmail.com> 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 <programmingkidx@gmail.com>
>
> ---
> 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: @"%@/%@%@", 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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-03-15 17:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-07 16:03 [Qemu-devel] [PATCH v2] ui/cocoa.m: fix help menus Programmingkid
2016-03-15 17:16 ` Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.