qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH v2] ui/cocoa.m: fix help menus


From: Programmingkid
Subject: [Qemu-devel] [PATCH v2] ui/cocoa.m: fix help menus
Date: Mon, 7 Mar 2016 11:03:56 -0500

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;
+
+    /* 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];
+    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





reply via email to

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