summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordynaflash <[email protected]>2009-06-13 19:50:12 +0000
committerdynaflash <[email protected]>2009-06-13 19:50:12 +0000
commit61ee3250a66a273d3bf7b7594b5b8656993bc33f (patch)
tree42e0d9d05d691c2fc094169d2030e1dc472be5a6
parent4c719cadc9a4158de14434236701721afd505396 (diff)
MacGui: Multiple subtitle tracks initial implementation
- Subtitles now get their own tab - "None" track is an empty track, add a new subtitle track by switching it to a valid source track. - First track allows for "Foreign Language Search" which replaces the old "Auto Select". - Remove a previously selected track by setting it back to "None" - Sanity Checks: -- Allow only one Burned In track. -- Text tracks do not allow burned in to be set. -- MP4 specific: --- Allow only one VobSub and force burned in to be set. ---- Trying to set more than one vobsub in mp4 results in a warning, and the first vobsub track is retained. - Presets: Currently subtitles are not recorded into presets (which they never have been). - Live Preview: -- Foreign Language Search is borked for live preview, so is ignored -- Burned in subtitles work for both mp4 and mkv -- Text subtitles work for mp4 if set to default (preview has no way to turn soft subs on/off) -- Text subtitles do not show up in preview window even if checked as default. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2530 b64f7644-9d1e-0410-96f1-a4d463321fa5
-rw-r--r--macosx/Controller.h15
-rw-r--r--macosx/Controller.mm403
-rw-r--r--macosx/English.lproj/MainMenu.xib893
-rw-r--r--macosx/HBQueueController.mm34
-rw-r--r--macosx/HBSubtitles.h44
-rw-r--r--macosx/HBSubtitles.m444
-rw-r--r--macosx/HandBrake.xcodeproj/project.pbxproj10
7 files changed, 1370 insertions, 473 deletions
diff --git a/macosx/Controller.h b/macosx/Controller.h
index 87e7cd6a7..798e44393 100644
--- a/macosx/Controller.h
+++ b/macosx/Controller.h
@@ -10,6 +10,7 @@
#include "hb.h"
#import "ChapterTitles.h"
+#import "HBSubtitles.h"
#import "PictureController.h"
#import "HBPreviewController.h"
#import "HBQueueController.h"
@@ -70,7 +71,8 @@ BOOL fIsDragging;
IBOutlet NSTextField * fSrcTitleField;
IBOutlet NSPopUpButton * fSrcTitlePopUp;
- /* Angle selection popup (only used for libdvdnav */
+
+ /* lib dvd nav specific */
IBOutlet NSTextField * fSrcAngleLabel;
IBOutlet NSPopUpButton * fSrcAnglePopUp;
@@ -132,6 +134,12 @@ BOOL fIsDragging;
IBOutlet NSTextField * fSubField;
IBOutlet NSPopUpButton * fSubPopUp;
IBOutlet NSButton * fSubForcedCheck;
+
+
+ IBOutlet NSTableView * fSubtitlesTable;
+ HBSubtitles * fSubtitlesDelegate;
+ //NSMutableArray * subtitleArray;
+
/* Audio box */
/* Track Labels */
@@ -287,7 +295,6 @@ BOOL fIsDragging;
- (IBAction) audioTrackPopUpChanged: (id) sender;
- (IBAction) audioTrackPopUpChanged: (id) sender mixdownToUse: (int) mixdownToUse;
- (IBAction) audioTrackMixdownChanged: (id) sender;
-- (IBAction) subtitleSelectionChanged: (id) sender;
- (void) prepareJob;
- (IBAction) browseFile: (id) sender;
- (void) browseFileDone: (NSSavePanel *) sheet
@@ -411,5 +418,9 @@ BOOL fIsDragging;
- (void)moveObjectsInPresetsArray:(NSMutableArray *)array fromIndexes:(NSIndexSet *)indexSet toIndex:(NSUInteger)insertIndex;
- (int) hbInstances;
+
+
+
+
@end
diff --git a/macosx/Controller.mm b/macosx/Controller.mm
index 150d23381..da04ca25a 100644
--- a/macosx/Controller.mm
+++ b/macosx/Controller.mm
@@ -101,7 +101,13 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
fChapterTitlesDelegate = [[ChapterTitles alloc] init];
[fChapterTable setDataSource:fChapterTitlesDelegate];
[fChapterTable setDelegate:fChapterTitlesDelegate];
-
+
+ /* setup the subtitles delegate and connections to table */
+ fSubtitlesDelegate = [[HBSubtitles alloc] init];
+ [fSubtitlesTable setDataSource:fSubtitlesDelegate];
+ [fSubtitlesTable setDelegate:fSubtitlesDelegate];
+ [fSubtitlesTable setRowHeight:25.0];
+
[fPresetsOutlineView setAutosaveName:@"Presets View"];
[fPresetsOutlineView setAutosaveExpandedItems:YES];
@@ -1470,6 +1476,10 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
[fChapterTitlesDelegate resetWithTitle:nil];
[fChapterTable reloadData];
+ // Notify Subtitles that there's no title
+ [fSubtitlesDelegate resetWithTitle:nil];
+ [fSubtitlesTable reloadData];
+
[self enableUI: NO];
if( [detector isVideoDVD] )
@@ -1556,6 +1566,8 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
}
/* We use our advance pref to determine how many previews to scan */
int hb_num_previews = [[[NSUserDefaults standardUserDefaults] objectForKey:@"PreviewsNumber"] intValue];
+ /* set title to NULL */
+ //fTitle = NULL;
hb_scan( fHandle, [path UTF8String], scanTitleNum, hb_num_previews, 1 );
[fSrcDVD2Field setStringValue:@"Scanning new source ..."];
}
@@ -1578,6 +1590,10 @@ static NSString * ChooseSourceIdentifier = @"Choose Source It
SuccessfulScan = NO;
// Notify ChapterTitles that there's no title
+ [fSubtitlesDelegate resetWithTitle:nil];
+ [fSubtitlesTable reloadData];
+
+ // Notify Subtitles that there's no title
[fChapterTitlesDelegate resetWithTitle:nil];
[fChapterTable reloadData];
}
@@ -2093,13 +2109,10 @@ fWorkingCount = 0;
}
/* Subtitles*/
- [queueFileJob setObject:[fSubPopUp titleOfSelectedItem] forKey:@"Subtitles"];
- [queueFileJob setObject:[NSNumber numberWithInt:[fSubPopUp indexOfSelectedItem]] forKey:@"JobSubtitlesIndex"];
- /* Forced Subtitles */
- [queueFileJob setObject:[NSNumber numberWithInt:[fSubForcedCheck state]] forKey:@"SubtitlesForced"];
-
-
-
+ NSMutableArray *subtitlesArray = [[NSMutableArray alloc] init];
+ [queueFileJob setObject:[NSArray arrayWithArray: [fSubtitlesDelegate getSubtitleArray: subtitlesArray]] forKey:@"SubtitleList"];
+ [subtitlesArray autorelease];
+
/* Now we go ahead and set the "job->values in the plist for passing right to fQueueEncodeLibhb */
[queueFileJob setObject:[NSNumber numberWithInt:[fSrcChapterStartPopUp indexOfSelectedItem] + 1] forKey:@"JobChapterStart"];
@@ -2133,8 +2146,6 @@ fWorkingCount = 0;
[queueFileJob setObject:[NSNumber numberWithInt:job->crop[2]] forKey:@"PictureLeftCrop"];
[queueFileJob setObject:[NSNumber numberWithInt:job->crop[3]] forKey:@"PictureRightCrop"];
- /* Picture Filters */
- //[queueFileJob setObject:[fPicSettingDecomb stringValue] forKey:@"JobPictureDecomb"];
/*Audio*/
if ([fAudLang1PopUp indexOfSelectedItem] > 0)
@@ -2169,10 +2180,7 @@ fWorkingCount = 0;
[queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack4RatePopUp selectedItem] tag]] forKey:@"JobAudio4Samplerate"];
[queueFileJob setObject:[NSNumber numberWithInt:[[fAudTrack4BitratePopUp selectedItem] tag]] forKey:@"JobAudio4Bitrate"];
}
- /* Subtitles*/
- [queueFileJob setObject:[fSubPopUp titleOfSelectedItem] forKey:@"Subtitles"];
- /* Forced Subtitles */
- [queueFileJob setObject:[NSNumber numberWithInt:[fSubForcedCheck state]] forKey:@"SubtitlesForced"];
+
/* we need to auto relase the queueFileJob and return it */
[queueFileJob autorelease];
@@ -2649,9 +2657,7 @@ fWorkingCount = 0;
job->x264opts = NULL;
job->indepth_scan = 1;
-
- job->select_subtitle = (hb_subtitle_t**)malloc(sizeof(hb_subtitle_t*));
- *(job->select_subtitle) = NULL;
+
/*
* Add the pre-scan job
@@ -2659,18 +2665,13 @@ fWorkingCount = 0;
hb_add( fQueueEncodeLibhb, job );
job->x264opts = x264opts_tmp;
}
- else
- job->select_subtitle = NULL;
+
if( [[queueToApply objectForKey:@"VideoTwoPass"] intValue] == 1 )
{
- hb_subtitle_t **subtitle_tmp = job->select_subtitle;
job->indepth_scan = 0;
- /*
- * Do not autoselect subtitles on the first pass of a two pass
- */
- job->select_subtitle = NULL;
+
job->pass = 1;
@@ -2681,8 +2682,6 @@ fWorkingCount = 0;
job->x264opts = (char *)calloc(1024, 1); /* Fixme, this just leaks */
strcpy(job->x264opts, [[queueToApply objectForKey:@"x264Option"] UTF8String]);
- job->select_subtitle = subtitle_tmp;
-
hb_add( fQueueEncodeLibhb, job );
}
@@ -2699,6 +2698,21 @@ fWorkingCount = 0;
/* Lets mark our new encode as 1 or "Encoding" */
[queueToApply setObject:[NSNumber numberWithInt:1] forKey:@"Status"];
[self saveQueueFileItem];
+
+ /* we need to clean up the subtitle tracks after the job(s) have been set */
+ int num_subtitle_tracks = hb_list_count(job->list_subtitle);
+ int ii;
+ for(ii = 0; ii < num_subtitle_tracks; ii++)
+ {
+ hb_subtitle_t * subtitle;
+ subtitle = (hb_subtitle_t *)hb_list_item(job->list_subtitle, 0);
+
+
+ hb_list_rem(job->list_subtitle, subtitle);
+ free(subtitle);
+ }
+
+
/* We should be all setup so let 'er rip */
[self doRip];
}
@@ -2795,29 +2809,131 @@ fWorkingCount = 0;
}
/* Subtitle settings */
- switch( [fSubPopUp indexOfSelectedItem] - 2 )
+ NSMutableArray *subtitlesArray = nil;
+ subtitlesArray = [[NSMutableArray alloc] initWithArray:[fSubtitlesDelegate getSubtitleArray: subtitlesArray]];
+
+
+
+ int subtitle = nil;
+int force;
+int burned;
+int def;
+bool one_burned = FALSE;
+
+ int i = 0;
+ NSEnumerator *enumerator = [subtitlesArray objectEnumerator];
+ id tempObject;
+ while (tempObject = [enumerator nextObject])
{
- case -2:
- /*
- * No subtitles selected
- */
- break;
- case -1:
- /*
- * Subtitle scan selected
- */
- job->indepth_scan = 1;
- break;
- default:
- /*
- * Subtitle selected, add it into the job from the title.
+
+ subtitle = [[tempObject objectForKey:@"subtitleSourceTrackNum"] intValue];
+ force = [[tempObject objectForKey:@"subtitleTrackForced"] intValue];
+ burned = [[tempObject objectForKey:@"subtitleTrackBurned"] intValue];
+ def = [[tempObject objectForKey:@"subtitleTrackDefault"] intValue];
+
+ /* since the subtitleSourceTrackNum 0 is "None" in our array of the subtitle popups,
+ * we want to ignore it for display as well as encoding.
*/
- job->indepth_scan = 0;
- hb_subtitle_t *subtitle = (hb_subtitle_t *) hb_list_item( title->list_subtitle, [fSubPopUp indexOfSelectedItem] - 2 );
- hb_list_add( job->list_subtitle, subtitle );
- break;
+ if (subtitle > 0)
+ {
+ hb_subtitle_t * subt;
+ hb_subtitle_config_t sub_config;
+
+ subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
+ sub_config = subt->config;
+
+ /* if i is 0, then we are in the first item of the subtitles which we need to
+ * check for the "Foreign Audio Search" which would be subtitleSourceTrackNum of 1
+ * bearing in mind that for all tracks subtitleSourceTrackNum of 0 is None.
+ */
+
+ /* if we are on the first track and using "Foreign Audio Search" */
+ if (i == 0 && subtitle == 1)
+ {
+ /* 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;
+ if (burned == 1 || job->mux != HB_MUX_MP4)
+ {
+ if (burned != 1 && job->mux == HB_MUX_MKV)
+ {
+ job->select_subtitle_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
+ }
+
+ job->select_subtitle_config.force = force;
+ job->select_subtitle_config.default_track = def;
+
+ }
+ */
+
+ }
+ else
+ {
+
+ /* for the actual source tracks, we must subtract the non source entries so
+ * that the menu index matches the source subtitle_list index for convenience */
+ if (i == 0)
+ {
+ /* for the first track, the source tracks start at menu index 2 ( None is 0,
+ * Foreign Language Search is 1) so subtract 2 */
+ subtitle = subtitle - 2;
+ }
+ else
+ {
+ /* for all other tracks, the source tracks start at menu index 1 (None is 0)
+ * so subtract 1. */
+
+ subtitle = subtitle - 1;
+ }
+
+ /* We are setting a source subtitle so access the source subtitle info */
+ hb_subtitle_t * subt;
+ hb_subtitle_config_t sub_config;
+
+ subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
+ sub_config = subt->config;
+
+ if (subt != NULL)
+ {
+ [self writeToActivityLog: "Setting Subtitle: %s", subt];
+
+ if (!burned && job->mux == HB_MUX_MKV &&
+ subt->format == hb_subtitle_s::PICTURESUB)
+ {
+ sub_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
+ }
+ else if (!burned && job->mux == HB_MUX_MP4 &&
+ subt->format == hb_subtitle_s::PICTURESUB)
+ {
+ // Skip any non-burned vobsubs when output is mp4
+ continue;
+ }
+ else if ( burned && subt->format == hb_subtitle_s::PICTURESUB )
+ {
+ // Only allow one subtitle to be burned into the video
+ if (one_burned)
+ continue;
+ one_burned = TRUE;
+ }
+ sub_config.force = force;
+ sub_config.default_track = def;
+ hb_subtitle_add( job, &sub_config, subtitle );
+ }
+
+ }
+ }
+ i++;
}
-
+
+
+
+[subtitlesArray autorelease];
+
+
/* Audio tracks and mixdowns */
/* Lets make sure there arent any erroneous audio tracks in the job list, so lets make sure its empty*/
int audiotrack_count = hb_list_count(job->list_audio);
@@ -3207,36 +3323,133 @@ fWorkingCount = 0;
}
job->grayscale = [[queueToApply objectForKey:@"VideoGrayScale"] intValue];
- /* Subtitle settings */
- switch( [[queueToApply objectForKey:@"JobSubtitlesIndex"] intValue] - 2 )
+
+
+#pragma mark -
+#pragma mark Process Subtitles to libhb
+
+/* Map the settings in the dictionaries for the SubtitleList array to match title->list_subtitle
+ * which means that we need to account for the offset of non source language settings in from
+ * the NSPopUpCell menu. For all of the objects in the SubtitleList array this means 0 is "None"
+ * from the popup menu, additionally the first track has "Foreign Audio Search" at 1. So we use
+ * an int to offset the index number for the objectForKey:@"subtitleSourceTrackNum" to map that
+ * to the source tracks position in title->list_subtitle.
+ */
+
+int subtitle = nil;
+int force;
+int burned;
+int def;
+bool one_burned = FALSE;
+
+ int i = 0;
+ NSEnumerator *enumerator = [[queueToApply objectForKey:@"SubtitleList"] objectEnumerator];
+ id tempObject;
+ while (tempObject = [enumerator nextObject])
{
- case -2:
- /*
- * No subtitles selected
- */
- break;
- case -1:
- /*
- * Subtitle scan selected
- */
- job->indepth_scan = 1;
- break;
- default:
- /*
- * Subtitle selected, add it into the job from the title.
+
+ subtitle = [[tempObject objectForKey:@"subtitleSourceTrackNum"] intValue];
+ force = [[tempObject objectForKey:@"subtitleTrackForced"] intValue];
+ burned = [[tempObject objectForKey:@"subtitleTrackBurned"] intValue];
+ def = [[tempObject objectForKey:@"subtitleTrackDefault"] intValue];
+
+ /* since the subtitleSourceTrackNum 0 is "None" in our array of the subtitle popups,
+ * we want to ignore it for display as well as encoding.
*/
- job->indepth_scan = 0;
- hb_subtitle_t *subtitle = (hb_subtitle_t *) hb_list_item( title->list_subtitle,
- [[queueToApply objectForKey:@"JobSubtitlesIndex"] intValue] - 2 );
- if( [[queueToApply objectForKey:@"SubtitlesForced"] intValue] == 1 )
- subtitle->config.force = 1;
- else
- subtitle->config.force = 0;
- hb_list_add( job->list_subtitle, subtitle );
- break;
+ if (subtitle > 0)
+ {
+ hb_subtitle_t * subt;
+ hb_subtitle_config_t sub_config;
+
+ subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
+ sub_config = subt->config;
+
+ /* if i is 0, then we are in the first item of the subtitles which we need to
+ * check for the "Foreign Audio Search" which would be subtitleSourceTrackNum of 1
+ * bearing in mind that for all tracks subtitleSourceTrackNum of 0 is None.
+ */
+
+ /* if we are on the first track and using "Foreign Audio Search" */
+ if (i == 0 && subtitle == 1)
+ {
+ [self writeToActivityLog: "Foreign Language Search: %d", 1];
+
+ job->indepth_scan = 1;
+ if (burned == 1 || job->mux != HB_MUX_MP4)
+ {
+ if (burned != 1 && job->mux == HB_MUX_MKV)
+ {
+ job->select_subtitle_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
+ }
+
+ job->select_subtitle_config.force = force;
+ job->select_subtitle_config.default_track = def;
+ }
+
+
+ }
+ else
+ {
+
+ /* for the actual source tracks, we must subtract the non source entries so
+ * that the menu index matches the source subtitle_list index for convenience */
+ if (i == 0)
+ {
+ /* for the first track, the source tracks start at menu index 2 ( None is 0,
+ * Foreign Language Search is 1) so subtract 2 */
+ subtitle = subtitle - 2;
+ }
+ else
+ {
+ /* for all other tracks, the source tracks start at menu index 1 (None is 0)
+ * so subtract 1. */
+
+ subtitle = subtitle - 1;
+ }
+
+ /* We are setting a source subtitle so access the source subtitle info */
+ hb_subtitle_t * subt;
+ hb_subtitle_config_t sub_config;
+
+ subt = (hb_subtitle_t *)hb_list_item(title->list_subtitle, subtitle);
+ sub_config = subt->config;
+
+ if (subt != NULL)
+ {
+ [self writeToActivityLog: "Setting Subtitle: %s", subt];
+
+ if (!burned && job->mux == HB_MUX_MKV &&
+ subt->format == hb_subtitle_s::PICTURESUB)
+ {
+ sub_config.dest = hb_subtitle_config_s::PASSTHRUSUB;
+ }
+ else if (!burned && job->mux == HB_MUX_MP4 &&
+ subt->format == hb_subtitle_s::PICTURESUB)
+ {
+ // Skip any non-burned vobsubs when output is mp4
+ continue;
+ }
+ else if ( burned && subt->format == hb_subtitle_s::PICTURESUB )
+ {
+ // Only allow one subtitle to be burned into the video
+ if (one_burned)
+ continue;
+ one_burned = TRUE;
+ }
+ sub_config.force = force;
+ sub_config.default_track = def;
+ hb_subtitle_add( job, &sub_config, subtitle );
+ }
+
+ }
+ }
+ i++;
}
+#pragma mark -
+
+
/* Audio tracks and mixdowns */
/* Lets make sure there arent any erroneous audio tracks in the job list, so lets make sure its empty*/
int audiotrack_count = hb_list_count(job->list_audio);
@@ -3312,7 +3525,8 @@ fWorkingCount = 0;
audio->out.dynamic_range_compression = [[queueToApply objectForKey:@"Audio4TrackDRCSlider"] floatValue];
hb_audio_add( job, audio );
- free(audio);
+
+
}
/* Filters */
@@ -3827,23 +4041,11 @@ fWorkingCount = 0;
/* Reset the new title in fPictureController && fPreviewController*/
[fPictureController SetTitle:title];
- /* Update subtitle popups */
- hb_subtitle_t * subtitle;
- [fSubPopUp removeAllItems];
- [fSubPopUp addItemWithTitle: @"None"];
- [fSubPopUp addItemWithTitle: @"Autoselect"];
- for( int i = 0; i < hb_list_count( title->list_subtitle ); i++ )
- {
- subtitle = (hb_subtitle_t *) hb_list_item( title->list_subtitle, i );
-
- /* We cannot use NSPopUpButton's addItemWithTitle because
- it checks for duplicate entries */
- [[fSubPopUp menu] addItemWithTitle: [NSString stringWithCString:
- subtitle->lang] action: NULL keyEquivalent: @""];
- }
- [fSubPopUp selectItemAtIndex: 0];
-
- [self subtitleSelectionChanged:nil];
+
+ /* Update Subtitle Table */
+ [fSubtitlesDelegate resetWithTitle:title];
+ [fSubtitlesTable reloadData];
+
/* Update chapter table */
[fChapterTitlesDelegate resetWithTitle:title];
@@ -3985,6 +4187,10 @@ fWorkingCount = 0;
}
+ /* tell fSubtitlesDelegate we have a new video container */
+
+ [fSubtitlesDelegate containerChanged:[[fDstFormatPopUp selectedItem] tag]];
+ [fSubtitlesTable reloadData];
/* if we have a previously selected vid encoder tag, then try to select it */
if (selectedVidEncoderTag)
{
@@ -5427,22 +5633,6 @@ the user is using "Custom" settings by determining the sender*/
//[self customSettingUsed: sender];
}
-- (IBAction) subtitleSelectionChanged: (id) sender
-{
- if ([fSubPopUp indexOfSelectedItem] == 0)
- {
- [fSubForcedCheck setState: NSOffState];
- [fSubForcedCheck setEnabled: NO];
- }
- else
- {
- [fSubForcedCheck setEnabled: YES];
- }
-
-}
-
-
-
#pragma mark -
#pragma mark Open New Windows
@@ -7166,9 +7356,6 @@ return YES;
}
-
-
-
@end
/*******************************
diff --git a/macosx/English.lproj/MainMenu.xib b/macosx/English.lproj/MainMenu.xib
index be20ff85f..542f3453f 100644
--- a/macosx/English.lproj/MainMenu.xib
+++ b/macosx/English.lproj/MainMenu.xib
@@ -2,14 +2,13 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.03">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">9G55</string>
+ <string key="IBDocument.SystemVersion">9J61</string>
<string key="IBDocument.InterfaceBuilderVersion">677</string>
- <string key="IBDocument.AppKitVersion">949.43</string>
+ <string key="IBDocument.AppKitVersion">949.46</string>
<string key="IBDocument.HIToolboxVersion">353.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="1949"/>
- <integer value="2"/>
+ <integer value="5196"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -109,7 +108,7 @@
<object class="NSTabViewItem" id="107038816">
<string key="NSIdentifier">1</string>
<object class="NSView" key="NSView" id="1053078401">
- <reference key="NSNextResponder" ref="712502892"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -550,7 +549,6 @@
</object>
</object>
<string key="NSFrame">{{10, 25}, {714, 305}}</string>
- <reference key="NSSuperview" ref="712502892"/>
</object>
<string key="NSLabel">Video</string>
<reference key="NSColor" ref="242973447"/>
@@ -673,7 +671,6 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{578, 221}, {66, 22}}</string>
<reference key="NSSuperview" ref="738554558"/>
- <reference key="NSNextKeyView" ref="436388527"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="569025834">
<int key="NSCellFlags">-2076049856</int>
@@ -717,72 +714,6 @@
<int key="NSArrowPosition">1</int>
</object>
</object>
- <object class="NSTextField" id="436388527">
- <reference key="NSNextResponder" ref="738554558"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{-10, 48}, {70, 14}}</string>
- <reference key="NSSuperview" ref="738554558"/>
- <reference key="NSNextKeyView" ref="506492318"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="95314231">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">71303168</int>
- <string key="NSContents">Subtitles:</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="436388527"/>
- <reference key="NSBackgroundColor" ref="242973447"/>
- <reference key="NSTextColor" ref="701609070"/>
- </object>
- </object>
- <object class="NSPopUpButton" id="506492318">
- <reference key="NSNextResponder" ref="738554558"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{65, 42}, {157, 22}}</string>
- <reference key="NSSuperview" ref="738554558"/>
- <reference key="NSNextKeyView" ref="712502892"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSPopUpButtonCell" key="NSCell" id="636153290">
- <int key="NSCellFlags">-2076049856</int>
- <int key="NSCellFlags2">132096</int>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="506492318"/>
- <int key="NSButtonFlags">109199615</int>
- <int key="NSButtonFlags2">1</int>
- <reference key="NSAlternateImage" ref="26"/>
- <string key="NSAlternateContents"/>
- <object class="NSMutableString" key="NSKeyEquivalent">
- <characters key="NS.bytes"/>
- </object>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- <object class="NSMenuItem" key="NSMenuItem" id="432645698">
- <reference key="NSMenu" ref="121028261"/>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <int key="NSState">1</int>
- <reference key="NSOnImage" ref="447995298"/>
- <reference key="NSMixedImage" ref="760317610"/>
- <string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="636153290"/>
- </object>
- <bool key="NSMenuItemRespectAlignment">YES</bool>
- <object class="NSMenu" key="NSMenu" id="121028261">
- <object class="NSMutableString" key="NSTitle">
- <characters key="NS.bytes">OtherViews</characters>
- </object>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="432645698"/>
- </object>
- </object>
- <int key="NSPreferredEdge">3</int>
- <bool key="NSUsesItemFromMenu">YES</bool>
- <bool key="NSAltersState">YES</bool>
- <int key="NSArrowPosition">1</int>
- </object>
- </object>
<object class="NSPopUpButton" id="64899409">
<reference key="NSNextResponder" ref="738554558"/>
<int key="NSvFlags">256</int>
@@ -899,27 +830,6 @@
<int key="NSArrowPosition">1</int>
</object>
</object>
- <object class="NSButton" id="691038230">
- <reference key="NSNextResponder" ref="738554558"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrame">{{229, 46}, {147, 17}}</string>
- <reference key="NSSuperview" ref="738554558"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="944590907">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">131072</int>
- <string key="NSContents">Forced Subtitles Only</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="691038230"/>
- <int key="NSButtonFlags">1211912703</int>
- <int key="NSButtonFlags2">2</int>
- <reference key="NSAlternateImage" ref="624832340"/>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
<object class="NSTextField" id="978534247">
<reference key="NSNextResponder" ref="738554558"/>
<int key="NSvFlags">268</int>
@@ -930,7 +840,7 @@
<int key="NSCellFlags">67239488</int>
<int key="NSCellFlags2">272761856</int>
<string key="NSContents">Audio Tracks</string>
- <object class="NSFont" key="NSSupport" id="347509359">
+ <object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande-Bold</string>
<double key="NSSize">1.100000e+01</double>
<int key="NSfFlags">16</int>
@@ -979,44 +889,6 @@
<reference key="NSTextColor" ref="701609070"/>
</object>
</object>
- <object class="NSBox" id="124979328">
- <reference key="NSNextResponder" ref="738554558"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{86, 84}, {624, 5}}</string>
- <reference key="NSSuperview" ref="738554558"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <reference key="NSSupport" ref="273283760"/>
- <reference key="NSBackgroundColor" ref="138233214"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <int key="NSBorderType">3</int>
- <int key="NSBoxType">2</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- <object class="NSTextField" id="844196518">
- <reference key="NSNextResponder" ref="738554558"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 79}, {54, 14}}</string>
- <reference key="NSSuperview" ref="738554558"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="653177228">
- <int key="NSCellFlags">67239488</int>
- <int key="NSCellFlags2">272761856</int>
- <string key="NSContents">Subtitles</string>
- <reference key="NSSupport" ref="347509359"/>
- <reference key="NSControlView" ref="844196518"/>
- <reference key="NSBackgroundColor" ref="242973447"/>
- <reference key="NSTextColor" ref="701609070"/>
- </object>
- </object>
<object class="NSPopUpButton" id="135824882">
<reference key="NSNextResponder" ref="738554558"/>
<int key="NSvFlags">256</int>
@@ -2045,12 +1917,351 @@
<string key="NSFrame">{{10, 25}, {714, 305}}</string>
<reference key="NSNextKeyView" ref="198352083"/>
</object>
- <string type="base64-UTF8" key="NSLabel">QXVkaW8gJiBTdWJ0aXRsZXM</string>
+ <string key="NSLabel">Audio</string>
<reference key="NSColor" ref="242973447"/>
<reference key="NSTabView" ref="712502892"/>
</object>
- <object class="NSTabViewItem" id="291470012">
+ <object class="NSTabViewItem" id="799016137">
<string key="NSIdentifier">3</string>
+ <object class="NSView" key="NSView" id="756255803">
+ <reference key="NSNextResponder" ref="712502892"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSScrollView" id="596256174">
+ <reference key="NSNextResponder" ref="756255803"/>
+ <int key="NSvFlags">268</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="705918581">
+ <reference key="NSNextResponder" ref="596256174"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTableView" id="587237088">
+ <reference key="NSNextResponder" ref="705918581"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{700, 265}</string>
+ <reference key="NSSuperview" ref="705918581"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTableHeaderView" key="NSHeaderView" id="569585004">
+ <reference key="NSNextResponder" ref="139191276"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{700, 17}</string>
+ <reference key="NSSuperview" ref="139191276"/>
+ <reference key="NSTableView" ref="587237088"/>
+ </object>
+ <object class="_NSCornerView" key="NSCornerView" id="10217663">
+ <reference key="NSNextResponder" ref="596256174"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-26, 0}, {16, 17}}</string>
+ <reference key="NSSuperview" ref="596256174"/>
+ </object>
+ <object class="NSMutableArray" key="NSTableColumns">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTableColumn" id="274341565">
+ <string key="NSIdentifier">track</string>
+ <double key="NSWidth">3.140000e+02</double>
+ <double key="NSMinWidth">4.000000e+01</double>
+ <double key="NSMaxWidth">1.000000e+03</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Track</string>
+ <reference key="NSSupport" ref="26"/>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="188451177">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">headerTextColor</string>
+ <reference key="NSColor" ref="544409939"/>
+ </object>
+ </object>
+ <object class="NSPopUpButtonCell" key="NSDataCell" id="426946554">
+ <int key="NSCellFlags">-2076049856</int>
+ <int key="NSCellFlags2">264192</int>
+ <reference key="NSSupport" ref="22"/>
+ <reference key="NSControlView" ref="587237088"/>
+ <int key="NSButtonFlags">100679935</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">400</int>
+ <int key="NSPeriodicInterval">75</int>
+ <object class="NSMenuItem" key="NSMenuItem" id="1026748451">
+ <reference key="NSMenu" ref="472498711"/>
+ <string key="NSTitle">Pop Up</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <int key="NSState">1</int>
+ <reference key="NSOnImage" ref="447995298"/>
+ <reference key="NSMixedImage" ref="760317610"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <reference key="NSTarget" ref="426946554"/>
+ </object>
+ <bool key="NSMenuItemRespectAlignment">YES</bool>
+ <object class="NSMenu" key="NSMenu" id="472498711">
+ <string key="NSTitle">OtherViews</string>
+ <object class="NSMutableArray" key="NSMenuItems">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1026748451"/>
+ </object>
+ </object>
+ <bool key="NSUsesItemFromMenu">YES</bool>
+ <bool key="NSAltersState">YES</bool>
+ <int key="NSArrowPosition">2</int>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <reference key="NSTableView" ref="587237088"/>
+ </object>
+ <object class="NSTableColumn" id="1033748386">
+ <string key="NSIdentifier">forced</string>
+ <double key="NSWidth">1.390000e+02</double>
+ <double key="NSMinWidth">1.000000e+01</double>
+ <double key="NSMaxWidth">3.402823e+38</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Forced Only</string>
+ <reference key="NSSupport" ref="26"/>
+ <object class="NSColor" key="NSBackgroundColor" id="1045207104">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">headerColor</string>
+ <reference key="NSColor" ref="809784795"/>
+ </object>
+ <reference key="NSTextColor" ref="188451177"/>
+ </object>
+ <object class="NSButtonCell" key="NSDataCell" id="13236417">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">131072</int>
+ <string key="NSContents">Check</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="587237088"/>
+ <int key="NSButtonFlags">1215582719</int>
+ <int key="NSButtonFlags2">130</int>
+ <reference key="NSNormalImage" ref="887198214"/>
+ <reference key="NSAlternateImage" ref="624832340"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="587237088"/>
+ </object>
+ <object class="NSTableColumn" id="362209136">
+ <string key="NSIdentifier">burned</string>
+ <double key="NSWidth">1.210000e+02</double>
+ <double key="NSMinWidth">1.000000e+01</double>
+ <double key="NSMaxWidth">3.402823e+38</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Burned In</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="1045207104"/>
+ <reference key="NSTextColor" ref="188451177"/>
+ </object>
+ <object class="NSButtonCell" key="NSDataCell" id="704907857">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">131072</int>
+ <string key="NSContents">Check</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="587237088"/>
+ <int key="NSButtonFlags">1215582719</int>
+ <int key="NSButtonFlags2">130</int>
+ <reference key="NSNormalImage" ref="887198214"/>
+ <reference key="NSAlternateImage" ref="624832340"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="587237088"/>
+ </object>
+ <object class="NSTableColumn" id="270619684">
+ <string key="NSIdentifier">default</string>
+ <double key="NSWidth">1.140000e+02</double>
+ <double key="NSMinWidth">1.000000e+01</double>
+ <double key="NSMaxWidth">3.402823e+38</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628032</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Default</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="1045207104"/>
+ <reference key="NSTextColor" ref="188451177"/>
+ </object>
+ <object class="NSButtonCell" key="NSDataCell" id="299034685">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">131072</int>
+ <string key="NSContents">Check</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="587237088"/>
+ <int key="NSButtonFlags">1215582719</int>
+ <int key="NSButtonFlags2">130</int>
+ <reference key="NSNormalImage" ref="887198214"/>
+ <reference key="NSAlternateImage" ref="624832340"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="587237088"/>
+ </object>
+ </object>
+ <double key="NSIntercellSpacingWidth">3.000000e+00</double>
+ <double key="NSIntercellSpacingHeight">2.000000e+00</double>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MC45MDE5NjA3OSAwLjkwMTk2MDc5IDAuOTAxOTYwNzkAA</bytes>
+ </object>
+ <object class="NSColor" key="NSGridColor" id="156710040">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">gridColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC41AA</bytes>
+ </object>
+ </object>
+ <double key="NSRowHeight">1.700000e+01</double>
+ <int key="NSTvFlags">1111490560</int>
+ <int key="NSColumnAutoresizingStyle">4</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">NO</bool>
+ </object>
+ </object>
+ <string key="NSFrame">{{0, 17}, {700, 265}}</string>
+ <reference key="NSSuperview" ref="596256174"/>
+ <reference key="NSNextKeyView" ref="587237088"/>
+ <reference key="NSDocView" ref="587237088"/>
+ <object class="NSColor" key="NSBGColor" id="355843302">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <reference key="NSColor" ref="458742033"/>
+ </object>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="40751315">
+ <reference key="NSNextResponder" ref="596256174"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {15, 206}}</string>
+ <reference key="NSSuperview" ref="596256174"/>
+ <reference key="NSTarget" ref="596256174"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">3.700000e+01</double>
+ <double key="NSPercent">1.947368e-01</double>
+ </object>
+ <object class="NSScroller" id="892147391">
+ <reference key="NSNextResponder" ref="596256174"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{-100, -100}, {685, 15}}</string>
+ <reference key="NSSuperview" ref="596256174"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="596256174"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">5.714286e-01</double>
+ </object>
+ <object class="NSClipView" id="139191276">
+ <reference key="NSNextResponder" ref="596256174"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="569585004"/>
+ </object>
+ <string key="NSFrameSize">{700, 17}</string>
+ <reference key="NSSuperview" ref="596256174"/>
+ <reference key="NSNextKeyView" ref="569585004"/>
+ <reference key="NSDocView" ref="569585004"/>
+ <reference key="NSBGColor" ref="355843302"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <reference ref="10217663"/>
+ </object>
+ <string key="NSFrame">{{9, 7}, {700, 282}}</string>
+ <reference key="NSSuperview" ref="756255803"/>
+ <reference key="NSNextKeyView" ref="705918581"/>
+ <int key="NSsFlags">512</int>
+ <reference key="NSVScroller" ref="40751315"/>
+ <reference key="NSHScroller" ref="892147391"/>
+ <reference key="NSContentView" ref="705918581"/>
+ <reference key="NSHeaderClipView" ref="139191276"/>
+ <reference key="NSCornerView" ref="10217663"/>
+ <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
+ </object>
+ </object>
+ <string key="NSFrame">{{10, 25}, {714, 305}}</string>
+ <reference key="NSSuperview" ref="712502892"/>
+ </object>
+ <string key="NSLabel">Subtitles</string>
+ <reference key="NSColor" ref="242973447"/>
+ <reference key="NSTabView" ref="712502892"/>
+ </object>
+ <object class="NSTabViewItem" id="744678564">
+ <string key="NSIdentifier">5</string>
+ <object class="NSView" key="NSView" id="833271282">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSBox" id="231506045">
+ <reference key="NSNextResponder" ref="833271282"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSView" id="815869140">
+ <reference key="NSNextResponder" ref="231506045"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrameSize">{700, 290}</string>
+ <reference key="NSSuperview" ref="231506045"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{7, 8}, {700, 290}}</string>
+ <reference key="NSSuperview" ref="833271282"/>
+ <string key="NSOffsets">{0, 0}</string>
+ <object class="NSTextFieldCell" key="NSTitleCell">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Box</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSBackgroundColor" ref="138233214"/>
+ <object class="NSColor" key="NSTextColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+ </object>
+ </object>
+ <reference key="NSContentView" ref="815869140"/>
+ <int key="NSBorderType">0</int>
+ <int key="NSBoxType">3</int>
+ <int key="NSTitlePosition">0</int>
+ <bool key="NSTransparent">NO</bool>
+ </object>
+ </object>
+ <string key="NSFrame">{{10, 25}, {714, 305}}</string>
+ </object>
+ <string key="NSLabel">Advanced</string>
+ <reference key="NSColor" ref="242973447"/>
+ <reference key="NSTabView" ref="712502892"/>
+ </object>
+ <object class="NSTabViewItem" id="291470012">
+ <string key="NSIdentifier">4</string>
<object class="NSView" key="NSView" id="440990725">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -2104,12 +2315,7 @@
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
</object>
- <object class="NSColor" key="NSTextColor" id="188451177">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">headerTextColor</string>
- <reference key="NSColor" ref="544409939"/>
- </object>
+ <reference key="NSTextColor" ref="188451177"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="686068440">
<int key="NSCellFlags">337772096</int>
@@ -2117,12 +2323,7 @@
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="995413175"/>
<reference key="NSControlView" ref="595654978"/>
- <object class="NSColor" key="NSBackgroundColor" id="355843302">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlBackgroundColor</string>
- <reference key="NSColor" ref="458742033"/>
- </object>
+ <reference key="NSBackgroundColor" ref="355843302"/>
<reference key="NSTextColor" ref="701609070"/>
</object>
<int key="NSResizingMask">3</int>
@@ -2160,15 +2361,7 @@
<double key="NSIntercellSpacingWidth">3.000000e+00</double>
<double key="NSIntercellSpacingHeight">2.000000e+00</double>
<reference key="NSBackgroundColor" ref="809784795"/>
- <object class="NSColor" key="NSGridColor" id="156710040">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">gridColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- </object>
+ <reference key="NSGridColor" ref="156710040"/>
<double key="NSRowHeight">1.700000e+01</double>
<int key="NSTvFlags">-700448768</int>
<int key="NSColumnAutoresizingStyle">4</int>
@@ -2262,61 +2455,15 @@
<reference key="NSColor" ref="242973447"/>
<reference key="NSTabView" ref="712502892"/>
</object>
- <object class="NSTabViewItem" id="744678564">
- <string key="NSIdentifier">4</string>
- <object class="NSView" key="NSView" id="833271282">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSBox" id="231506045">
- <reference key="NSNextResponder" ref="833271282"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSView" id="815869140">
- <reference key="NSNextResponder" ref="231506045"/>
- <int key="NSvFlags">256</int>
- <string key="NSFrameSize">{700, 290}</string>
- <reference key="NSSuperview" ref="231506045"/>
- </object>
- </object>
- <string key="NSFrame">{{7, 8}, {700, 290}}</string>
- <reference key="NSSuperview" ref="833271282"/>
- <string key="NSOffsets">{0, 0}</string>
- <object class="NSTextFieldCell" key="NSTitleCell">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">Box</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSBackgroundColor" ref="138233214"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
- </object>
- </object>
- <reference key="NSContentView" ref="815869140"/>
- <int key="NSBorderType">0</int>
- <int key="NSBoxType">3</int>
- <int key="NSTitlePosition">0</int>
- <bool key="NSTransparent">NO</bool>
- </object>
- </object>
- <string key="NSFrame">{{10, 25}, {714, 305}}</string>
- </object>
- <string key="NSLabel">Advanced</string>
- <reference key="NSColor" ref="242973447"/>
- <reference key="NSTabView" ref="712502892"/>
- </object>
</object>
- <reference key="NSSelectedTabViewItem" ref="107038816"/>
+ <reference key="NSSelectedTabViewItem" ref="799016137"/>
<reference key="NSFont" ref="26"/>
<int key="NSTvFlags">134217728</int>
<bool key="NSAllowTruncatedLabels">YES</bool>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1053078401"/>
+ <reference ref="756255803"/>
</object>
</object>
<object class="NSTextField" id="586321835">
@@ -4954,22 +5101,6 @@
<int key="connectionID">1620</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fSubPopUp</string>
- <reference key="source" ref="2258723"/>
- <reference key="destination" ref="506492318"/>
- </object>
- <int key="connectionID">1637</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fSubField</string>
- <reference key="source" ref="2258723"/>
- <reference key="destination" ref="436388527"/>
- </object>
- <int key="connectionID">1758</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performFindPanelAction:</string>
<reference key="source" ref="952684036"/>
@@ -5410,22 +5541,6 @@
<int key="connectionID">2496</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">fSubForcedCheck</string>
- <reference key="source" ref="2258723"/>
- <reference key="destination" ref="691038230"/>
- </object>
- <int key="connectionID">2505</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">subtitleSelectionChanged:</string>
- <reference key="source" ref="2258723"/>
- <reference key="destination" ref="506492318"/>
- </object>
- <int key="connectionID">2506</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBActionConnection" key="connection">
<string key="label">performClose:</string>
<reference key="source" ref="952684036"/>
@@ -6193,6 +6308,14 @@
</object>
<int key="connectionID">5193</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">fSubtitlesTable</string>
+ <reference key="source" ref="2258723"/>
+ <reference key="destination" ref="587237088"/>
+ </object>
+ <int key="connectionID">5214</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -6293,8 +6416,9 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="157300012"/>
<reference ref="107038816"/>
- <reference ref="291470012"/>
<reference ref="744678564"/>
+ <reference ref="799016137"/>
+ <reference ref="291470012"/>
</object>
<reference key="parent" ref="168918359"/>
</object>
@@ -6317,17 +6441,12 @@
<reference ref="290434291"/>
<reference ref="122023676"/>
<reference ref="351922892"/>
- <reference ref="506492318"/>
- <reference ref="436388527"/>
<reference ref="64899409"/>
<reference ref="354208181"/>
<reference ref="211624488"/>
<reference ref="68754422"/>
- <reference ref="691038230"/>
<reference ref="978534247"/>
<reference ref="460286942"/>
- <reference ref="124979328"/>
- <reference ref="844196518"/>
<reference ref="135824882"/>
<reference ref="592255786"/>
<reference ref="466865421"/>
@@ -6433,24 +6552,6 @@
<reference key="parent" ref="738554558"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">1634</int>
- <reference key="object" ref="506492318"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="636153290"/>
- </object>
- <reference key="parent" ref="738554558"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1638</int>
- <reference key="object" ref="436388527"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="95314231"/>
- </object>
- <reference key="parent" ref="738554558"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">1962</int>
<reference key="object" ref="64899409"/>
<object class="NSMutableArray" key="children">
@@ -6487,15 +6588,6 @@
<reference key="parent" ref="738554558"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2504</int>
- <reference key="object" ref="691038230"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="944590907"/>
- </object>
- <reference key="parent" ref="738554558"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">3075</int>
<reference key="object" ref="978534247"/>
<object class="NSMutableArray" key="children">
@@ -6510,20 +6602,6 @@
<reference key="parent" ref="738554558"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">3081</int>
- <reference key="object" ref="124979328"/>
- <reference key="parent" ref="738554558"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">3082</int>
- <reference key="object" ref="844196518"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="653177228"/>
- </object>
- <reference key="parent" ref="738554558"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">1477</int>
<reference key="object" ref="107038816"/>
<object class="NSMutableArray" key="children">
@@ -7940,20 +8018,6 @@
<reference key="parent" ref="592255786"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">4855</int>
- <reference key="object" ref="636153290"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="121028261"/>
- </object>
- <reference key="parent" ref="506492318"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">4856</int>
- <reference key="object" ref="95314231"/>
- <reference key="parent" ref="436388527"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">4857</int>
<reference key="object" ref="581778322"/>
<object class="NSMutableArray" key="children">
@@ -7982,21 +8046,11 @@
<reference key="parent" ref="68754422"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">4861</int>
- <reference key="object" ref="944590907"/>
- <reference key="parent" ref="691038230"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">4862</int>
<reference key="object" ref="211433572"/>
<reference key="parent" ref="978534247"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">4864</int>
- <reference key="object" ref="653177228"/>
- <reference key="parent" ref="844196518"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">4872</int>
<reference key="object" ref="200565868"/>
<reference key="parent" ref="521019277"/>
@@ -8386,20 +8440,6 @@
<reference key="parent" ref="80517384"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">1635</int>
- <reference key="object" ref="121028261"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="432645698"/>
- </object>
- <reference key="parent" ref="636153290"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1636</int>
- <reference key="object" ref="432645698"/>
- <reference key="parent" ref="121028261"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">1963</int>
<reference key="object" ref="142584693"/>
<object class="NSMutableArray" key="children">
@@ -9377,6 +9417,137 @@
<reference key="object" ref="685593004"/>
<reference key="parent" ref="112579544"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5194</int>
+ <reference key="object" ref="799016137"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="756255803"/>
+ </object>
+ <reference key="parent" ref="712502892"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5195</int>
+ <reference key="object" ref="756255803"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="596256174"/>
+ </object>
+ <reference key="parent" ref="799016137"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5196</int>
+ <reference key="object" ref="596256174"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="40751315"/>
+ <reference ref="892147391"/>
+ <reference ref="587237088"/>
+ <reference ref="569585004"/>
+ </object>
+ <reference key="parent" ref="756255803"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5197</int>
+ <reference key="object" ref="40751315"/>
+ <reference key="parent" ref="596256174"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5198</int>
+ <reference key="object" ref="892147391"/>
+ <reference key="parent" ref="596256174"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5199</int>
+ <reference key="object" ref="587237088"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="274341565"/>
+ <reference ref="1033748386"/>
+ <reference ref="362209136"/>
+ <reference ref="270619684"/>
+ </object>
+ <reference key="parent" ref="596256174"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5201</int>
+ <reference key="object" ref="274341565"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="426946554"/>
+ </object>
+ <reference key="parent" ref="587237088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5215</int>
+ <reference key="object" ref="1033748386"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="13236417"/>
+ </object>
+ <reference key="parent" ref="587237088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5217</int>
+ <reference key="object" ref="362209136"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="704907857"/>
+ </object>
+ <reference key="parent" ref="587237088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5219</int>
+ <reference key="object" ref="270619684"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="299034685"/>
+ </object>
+ <reference key="parent" ref="587237088"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5225</int>
+ <reference key="object" ref="426946554"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="472498711"/>
+ </object>
+ <reference key="parent" ref="274341565"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5226</int>
+ <reference key="object" ref="472498711"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1026748451"/>
+ </object>
+ <reference key="parent" ref="426946554"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5227</int>
+ <reference key="object" ref="1026748451"/>
+ <reference key="parent" ref="472498711"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5232</int>
+ <reference key="object" ref="13236417"/>
+ <reference key="parent" ref="1033748386"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5233</int>
+ <reference key="object" ref="704907857"/>
+ <reference key="parent" ref="362209136"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5234</int>
+ <reference key="object" ref="299034685"/>
+ <reference key="parent" ref="270619684"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5244</int>
+ <reference key="object" ref="569585004"/>
+ <reference key="parent" ref="596256174"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -9556,14 +9727,6 @@
<string>1628.ImportedFromIB2</string>
<string>1629.IBPluginDependency</string>
<string>1629.ImportedFromIB2</string>
- <string>1634.IBPluginDependency</string>
- <string>1634.ImportedFromIB2</string>
- <string>1635.IBPluginDependency</string>
- <string>1635.ImportedFromIB2</string>
- <string>1636.IBPluginDependency</string>
- <string>1636.ImportedFromIB2</string>
- <string>1638.IBPluginDependency</string>
- <string>1638.ImportedFromIB2</string>
<string>1795.IBPluginDependency</string>
<string>1795.ImportedFromIB2</string>
<string>1796.IBPluginDependency</string>
@@ -9749,8 +9912,6 @@
<string>2488.ImportedFromIB2</string>
<string>2494.IBPluginDependency</string>
<string>2494.ImportedFromIB2</string>
- <string>2504.IBPluginDependency</string>
- <string>2504.ImportedFromIB2</string>
<string>2507.IBPluginDependency</string>
<string>2507.ImportedFromIB2</string>
<string>2508.IBPluginDependency</string>
@@ -9817,10 +9978,6 @@
<string>3075.ImportedFromIB2</string>
<string>3077.IBPluginDependency</string>
<string>3077.ImportedFromIB2</string>
- <string>3081.IBPluginDependency</string>
- <string>3081.ImportedFromIB2</string>
- <string>3082.IBPluginDependency</string>
- <string>3082.ImportedFromIB2</string>
<string>3203.IBPluginDependency</string>
<string>3203.ImportedFromIB2</string>
<string>3205.IBPluginDependency</string>
@@ -9865,15 +10022,11 @@
<string>4852.IBPluginDependency</string>
<string>4853.IBPluginDependency</string>
<string>4854.IBPluginDependency</string>
- <string>4855.IBPluginDependency</string>
- <string>4856.IBPluginDependency</string>
<string>4857.IBPluginDependency</string>
<string>4858.IBPluginDependency</string>
<string>4859.IBPluginDependency</string>
<string>4860.IBPluginDependency</string>
- <string>4861.IBPluginDependency</string>
<string>4862.IBPluginDependency</string>
- <string>4864.IBPluginDependency</string>
<string>4872.IBPluginDependency</string>
<string>4873.IBPluginDependency</string>
<string>4874.IBPluginDependency</string>
@@ -10125,6 +10278,23 @@
<string>5185.IBPluginDependency</string>
<string>5188.IBPluginDependency</string>
<string>5192.IBPluginDependency</string>
+ <string>5194.IBPluginDependency</string>
+ <string>5195.IBPluginDependency</string>
+ <string>5196.IBPluginDependency</string>
+ <string>5197.IBPluginDependency</string>
+ <string>5198.IBPluginDependency</string>
+ <string>5199.IBPluginDependency</string>
+ <string>5201.IBPluginDependency</string>
+ <string>5215.IBPluginDependency</string>
+ <string>5217.IBPluginDependency</string>
+ <string>5219.IBPluginDependency</string>
+ <string>5225.IBPluginDependency</string>
+ <string>5226.IBEditorWindowLastContentRect</string>
+ <string>5226.IBPluginDependency</string>
+ <string>5227.IBPluginDependency</string>
+ <string>5232.IBPluginDependency</string>
+ <string>5233.IBPluginDependency</string>
+ <string>5234.IBPluginDependency</string>
<string>56.IBPluginDependency</string>
<string>56.ImportedFromIB2</string>
<string>57.IBPluginDependency</string>
@@ -10379,14 +10549,6 @@
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
<string>{{454, 306}, {270, 550}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="0"/>
@@ -10480,9 +10642,9 @@
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>{{248, 306}, {760, 550}}</string>
+ <string>{{59, 306}, {760, 550}}</string>
<boolean value="YES"/>
- <string>{{248, 306}, {760, 550}}</string>
+ <string>{{59, 306}, {760, 550}}</string>
<reference ref="9"/>
<string>{{65, 541}, {760, 550}}</string>
<reference ref="6"/>
@@ -10541,8 +10703,6 @@
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
<string>{{72, 851}, {392, 144}}</string>
<string>{{72, 851}, {392, 144}}</string>
<reference ref="9"/>
@@ -10595,10 +10755,6 @@
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <reference ref="9"/>
<string>HBPresetsOutlineView</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
@@ -10709,10 +10865,6 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
@@ -10912,6 +11064,23 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{154, 542}, {700, 18}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
@@ -10946,7 +11115,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">5193</int>
+ <int key="maxID">5244</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -11005,7 +11174,6 @@
<string>showPreviewWindow:</string>
<string>showQueueWindow:</string>
<string>showSourceTitleScanPanel:</string>
- <string>subtitleSelectionChanged:</string>
<string>titlePopUpChanged:</string>
<string>twoPassCheckboxChanged:</string>
<string>videoEncoderPopUpChanged:</string>
@@ -11066,7 +11234,6 @@
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
@@ -11160,6 +11327,7 @@
<string>fSubField</string>
<string>fSubForcedCheck</string>
<string>fSubPopUp</string>
+ <string>fSubtitlesTable</string>
<string>fVidBitrateCell</string>
<string>fVidBitrateField</string>
<string>fVidConstantCell</string>
@@ -11268,6 +11436,7 @@
<string>NSTextField</string>
<string>NSButton</string>
<string>NSPopUpButton</string>
+ <string>NSTableView</string>
<string>NSButtonCell</string>
<string>NSTextField</string>
<string>NSButtonCell</string>
diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm
index 39fb40ce0..a3e61ce29 100644
--- a/macosx/HBQueueController.mm
+++ b/macosx/HBQueueController.mm
@@ -1187,6 +1187,7 @@ return ![(HBQueueOutlineView*)outlineView isDragging];
}
+
/* Seventh Line Audio Details*/
[finalString appendString: @"Audio Track 1: " withAttributes:detailBoldAttr];
[finalString appendString: audioDetail1 withAttributes:detailAttr];
@@ -1202,6 +1203,39 @@ return ![(HBQueueOutlineView*)outlineView isDragging];
[finalString appendString: @"Audio Track 4: " withAttributes:detailBoldAttr];
[finalString appendString: audioDetail4 withAttributes:detailAttr];
+ [finalString appendString:@"\n" withAttributes:detailAttr];
+
+ /* Eighth Line Subtitle Details */
+
+ int i = 0;
+ NSEnumerator *enumerator = [[item objectForKey:@"SubtitleList"] objectEnumerator];
+ id tempObject;
+ while (tempObject = [enumerator nextObject])
+ {
+ /* since the subtitleSourceTrackNum 0 is "None" in our array of the subtitle popups,
+ * we want to ignore it for display as well as encoding.
+ */
+ if ([[tempObject objectForKey:@"subtitleSourceTrackNum"] intValue] > 0)
+ {
+ /* remember that index 0 of Subtitles can contain "Foreign Audio Search*/
+ [finalString appendString: @"Subtitle: " withAttributes:detailBoldAttr];
+ [finalString appendString: [tempObject objectForKey:@"subtitleSourceTrackName"] withAttributes:detailAttr];
+ if ([[tempObject objectForKey:@"subtitleTrackForced"] intValue] == 1)
+ {
+ [finalString appendString: @" - Forced Only" withAttributes:detailAttr];
+ }
+ if ([[tempObject objectForKey:@"subtitleTrackBurned"] intValue] == 1)
+ {
+ [finalString appendString: @" - Burned In" withAttributes:detailAttr];
+ }
+ if ([[tempObject objectForKey:@"subtitleTrackDefault"] intValue] == 1)
+ {
+ [finalString appendString: @" - Default" withAttributes:detailAttr];
+ }
+ [finalString appendString:@"\n" withAttributes:detailAttr];
+ }
+ i++;
+ }
return finalString;
}
diff --git a/macosx/HBSubtitles.h b/macosx/HBSubtitles.h
new file mode 100644
index 000000000..990492db2
--- /dev/null
+++ b/macosx/HBSubtitles.h
@@ -0,0 +1,44 @@
+/* $Id: HBSubtitles.h,v 1.35 2005/08/01 14:29:50 titer Exp $
+
+ This file is part of the HandBrake source code.
+ Homepage: <http://handbrake.fr/>.
+ It may be used under the terms of the GNU General Public License. */
+
+#import <Cocoa/Cocoa.h>
+#include "hb.h"
+
+@interface HBSubtitles : NSObject {
+hb_title_t *fTitle;
+
+NSMutableArray *subtitleArray;
+int container;
+}
+
+// Trigger a refresh of data
+- (void)resetWithTitle:(hb_title_t *)title;
+
+// Create new subtitle track
+- (void)addSubtitleTrack;
+- (NSDictionary *)createSubtitleTrack;
+- (NSMutableArray*) getSubtitleArray: (NSMutableArray *) subtitlesArray ;
+
+- (void)containerChanged:(int) newContainer;
+
+// Table View Delegates
+- (int)numberOfRowsInTableView:(NSTableView *)aTableView;
+
+- (id)tableView:(NSTableView *)aTableView
+ objectValueForTableColumn:(NSTableColumn *)aTableColumn
+ row:(NSInteger)rowIndex;
+
+- (void)tableView:(NSTableView *)aTableView
+ setObjectValue:(id)anObject
+ forTableColumn:(NSTableColumn *)aTableColumn
+ row:(NSInteger)rowIndex;
+
+- (void)tableView:(NSTableView *)aTableView
+ willDisplayCell:(id)aCell
+ forTableColumn:(NSTableColumn *)aTableColumn
+ row:(NSInteger)rowIndex;
+
+@end
diff --git a/macosx/HBSubtitles.m b/macosx/HBSubtitles.m
new file mode 100644
index 000000000..c125779e1
--- /dev/null
+++ b/macosx/HBSubtitles.m
@@ -0,0 +1,444 @@
+/* $Id: HBSubtitles.m,v 1.35 2005/08/01 14:29:50 titer Exp $
+
+ This file is part of the HandBrake source code.
+ Homepage: <http://handbrake.fr/>.
+ It may be used under the terms of the GNU General Public License. */
+//
+
+#import "HBSubtitles.h"
+#include "hb.h"
+
+@implementation HBSubtitles
+- (id)init
+{
+ self = [super init];
+ if( self != nil )
+ {
+ fTitle = NULL;
+ }
+
+ return self;
+}
+
+
+- (void)resetWithTitle:(hb_title_t *)title
+{
+ fTitle = title;
+
+ if (!title)
+ {
+ return;
+ }
+
+ if (subtitleArray)
+ {
+ [subtitleArray release];
+ }
+ subtitleArray = [[NSMutableArray alloc] init];
+ [self addSubtitleTrack];
+}
+
+#pragma mark -
+#pragma mark Create new Subtitles
+
+- (void)addSubtitleTrack
+{
+ [subtitleArray addObject:[self createSubtitleTrack]];
+}
+
+/* Creates a new subtitle track and stores it in an NSMutableDictionary */
+- (NSDictionary *)createSubtitleTrack
+{
+ NSMutableDictionary *newSubtitleTrack = [[NSMutableDictionary alloc] init];
+ /* Subtitle Source track popup index */
+ [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleSourceTrackNum"];
+ /* Subtitle Source track popup language */
+ [newSubtitleTrack setObject:@"None" forKey:@"subtitleSourceTrackName"];
+ /* Subtitle Source track popup isPictureSub */
+ [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleSourceTrackisPictureSub"];
+ /* Subtitle track forced state */
+ [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackForced"];
+ /* Subtitle track burned state */
+ [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"];
+ /* Subtitle track default state */
+ [newSubtitleTrack setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackDefault"];
+
+ [newSubtitleTrack autorelease];
+ return newSubtitleTrack;
+}
+
+- (NSMutableArray*) getSubtitleArray: (NSMutableArray *) subtitlesArray
+{
+ //NSMutableArray *returnSubtitlesArray = [[NSMutableArray alloc] init];
+ //[returnSubtitlesArray initWithArray:subtitleArray];
+ //[returnSubtitlesArray autorelease];
+ return subtitleArray;
+}
+
+- (void)containerChanged:(int) newContainer
+{
+container = newContainer;
+}
+
+#pragma mark -
+#pragma mark Subtitle Table Delegate Methods
+/* Table View delegate methods */
+/* Returns the number of tracks displayed
+ * NOTE: we return one more than the actual number of tracks
+ * specified as we always keep one track set to "None" which is ignored
+ * for setting up tracks, but is used to add tracks.
+ */
+- (int)numberOfRowsInTableView:(NSTableView *)aTableView
+{
+ if( fTitle == NULL || ![subtitleArray count])
+ {
+ return 0;
+ }
+ else
+ {
+ return [subtitleArray count];
+ }
+}
+
+/* Used to tell the Table view which information is to be displayed per item */
+- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
+{
+ NSString *cellEntry = @"__DATA ERROR__";
+
+ /* we setup whats displayed given the column identifier */
+ if ([[aTableColumn identifier] isEqualToString:@"track"])
+ {
+ /* 'track' is a popup of all available source subtitle tracks for the given title */
+
+
+ NSPopUpButtonCell *cellTrackPopup = [[NSPopUpButtonCell alloc] init];
+ [cellTrackPopup autorelease];
+ /* Set the Popups properties */
+ /* Following two lines can be used to show kind of a text field with indicator arrows which
+ * will popup when clicked on. Comment out for a standard style popup */
+ //[cellTrackPopup setShowsBorderOnlyWhileMouseInside:YES];
+ //[cellTrackPopup setBordered:NO];
+
+ [cellTrackPopup setControlSize:NSSmallControlSize];
+ [cellTrackPopup setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]];
+
+
+ /* Add our initial "None" track which we use to add source tracks or remove tracks.
+ * "None" is always index 0.
+ */
+ [[cellTrackPopup menu] addItemWithTitle: @"None" action: NULL keyEquivalent: @""];
+
+ /* Foreign Audio Search (index 1 in the popup) is only available for the first track */
+ if (rowIndex == 0)
+ {
+ [[cellTrackPopup menu] addItemWithTitle: @"Foreign Audio Search - (Bitmap)" action: NULL keyEquivalent: @""];
+ }
+
+ if (fTitle)
+ {
+ hb_subtitle_t *subtitle;
+ hb_subtitle_config_t sub_config;
+ int i;
+ for(i = 0; i < hb_list_count( fTitle->list_subtitle ); i++ )
+ {
+ NSString * trackTypeString = @"";
+ subtitle = (hb_subtitle_t *) hb_list_item( fTitle->list_subtitle, i );
+ sub_config = subtitle->config;
+
+ if (subtitle->format == PICTURESUB)
+ {
+ trackTypeString = @"- (Bitmap)";
+ }
+ else
+ {
+ trackTypeString = @"- (Text)";
+ }
+
+
+ NSString *popupMenuItemDescription = [NSString stringWithFormat:@"%d - %@ %@",i,[NSString stringWithUTF8String:subtitle->lang],trackTypeString];
+
+ [[cellTrackPopup menu] addItemWithTitle: popupMenuItemDescription action: NULL keyEquivalent: @""];
+ }
+ }
+
+ [aTableColumn setDataCell:cellTrackPopup];
+
+ }
+ else if ([[aTableColumn identifier] isEqualToString:@"forced"])
+ {
+ /* 'forced' is a checkbox to determine if a given source track is only to be forced */
+ NSButtonCell *cellForcedCheckBox = [[NSButtonCell alloc] init];
+ [cellForcedCheckBox autorelease];
+ [cellForcedCheckBox setButtonType:NSSwitchButton];
+ [cellForcedCheckBox setImagePosition:NSImageOnly];
+ [cellForcedCheckBox setAllowsMixedState:NO];
+ [aTableColumn setDataCell:cellForcedCheckBox];
+
+ }
+ else if ([[aTableColumn identifier] isEqualToString:@"burned"])
+ {
+ /* 'burned' is a checkbox to determine if a given source track is only to be burned */
+ NSButtonCell *cellBurnedCheckBox = [[NSButtonCell alloc] init];
+ [cellBurnedCheckBox autorelease];
+ [cellBurnedCheckBox setButtonType:NSSwitchButton];
+ [cellBurnedCheckBox setImagePosition:NSImageOnly];
+ [cellBurnedCheckBox setAllowsMixedState:NO];
+ [aTableColumn setDataCell:cellBurnedCheckBox];
+ }
+ else if ([[aTableColumn identifier] isEqualToString:@"default"])
+ {
+ NSButtonCell *cellDefaultCheckBox = [[NSButtonCell alloc] init];
+ [cellDefaultCheckBox autorelease];
+ [cellDefaultCheckBox setButtonType:NSSwitchButton];
+ [cellDefaultCheckBox setImagePosition:NSImageOnly];
+ [cellDefaultCheckBox setAllowsMixedState:NO];
+ [aTableColumn setDataCell:cellDefaultCheckBox];
+ }
+ else
+ {
+ cellEntry = nil;
+ }
+
+ return cellEntry;
+}
+
+/* Called whenever a widget in the table is edited or changed, we use it to record the change in the controlling array
+ * including removing and adding new tracks via the "None" ("track" index of 0) */
+- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
+{
+
+ if ([[aTableColumn identifier] isEqualToString:@"track"])
+ {
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleSourceTrackNum"];
+ /* Set the array to track if we are vobsub (picture sub) */
+ if ([anObject intValue] != 0)
+ {
+ int sourceSubtitleIndex;
+ bool isPictureSub = FALSE;
+ if (rowIndex == 0)
+ {
+ sourceSubtitleIndex = [anObject intValue] - 2;
+ }
+ else
+ {
+ sourceSubtitleIndex = [anObject intValue] - 1;
+ }
+
+ if (rowIndex == 0 && [anObject intValue] == 1)// we are Foreign Launguage Search, which is inherently bitmap
+ {
+ isPictureSub = TRUE;
+ }
+ else
+ {
+ hb_subtitle_t * subtitle;
+ hb_subtitle_config_t sub_config;
+ subtitle = (hb_subtitle_t *) hb_list_item( fTitle->list_subtitle, sourceSubtitleIndex );
+ sub_config = subtitle->config;
+ if (subtitle->format == PICTURESUB)
+ {
+ isPictureSub = TRUE;
+ }
+ }
+ if (isPictureSub == TRUE)
+ {
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleSourceTrackisPictureSub"];
+ }
+ else
+ {
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:0] forKey:@"subtitleSourceTrackisPictureSub"];
+ /* if we are not picture sub, then we must be a text sub, handbrake does not support burning in text subs */
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"];
+ }
+ }
+ }
+ else if ([[aTableColumn identifier] isEqualToString:@"forced"])
+ {
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleTrackForced"];
+ }
+ else if ([[aTableColumn identifier] isEqualToString:@"burned"])
+ {
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleTrackBurned"];
+ /* now we need to make sure no other tracks are set to burned if we have set burned*/
+ if ([anObject intValue] == 1)
+ {
+ int i = 0;
+ NSEnumerator *enumerator = [subtitleArray objectEnumerator];
+ id tempObject;
+ while ( tempObject = [enumerator nextObject] )
+ {
+ if (i != rowIndex )
+ {
+ [tempObject setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackBurned"];
+ }
+ i++;
+ }
+ }
+ }
+ else if ([[aTableColumn identifier] isEqualToString:@"default"])
+ {
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:[anObject intValue]] forKey:@"subtitleTrackDefault"];
+ /* now we need to make sure no other tracks are set to default */
+ if ([anObject intValue] == 1)
+ {
+ int i = 0;
+ NSEnumerator *enumerator = [subtitleArray objectEnumerator];
+ id tempObject;
+ while ( tempObject = [enumerator nextObject] )
+ {
+ if (i != rowIndex)
+ {
+ [tempObject setObject:[NSNumber numberWithInt:0] forKey:@"subtitleTrackDefault"];
+ }
+ i++;
+ }
+ }
+
+ }
+
+
+ /* now lets do a bit of logic to add / remove tracks as necessary via the "None" track (index 0) */
+ if ([[aTableColumn identifier] isEqualToString:@"track"])
+ {
+
+ /* since mp4 only supports burned in vobsubs (bitmap) we need to make sure burned in is specified */
+ if (container == HB_MUX_MP4 && [anObject intValue] != 0)
+ {
+ /* so, if isPictureSub = TRUE and we are mp4, we now have to A) set burned-in to 1 and b) remove any other
+ * tracks specified that are burned in */
+ if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackisPictureSub"] intValue] == 1)
+ {
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[NSNumber numberWithInt:1] forKey:@"subtitleTrackBurned"];
+ }
+ }
+
+
+ /* We use the track popup index number (presumes index 0 is "None" which is ignored and only used to remove tracks if need be)
+ * to determine whether to 1 modify an existing track, 2. add a new empty "None" track or 3. remove an existing track.
+ */
+
+ if ([anObject intValue] != 0 && rowIndex == [subtitleArray count] - 1) // if we have a last track which != "None"
+ {
+ /* add a new empty None track */
+ [self addSubtitleTrack];
+ }
+ else if ([anObject intValue] == 0 && rowIndex != ([subtitleArray count] -1))// if this track is none and not the last track displayed
+ {
+ /* we know the user chose to remove this track by setting it to None, so remove it from the array */
+ [subtitleArray removeObjectAtIndex: rowIndex];
+ }
+
+
+
+ }
+
+ [aTableView reloadData];
+}
+
+
+/* Gives fine grained control over the final drawing of the widget, including widget status via the controlling array */
+- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
+{
+ /* we setup whats displayed given the column identifier */
+ if ([[aTableColumn identifier] isEqualToString:@"track"])
+ {
+ /* Set the index of the recorded source track here */
+ [aCell selectItemAtIndex:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue]];
+ /* now that we have actually selected our track, we can grok the titleOfSelectedItem for that track */
+ [[subtitleArray objectAtIndex:rowIndex] setObject:[[aTableColumn dataCellForRow:rowIndex] titleOfSelectedItem] forKey:@"subtitleSourceTrackName"];
+
+ }
+ else
+ {
+
+ [aCell setAlignment:NSCenterTextAlignment];
+ /* If the Track is None, we disable the other cells as None is an empty track */
+ if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] == 0)
+ {
+ [aCell setState:0];
+ [aCell setEnabled:NO];
+ }
+ else
+ {
+ /* Since we have a valid track, we go ahead and enable the rest of the widgets and set them according to the controlling array */
+ [aCell setEnabled:YES];
+ }
+
+ if ([[aTableColumn identifier] isEqualToString:@"forced"])
+ {
+ [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackForced"] intValue]];
+ }
+ else if ([[aTableColumn identifier] isEqualToString:@"burned"])
+ {
+ [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackBurned"] intValue]];
+ /* Disable the "Burned-In" checkbox if a) the track is "None", b) the subtitle track is text (we do not support burning in
+ * text subs, or c) we are mp4 and the track is a vobsub (picture sub) */
+ if ([[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackNum"] intValue] == 0 ||
+ [[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackisPictureSub"] intValue] == 0 ||
+ (container == HB_MUX_MP4 && [[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleSourceTrackisPictureSub"] intValue] == 1))
+ {
+ [aCell setEnabled:NO];
+ }
+ else
+ {
+ [aCell setEnabled:YES];
+ }
+ }
+ else if ([[aTableColumn identifier] isEqualToString:@"default"])
+ {
+ [aCell setState:[[[subtitleArray objectAtIndex:rowIndex] objectForKey:@"subtitleTrackDefault"] intValue]];
+ }
+
+ }
+
+ BOOL useMp4VobsubDelete = YES;
+ if (useMp4VobsubDelete == YES)
+ {
+ if (container == HB_MUX_MP4)
+ {
+ /* now remove any other tracks that are set as burned and are picturesubs */
+ int i = 0;
+ int removedTracks = 0;
+ NSEnumerator *enumerator = [subtitleArray objectEnumerator];
+ id tempObject;
+ NSMutableArray *tempArrayToDelete = [NSMutableArray array];
+ BOOL removeTrack = NO;
+ while ( tempObject = [enumerator nextObject] )
+ {
+
+ if ([[tempObject objectForKey:@"subtitleSourceTrackisPictureSub"] intValue] == 1)
+ {
+ /* if this is the first vobsub mark it. if not, remove it */
+ if (removeTrack == NO)
+ {
+ /* make sure that this is set to be burned in */
+ [tempObject setObject:[NSNumber numberWithInt:1] forKey:@"subtitleTrackBurned"];
+ removeTrack = YES;
+ }
+ else
+ {
+ [tempArrayToDelete addObject:tempObject];
+ removedTracks ++;
+ }
+ }
+
+ i++;
+ }
+ /* check to see if there are tracks to remove from the array */
+ if ([tempArrayToDelete count] > 0)
+ {
+ /* Popup a warning that hb only support one pic sub being burned in with mp4 */
+ int status;
+ NSBeep();
+ status = NSRunAlertPanel(@"More than one vobsub is not supported in an mp4...",@"Your first vobsub track will now be used.", @"OK", nil, nil);
+ [NSApp requestUserAttention:NSCriticalRequest];
+
+ [subtitleArray removeObjectsInArray:tempArrayToDelete];
+ [aTableView reloadData];
+ }
+ }
+ }
+
+}
+
+
+@end
diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj
index ac8c33b5f..4b9b02175 100644
--- a/macosx/HandBrake.xcodeproj/project.pbxproj
+++ b/macosx/HandBrake.xcodeproj/project.pbxproj
@@ -51,6 +51,8 @@
A2BEA5FC0F2A1ED1001CE7A1 /* PictureController.mm in Sources */ = {isa = PBXBuildFile; fileRef = A2BEA5FA0F2A1ED1001CE7A1 /* PictureController.mm */; };
A2D0A0AB0D3E5929002D57CB /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A2D0A0AA0D3E5929002D57CB /* Sparkle.framework */; };
A2D0A0BF0D3E596F002D57CB /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = A2D0A0AA0D3E5929002D57CB /* Sparkle.framework */; };
+ A2D18AA70FD81C50003C997B /* HBSubtitles.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D18AA50FD81C50003C997B /* HBSubtitles.h */; };
+ A2D18AA80FD81C50003C997B /* HBSubtitles.m in Sources */ = {isa = PBXBuildFile; fileRef = A2D18AA60FD81C50003C997B /* HBSubtitles.m */; };
A2D7AD670C998AD30082CA33 /* ActivityWindow.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A2D7AD5E0C998AD30082CA33 /* ActivityWindow.tiff */; };
A2D7AD680C998AD30082CA33 /* AddToQueue.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A2D7AD5F0C998AD30082CA33 /* AddToQueue.tiff */; };
A2D7AD690C998AD30082CA33 /* Drawer.tiff in Resources */ = {isa = PBXBuildFile; fileRef = A2D7AD600C998AD30082CA33 /* Drawer.tiff */; };
@@ -174,6 +176,8 @@
A2BEA5F90F2A1ED1001CE7A1 /* PictureController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PictureController.h; sourceTree = "<group>"; };
A2BEA5FA0F2A1ED1001CE7A1 /* PictureController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PictureController.mm; sourceTree = "<group>"; };
A2D0A0AA0D3E5929002D57CB /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = "<group>"; };
+ A2D18AA50FD81C50003C997B /* HBSubtitles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBSubtitles.h; sourceTree = "<group>"; };
+ A2D18AA60FD81C50003C997B /* HBSubtitles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBSubtitles.m; sourceTree = "<group>"; };
A2D7AD5E0C998AD30082CA33 /* ActivityWindow.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = ActivityWindow.tiff; sourceTree = "<group>"; };
A2D7AD5F0C998AD30082CA33 /* AddToQueue.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = AddToQueue.tiff; sourceTree = "<group>"; };
A2D7AD600C998AD30082CA33 /* Drawer.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = Drawer.tiff; sourceTree = "<group>"; };
@@ -328,13 +332,15 @@
526FBC930B4CAA260064E04C /* HandBrake Sources */ = {
isa = PBXGroup;
children = (
+ A2D18AA50FD81C50003C997B /* HBSubtitles.h */,
+ A2D18AA60FD81C50003C997B /* HBSubtitles.m */,
4DF3C8CC052889CD00A80101 /* Controller.mm */,
A2BEA5F90F2A1ED1001CE7A1 /* PictureController.h */,
A2BEA5FA0F2A1ED1001CE7A1 /* PictureController.mm */,
A22C85EA0D05D35000C10E36 /* HBPresets.h */,
A22C85EB0D05D35000C10E36 /* HBPresets.m */,
- 4D1FD381073D19CE00E46515 /* HBPreviewController.h */,
4D1FD382073D19CE00E46515 /* HBPreviewController.mm */,
+ 4D1FD381073D19CE00E46515 /* HBPreviewController.h */,
4DF3C8CB052889CD00A80101 /* Controller.h */,
593034E90BBA39A100172349 /* ChapterTitles.h */,
593034EA0BBA39A100172349 /* ChapterTitles.m */,
@@ -415,6 +421,7 @@
A22C85EC0D05D35000C10E36 /* HBPresets.h in Headers */,
A2BEA5FB0F2A1ED1001CE7A1 /* PictureController.h in Headers */,
278070240F5C261300699207 /* ChapterTitles.h in Headers */,
+ A2D18AA70FD81C50003C997B /* HBSubtitles.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -604,6 +611,7 @@
E37172670C977D340072B384 /* HBImageAndTextCell.m in Sources */,
A22C85ED0D05D35100C10E36 /* HBPresets.m in Sources */,
A2BEA5FC0F2A1ED1001CE7A1 /* PictureController.mm in Sources */,
+ A2D18AA80FD81C50003C997B /* HBSubtitles.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};