]> granicus.if.org Git - handbrake/commitdiff
MacGui: Multiple subtitle tracks initial implementation
authordynaflash <dynaflashtech@gmail.com>
Sat, 13 Jun 2009 19:50:12 +0000 (19:50 +0000)
committerdynaflash <dynaflashtech@gmail.com>
Sat, 13 Jun 2009 19:50:12 +0000 (19:50 +0000)
- 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

macosx/Controller.h
macosx/Controller.mm
macosx/English.lproj/MainMenu.xib
macosx/HBQueueController.mm
macosx/HBSubtitles.h [new file with mode: 0644]
macosx/HBSubtitles.m [new file with mode: 0644]
macosx/HandBrake.xcodeproj/project.pbxproj

index 87e7cd6a7a5c24985da60249e4bbcb13502b9a6d..798e443931026c5645399f933a4b1fc016e7d6b7 100644 (file)
@@ -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
 
index 150d23381214770f5baee6a252157b32f7ad2a56..da04ca25ac91096893139024bcdb7bee7e72df23 100644 (file)
@@ -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
 
 /*******************************
index be20ff85f110b7f71535d3ee9d5845902bc52260..542f3453f134efab9cc0844c25ba208dd5d685f8 100644 (file)
@@ -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>
                                                                <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>
                                                                                        </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"/>
                                                                                                <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>
                                                                                                        <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>
                                                                                                        <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>
                                                                                                        <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>
                                                                                                        <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>
                                                                                <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>
                                                                                                                                                                <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>
                                                                                                                                                        <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>
                                                                                                                                <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>
                                                                        <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">
                                        </object>
                                        <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>
                                        </object>
                                        <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>
                                        </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">
                                                        <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>
                                                        <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"/>
                                                </object>
                                                <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>
                                                <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"/>
                                                <reference key="object" ref="460286942"/>
                                                <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"/>
                                                <reference key="object" ref="139205907"/>
                                                <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"/>
                                                <reference key="object" ref="1013303839"/>
                                                <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="object" ref="122262864"/>
                                                <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"/>
                                                <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">
                                        <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>
                                        <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>
                                        <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>
                                        <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>
                                        <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>
                                        <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"/>
                                        <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"/>
                                        <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"/>
                                        <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"/>
                                        <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"/>
                                        <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"/>
                                </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">
                                                        <string>showPreviewWindow:</string>
                                                        <string>showQueueWindow:</string>
                                                        <string>showSourceTitleScanPanel:</string>
-                                                       <string>subtitleSelectionChanged:</string>
                                                        <string>titlePopUpChanged:</string>
                                                        <string>twoPassCheckboxChanged:</string>
                                                        <string>videoEncoderPopUpChanged:</string>
                                                        <string>id</string>
                                                        <string>id</string>
                                                        <string>id</string>
-                                                       <string>id</string>
                                                </object>
                                        </object>
                                        <object class="NSMutableDictionary" key="outlets">
                                                        <string>fSubField</string>
                                                        <string>fSubForcedCheck</string>
                                                        <string>fSubPopUp</string>
+                                                       <string>fSubtitlesTable</string>
                                                        <string>fVidBitrateCell</string>
                                                        <string>fVidBitrateField</string>
                                                        <string>fVidConstantCell</string>
                                                        <string>NSTextField</string>
                                                        <string>NSButton</string>
                                                        <string>NSPopUpButton</string>
+                                                       <string>NSTableView</string>
                                                        <string>NSButtonCell</string>
                                                        <string>NSTextField</string>
                                                        <string>NSButtonCell</string>
index 39fb40ce0c5113a2f3b177be456d126b49c13fee..a3e61ce299ac3fd60313878adad5cfa08fd91755 100644 (file)
@@ -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 (file)
index 0000000..990492d
--- /dev/null
@@ -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 (file)
index 0000000..c125779
--- /dev/null
@@ -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
index ac8c33b5f2c461a8207bf010eb6180f45282e7d2..4b9b02175609b19ec944d32e9a78e8cbb1f038b6 100644 (file)
@@ -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 */; };
                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>"; };
                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 */,
                                A22C85EC0D05D35000C10E36 /* HBPresets.h in Headers */,
                                A2BEA5FB0F2A1ED1001CE7A1 /* PictureController.h in Headers */,
                                278070240F5C261300699207 /* ChapterTitles.h in Headers */,
+                               A2D18AA70FD81C50003C997B /* HBSubtitles.h in Headers */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
                                E37172670C977D340072B384 /* HBImageAndTextCell.m in Sources */,
                                A22C85ED0D05D35100C10E36 /* HBPresets.m in Sources */,
                                A2BEA5FC0F2A1ED1001CE7A1 /* PictureController.mm in Sources */,
+                               A2D18AA80FD81C50003C997B /* HBSubtitles.m in Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };