diff options
author | dynaflash <[email protected]> | 2009-06-13 19:50:12 +0000 |
---|---|---|
committer | dynaflash <[email protected]> | 2009-06-13 19:50:12 +0000 |
commit | 61ee3250a66a273d3bf7b7594b5b8656993bc33f (patch) | |
tree | 42e0d9d05d691c2fc094169d2030e1dc472be5a6 | |
parent | 4c719cadc9a4158de14434236701721afd505396 (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.h | 15 | ||||
-rw-r--r-- | macosx/Controller.mm | 403 | ||||
-rw-r--r-- | macosx/English.lproj/MainMenu.xib | 893 | ||||
-rw-r--r-- | macosx/HBQueueController.mm | 34 | ||||
-rw-r--r-- | macosx/HBSubtitles.h | 44 | ||||
-rw-r--r-- | macosx/HBSubtitles.m | 444 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/project.pbxproj | 10 |
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; }; |