summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
Diffstat (limited to 'macosx')
-rw-r--r--macosx/English.lproj/ChaptersTitles.xib129
-rw-r--r--macosx/HBChapter.h20
-rw-r--r--macosx/HBChapter.m82
-rw-r--r--macosx/HBChapterTitlesController.m18
-rw-r--r--macosx/HBJob+HBJobConversion.m6
-rw-r--r--macosx/HBJob.h2
-rw-r--r--macosx/HBJob.m6
-rw-r--r--macosx/HBTitle.m12
-rw-r--r--macosx/HandBrake.xcodeproj/project.pbxproj6
9 files changed, 204 insertions, 77 deletions
diff --git a/macosx/English.lproj/ChaptersTitles.xib b/macosx/English.lproj/ChaptersTitles.xib
index 330021be8..beb0f4fc1 100644
--- a/macosx/English.lproj/ChaptersTitles.xib
+++ b/macosx/English.lproj/ChaptersTitles.xib
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="8164.2" systemVersion="15A225f" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="9052" systemVersion="15B30a" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
<dependencies>
<deployment identifier="macosx"/>
<development version="6300" identifier="xcode"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="8164.2"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="9052"/>
</dependencies>
<objects>
<customObject id="-2" userLabel="File's Owner" customClass="HBChapterTitlesController">
@@ -19,6 +19,57 @@
<rect key="frame" x="0.0" y="0.0" width="926" height="322"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
+ <button toolTip="Add chapter markers to output file." id="7Xf-c0-jsr">
+ <rect key="frame" x="17" y="294" width="165" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <buttonCell key="cell" type="check" title="Create chapter markers" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="lJL-wX-DVP">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <connections>
+ <binding destination="-2" name="enabled" keyPath="self.job" id="JMA-67-MXH">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.job.chaptersEnabled" id="7wG-le-s1k"/>
+ </connections>
+ </button>
+ <button toolTip="Import a list of chapter names from a file." verticalHuggingPriority="750" id="Ron-3B-rYg">
+ <rect key="frame" x="656" y="288" width="129" height="28"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <buttonCell key="cell" type="push" title="Import Chapters…" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="PM3-Ue-0kW">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <connections>
+ <action selector="browseForChapterFile:" target="-2" id="yMS-zB-Pa6"/>
+ <binding destination="-2" name="enabled" keyPath="self.job" id="Rla-9q-ULw">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </button>
+ <button toolTip="Export the list of chapter names to a file." verticalHuggingPriority="750" id="3SP-6e-RPS">
+ <rect key="frame" x="783" y="288" width="128" height="28"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
+ <animations/>
+ <buttonCell key="cell" type="push" title="Export Chapters…" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="h0O-zg-OF9">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <connections>
+ <action selector="browseForChapterFileSave:" target="-2" id="kKu-5B-QsT"/>
+ <binding destination="-2" name="enabled" keyPath="self.job" id="TZV-TC-ydR">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </button>
<scrollView horizontalLineScroll="19" horizontalPageScroll="0.0" verticalLineScroll="19" verticalPageScroll="0.0" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" id="lqY-aE-MZi">
<rect key="frame" x="20" y="20" width="886" height="266"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -34,7 +85,7 @@
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
<color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
<tableColumns>
- <tableColumn identifier="1" editable="NO" width="91" minWidth="40" maxWidth="1000" id="0iF-eL-NOC">
+ <tableColumn identifier="index" editable="NO" width="76" minWidth="40" maxWidth="1000" id="0iF-eL-NOC">
<tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Chapter">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
@@ -47,8 +98,21 @@
</textFieldCell>
<tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
</tableColumn>
- <tableColumn identifier="2" width="787" minWidth="77.217290000000006" maxWidth="1000" id="Z6H-lJ-ipr">
- <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Chapter Title">
+ <tableColumn identifier="duration" editable="NO" width="84" minWidth="10" maxWidth="3.4028234663852886e+38" id="QVB-Cw-DJD" userLabel="Timestamp">
+ <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Duration">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
+ </tableHeaderCell>
+ <textFieldCell key="dataCell" controlSize="small" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="pAo-XM-bvP">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
+ </tableColumn>
+ <tableColumn identifier="title" width="715" minWidth="77.217290000000006" maxWidth="1000" id="Z6H-lJ-ipr">
+ <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left" title="Title">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" white="0.33333299" alpha="1" colorSpace="calibratedWhite"/>
@@ -76,12 +140,12 @@
<color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
</clipView>
<animations/>
- <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="O2b-uL-5ea">
+ <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="O2b-uL-5ea">
<rect key="frame" x="-100" y="-100" width="488" height="15"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
</scroller>
- <scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="yp0-pp-Yw7">
+ <scroller key="verticalScroller" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="yp0-pp-Yw7">
<rect key="frame" x="869" y="17" width="16" height="248"/>
<autoresizingMask key="autoresizingMask"/>
<animations/>
@@ -92,57 +156,6 @@
<animations/>
</tableHeaderView>
</scrollView>
- <button toolTip="Add chapter markers to output file." id="7Xf-c0-jsr">
- <rect key="frame" x="17" y="294" width="165" height="18"/>
- <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
- <animations/>
- <buttonCell key="cell" type="check" title="Create chapter markers" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="lJL-wX-DVP">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <connections>
- <binding destination="-2" name="enabled" keyPath="self.job" id="JMA-67-MXH">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.job.chaptersEnabled" id="7wG-le-s1k"/>
- </connections>
- </button>
- <button toolTip="Import a list of chapter names from a file." verticalHuggingPriority="750" id="Ron-3B-rYg">
- <rect key="frame" x="656" y="288" width="129" height="28"/>
- <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
- <animations/>
- <buttonCell key="cell" type="push" title="Import Chapters…" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="PM3-Ue-0kW">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <connections>
- <action selector="browseForChapterFile:" target="-2" id="yMS-zB-Pa6"/>
- <binding destination="-2" name="enabled" keyPath="self.job" id="Rla-9q-ULw">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- </connections>
- </button>
- <button toolTip="Export the list of chapter names to a file." verticalHuggingPriority="750" id="3SP-6e-RPS">
- <rect key="frame" x="783" y="288" width="128" height="28"/>
- <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
- <animations/>
- <buttonCell key="cell" type="push" title="Export Chapters…" bezelStyle="rounded" alignment="center" controlSize="small" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="h0O-zg-OF9">
- <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <connections>
- <action selector="browseForChapterFileSave:" target="-2" id="kKu-5B-QsT"/>
- <binding destination="-2" name="enabled" keyPath="self.job" id="TZV-TC-ydR">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- </connections>
- </button>
</subviews>
<animations/>
<point key="canvasLocation" x="131" y="343"/>
diff --git a/macosx/HBChapter.h b/macosx/HBChapter.h
new file mode 100644
index 000000000..c72243026
--- /dev/null
+++ b/macosx/HBChapter.h
@@ -0,0 +1,20 @@
+/* HBChapter.h
+
+ 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 <Foundation/Foundation.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface HBChapter : NSObject <NSSecureCoding, NSCopying>
+
+- (instancetype)initWithTitle:(NSString *)title duration:(uint64_t)duration NS_DESIGNATED_INITIALIZER;
+
+@property (nonatomic, readwrite) NSString *title;
+@property (nonatomic, readonly) NSString *duration;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/macosx/HBChapter.m b/macosx/HBChapter.m
new file mode 100644
index 000000000..46d0a7602
--- /dev/null
+++ b/macosx/HBChapter.m
@@ -0,0 +1,82 @@
+/* HBChapter.m
+
+ 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 "HBChapter.h"
+#import "HBCodingUtilities.h"
+
+@implementation HBChapter
+
+- (instancetype)init
+{
+ self = [self initWithTitle:@"No Value" duration:0];
+ return self;
+}
+
+- (instancetype)initWithTitle:(NSString *)title duration:(uint64_t)duration
+{
+ NSParameterAssert(title);
+
+ self = [super init];
+ if (self)
+ {
+ uint64_t hours = duration / 90000 / 3600;
+ uint64_t minutes = ((duration / 90000 ) % 3600) / 60;
+ uint64_t seconds = (duration / 90000 ) % 60;
+
+ _duration = [NSString stringWithFormat:@"%02llu:%02llu:%02llu", hours, minutes, seconds];
+ _title = [title copy];
+
+ }
+ return self;
+}
+
+#pragma mark - NSCopying
+
+- (instancetype)copyWithZone:(NSZone *)zone
+{
+ HBChapter *copy = [[[self class] alloc] init];
+
+ if (copy)
+ {
+ copy->_title = [_title copy];
+ copy->_duration = [_duration copy];
+ }
+
+ return copy;
+}
+
+
+#pragma mark - NSCoding
+
++ (BOOL)supportsSecureCoding
+{
+ return YES;
+}
+
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+ [coder encodeInt:1 forKey:@"HBChapterVersion"];
+
+ encodeObject(_title);
+ encodeObject(_duration);
+}
+
+- (instancetype)initWithCoder:(NSCoder *)decoder
+{
+ int version = [decoder decodeIntForKey:@"HBChapterVersion"];
+
+ if (version == 1 && (self = [self init]))
+ {
+ decodeObject(_title, NSString);
+ decodeObject(_duration, NSString);
+
+ return self;
+ }
+
+ return nil;
+}
+
+@end
diff --git a/macosx/HBChapterTitlesController.m b/macosx/HBChapterTitlesController.m
index 633e3fad6..6c05f2b16 100644
--- a/macosx/HBChapterTitlesController.m
+++ b/macosx/HBChapterTitlesController.m
@@ -5,6 +5,7 @@
It may be used under the terms of the GNU General Public License. */
#import "HBChapterTitlesController.h"
+#import "HBChapter.h"
#import "HBJob.h"
@interface HBChapterTitlesController () <NSTableViewDataSource, NSTableViewDelegate>
@@ -13,7 +14,7 @@
IBOutlet NSTableColumn * fChapterTableNameColumn;
}
-@property (nonatomic, readwrite, strong) NSMutableArray *chapterTitles;
+@property (nonatomic, readwrite, strong) NSArray *chapterTitles;
@end
@@ -46,10 +47,9 @@
forTableColumn:(NSTableColumn *)aTableColumn
row:(NSInteger)rowIndex
{
- if (aTableColumn != nil && [[aTableColumn identifier] intValue] == 2)
+ if ([aTableColumn.identifier isEqualToString:@"title"])
{
- (self.chapterTitles)[rowIndex] = [NSString
- stringWithString:anObject];
+ [(HBChapter *)self.chapterTitles[rowIndex] setTitle:anObject];
}
}
@@ -57,13 +57,17 @@
objectValueForTableColumn:(NSTableColumn *)aTableColumn
row:(NSInteger)rowIndex
{
- if ([[aTableColumn identifier] intValue] == 1)
+ if ([aTableColumn.identifier isEqualToString:@"index"])
{
return [NSString stringWithFormat:@"%ld", rowIndex + 1];
}
- else
+ else if ([aTableColumn.identifier isEqualToString:@"duration"])
{
- return [NSString stringWithString:(self.chapterTitles)[rowIndex]];
+ return [(HBChapter *)self.chapterTitles[rowIndex] duration];
+ }
+ else if ([aTableColumn.identifier isEqualToString:@"title"])
+ {
+ return [(HBChapter *)self.chapterTitles[rowIndex] title];
}
return @"__DATA ERROR__";
}
diff --git a/macosx/HBJob+HBJobConversion.m b/macosx/HBJob+HBJobConversion.m
index 1b9f39fd0..08514d55d 100644
--- a/macosx/HBJob+HBJobConversion.m
+++ b/macosx/HBJob+HBJobConversion.m
@@ -9,6 +9,8 @@
#import "HBAudioDefaults.h"
#import "HBAudioTrack.h"
+#import "HBChapter.h"
+
#import "HBTitlePrivate.h"
@implementation HBJob (HBJobConversion)
@@ -84,12 +86,12 @@
// Also, note that if for some reason we don't apply chapter names, the
// chapters just come out 001, 002, etc. etc.
int i = 0;
- for (NSString *name in self.chapterTitles)
+ for (HBChapter *jobChapter in self.chapterTitles)
{
hb_chapter_t *chapter = (hb_chapter_t *) hb_list_item(job->list_chapter, i);
if (chapter != NULL)
{
- hb_chapter_set_title(chapter, name.UTF8String);
+ hb_chapter_set_title(chapter, jobChapter.title.UTF8String);
}
i++;
}
diff --git a/macosx/HBJob.h b/macosx/HBJob.h
index 73779ecee..3dda3f27e 100644
--- a/macosx/HBJob.h
+++ b/macosx/HBJob.h
@@ -74,7 +74,7 @@ typedef NS_ENUM(NSUInteger, HBJobState){
@property (nonatomic, readonly) HBSubtitles *subtitles;
@property (nonatomic, readwrite) BOOL chaptersEnabled;
-@property (nonatomic, readonly) NSMutableArray *chapterTitles;
+@property (nonatomic, readonly) NSArray *chapterTitles;
@end
diff --git a/macosx/HBJob.m b/macosx/HBJob.m
index ff7a7b5ad..69c649fd1 100644
--- a/macosx/HBJob.m
+++ b/macosx/HBJob.m
@@ -50,7 +50,7 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
_audio = [[HBAudio alloc] initWithTitle:title];
_subtitles = [[HBSubtitles alloc] initWithTitle:title];
- _chapterTitles = [title.chapters mutableCopy];
+ _chapterTitles = [title.chapters copy];
_uuid = [[NSUUID UUID] UUIDString];
@@ -170,7 +170,7 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
copy->_subtitles = [_subtitles copy];
copy->_chaptersEnabled = _chaptersEnabled;
- copy->_chapterTitles = [[NSMutableArray alloc] initWithArray:_chapterTitles copyItems:YES];
+ copy->_chapterTitles = [[NSArray alloc] initWithArray:_chapterTitles copyItems:YES];
}
return copy;
@@ -244,7 +244,7 @@ NSString *HBChaptersChangedNotification = @"HBChaptersChangedNotification";
decodeObject(_subtitles, HBSubtitles);
decodeBool(_chaptersEnabled);
- decodeObject(_chapterTitles, NSMutableArray);
+ decodeObject(_chapterTitles, NSArray);
return self;
}
diff --git a/macosx/HBTitle.m b/macosx/HBTitle.m
index 47b4a98ae..4fca7c072 100644
--- a/macosx/HBTitle.m
+++ b/macosx/HBTitle.m
@@ -6,6 +6,7 @@
#import "HBTitle.h"
#import "HBTitlePrivate.h"
+#import "HBChapter.h"
#include "lang.h"
@@ -253,18 +254,17 @@ extern NSString *keySubTrackSrtCharCode;
if (chapter != NULL)
{
+ NSString *title;
if (chapter->title != NULL)
{
- [chapters addObject:[NSString
- stringWithFormat:@"%s",
- chapter->title]];
+ title = [NSString stringWithFormat:@"%s", chapter->title];
}
else
{
- [chapters addObject:[NSString
- stringWithFormat:@"Chapter %d",
- i + 1]];
+ title = [NSString stringWithFormat:@"Chapter %d", i + 1];
}
+
+ [chapters addObject:[[HBChapter alloc] initWithTitle:title duration:chapter->duration]];
}
}
diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj
index e4780d22b..d69580cc5 100644
--- a/macosx/HandBrake.xcodeproj/project.pbxproj
+++ b/macosx/HandBrake.xcodeproj/project.pbxproj
@@ -160,6 +160,7 @@
A9706CBA1AC1452800BAEAA8 /* ExceptionAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9706CB81AC1452800BAEAA8 /* ExceptionAlert.xib */; };
A971281F1A2C75180088C076 /* HBTitle.m in Sources */ = {isa = PBXBuildFile; fileRef = A971281E1A2C75180088C076 /* HBTitle.m */; };
A975C08E1AE8C5270061870D /* HBStateFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = A975C08D1AE8C5270061870D /* HBStateFormatter.m */; };
+ A988AF9D1BC7C35F00932543 /* HBChapter.m in Sources */ = {isa = PBXBuildFile; fileRef = A988AF9C1BC7C35F00932543 /* HBChapter.m */; };
A98C29C41977B10600AF5DED /* HBLanguagesSelection.m in Sources */ = {isa = PBXBuildFile; fileRef = A98C29C31977B10600AF5DED /* HBLanguagesSelection.m */; };
A98FD5931B19C63800FCC7A5 /* HBMockTitle.m in Sources */ = {isa = PBXBuildFile; fileRef = A98FD5921B19C63800FCC7A5 /* HBMockTitle.m */; };
A9906B2C1A710920001D82D5 /* HBQueueController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9906B2B1A710920001D82D5 /* HBQueueController.m */; };
@@ -457,6 +458,8 @@
A971281E1A2C75180088C076 /* HBTitle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBTitle.m; sourceTree = "<group>"; };
A975C08C1AE8C5270061870D /* HBStateFormatter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBStateFormatter.h; sourceTree = "<group>"; };
A975C08D1AE8C5270061870D /* HBStateFormatter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBStateFormatter.m; sourceTree = "<group>"; };
+ A988AF9B1BC7C35F00932543 /* HBChapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBChapter.h; sourceTree = "<group>"; };
+ A988AF9C1BC7C35F00932543 /* HBChapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBChapter.m; sourceTree = "<group>"; };
A98C29C21977B10600AF5DED /* HBLanguagesSelection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBLanguagesSelection.h; sourceTree = "<group>"; };
A98C29C31977B10600AF5DED /* HBLanguagesSelection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBLanguagesSelection.m; sourceTree = "<group>"; };
A98FD5911B19C63800FCC7A5 /* HBMockTitle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBMockTitle.h; sourceTree = "<group>"; };
@@ -1035,6 +1038,8 @@
A9DEC8791A23C89E00C79B48 /* HBPicture.m */,
A9523935199A6AAE00588AEF /* HBFilters.h */,
A9523936199A6AAE00588AEF /* HBFilters.m */,
+ A988AF9B1BC7C35F00932543 /* HBChapter.h */,
+ A988AF9C1BC7C35F00932543 /* HBChapter.m */,
A996B0F81A62C51C00B64179 /* Audio */,
A91017B51A64441700039BFB /* Subtitles */,
A9537BED1A48A7F900141102 /* UI Bindings Additions */,
@@ -1418,6 +1423,7 @@
A9E66D701A67A2A8007B641D /* HBDistributedArray.m in Sources */,
A99422E01B1887B000DDB077 /* NSJSONSerialization+HBAdditions.m in Sources */,
A9DC6C52196F04F6002AE6B4 /* HBSubtitlesController.m in Sources */,
+ A988AF9D1BC7C35F00932543 /* HBChapter.m in Sources */,
A9F472891976B7F30009EC65 /* HBSubtitlesDefaultsController.m in Sources */,
A91AFD0C1A948827009BECED /* HBOutputFileWriter.m in Sources */,
A9906B2C1A710920001D82D5 /* HBQueueController.m in Sources */,