Index: macosx/Controller.mm =================================================================== --- macosx/Controller.mm (revision 1136) +++ macosx/Controller.mm (working copy) @@ -1120,15 +1120,56 @@ /* we set the source display name in the title selection dialogue */ [fSrcDsplyNameTitleScan setStringValue: [NSString stringWithFormat:@"%@", displayTitlescanSourceName]]; /* We show the actual sheet where the user specifies the title to be scanned - * as we are going to do a title specific scan - */ + * as we are going to do a title specific scan + */ [self showSourceTitleScanPanel:NULL]; } else { /* We are just doing a standard full source scan, so we specify "0" to libhb */ NSString *path = [[sheet filenames] objectAtIndex: 0]; - [self performScan:path scanTitleNum:0]; + + /* We check to see if the chosen file at path is a package */ + if ([[NSWorkspace sharedWorkspace] isFilePackageAtPath:path]) + { + fprintf( stdout, "MacGui: Trying to open a package\n"); + /* We check to see if this is an .eyetv package */ + if ([[path pathExtension] isEqualToString: @"eyetv"]) + { + fprintf( stdout, "MacGui: Trying to open eyetv package\n"); + /* We're looking at an EyeTV package - try to open its enclosed + .mpg media file */ + NSString *mpgname; + int n = [[path stringByAppendingString: @"/"] + completePathIntoString: &mpgname caseSensitive: NO + matchesIntoArray: nil + filterTypes: [NSArray arrayWithObject: @"mpg"]]; + if (n > 0) + { + /* Found an mpeg inside the eyetv package, make it our scan path + and call performScan on the enclosed mpeg */ + path = mpgname; + fprintf( stdout, "MacGui: found mpeg in eyetv package\n"); + [self performScan:path scanTitleNum:0]; + } + else + { + /* We did not find an mpeg file in our package, so we do not call performScan */ + fprintf( stdout, "MacGui: no valid mpeg in eyetv package\n"); + } + } + else + { + /* The package is not an eyetv package, so we do not call performScan */ + fprintf( stdout, "MacGui: Unable to open package\n"); + } + } + else + { + /* path is not a package, so we call perform scan directly on our file */ + [self performScan:path scanTitleNum:0]; + } + } } @@ -1249,6 +1290,12 @@ we have to use the title->dvd value so we get the proper name of the volume if a physical dvd is the source*/ sourceDisplayName = [NSString stringWithFormat:[[[NSString stringWithUTF8String: title->dvd] stringByDeletingLastPathComponent] lastPathComponent]]; } + else if ([[NSString stringWithUTF8String: title->dvd] rangeOfString: @".eyetv/"].length != 0) + { + /* Use the name of the EyeTV package instead of the media file */ + sourceDisplayName = [NSString stringWithFormat: @"%@", + [[[[NSString stringWithUTF8String: title->dvd] stringByDeletingLastPathComponent] lastPathComponent] stringByDeletingPathExtension]]; + } else { /* if not the VIDEO_TS Folder, we can assume the chosen folder is the source name */