diff mbox

[v3] ui/cocoa.m: fix help menus

Message ID F6B689F9-4DBD-4C50-BC38-35E5DD03D396@gmail.com
State New
Headers show

Commit Message

Programmingkid March 15, 2016, 7:02 p.m. UTC
Make the help menus actually work. The code will search thru three different
locations for the help file. If it can't be found a dialog will tell the user 
the file can't be found.

Signed-off-by: John Arbuckle <programmingkidx@gmail.com>

---
*v3 changes
Removed code that opens a web page. 
Removed number_of_paths and added ARRAY_SIZE() macro.

*v2 changes
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 | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

Comments

Peter Maydell March 23, 2016, 2:35 p.m. UTC | #1
On 15 March 2016 at 19:02, 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 a dialog will tell the user
> the file can't be found.
>
> Signed-off-by: John Arbuckle <programmingkidx@gmail.com>

Thanks; I have put this into the cocoa pullreq I've just sent.

-- PMM
Gerd Hoffmann March 23, 2016, 4 p.m. UTC | #2
On Mi, 2016-03-23 at 14:35 +0000, Peter Maydell wrote:
> On 15 March 2016 at 19:02, 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 a dialog will tell the user
> > the file can't be found.
> >
> > Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
> 
> Thanks; I have put this into the cocoa pullreq I've just sent.

/me looks a but surprised.  Have you missed
https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg04528.html ?

cheers,
  Gerd
Peter Maydell March 23, 2016, 4:21 p.m. UTC | #3
On 23 March 2016 at 16:00, Gerd Hoffmann <kraxel@redhat.com> wrote:
> On Mi, 2016-03-23 at 14:35 +0000, Peter Maydell wrote:
>> On 15 March 2016 at 19:02, 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 a dialog will tell the user
>> > the file can't be found.
>> >
>> > Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
>>
>> Thanks; I have put this into the cocoa pullreq I've just sent.
>
> /me looks a but surprised.  Have you missed
> https://lists.gnu.org/archive/html/qemu-devel/2016-03/msg04528.html ?

Yes; the cover letter doesn't appear to have reached me so it is
not in my queue. (In any case you'd have needed to redo it since
you forgot to fix up the broken author information that you get
from John's emails by default.)

Can I get you to redo and resend, please (without the cocoa
patches)?

thanks
-- PMM
Gerd Hoffmann March 24, 2016, 7:56 a.m. UTC | #4
Hi,

> Yes; the cover letter doesn't appear to have reached me so it is
> not in my queue. (In any case you'd have needed to redo it since
> you forgot to fix up the broken author information that you get
> from John's emails by default.)
> 
> Can I get you to redo and resend, please (without the cocoa
> patches)?

Done.

cheers,
  Gerd
diff mbox

Patch

diff --git a/ui/cocoa.m b/ui/cocoa.m
index 7063a02..9295233 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,42 @@  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;
+
+    /* iterate thru the possible paths until the file is found */
+    int index;
+    for (index = 0; index < ARRAY_SIZE(path_array); 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;
+        }
+    }
+
+    /* If none of the paths opened a file */
+    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 */