]> granicus.if.org Git - handbrake/commitdiff
MacGui: enabled type select in the languages table view.
authorritsuka <damiog@gmail.com>
Sun, 3 Aug 2014 11:00:34 +0000 (11:00 +0000)
committerritsuka <damiog@gmail.com>
Sun, 3 Aug 2014 11:00:34 +0000 (11:00 +0000)
Improved the subtitles defaults selection to avoid adding the same track twice.

git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6261 b64f7644-9d1e-0410-96f1-a4d463321fa5

macosx/English.lproj/SubtitlesDefaults.xib
macosx/HBLanguagesSelection.h
macosx/HBLanguagesSelection.m
macosx/HBSubtitlesController.m
macosx/HBSubtitlesDefaultsController.m

index 11c5288097fbe634822c9313ea0f51977935615d..e124d820323c7c54d000c5a0b385babea321db04 100644 (file)
                             <rect key="frame" x="1" y="1" width="244" height="133"/>
                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             <subviews>
-                                <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" autosaveColumns="NO" typeSelect="NO" rowHeight="14" id="Of7-71-Ci6">
+                                <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" columnReordering="NO" columnResizing="NO" autosaveColumns="NO" rowHeight="14" id="Of7-71-Ci6">
                                     <rect key="frame" x="0.0" y="0.0" width="244" height="133"/>
                                     <autoresizingMask key="autoresizingMask"/>
                                     <size key="intercellSpacing" width="3" height="2"/>
                                     <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                                     <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
                                     <tableColumns>
-                                        <tableColumn width="20" minWidth="20" maxWidth="20" id="G44-XP-6xE">
+                                        <tableColumn identifier="checkBox" width="20" minWidth="20" maxWidth="20" id="G44-XP-6xE">
                                             <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
                                                 <font key="font" metaFont="smallSystem"/>
                                                 <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
                                                 <binding destination="ZBe-aP-wvq" name="value" keyPath="arrangedObjects.isSelected" id="fRp-oC-H6C"/>
                                             </connections>
                                         </tableColumn>
-                                        <tableColumn width="210" minWidth="10" maxWidth="2000" id="IJ6-jx-Nba">
+                                        <tableColumn identifier="name" width="210" minWidth="10" maxWidth="2000" id="IJ6-jx-Nba">
                                             <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
                                                 <font key="font" metaFont="smallSystem"/>
                                                 <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
index cb017555b7e2cd28b7645c3a78de2b4aabca561e..bd95a003bf2a5a7266d0210fd5510a9984f1c77e 100644 (file)
@@ -40,7 +40,7 @@
 /**
  *  HBLanguageArrayController
  */
-@interface HBLanguageArrayController : NSArrayController
+@interface HBLanguageArrayController : NSArrayController <NSTableViewDelegate>
 
 /**
  *  Set whether to show only the selected languages or all languages
index c57df8bbeb156ec5abd28714e7ffb6dee81ba456..9dac0883d808ffc1434c8a50f5937d5dfff47461 100644 (file)
@@ -138,6 +138,20 @@ NSString *kHBLanguagesDragRowsType = @"kHBLanguagesDragRowsType";
        self.isDragginEnabled = YES;
 }
 
+#pragma mark - NSTableView Delegate
+
+- (NSString *)tableView:(NSTableView *)tableView typeSelectStringForTableColumn:(NSTableColumn *)tableColumn
+                    row:(NSInteger)row
+{
+    if ([[tableColumn identifier] isEqualToString:@"name"])
+    {
+        NSUInteger tableColumnIndex = [[tableView tableColumns] indexOfObject:tableColumn];
+        return [[tableView preparedCellAtColumn:tableColumnIndex
+                                            row:row] stringValue];
+    }
+    return nil;
+}
+
 - (BOOL)tableView:(NSTableView *)tableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard
 {
     if (self.isDragginEnabled)
index a01812606fa860d94cc1d2ae4fa14a0401eef709..f9706973e6c941b85a5656bbaab5192680eab43a 100644 (file)
@@ -277,6 +277,10 @@ NSString *keySubTrackLanguageIndex = @"keySubTrackLanguageIndex";
  */
 - (IBAction)addTracksFromDefaults:(id)sender
 {
+    // Keeps a set of the indexes of the added track
+    // so we don't add the same track twice.
+    NSMutableIndexSet *tracksAdded = [NSMutableIndexSet indexSet];
+
     [self.subtitleArray removeAllObjects];
 
     // Add the foreign audio search pass
@@ -285,35 +289,28 @@ NSString *keySubTrackLanguageIndex = @"keySubTrackLanguageIndex";
         [self addTrack:[self trackFromSourceTrackIndex:-1]];
     }
 
-    // If the languages list contains the "(Any)" language, remove all the others
-    NSArray *languages = nil;
-    if ([self.settings.trackSelectionLanguages containsObject:@"und"])
-    {
-        languages = @[@"und"];
-    }
-    else
-    {
-        languages = self.settings.trackSelectionLanguages;
-    }
-
     // Add the tracks for the selected languages
     if (self.settings.trackSelectionBehavior != HBSubtitleTrackSelectionBehaviorNone)
     {
-        for (NSString *lang in languages)
+        for (NSString *lang in self.settings.trackSelectionLanguages)
         {
-            NSInteger sourceIndex = 0;
             for (NSDictionary *track in self.subtitleSourceArray)
             {
                 if ([lang isEqualToString:@"und"] || [track[keySubTrackLanguageIsoCode] isEqualToString:lang])
                 {
-                    [self addTrack:[self trackFromSourceTrackIndex:sourceIndex]];
+                    NSInteger sourceIndex = [track[keySubTrackIndex] intValue];
+
+                    if (![tracksAdded containsIndex:sourceIndex])
+                    {
+                        [self addTrack:[self trackFromSourceTrackIndex:sourceIndex]];
+                    }
+                    [tracksAdded addIndex:sourceIndex];
 
                     if (self.settings.trackSelectionBehavior == HBSubtitleTrackSelectionBehaviorFirst)
                     {
                         break;
                     }
                 }
-                sourceIndex++;
             }
         }
     }
@@ -321,19 +318,27 @@ NSString *keySubTrackLanguageIndex = @"keySubTrackLanguageIndex";
     // Add the closed captions track if there is one.
     if (self.settings.addCC)
     {
-        NSInteger sourceIndex = 0;
         for (NSDictionary *track in self.subtitleSourceArray)
         {
             if ([track[keySubTrackType] intValue] == CC608SUB)
             {
-                [self addTrack:[self trackFromSourceTrackIndex:sourceIndex]];
-                break;
+                NSInteger sourceIndex = [track[keySubTrackIndex] intValue];
+                if (![tracksAdded containsIndex:sourceIndex])
+                {
+                    [self addTrack:[self trackFromSourceTrackIndex:sourceIndex]];
+                }
+
+                if (self.settings.trackSelectionBehavior == HBSubtitleTrackSelectionBehaviorFirst)
+                {
+                    break;
+                }
             }
-            sourceIndex++;
         }
     }
 
+    // Add an empty track
     [self.subtitleArray addObject:[self createSubtitleTrack]];
+
     [self validatePassthru];
     [self.fTableView reloadData];
 }
index ead542080b7613753d116e5502b0442147cc6f32..e19c18aa2561ffe6478e92f76d752b3103230faf 100644 (file)
@@ -45,7 +45,8 @@ static void *HBSubtitlesDefaultsContex = &HBSubtitlesDefaultsContex;
 
 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
 {
-    if (context == HBSubtitlesDefaultsContex) {
+    if (context == HBSubtitlesDefaultsContex)
+    {
         if ([keyPath isEqualToString:@"tableController.showSelectedOnly"])
         {
             [self.showAllButton setState:!self.tableController.showSelectedOnly];