OSDN Git Service

MacGui: Chapter Title import/export functionality
authordynaflash <dynaflash@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 6 May 2010 18:30:32 +0000 (18:30 +0000)
committerdynaflash <dynaflash@b64f7644-9d1e-0410-96f1-a4d463321fa5>
Thu, 6 May 2010 18:30:32 +0000 (18:30 +0000)
- Saves the chapter list to a .csv file which is compatible with the cli and wingui.
- Note: comma's in the chapter name are escaped with a "\" to maintain cli compatibility then if necessary stripped upon re import into macgui.
- Original patch by borgclone and added to by realityking. Thanks!
- Feature development referenced here http://forum.handbrake.fr/viewtopic.php?f=4&t=4146&start=0

git-svn-id: svn://localhost/HandBrake/trunk@3285 b64f7644-9d1e-0410-96f1-a4d463321fa5

macosx/Controller.h
macosx/Controller.m
macosx/English.lproj/MainMenu.xib

index d452416..72b1c6d 100644 (file)
@@ -210,6 +210,9 @@ BOOL                        fIsDragging;
     /* Chapters box */
     IBOutlet NSButton            * fCreateChapterMarkers;
     IBOutlet NSTableView         * fChapterTable;
+       IBOutlet NSButton            * fLoadChaptersButton;
+       IBOutlet NSButton            * fSaveChaptersButton;
+       IBOutlet NSTableColumn       * fChapterTableNameColumn;
        ChapterTitles                * fChapterTitlesDelegate;
        
     /* Bottom */
@@ -436,7 +439,7 @@ BOOL                        fIsDragging;
 - (IBAction)getDefaultPresets:(id)sender;
 
 -(void)sendToMetaX:(NSString *) filePath;
-    // Growl methods
+// Growl methods
 - (NSDictionary *) registrationDictionaryForGrowl;
 -(void)showGrowlDoneNotification:(NSString *) filePath;
 - (IBAction)showDebugOutputPanel:(id)sender;
@@ -449,8 +452,14 @@ BOOL                        fIsDragging;
 
 - (int) hbInstances;
 
+// Chapter files methods
+- (IBAction) browseForChapterFile: (id) sender;
+- (void)     browseForChapterFileDone: (NSOpenPanel *) sheet
+                 returnCode: (int) returnCode contextInfo: (void *) contextInfo;
 
-
+- (IBAction) browseForChapterFileSave: (id) sender;
+- (void)     browseForChapterFileSaveDone: (NSSavePanel *) sheet
+                 returnCode: (int) returnCode contextInfo: (void *) contextInfo;
 
 @end
 
index 9d6cd0d..9d76e01 100644 (file)
@@ -514,7 +514,7 @@ static NSString *        ChooseSourceIdentifier             = @"Choose Source It
         fQueueStatus,fPresetsAdd,fPresetsDelete,fSrcAngleLabel,fSrcAnglePopUp,
                fCreateChapterMarkers,fVidTurboPassCheck,fDstMp4LargeFileCheck,fSubForcedCheck,fPresetsOutlineView,
         fAudDrcLabel,fDstMp4HttpOptFileCheck,fDstMp4iPodFileCheck,fVidQualityRFField,fVidQualityRFLabel,
-        fEncodeStartStopPopUp,fSrcTimeStartEncodingField,fSrcTimeEndEncodingField,fSrcFrameStartEncodingField,fSrcFrameEndEncodingField};
+        fEncodeStartStopPopUp,fSrcTimeStartEncodingField,fSrcTimeEndEncodingField,fSrcFrameStartEncodingField,fSrcFrameEndEncodingField, fLoadChaptersButton, fSaveChaptersButton};
     
     for( unsigned i = 0;
         i < sizeof( controls ) / sizeof( NSControl * ); i++ )
@@ -7995,6 +7995,154 @@ return YES;
     
 }
 
+#pragma mark -
+#pragma mark Chapter Files Import / Export
+
+- (IBAction) browseForChapterFile: (id) sender
+{
+       /* Open a panel to let the user choose the file */
+       NSOpenPanel * panel = [NSOpenPanel openPanel];
+       /* We get the current file name and path from the destination field here */
+       [panel beginSheetForDirectory: [NSString stringWithFormat:@"%@/",
+                                    [[NSUserDefaults standardUserDefaults] stringForKey:@"LastDestinationDirectory"]]
+                             file: NULL
+                            types: [NSArray arrayWithObjects:@"csv",nil]
+                   modalForWindow: fWindow modalDelegate: self
+                   didEndSelector: @selector( browseForChapterFileDone:returnCode:contextInfo: )
+                      contextInfo: NULL];
+}
+
+- (void) browseForChapterFileDone: (NSOpenPanel *) sheet
+    returnCode: (int) returnCode contextInfo: (void *) contextInfo
+{
+    NSArray *chaptersArray; /* temp array for chapters */
+       NSMutableArray *chaptersMutableArray; /* temp array for chapters */
+    NSString *chapterName;     /* temp string from file */
+    int chapters, i;
+    
+    if( returnCode == NSOKButton )  /* if they click OK */
+    {  
+        chapterName = [[NSString alloc] initWithContentsOfFile:[sheet filename] encoding:NSUTF8StringEncoding error:NULL];
+        chaptersArray = [chapterName componentsSeparatedByString:@"\n"];
+        chaptersMutableArray= [chaptersArray mutableCopy];
+               chapters = [fChapterTitlesDelegate numberOfRowsInTableView:fChapterTable];
+        if ([chaptersMutableArray count] > 0)
+        { 
+        /* if last item is empty remove it */
+            if ([[chaptersMutableArray objectAtIndex:[chaptersArray count]-1] length] == 0)
+            {
+                [chaptersMutableArray removeLastObject];
+            }
+        }
+        /* if chapters in table is not equal to array count */
+        if ((unsigned int) chapters != [chaptersMutableArray count])
+        {
+            [sheet close];
+            [[NSAlert alertWithMessageText:NSLocalizedString(@"Unable to load chapter file", @"Unable to load chapter file")
+                             defaultButton:NSLocalizedString(@"OK", @"OK")
+                           alternateButton:NULL 
+                               otherButton:NULL
+                 informativeTextWithFormat:NSLocalizedString(@"%d chapters expected, %d chapters found in %@", @"%d chapters expected, %d chapters found in %@"), 
+              chapters, [chaptersMutableArray count], [[sheet filename] lastPathComponent]] runModal];
+            return;
+        }
+               /* otherwise, go ahead and populate table with array */
+               for (i=0; i<chapters; i++)
+        {
+         
+            if([[chaptersMutableArray objectAtIndex:i] length] > 5)
+            { 
+                /* avoid a segfault */
+                /* Get the Range.location of the first comma in the line and then put everything after that into chapterTitle */
+                NSRange firstCommaRange = [[chaptersMutableArray objectAtIndex:i] rangeOfString:@","];
+                NSString *chapterTitle = [[chaptersMutableArray objectAtIndex:i] substringFromIndex:firstCommaRange.location + 1];
+                /* Since we store our chapterTitle commas as "\," for the cli, we now need to remove the escaping "\" from the title */
+                chapterTitle = [chapterTitle stringByReplacingOccurrencesOfString:@"\\," withString:@","];
+                [fChapterTitlesDelegate tableView:fChapterTable 
+                                   setObjectValue:chapterTitle
+                                   forTableColumn:fChapterTableNameColumn
+                                              row:i];
+            }
+            else 
+            {
+                [sheet close];
+                [[NSAlert alertWithMessageText:NSLocalizedString(@"Unable to load chapter file", @"Unable to load chapter file")
+                                 defaultButton:NSLocalizedString(@"OK", @"OK")
+                               alternateButton:NULL 
+                                   otherButton:NULL
+                     informativeTextWithFormat:NSLocalizedString(@"%@ was not formatted as expected.", @"%@ was not formatted as expected."), [[sheet filename] lastPathComponent]] runModal];   
+                [fChapterTable reloadData];
+                return;
+            }
+        }
+        [fChapterTable reloadData];
+    }
+}
+
+- (IBAction) browseForChapterFileSave: (id) sender
+{
+    NSSavePanel *panel = [NSSavePanel savePanel];
+    /* Open a panel to let the user save to a file */
+    [panel setAllowedFileTypes:[NSArray arrayWithObjects:@"csv",nil]];
+    [panel beginSheetForDirectory: [[fDstFile2Field stringValue] stringByDeletingLastPathComponent] 
+                             file: [[[[fDstFile2Field stringValue] lastPathComponent] stringByDeletingPathExtension] 
+                                     stringByAppendingString:@"-chapters.csv"]
+                   modalForWindow: fWindow 
+                    modalDelegate: self
+                   didEndSelector: @selector( browseForChapterFileSaveDone:returnCode:contextInfo: )
+                      contextInfo: NULL];
+}
+
+- (void) browseForChapterFileSaveDone: (NSSavePanel *) sheet
+    returnCode: (int) returnCode contextInfo: (void *) contextInfo
+{
+    NSString *chapterName;      /* pointer for string for later file-writing */
+    NSString *chapterTitle;
+    NSError *saveError = [[NSError alloc] init];
+    int chapters, i;    /* ints for the number of chapters in the table and the loop */
+    
+    if( returnCode == NSOKButton )   /* if they clicked OK */
+    {  
+        chapters = [fChapterTitlesDelegate numberOfRowsInTableView:fChapterTable];
+        chapterName = [NSString string];
+        for (i=0; i<chapters; i++)
+        {
+            /* put each chapter title from the table into the array */
+            if (i<9)
+            { /* if i is from 0 to 8 (chapters 1 to 9) add two leading zeros */
+                chapterName = [chapterName stringByAppendingFormat:@"00%d,",i+1];
+            }
+            else if (i<99)
+            { /* if i is from 9 to 98 (chapters 10 to 99) add one leading zero */
+                chapterName = [chapterName stringByAppendingFormat:@"0%d,",i+1];
+            }
+            else if (i<999)
+            { /* in case i is from 99 to 998 (chapters 100 to 999) no leading zeros */
+                chapterName = [chapterName stringByAppendingFormat:@"%d,",i+1];
+            }
+            
+            chapterTitle = [fChapterTitlesDelegate tableView:fChapterTable objectValueForTableColumn:fChapterTableNameColumn row:i];
+            /* escape any commas in the chapter name with "\," */
+            chapterTitle = [chapterTitle stringByReplacingOccurrencesOfString:@"," withString:@"\\,"];
+            chapterName = [chapterName stringByAppendingString:chapterTitle];
+            if (i+1 != chapters)
+            { /* if not the last chapter */
+                chapterName = [chapterName stringByAppendingString:@ "\n"];
+            }
+
+            
+        }
+        /* try to write it to where the user wanted */
+        if (![chapterName writeToFile:[sheet filename] 
+                           atomically:NO 
+                             encoding:NSUTF8StringEncoding 
+                                error:&saveError])
+        {
+            [sheet close];
+            [[NSAlert alertWithError:saveError] runModal];
+        }
+    }
+}
 
 @end
 
index 1ead832..453b85b 100644 (file)
@@ -2,10 +2,10 @@
 <archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
        <data>
                <int key="IBDocument.SystemTarget">1050</int>
-               <string key="IBDocument.SystemVersion">10C540</string>
+               <string key="IBDocument.SystemVersion">10D573</string>
                <string key="IBDocument.InterfaceBuilderVersion">740</string>
-               <string key="IBDocument.AppKitVersion">1038.25</string>
-               <string key="IBDocument.HIToolboxVersion">458.00</string>
+               <string key="IBDocument.AppKitVersion">1038.29</string>
+               <string key="IBDocument.HIToolboxVersion">460.00</string>
                <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
                        <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
                        <string key="NS.object.0">740</string>
@@ -13,6 +13,7 @@
                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
                        <bool key="EncodedWithXMLCoder">YES</bool>
                        <integer value="2"/>
+                       <integer value="1867"/>
                </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"/>
                                                                <object class="NSTabViewItem" id="291470012">
                                                                        <string key="NSIdentifier">4</string>
                                                                        <object class="NSView" key="NSView" id="440990725">
-                                                                               <nil key="NSNextResponder"/>
+                                                                               <reference key="NSNextResponder" ref="712502892"/>
                                                                                <int key="NSvFlags">256</int>
                                                                                <object class="NSMutableArray" key="NSSubviews">
                                                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                                                                                        <object class="NSTableView" id="595654978">
                                                                                                                                <reference key="NSNextResponder" ref="272816362"/>
                                                                                                                                <int key="NSvFlags">256</int>
-                                                                                                                               <string key="NSFrameSize">{663, 233}</string>
+                                                                                                                               <string key="NSFrameSize">{663, 242}</string>
                                                                                                                                <reference key="NSSuperview" ref="272816362"/>
                                                                                                                                <reference key="NSNextKeyView" ref="1033243513"/>
                                                                                                                                <bool key="NSEnabled">YES</bool>
                                                                                                                                </object>
                                                                                                                                <double key="NSIntercellSpacingWidth">3</double>
                                                                                                                                <double key="NSIntercellSpacingHeight">2</double>
-                                                                                                                               <reference key="NSBackgroundColor" ref="809784795"/>
+                                                                                                                               <reference key="NSBackgroundColor" ref="355843302"/>
                                                                                                                                <reference key="NSGridColor" ref="156710040"/>
                                                                                                                                <double key="NSRowHeight">17</double>
                                                                                                                                <int key="NSTvFlags">-700448768</int>
                                                                                                                                <int key="NSTableViewDraggingDestinationStyle">0</int>
                                                                                                                        </object>
                                                                                                                </object>
-                                                                                                               <string key="NSFrame">{{1, 17}, {663, 233}}</string>
+                                                                                                               <string key="NSFrame">{{1, 17}, {663, 242}}</string>
                                                                                                                <reference key="NSSuperview" ref="307620967"/>
                                                                                                                <reference key="NSNextKeyView" ref="595654978"/>
                                                                                                                <reference key="NSDocView" ref="595654978"/>
                                                                                                        <object class="NSScroller" id="1046880533">
                                                                                                                <reference key="NSNextResponder" ref="307620967"/>
                                                                                                                <int key="NSvFlags">256</int>
-                                                                                                               <string key="NSFrame">{{664, 17}, {15, 233}}</string>
+                                                                                                               <string key="NSFrame">{{664, 17}, {15, 242}}</string>
                                                                                                                <reference key="NSSuperview" ref="307620967"/>
                                                                                                                <reference key="NSNextKeyView" ref="712502892"/>
                                                                                                                <reference key="NSTarget" ref="307620967"/>
                                                                                                        </object>
                                                                                                        <reference ref="393843623"/>
                                                                                                </object>
-                                                                                               <string key="NSFrame">{{17, 17}, {680, 251}}</string>
+                                                                                               <string key="NSFrame">{{17, 17}, {680, 260}}</string>
                                                                                                <reference key="NSSuperview" ref="440990725"/>
                                                                                                <reference key="NSNextKeyView" ref="272816362"/>
                                                                                                <int key="NSsFlags">18</int>
                                                                                        <object class="NSButton" id="262106913">
                                                                                                <reference key="NSNextResponder" ref="440990725"/>
                                                                                                <int key="NSvFlags">256</int>
-                                                                                               <string key="NSFrame">{{14, 274}, {151, 16}}</string>
+                                                                                               <string key="NSFrame">{{14, 283}, {151, 16}}</string>
                                                                                                <reference key="NSSuperview" ref="440990725"/>
                                                                                                <reference key="NSNextKeyView" ref="307620967"/>
                                                                                                <bool key="NSEnabled">YES</bool>
                                                                                                        <int key="NSPeriodicInterval">25</int>
                                                                                                </object>
                                                                                        </object>
+                                                                                       <object class="NSButton" id="959722284">
+                                                                                               <reference key="NSNextResponder" ref="440990725"/>
+                                                                                               <int key="NSvFlags">268</int>
+                                                                                               <string key="NSFrame">{{472, 283}, {107, 16}}</string>
+                                                                                               <reference key="NSSuperview" ref="440990725"/>
+                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                               <object class="NSButtonCell" key="NSCell" id="100898939">
+                                                                                                       <int key="NSCellFlags">67239424</int>
+                                                                                                       <int key="NSCellFlags2">134479872</int>
+                                                                                                       <string key="NSContents">Import Chapters ...</string>
+                                                                                                       <reference key="NSSupport" ref="22"/>
+                                                                                                       <reference key="NSControlView" ref="959722284"/>
+                                                                                                       <int key="NSButtonFlags">-2038284033</int>
+                                                                                                       <int key="NSButtonFlags2">129</int>
+                                                                                                       <string key="NSAlternateContents"/>
+                                                                                                       <string key="NSKeyEquivalent"/>
+                                                                                                       <int key="NSPeriodicDelay">200</int>
+                                                                                                       <int key="NSPeriodicInterval">25</int>
+                                                                                               </object>
+                                                                                       </object>
+                                                                                       <object class="NSButton" id="931485910">
+                                                                                               <reference key="NSNextResponder" ref="440990725"/>
+                                                                                               <int key="NSvFlags">268</int>
+                                                                                               <string key="NSFrame">{{592, 283}, {106, 16}}</string>
+                                                                                               <reference key="NSSuperview" ref="440990725"/>
+                                                                                               <bool key="NSEnabled">YES</bool>
+                                                                                               <object class="NSButtonCell" key="NSCell" id="843416672">
+                                                                                                       <int key="NSCellFlags">67239424</int>
+                                                                                                       <int key="NSCellFlags2">134479872</int>
+                                                                                                       <string key="NSContents">Export Chapters ...</string>
+                                                                                                       <reference key="NSSupport" ref="22"/>
+                                                                                                       <reference key="NSControlView" ref="931485910"/>
+                                                                                                       <int key="NSButtonFlags">-2038284033</int>
+                                                                                                       <int key="NSButtonFlags2">129</int>
+                                                                                                       <string key="NSAlternateContents"/>
+                                                                                                       <string key="NSKeyEquivalent"/>
+                                                                                                       <int key="NSPeriodicDelay">200</int>
+                                                                                                       <int key="NSPeriodicInterval">25</int>
+                                                                                               </object>
+                                                                                       </object>
                                                                                </object>
                                                                                <string key="NSFrame">{{10, 25}, {714, 305}}</string>
+                                                                               <reference key="NSSuperview" ref="712502892"/>
                                                                                <reference key="NSNextKeyView" ref="262106913"/>
                                                                        </object>
                                                                        <string key="NSLabel">Chapters</string>
                                                                        <reference key="NSTabView" ref="712502892"/>
                                                                </object>
                                                        </object>
-                                                       <reference key="NSSelectedTabViewItem" ref="107038816"/>
+                                                       <reference key="NSSelectedTabViewItem" ref="291470012"/>
                                                        <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="440990725"/>
                                                        </object>
                                                </object>
                                                <object class="NSTextField" id="586321835">
                                <nil key="NSDelegate"/>
                        </object>
                        <object class="NSCustomView" id="621751818">
-                               <nil key="NSNextResponder"/>
+                               <reference key="NSNextResponder"/>
                                <int key="NSvFlags">256</int>
                                <object class="NSMutableArray" key="NSSubviews">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                                                <int key="NSvFlags">256</int>
                                                                                <string key="NSFrameSize">{247, 506}</string>
                                                                                <reference key="NSSuperview" ref="421228634"/>
+                                                                               <reference key="NSWindow"/>
                                                                                <bool key="NSEnabled">YES</bool>
                                                                                <object class="_NSCornerView" key="NSCornerView">
                                                                                        <nil key="NSNextResponder"/>
                                                                </object>
                                                                <string key="NSFrame">{{1, 1}, {247, 506}}</string>
                                                                <reference key="NSSuperview" ref="33643505"/>
+                                                               <reference key="NSWindow"/>
                                                                <reference key="NSNextKeyView" ref="807972370"/>
                                                                <reference key="NSDocView" ref="807972370"/>
                                                                <reference key="NSBGColor" ref="355843302"/>
                                                                <int key="NSvFlags">256</int>
                                                                <string key="NSFrame">{{248, 1}, {11, 506}}</string>
                                                                <reference key="NSSuperview" ref="33643505"/>
+                                                               <reference key="NSWindow"/>
                                                                <int key="NSsFlags">256</int>
                                                                <reference key="NSTarget" ref="33643505"/>
                                                                <string key="NSAction">_doScroller:</string>
                                                                <int key="NSvFlags">-2147483392</int>
                                                                <string key="NSFrame">{{-100, -100}, {183, 15}}</string>
                                                                <reference key="NSSuperview" ref="33643505"/>
+                                                               <reference key="NSWindow"/>
                                                                <int key="NSsFlags">1</int>
                                                                <reference key="NSTarget" ref="33643505"/>
                                                                <string key="NSAction">_doScroller:</string>
                                                </object>
                                                <string key="NSFrame">{{4, 31}, {260, 508}}</string>
                                                <reference key="NSSuperview" ref="621751818"/>
+                                               <reference key="NSWindow"/>
                                                <reference key="NSNextKeyView" ref="421228634"/>
                                                <int key="NSsFlags">18</int>
                                                <reference key="NSVScroller" ref="475123229"/>
                                                <int key="NSvFlags">292</int>
                                                <string key="NSFrame">{{27, 1}, {24, 23}}</string>
                                                <reference key="NSSuperview" ref="621751818"/>
+                                               <reference key="NSWindow"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSButtonCell" key="NSCell" id="501219161">
                                                        <int key="NSCellFlags">67239424</int>
                                                <int key="NSvFlags">292</int>
                                                <string key="NSFrame">{{4, 1}, {24, 23}}</string>
                                                <reference key="NSSuperview" ref="621751818"/>
+                                               <reference key="NSWindow"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSButtonCell" key="NSCell" id="489159603">
                                                        <int key="NSCellFlags">-2080244224</int>
                                                <int key="NSvFlags">292</int>
                                                <string key="NSFrame">{{59, 1}, {33, 23}}</string>
                                                <reference key="NSSuperview" ref="621751818"/>
+                                               <reference key="NSWindow"/>
                                                <bool key="NSEnabled">YES</bool>
                                                <object class="NSPopUpButtonCell" key="NSCell" id="492120702">
                                                        <int key="NSCellFlags">71433792</int>
                                        </object>
                                </object>
                                <string key="NSFrameSize">{270, 550}</string>
+                               <reference key="NSSuperview"/>
+                               <reference key="NSWindow"/>
                                <string key="NSClassName">NSView</string>
                                <string key="NSExtension">NSResponder</string>
                        </object>
                                <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
                                <string key="NSWindowContentMinSize">{338, 232}</string>
                                <object class="NSView" key="NSWindowView" id="69290042">
-                                       <nil key="NSNextResponder"/>
+                                       <reference key="NSNextResponder"/>
                                        <int key="NSvFlags">256</int>
                                        <object class="NSMutableArray" key="NSSubviews">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                </object>
                                        </object>
                                        <string key="NSFrameSize">{338, 318}</string>
+                                       <reference key="NSSuperview"/>
                                </object>
                                <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
                                <string key="NSMinSize">{338, 254}</string>
                                        </object>
                                        <int key="connectionID">5533</int>
                                </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">browseForChapterFile:</string>
+                                               <reference key="source" ref="2258723"/>
+                                               <reference key="destination" ref="959722284"/>
+                                       </object>
+                                       <int key="connectionID">5538</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">browseForChapterFileSave:</string>
+                                               <reference key="source" ref="2258723"/>
+                                               <reference key="destination" ref="931485910"/>
+                                       </object>
+                                       <int key="connectionID">5539</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">fLoadChaptersButton</string>
+                                               <reference key="source" ref="2258723"/>
+                                               <reference key="destination" ref="959722284"/>
+                                       </object>
+                                       <int key="connectionID">5540</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">fSaveChaptersButton</string>
+                                               <reference key="source" ref="2258723"/>
+                                               <reference key="destination" ref="931485910"/>
+                                       </object>
+                                       <int key="connectionID">5541</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">fChapterTableNameColumn</string>
+                                               <reference key="source" ref="2258723"/>
+                                               <reference key="destination" ref="932392163"/>
+                                       </object>
+                                       <int key="connectionID">5544</int>
+                               </object>
                        </object>
                        <object class="IBMutableOrderedSet" key="objectRecords">
                                <object class="NSArray" key="orderedObjects">
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                                        <reference ref="307620967"/>
+                                                       <reference ref="931485910"/>
+                                                       <reference ref="959722284"/>
                                                        <reference ref="262106913"/>
                                                </object>
                                                <reference key="parent" ref="291470012"/>
                                                <reference key="object" ref="1039518079"/>
                                                <reference key="parent" ref="164276139"/>
                                        </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">5534</int>
+                                               <reference key="object" ref="959722284"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="100898939"/>
+                                               </object>
+                                               <reference key="parent" ref="440990725"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">5535</int>
+                                               <reference key="object" ref="100898939"/>
+                                               <reference key="parent" ref="959722284"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">5536</int>
+                                               <reference key="object" ref="931485910"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="843416672"/>
+                                               </object>
+                                               <reference key="parent" ref="440990725"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">5537</int>
+                                               <reference key="object" ref="843416672"/>
+                                               <reference key="parent" ref="931485910"/>
+                                       </object>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="flattenedProperties">
                                        <string>5523.IBPluginDependency</string>
                                        <string>5523.ImportedFromIB2</string>
                                        <string>5524.IBPluginDependency</string>
+                                       <string>5534.IBPluginDependency</string>
+                                       <string>5535.IBPluginDependency</string>
+                                       <string>5536.IBPluginDependency</string>
+                                       <string>5537.IBPluginDependency</string>
                                        <string>56.IBPluginDependency</string>
                                        <string>56.ImportedFromIB2</string>
                                        <string>57.IBEditorWindowLastContentRect</string>
                                        <integer value="0"/>
                                        <integer value="1"/>
                                        <string>{{720, 261}, {270, 550}}</string>
-                                       <string>{{275, 198}, {338, 318}}</string>
+                                       <string>{{383, 198}, {338, 318}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{275, 198}, {338, 318}}</string>
+                                       <string>{{383, 198}, {338, 318}}</string>
                                        <integer value="1"/>
                                        <string>{{421, 536}, {338, 318}}</string>
                                        <boolean value="NO"/>
                                        <integer value="1"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <integer value="1"/>
-                                       <string>{{20, 306}, {760, 550}}</string>
+                                       <string>{{78, 109}, {760, 550}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <boolean value="NO"/>
-                                       <string>{{20, 306}, {760, 550}}</string>
+                                       <string>{{78, 109}, {760, 550}}</string>
                                        <integer value="1"/>
                                        <string>{{65, 541}, {760, 550}}</string>
                                        <boolean value="NO"/>
                                        <integer value="1"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <integer value="1"/>
-                                       <string>{{72, 851}, {392, 144}}</string>
+                                       <string>{{72, 712}, {392, 144}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{72, 851}, {392, 144}}</string>
+                                       <string>{{72, 712}, {392, 144}}</string>
                                        <integer value="1"/>
                                        <string>{{303, 988}, {392, 144}}</string>
                                        <boolean value="NO"/>
                                        <integer value="1"/>
                                        <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>
                                        <integer value="1"/>
                                        <string>{{337, 663}, {229, 173}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                </object>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">5533</int>
+                       <int key="maxID">5544</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                                        <string>autoSetM4vExtension:</string>
                                                        <string>browseExportPresetFile:</string>
                                                        <string>browseFile:</string>
+                                                       <string>browseForChapterFile:</string>
+                                                       <string>browseForChapterFileSave:</string>
                                                        <string>browseImportPresetFile:</string>
                                                        <string>browseImportSrtFile:</string>
                                                        <string>browseSources:</string>
                                                        <string>id</string>
                                                        <string>id</string>
                                                        <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
                                                </object>
                                        </object>
                                        <object class="NSMutableDictionary" key="outlets">
                                                        <string>fAudTrack4RatePopUp</string>
                                                        <string>fBrowseSrtFileButton</string>
                                                        <string>fChapterTable</string>
+                                                       <string>fChapterTableNameColumn</string>
                                                        <string>fCreateChapterMarkers</string>
                                                        <string>fDstBrowseButton</string>
                                                        <string>fDstFile1Field</string>
                                                        <string>fDstMp4LargeFileCheck</string>
                                                        <string>fDstMp4iPodFileCheck</string>
                                                        <string>fEncodeStartStopPopUp</string>
+                                                       <string>fLoadChaptersButton</string>
                                                        <string>fPictureCroppingField</string>
                                                        <string>fPictureSizeField</string>
                                                        <string>fPresetDrawer</string>
                                                        <string>fPresetsOutlineView</string>
                                                        <string>fQueueStatus</string>
                                                        <string>fRipIndicator</string>
+                                                       <string>fSaveChaptersButton</string>
                                                        <string>fScanIndicator</string>
                                                        <string>fScanSrcTitleCancelButton</string>
                                                        <string>fScanSrcTitleNumField</string>
                                                        <string>NSPopUpButton</string>
                                                        <string>NSButton</string>
                                                        <string>NSTableView</string>
+                                                       <string>NSTableColumn</string>
                                                        <string>NSButton</string>
                                                        <string>NSButton</string>
                                                        <string>NSTextField</string>
                                                        <string>NSButton</string>
                                                        <string>NSButton</string>
                                                        <string>NSPopUpButton</string>
+                                                       <string>NSButton</string>
                                                        <string>NSTextField</string>
                                                        <string>NSTextField</string>
                                                        <string>NSDrawer</string>
                                                        <string>HBPresetsOutlineView</string>
                                                        <string>NSTextField</string>
                                                        <string>NSProgressIndicator</string>
+                                                       <string>NSButton</string>
                                                        <string>NSProgressIndicator</string>
                                                        <string>NSButton</string>
                                                        <string>NSTextField</string>