{
return nil;
}
+
+ /* replace bundled app icon with one which is 32/64-bit savvy */
+#if defined( __LP64__ )
+ fApplicationIcon = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForImageResource:@"HandBrake-64.icns"]];
+#else
+ fApplicationIcon = [[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForImageResource:@"HandBrake.icns"]];
+#endif
+ if( fApplicationIcon != nil )
+ [NSApp setApplicationIconImage:fApplicationIcon];
[HBPreferencesController registerUserDefaults];
fHandle = NULL;
[fQueueController release];
[fPreviewController release];
[fPictureController release];
-
+ [fApplicationIcon release];
+
hb_close(&fHandle);
hb_close(&fQueueEncodeLibhb);
}
**********************************************************************/
- (void) UpdateDockIcon: (float) progress
{
- NSImage * icon;
NSData * tiff;
NSBitmapImageRep * bmp;
uint32_t * pen;
int row_start, row_end;
int i, j;
- /* Get application original icon */
- icon = [NSImage imageNamed: @"NSApplicationIcon"];
-
if( progress < 0.0 || progress > 1.0 )
{
- [NSApp setApplicationIconImage: icon];
+ [NSApp setApplicationIconImage: fApplicationIcon];
return;
}
/* Get it in a raw bitmap form */
- tiff = [icon TIFFRepresentationUsingCompression:
+ tiff = [fApplicationIcon TIFFRepresentationUsingCompression:
NSTIFFCompressionNone factor: 1.0];
bmp = [NSBitmapImageRep imageRepWithData: tiff];
/* Now update the dock icon */
tiff = [bmp TIFFRepresentationUsingCompression:
NSTIFFCompressionNone factor: 1.0];
- icon = [[NSImage alloc] initWithData: tiff];
+ NSImage* icon = [[NSImage alloc] initWithData: tiff];
[NSApp setApplicationIconImage: icon];
[icon release];
}
if( checkScanCount > currentScanCount )
{
currentScanCount = checkScanCount;
- [self writeToActivityLog:"currentScanCount received from fQueueEncodeLibhb"];
}
//hb_state_t s;
case HB_STATE_WORKING:
{
NSMutableString * string;
+ NSString * pass_desc;
/* Update text field */
- string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: pass %d of %d, %.2f %%", @"" ), p.job_cur, p.job_count, 100.0 * p.progress];
+ if (p.job_cur == 1 && p.job_count > 1)
+ {
+ if ([[QueueFileArray objectAtIndex:currentQueueEncodeIndex] objectForKey:@"SubtitleList"] && [[[[[QueueFileArray objectAtIndex:currentQueueEncodeIndex]objectForKey:@"SubtitleList"] objectAtIndex:0] objectForKey:@"subtitleSourceTrackNum"] intValue] == 1)
+ {
+ pass_desc = @"(subtitle scan)";
+ }
+ else
+ {
+ pass_desc = @"";
+ }
+ }
+ else
+ {
+ pass_desc = @"";
+ }
+
+ string = [NSMutableString stringWithFormat: NSLocalizedString( @"Encoding: pass %d %@ of %d, %.2f %%", @"" ), p.job_cur, pass_desc, p.job_count, 100.0 * p.progress];
if( p.seconds > -1 )
{
}
}
+- (IBAction)showAboutPanel:(id)sender
+{
+ NSMutableDictionary* d = [[NSMutableDictionary alloc] initWithObjectsAndKeys:
+ fApplicationIcon, @"ApplicationIcon",
+ nil ];
+ [NSApp orderFrontStandardAboutPanelWithOptions:d];
+ [d release];
+}
+
/* Here we open the title selection sheet where we can specify an exact title to be scanned */
- (IBAction) showSourceTitleScanPanel: (id) sender
{
path = [detector devicePath];
[self writeToActivityLog: "trying to open a physical dvd at: %s", [scanPath UTF8String]];
-#ifdef __LP64__
+#if defined( __LP64__ )
/* If we are 64 bit, we cannot read encrypted dvd's as vlc is 32 bit only */
cancelScanDecrypt = 1;
[self writeToActivityLog: "64 bit mode cannot read dvd's, scan cancelled"];
/* NOTE: Currently foreign language search is borked for preview.
* Commented out but left in for initial commit. */
- /*
+
[self writeToActivityLog: "Foreign Language Search: %d", 1];
job->indepth_scan = 1;
{
job->select_subtitle_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
}
+ else
+ {
+ job->select_subtitle_config.dest = hb_subtitle_config_s::RENDERSUB;
+ }
job->select_subtitle_config.force = force;
job->select_subtitle_config.default_track = def;
}
- */
+
}
else
subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
+ /* if we are getting the subtitles from an external srt file */
+ if ([[tempObject objectForKey:@"subtitleSourceTrackType"] isEqualToString:@"SRT"])
+ {
+ hb_subtitle_config_t sub_config;
+
+ sub_config.offset = [[tempObject objectForKey:@"subtitleTrackSrtOffset"] intValue];
+
+ /* we need to srncpy file path and char code */
+ strncpy(sub_config.src_filename, [[tempObject objectForKey:@"subtitleSourceSrtFilePath"] UTF8String], 128);
+ strncpy(sub_config.src_codeset, [[tempObject objectForKey:@"subtitleTrackSrtCharCode"] UTF8String], 40);
+
+ sub_config.force = 0;
+ sub_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
+ sub_config.default_track = def;
+
+ hb_srt_add( job, &sub_config, [[tempObject objectForKey:@"subtitleTrackSrtLanguageIso3"] UTF8String]);
+ }
+
if (subt != NULL)
{
[self writeToActivityLog: "Setting Subtitle: %s", subt];
subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
+ /* if we are getting the subtitles from an external srt file */
+ if ([[tempObject objectForKey:@"subtitleSourceTrackType"] isEqualToString:@"SRT"])
+ {
+ hb_subtitle_config_t sub_config;
+
+ sub_config.offset = [[tempObject objectForKey:@"subtitleTrackSrtOffset"] intValue];
+
+ /* we need to srncpy file name and codeset */
+ //sub_config.src_filename = [[tempObject objectForKey:@"subtitleSourceSrtFilePath"] UTF8String];
+ strncpy(sub_config.src_filename, [[tempObject objectForKey:@"subtitleSourceSrtFilePath"] UTF8String], 128);
+ //sub_config.src_codeset = [[tempObject objectForKey:@"subtitleTrackSrtCharCode"] UTF8String];
+ strncpy(sub_config.src_codeset, [[tempObject objectForKey:@"subtitleTrackSrtCharCode"] UTF8String], 40);
+
+ sub_config.force = 0;
+ sub_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
+ sub_config.default_track = def;
+
+ hb_srt_add( job, &sub_config, [[tempObject objectForKey:@"subtitleTrackSrtLanguageIso3"] UTF8String]);
+ }
+
+
if (subt != NULL)
{
[self writeToActivityLog: "Setting Subtitle: %s", subt];
//[self customSettingUsed: sender];
}
+#pragma mark -
+
+- (IBAction) browseImportSrtFile: (id) sender
+{
+
+ NSOpenPanel * panel;
+
+ panel = [NSOpenPanel openPanel];
+ [panel setAllowsMultipleSelection: NO];
+ [panel setCanChooseFiles: YES];
+ [panel setCanChooseDirectories: NO ];
+ NSString * sourceDirectory;
+ if ([[NSUserDefaults standardUserDefaults] stringForKey:@"LastSrtImportDirectory"])
+ {
+ sourceDirectory = [[NSUserDefaults standardUserDefaults] stringForKey:@"LastSrtImportDirectory"];
+ }
+ else
+ {
+ sourceDirectory = @"~/Desktop";
+ sourceDirectory = [sourceDirectory stringByExpandingTildeInPath];
+ }
+ /* we open up the browse srt sheet here and call for browseImportSrtFileDone after the sheet is closed */
+ NSArray *fileTypes = [NSArray arrayWithObjects:@"plist", @"srt", nil];
+ [panel beginSheetForDirectory: sourceDirectory file: nil types: fileTypes
+ modalForWindow: fWindow modalDelegate: self
+ didEndSelector: @selector( browseImportSrtFileDone:returnCode:contextInfo: )
+ contextInfo: sender];
+}
+
+- (void) browseImportSrtFileDone: (NSSavePanel *) sheet
+ returnCode: (int) returnCode contextInfo: (void *) contextInfo
+{
+ if( returnCode == NSOKButton )
+ {
+ NSString *importSrtDirectory = [[sheet filename] stringByDeletingLastPathComponent];
+ NSString *importSrtFilePath = [sheet filename];
+ [[NSUserDefaults standardUserDefaults] setObject:importSrtDirectory forKey:@"LastSrtImportDirectory"];
+
+ /* now pass the string off to fSubtitlesDelegate to add the srt file to the dropdown */
+ [fSubtitlesDelegate createSubtitleSrtTrack:importSrtFilePath];
+
+ [fSubtitlesTable reloadData];
+
+ }
+}
#pragma mark -
#pragma mark Open New Windows
}
else
{
- [fVidQualitySlider setFloatValue:([fVidQualitySlider maxValue] - [fVidQualitySlider minValue]) - [[chosenPreset objectForKey:@"VideoQualitySlider"] floatValue]];
+ /* Since theora's qp value goes up from left to right, we can just set the slider float value */
+ if ([[fVidEncoderPopUp selectedItem] tag] == HB_VCODEC_THEORA)
+ {
+ [fVidQualitySlider setFloatValue:[[chosenPreset objectForKey:@"VideoQualitySlider"] floatValue]];
+ }
+ else
+ {
+ /* since ffmpeg and x264 use an "inverted" slider (lower qp/rf values indicate a higher quality) we invert the value on the slider */
+ [fVidQualitySlider setFloatValue:([fVidQualitySlider maxValue] + [fVidQualitySlider minValue]) - [[chosenPreset objectForKey:@"VideoQualitySlider"] floatValue]];
+ }
}
[self videoMatrixChanged:nil];
[preset setObject:[NSMutableArray arrayWithArray: audioListArray] forKey:@"AudioList"];
-
+ /* Temporarily remove subtitles from creating a new preset as it has to be converted over to use the new
+ * subititle array code. */
/* Subtitles*/
- [preset setObject:[fSubPopUp titleOfSelectedItem] forKey:@"Subtitles"];
+ //[preset setObject:[fSubPopUp titleOfSelectedItem] forKey:@"Subtitles"];
/* Forced Subtitles */
- [preset setObject:[NSNumber numberWithInt:[fSubForcedCheck state]] forKey:@"SubtitlesForced"];
+ //[preset setObject:[NSNumber numberWithInt:[fSubForcedCheck state]] forKey:@"SubtitlesForced"];
}
[preset autorelease];
return preset;