summaryrefslogtreecommitdiffstats
path: root/macosx
diff options
context:
space:
mode:
authordynaflash <[email protected]>2007-09-05 20:01:14 +0000
committerdynaflash <[email protected]>2007-09-05 20:01:14 +0000
commit5d4117bccd9ce796e102842270726eae9fcf07e5 (patch)
treeeaba13aa4509c81e30969d5ceeda0e19d8fbebad /macosx
parenta963935e4d220ec9153573cef8f9f1b12654f0c3 (diff)
MacGui: New Active Queue implementation courtesy of travistex
- Thanks travistex! - queue is now in a separate window - queue currently shows jobs grouped together as one encode, which is configurable - queue now shows currently encoding job, which is independently cancellable without losing the rest of the queue. - can start and pause encoding in the queue window - queue uses its own nib - progress status needs work - This has a way to go, but needed to get checked in as it changes the current xcode project structure. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@925 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'macosx')
-rw-r--r--macosx/Controller.h10
-rw-r--r--macosx/Controller.mm158
-rw-r--r--macosx/English.lproj/MainMenu.nib/classes.nib4
-rw-r--r--macosx/English.lproj/MainMenu.nib/info.nib7
-rw-r--r--macosx/English.lproj/MainMenu.nib/keyedobjects.nibbin134396 -> 132148 bytes
-rw-r--r--macosx/English.lproj/Queue.nib/classes.nib370
-rw-r--r--macosx/English.lproj/Queue.nib/info.nib28
-rw-r--r--macosx/English.lproj/Queue.nib/keyedobjects.nib3615
-rw-r--r--macosx/HBQueueController.h62
-rw-r--r--macosx/HBQueueController.mm841
-rw-r--r--macosx/HandBrake.xcodeproj/project.pbxproj61
-rw-r--r--macosx/icons/Delete.pngbin0 -> 228 bytes
-rw-r--r--macosx/icons/DeleteHighlight.pngbin0 -> 208 bytes
-rw-r--r--macosx/icons/DeleteHighlightPressed.pngbin0 -> 212 bytes
-rw-r--r--macosx/icons/DeletePressed.pngbin0 -> 224 bytes
-rw-r--r--macosx/icons/JobLarge.pngbin0 -> 9131 bytes
-rw-r--r--macosx/icons/JobSmall.pngbin0 -> 570 bytes
17 files changed, 5103 insertions, 53 deletions
diff --git a/macosx/Controller.h b/macosx/Controller.h
index 2ef1144fb..733c47338 100644
--- a/macosx/Controller.h
+++ b/macosx/Controller.h
@@ -12,7 +12,7 @@
#include "ChapterTitles.h"
#include "PictureController.h"
-#include "QueueController.h"
+#include "HBQueueController.h"
#import "MVMenuButton.h"
@class HBOutputPanelController;
@@ -26,8 +26,7 @@
IBOutlet NSPanel * fPicturePanel;
/* Queue panel */
- IBOutlet QueueController * fQueueController;
- IBOutlet NSPanel * fQueuePanel;
+ HBQueueController * fQueueController;
IBOutlet NSTextField * fQueueStatus;
/* Menu Items */
@@ -160,6 +159,7 @@
IBOutlet NSButton * fAddToQuButton;
IBOutlet NSButton * fPauseButton;
IBOutlet NSButton * fRipButton;
+ BOOL fRipIndicatorShown;
/* Advanced Tab for opts fX264optView*/
IBOutlet NSView * fX264optView;
@@ -238,6 +238,8 @@
NSString * currentSource;
HBOutputPanelController *outputPanel;
+ hb_job_t * fLastKnownCurrentJob;
+
BOOL startButtonEnabled;
BOOL pauseButtonEnabled;
BOOL addToQueueButtonEnabled;
@@ -283,7 +285,7 @@
- (IBAction) openMainWindow: (id) sender;
- (IBAction) addToQueue: (id) sender;
-- (IBAction) showQueuePanel: (id) sender;
+- (IBAction) showQueueWindow:(id)sender;
- (IBAction) Rip: (id) sender;
- (void) overWriteAlertDone: (NSWindow *) sheet
diff --git a/macosx/Controller.mm b/macosx/Controller.mm
index 173a54c5e..3817b1175 100644
--- a/macosx/Controller.mm
+++ b/macosx/Controller.mm
@@ -51,6 +51,26 @@ static NSString* AddToQueueIdentifier = @"Add to Queue Item Identifier"
static NSString* DebugOutputIdentifier = @"Debug Output Item Identifier";
static NSString* ChooseSourceIdentifier = @"Choose Source Item Identifier";
+#if JOB_GROUPS
+/**
+ * Returns the number of jobs groups in the queue.
+ * @param h Handle to hb_handle_t.
+ * @return Number of job groups.
+ */
+static int hb_group_count(hb_handle_t * h)
+{
+ hb_job_t * job;
+ int count = 0;
+ int index = 0;
+ while( ( job = hb_job( h, index++ ) ) )
+ {
+ if (job->sequence_id == 0)
+ count++;
+ }
+ return count;
+}
+#endif
+
/*******************************
* HBController implementation *
*******************************/
@@ -62,6 +82,7 @@ static NSString* ChooseSourceIdentifier = @"Choose Source Item Identifie
[HBPreferencesController registerUserDefaults];
fHandle = NULL;
outputPanel = [[HBOutputPanelController alloc] init];
+ fQueueController = [[HBQueueController alloc] init];
return self;
}
@@ -70,10 +91,6 @@ static NSString* ChooseSourceIdentifier = @"Choose Source Item Identifie
int build;
char * version;
- // Open debug output window now if it was visible when HB was closed
- if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OutputPanelIsOpen"])
- [self showDebugOutputPanel:nil];
-
// Init libhb
int debugLevel = [[NSUserDefaults standardUserDefaults] boolForKey:@"ShowVerboseOutput"] ? HB_DEBUG_ALL : HB_DEBUG_NONE;
fHandle = hb_init(debugLevel, [[NSUserDefaults standardUserDefaults] boolForKey:@"CheckForUpdates"]);
@@ -82,7 +99,7 @@ static NSString* ChooseSourceIdentifier = @"Choose Source Item Identifie
[GrowlApplicationBridge setGrowlDelegate: self];
/* Init others controllers */
[fPictureController SetHandle: fHandle];
- [fQueueController SetHandle: fHandle];
+ [fQueueController setHandle: fHandle];
fChapterTitlesDelegate = [[ChapterTitles alloc] init];
[fChapterTable setDataSource:fChapterTitlesDelegate];
@@ -107,6 +124,16 @@ static NSString* ChooseSourceIdentifier = @"Choose Source Item Identifie
}
+ // Open debug output window now if it was visible when HB was closed
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"OutputPanelIsOpen"])
+ [self showDebugOutputPanel:nil];
+
+ // Open queue window now if it was visible when HB was closed
+ if ([[NSUserDefaults standardUserDefaults] boolForKey:@"QueueWindowIsOpen"])
+ [self showQueueWindow:nil];
+
+ [self openMainWindow:nil];
+
/* Show scan panel ASAP */
[self performSelectorOnMainThread: @selector(showScanPanel:)
withObject: NULL waitUntilDone: NO];
@@ -128,6 +155,7 @@ static NSString* ChooseSourceIdentifier = @"Choose Source Item Identifie
- (void)applicationWillTerminate:(NSNotification *)aNotification
{
[outputPanel release];
+ [fQueueController release];
hb_close(&fHandle);
}
@@ -150,7 +178,7 @@ static NSString* ChooseSourceIdentifier = @"Choose Source Item Identifie
/* Init UserPresets .plist */
[self loadPresets];
-
+ fRipIndicatorShown = NO; // initially out of view in the nib
/* Show/Dont Show Presets drawer upon launch based
on user preference DefaultPresetsDrawerShow*/
@@ -393,7 +421,7 @@ static NSString* ChooseSourceIdentifier = @"Choose Source Item Identifie
// Tell the item what message to send when it is clicked
[toolbarItem setTarget: self];
- [toolbarItem setAction: @selector(showQueuePanel:)];
+ [toolbarItem setAction: @selector(showQueueWindow:)];
} else if ([itemIdent isEqual: AddToQueueIdentifier]) {
toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdent] autorelease];
@@ -736,6 +764,21 @@ list = hb_get_titles( fHandle );
[fRipIndicator setIndeterminate: NO];
[fRipIndicator setDoubleValue: 100.0 * progress_total];
+ // If progress bar hasn't been revealed at the bottom of the window, do
+ // that now. This code used to be in _Rip. I moved it to here to handle
+ // the case where hb_start is called by HBQueueController and not from
+ // HBController.
+ if (!fRipIndicatorShown)
+ {
+ NSRect frame = [fWindow frame];
+ if (frame.size.width <= 591)
+ frame.size.width = 591;
+ frame.size.height += 36;
+ frame.origin.y -= 36;
+ [fWindow setFrame:frame display:YES animate:YES];
+ fRipIndicatorShown = YES;
+ }
+
/* Update dock icon */
[self UpdateDockIcon: progress_total];
@@ -749,6 +792,15 @@ list = hb_get_titles( fHandle );
startButtonEnabled = YES;
stopOrStart = YES;
+ // Has current job changed? That means the queue has probably changed as
+ // well so update it
+ if (fLastKnownCurrentJob != hb_current_job(fHandle))
+ {
+ fLastKnownCurrentJob = hb_current_job(fHandle);
+ [fQueueController updateQueueUI];
+ }
+ [fQueueController updateCurrentJobUI];
+
break;
}
#undef p
@@ -770,6 +822,8 @@ list = hb_get_titles( fHandle );
/* Update dock icon */
[self UpdateDockIcon: 1.0];
+ // Pass along the info to HBQueueController
+ [fQueueController updateCurrentJobUI];
break;
}
@@ -786,6 +840,10 @@ list = hb_get_titles( fHandle );
resumeOrPause = YES;
startButtonEnabled = YES;
stopOrStart = YES;
+
+ // Pass along the info to HBQueueController
+ [fQueueController updateCurrentJobUI];
+
break;
case HB_STATE_WORKDONE:
@@ -810,19 +868,42 @@ list = hb_get_titles( fHandle );
resumeOrPause = NO;
startButtonEnabled = YES;
stopOrStart = NO;
- NSRect frame = [fWindow frame];
- if (frame.size.width <= 591)
- frame.size.width = 591;
- frame.size.height += -36;
- frame.origin.y -= -36;
- [fWindow setFrame:frame display:YES animate:YES];
-
+
+#if JOB_GROUPS
+ hb_job_t * job;
+ while( ( job = hb_job( fHandle, 0 ) ) && (job->sequence_id != 0) )
+ hb_rem( fHandle, job );
+ // Start processing back up if jobs still left in queue
+ if (hb_count(fHandle) > 0)
+ {
+ hb_start(fHandle);
+ break;
+ }
+#else
/* FIXME */
hb_job_t * job;
while( ( job = hb_job( fHandle, 0 ) ) )
{
hb_rem( fHandle, job );
}
+#endif
+
+ if (fRipIndicatorShown)
+ {
+ NSRect frame = [fWindow frame];
+ if (frame.size.width <= 591)
+ frame.size.width = 591;
+ frame.size.height += -36;
+ frame.origin.y -= -36;
+ [fWindow setFrame:frame display:YES animate:YES];
+ fRipIndicatorShown = NO;
+ }
+
+ // Queue has been modified so update the UI
+ fLastKnownCurrentJob = nil;
+ [fQueueController updateQueueUI];
+ [fQueueController updateCurrentJobUI];
+
/* Check to see if the encode state has not been cancelled
to determine if we should check for encode done notifications */
if (fEncodeState != 2) {
@@ -896,7 +977,11 @@ list = hb_get_titles( fHandle );
/* Lets show the queue status
here in the main window*/
+#if JOB_GROUPS
+ int queue_count = hb_group_count( fHandle );
+#else
int queue_count = hb_count( fHandle );
+#endif
if( queue_count )
{
[fQueueStatus setStringValue: [NSString stringWithFormat:
@@ -1350,19 +1435,6 @@ list = hb_get_titles( fHandle );
[self calculatePictureSizing: sender];
}
-- (IBAction) showQueuePanel: (id) sender
-{
- /* Update the OutlineView */
- [fQueueController Update: sender];
-
- /* Show the panel */
- [NSApp beginSheet: fQueuePanel modalForWindow: fWindow
- modalDelegate: NULL didEndSelector: NULL contextInfo: NULL];
- [NSApp runModalForWindow: fQueuePanel];
- [NSApp endSheet: fQueuePanel];
- [fQueuePanel orderOut: self];
-}
-
- (void) PrepareJob
{
hb_list_t * list = hb_get_titles( fHandle );
@@ -1597,6 +1669,12 @@ list = hb_get_titles( fHandle );
[fSrcTitlePopUp indexOfSelectedItem] );
hb_job_t * job = title->job;
+#if JOB_GROUPS
+ // Assign a sequence number, starting at zero, to each job added so they can
+ // be lumped together in the UI.
+ job->sequence_id = -1;
+#endif
+
[self PrepareJob];
/* Destination file */
@@ -1634,6 +1712,9 @@ list = hb_get_titles( fHandle );
/*
* Add the pre-scan job
*/
+#if JOB_GROUPS
+ job->sequence_id++;
+#endif
hb_add( fHandle, job );
job->x264opts = x264opts_tmp;
@@ -1658,7 +1739,13 @@ list = hb_get_titles( fHandle );
job->subtitle_scan = 0;
job->pass = 1;
+#if JOB_GROUPS
+ job->sequence_id++;
+#endif
hb_add( fHandle, job );
+#if JOB_GROUPS
+ job->sequence_id++;
+#endif
job->pass = 2;
job->x264opts = (char *)calloc(1024, 1); /* Fixme, this just leaks */
@@ -1672,13 +1759,16 @@ list = hb_get_titles( fHandle );
{
job->subtitle_scan = 0;
job->pass = 0;
+#if JOB_GROUPS
+ job->sequence_id++;
+#endif
hb_add( fHandle, job );
}
[[NSUserDefaults standardUserDefaults] setObject:destinationDirectory forKey:@"LastDestinationDirectory"];
/* Lets try to update stuff, taken from remove in the queue controller */
- [fQueueController performSelectorOnMainThread: @selector( Update: )
- withObject: sender waitUntilDone: NO];
+ [fQueueController performSelectorOnMainThread: @selector( updateQueueUI )
+ withObject: NULL waitUntilDone: NO];
}
}
@@ -1769,12 +1859,14 @@ list = hb_get_titles( fHandle );
[fMenuPauseEncode setEnabled: YES];
+/* Moved this to updateUI
NSRect frame = [fWindow frame];
if (frame.size.width <= 591)
frame.size.width = 591;
frame.size.height += 36;
frame.origin.y -= 36;
[fWindow setFrame:frame display:YES animate:YES];
+*/
}
- (IBAction) Cancel: (id) sender
@@ -5539,4 +5631,12 @@ id theRecord, theValue;
[controller release];
}
+/**
+ * Shows queue window.
+ */
+- (IBAction) showQueueWindow:(id)sender
+{
+ [fQueueController showQueueWindow:sender];
+}
+
@end
diff --git a/macosx/English.lproj/MainMenu.nib/classes.nib b/macosx/English.lproj/MainMenu.nib/classes.nib
index d19965038..c813db235 100644
--- a/macosx/English.lproj/MainMenu.nib/classes.nib
+++ b/macosx/English.lproj/MainMenu.nib/classes.nib
@@ -42,7 +42,7 @@
showNewScan = id;
showPicturePanel = id;
showPreferencesWindow = id;
- showQueuePanel = id;
+ showQueueWindow = id;
showScanPanel = id;
subtitleSelectionChanged = id;
tableViewSelected = id;
@@ -131,8 +131,6 @@
fPresetsActionMenu = NSMenu;
fPresetsAdd = NSButton;
fPresetsDelete = NSButton;
- fQueueController = QueueController;
- fQueuePanel = NSPanel;
fQueueStatus = NSTextField;
fRipIndicator = NSProgressIndicator;
fScanController = ScanController;
diff --git a/macosx/English.lproj/MainMenu.nib/info.nib b/macosx/English.lproj/MainMenu.nib/info.nib
index 9d4ffd2b4..d9eb9f92d 100644
--- a/macosx/English.lproj/MainMenu.nib/info.nib
+++ b/macosx/English.lproj/MainMenu.nib/info.nib
@@ -11,7 +11,7 @@
<key>2436</key>
<string>307 361 192 68 0 0 1440 878 </string>
<key>29</key>
- <string>631 290 368 44 0 0 1440 878 </string>
+ <string>772 342 368 44 0 0 1680 1028 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
@@ -25,11 +25,6 @@
</array>
<key>IBOldestOS</key>
<integer>4</integer>
- <key>IBOpenObjects</key>
- <array>
- <integer>21</integer>
- <integer>29</integer>
- </array>
<key>IBSystem Version</key>
<string>8R2218</string>
<key>IBUserGuides</key>
diff --git a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib
index 36f13e59f..acacaf066 100644
--- a/macosx/English.lproj/MainMenu.nib/keyedobjects.nib
+++ b/macosx/English.lproj/MainMenu.nib/keyedobjects.nib
Binary files differ
diff --git a/macosx/English.lproj/Queue.nib/classes.nib b/macosx/English.lproj/Queue.nib/classes.nib
new file mode 100644
index 000000000..420f84df2
--- /dev/null
+++ b/macosx/English.lproj/Queue.nib/classes.nib
@@ -0,0 +1,370 @@
+{
+ IBClasses = (
+ {
+ ACTIONS = {
+ Cancel = id;
+ Pause = id;
+ Rip = id;
+ X264AdvancedOptionsChanged = id;
+ X264AdvancedOptionsSet = id;
+ X264AdvancedOptionsSetCurrentSettings = id;
+ X264AdvancedOptionsStandardizeOptString = id;
+ addAllAudioTracksToPopUp = id;
+ addFactoryPresets = id;
+ addToQueue = id;
+ addUserPreset = id;
+ audioTrackMixdownChanged = id;
+ audioTrackPopUpChanged = id;
+ browseFile = id;
+ calculateBitrate = id;
+ calculatePictureSizing = id;
+ chapterPopUpChanged = id;
+ closeAddPresetPanel = id;
+ codecsPopUpChanged = id;
+ customSettingUsed = id;
+ deleteFactoryPresets = id;
+ deletePreset = id;
+ encoderPopUpChanged = id;
+ formatPopUpChanged = id;
+ insertPreset = id;
+ openForums = id;
+ openHomepage = id;
+ openMainWindow = id;
+ openUserGuide = id;
+ qualitySliderChanged = id;
+ revertPictureSizeToMax = id;
+ selectDefaultPreset = id;
+ setDefaultPreset = id;
+ setEnabledStateOfAudioMixdownControls = id;
+ showAddPresetPanel = id;
+ showDebugOutputPanel = id;
+ showGrowlDoneNotification = id;
+ showNewScan = id;
+ showPicturePanel = id;
+ showPreferencesWindow = id;
+ showQueuePanel = id;
+ showScanPanel = id;
+ subtitleSelectionChanged = id;
+ tableViewSelected = id;
+ titlePopUpChanged = id;
+ twoPassCheckboxChanged = id;
+ videoFrameRateChanged = id;
+ videoMatrixChanged = id;
+ };
+ CLASS = HBController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ fAddPresetPanel = NSPanel;
+ fAudBitrateField = NSTextField;
+ fAudBitratePopUp = NSPopUpButton;
+ fAudLang1Field = NSTextField;
+ fAudLang1PopUp = NSPopUpButton;
+ fAudLang2Field = NSTextField;
+ fAudLang2PopUp = NSPopUpButton;
+ fAudRateField = NSTextField;
+ fAudRatePopUp = NSPopUpButton;
+ fAudTrack1MixLabel = NSTextField;
+ fAudTrack1MixPopUp = NSPopUpButton;
+ fAudTrack2MixLabel = NSTextField;
+ fAudTrack2MixPopUp = NSPopUpButton;
+ fChapterTable = NSTableView;
+ fCreateChapterMarkers = NSButton;
+ fDisplayX264Options = NSTextField;
+ fDisplayX264OptionsLabel = NSTextField;
+ fDstBrowseButton = NSButton;
+ fDstCodecsField = NSTextField;
+ fDstCodecsPopUp = NSPopUpButton;
+ fDstFile1Field = NSTextField;
+ fDstFile2Field = NSTextField;
+ fDstFormatField = NSTextField;
+ fDstFormatPopUp = NSPopUpButton;
+ fDstMpgLargeFileCheck = NSButton;
+ fMenuActivityWindowShow = NSMenuItem;
+ fMenuAddToQueue = NSMenuItem;
+ fMenuBarFileMenu = NSMenu;
+ fMenuBarWindowMenu = NSMenu;
+ fMenuOpenSource = NSMenuItem;
+ fMenuPauseEncode = NSMenuItem;
+ fMenuPicturePanelShow = NSMenuItem;
+ fMenuPresetsDrawerToggle = NSMenuItem;
+ fMenuQueuePanelShow = NSMenuItem;
+ fMenuStartEncode = NSMenuItem;
+ fPicLabelAnamorphic = NSTextField;
+ fPicLabelAr = NSTextField;
+ fPicLabelDeinter = NSTextField;
+ fPicLabelOutp = NSTextField;
+ fPicLabelOutputX = NSTextField;
+ fPicLabelPAROutp = NSTextField;
+ fPicLabelPAROutputX = NSTextField;
+ fPicLabelSettings = NSTextField;
+ fPicLabelSrc = NSTextField;
+ fPicLabelSrcX = NSTextField;
+ fPicSettingARkeep = NSTextField;
+ fPicSettingARkeepDsply = NSTextField;
+ fPicSettingAutoCrop = NSTextField;
+ fPicSettingAutoCropDsply = NSTextField;
+ fPicSettingAutoCropLabel = NSTextField;
+ fPicSettingDeinterlace = NSTextField;
+ fPicSettingDeinterlaceDsply = NSTextField;
+ fPicSettingDenoise = NSTextField;
+ fPicSettingDenoiseDsply = NSTextField;
+ fPicSettingDenoiseLabel = NSTextField;
+ fPicSettingDetelecine = NSTextField;
+ fPicSettingDetelecineLabel = NSTextField;
+ fPicSettingHeight = NSTextField;
+ fPicSettingPAR = NSTextField;
+ fPicSettingPARDsply = NSTextField;
+ fPicSettingPARHeight = NSTextField;
+ fPicSettingPARWidth = NSTextField;
+ fPicSettingWidth = NSTextField;
+ fPicSrcHeight = NSTextField;
+ fPicSrcWidth = NSTextField;
+ fPictureButton = NSButton;
+ fPictureController = PictureController;
+ fPicturePanel = NSPanel;
+ fPresetDrawer = NSDrawer;
+ fPresetNewDesc = NSTextField;
+ fPresetNewName = NSTextField;
+ fPresetNewPicSettingsPopUp = NSPopUpButton;
+ fPresetSelectedDisplay = NSTextField;
+ fPresetsActionButton = MVMenuButton;
+ fPresetsActionMenu = NSMenu;
+ fPresetsAdd = NSButton;
+ fPresetsDelete = NSButton;
+ fQueueController = QueueController;
+ fQueuePanel = NSPanel;
+ fQueueStatus = NSTextField;
+ fRipIndicator = NSProgressIndicator;
+ fScanController = ScanController;
+ fScanIndicator = NSProgressIndicator;
+ fScanPanel = NSPanel;
+ fScanStatus = NSTextField;
+ fSrcChapterEndPopUp = NSPopUpButton;
+ fSrcChapterField = NSTextField;
+ fSrcChapterStartPopUp = NSPopUpButton;
+ fSrcChapterToField = NSTextField;
+ fSrcDVD1Field = NSTextField;
+ fSrcDVD2Field = NSTextField;
+ fSrcDuration1Field = NSTextField;
+ fSrcDuration2Field = NSTextField;
+ fSrcTitleField = NSTextField;
+ fSrcTitlePopUp = NSPopUpButton;
+ fStatusField = NSTextField;
+ fSubField = NSTextField;
+ fSubForcedCheck = NSButton;
+ fSubPopUp = NSPopUpButton;
+ fVidBitrateCell = NSButtonCell;
+ fVidBitrateField = NSTextField;
+ fVidConstantCell = NSButtonCell;
+ fVidEncoderField = NSTextField;
+ fVidEncoderPopUp = NSPopUpButton;
+ fVidGrayscaleCheck = NSButton;
+ fVidQualityField = NSTextField;
+ fVidQualityMatrix = NSMatrix;
+ fVidQualitySlider = NSSlider;
+ fVidRateField = NSTextField;
+ fVidRatePopUp = NSPopUpButton;
+ fVidTargetCell = NSButtonCell;
+ fVidTargetSizeField = NSTextField;
+ fVidTurboPassCheck = NSButton;
+ fVidTwoPassCheck = NSButton;
+ fWindow = NSWindow;
+ fX264opt8x8dctLabel = NSTextField;
+ fX264opt8x8dctSwitch = NSButton;
+ fX264optAlphaDeblockPopUp = NSPopUpButton;
+ fX264optAnalyseLabel = NSTextField;
+ fX264optAnalysePopUp = NSPopUpButton;
+ fX264optBPyramidLabel = NSTextField;
+ fX264optBPyramidSwitch = NSButton;
+ fX264optBRDOLabel = NSTextField;
+ fX264optBRDOSwitch = NSButton;
+ fX264optBetaDeblockPopUp = NSPopUpButton;
+ fX264optBframesLabel = NSTextField;
+ fX264optBframesPopUp = NSPopUpButton;
+ fX264optBiMELabel = NSTextField;
+ fX264optBiMESwitch = NSButton;
+ fX264optCabacLabel = NSTextField;
+ fX264optCabacSwitch = NSButton;
+ fX264optDeblockLabel = NSTextField;
+ fX264optDirectPredLabel = NSTextField;
+ fX264optDirectPredPopUp = NSPopUpButton;
+ fX264optMERangeLabel = NSTextField;
+ fX264optMERangePopUp = NSPopUpButton;
+ fX264optMixedRefsLabel = NSTextField;
+ fX264optMixedRefsSwitch = NSButton;
+ fX264optMotionEstLabel = NSTextField;
+ fX264optMotionEstPopUp = NSPopUpButton;
+ fX264optNfpskipLabel = NSTextField;
+ fX264optNfpskipSwitch = NSButton;
+ fX264optNodctdcmtLabel = NSTextField;
+ fX264optNodctdcmtSwitch = NSButton;
+ fX264optRefLabel = NSTextField;
+ fX264optRefPopUp = NSPopUpButton;
+ fX264optSubmeLabel = NSTextField;
+ fX264optSubmePopUp = NSPopUpButton;
+ fX264optTrellisLabel = NSTextField;
+ fX264optTrellisPopUp = NSPopUpButton;
+ fX264optView = NSView;
+ fX264optViewTitleLabel = NSTextField;
+ fX264optWeightBLabel = NSTextField;
+ fX264optWeightBSwitch = NSButton;
+ tableView = NSTableView;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {CLASS = HBPictureGLView; LANGUAGE = ObjC; SUPERCLASS = NSOpenGLView; },
+ {
+ ACTIONS = {
+ cancelCurrentJob = id;
+ detailChanged = id;
+ removeSelectedJob = id;
+ showQueueWindow = id;
+ toggleStartPause = id;
+ };
+ CLASS = HBQueueController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ fCurrentJobPane = NSView;
+ fDetailCheckbox = NSButton;
+ fJobDescTextField = NSTextField;
+ fProgressBar = NSProgressIndicator;
+ fProgressStatus = NSTextField;
+ fProgressTimeRemaining = NSTextField;
+ fQueueCountField = NSTextField;
+ fQueuePane = NSView;
+ fQueueWindow = NSWindow;
+ fStartPauseButton = NSButton;
+ fTaskView = NSTableView;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {
+ CLASS = HBTargetSizeField;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ fRipAudBitPopUp = NSPopUpButton;
+ fRipCustomField = NSTextField;
+ fRipFormatPopUp = NSPopUpButton;
+ fRipLang2PopUp = NSPopUpButton;
+ };
+ SUPERCLASS = NSTextField;
+ },
+ {CLASS = MVMenuButton; LANGUAGE = ObjC; SUPERCLASS = NSButton; },
+ {
+ ACTIONS = {
+ ClosePanel = id;
+ NextPicture = id;
+ PreviousPicture = id;
+ SettingsChanged = id;
+ };
+ CLASS = PictureController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ fAutoCropMainWindow = NSTextField;
+ fCropBottomField = NSTextField;
+ fCropBottomStepper = NSStepper;
+ fCropLeftField = NSTextField;
+ fCropLeftStepper = NSStepper;
+ fCropMatrix = NSMatrix;
+ fCropRightField = NSTextField;
+ fCropRightStepper = NSStepper;
+ fCropTopField = NSTextField;
+ fCropTopStepper = NSStepper;
+ fDeinterlaceLevelMainWindow = NSTextField;
+ fDeinterlacePopUp = NSPopUpButton;
+ fDenoiseMainWindow = NSTextField;
+ fDenoisePopUp = NSPopUpButton;
+ fDetelecineCheck = NSButton;
+ fDetelecineMainWindow = NSTextField;
+ fEffectsCheck = NSButton;
+ fHeightField = NSTextField;
+ fHeightStepper = NSStepper;
+ fInfoField = NSTextField;
+ fNextButton = NSButton;
+ fPARCheck = NSButton;
+ fPicSettingARkeep = NSTextField;
+ fPicSettingDeinterlace = NSTextField;
+ fPicSettingHeight = NSTextField;
+ fPicSettingWidth = NSTextField;
+ fPicSettingsDisplay = NSTextField;
+ fPicSrcHeight = NSTextField;
+ fPicSrcWidth = NSTextField;
+ fPictureGLView = HBPictureGLView;
+ fPrevButton = NSButton;
+ fRatioCheck = NSButton;
+ fVidFrameRatePopUpMainWindow = NSPopUpButton;
+ fWidthField = NSTextField;
+ fWidthStepper = NSStepper;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {CLASS = PictureGLView; LANGUAGE = ObjC; SUPERCLASS = NSOpenGLView; },
+ {
+ ACTIONS = {CheckChanged = id; ClosePanel = id; OpenPanel = id; };
+ CLASS = PrefsController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ fDefAdvancedx264FlagsShow = NSButton;
+ fDefAdvancedx264FlagsView = NSTextField;
+ fDefAutoNaming = NSButton;
+ fDefChapterMarkers = NSButton;
+ fDefCrf = NSButton;
+ fDefDeinterlace = NSButton;
+ fDefPicSizeAutoSetipod = NSButton;
+ fDefPixelRatio = NSButton;
+ fDefPresetDrawerShow = NSButton;
+ fFileExtItunes = NSButton;
+ fPanel = NSPanel;
+ fUpdateCheck = NSButton;
+ fdefaultlanguage = NSComboBox;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {
+ ACTIONS = {detailChanged = id; removeTask = id; showQueueWindow = id; };
+ CLASS = QueueController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ fCurrentJobPane = NSView;
+ fDetailCheckbox = NSButton;
+ fJobDescTextField = NSTextField;
+ fProgressBar = NSProgressIndicator;
+ fProgressStatus = NSTextField;
+ fProgressTimeRemaining = NSTextField;
+ fQueueCountField = NSTextField;
+ fQueuePane = NSView;
+ fQueueWindow = NSWindow;
+ fTaskView = NSTableView;
+ };
+ SUPERCLASS = NSObject;
+ },
+ {
+ CLASS = ScanController;
+ LANGUAGE = ObjC;
+ OUTLETS = {
+ fBrowseButton = NSButton;
+ fCancelButton = NSButton;
+ fDetectedCell = NSButtonCell;
+ fDetectedPopUp = NSPopUpButton;
+ fFolderCell = NSButtonCell;
+ fFolderField = NSTextField;
+ fIndicator = NSProgressIndicator;
+ fMainMenuAddToQueue = NSMenuItem;
+ fMainMenuOpenSource = NSMenuItem;
+ fMainMenuPauseEncode = NSMenuItem;
+ fMainMenuStartEncode = NSMenuItem;
+ fMainWindowSrcName = NSTextField;
+ fMatrix = NSMatrix;
+ fMenuPicturePanelShow = NSMenuItem;
+ fMenuQueuePanelShow = NSMenuItem;
+ fOpenButton = NSButton;
+ fPanel = NSPanel;
+ fSelectString = NSTextField;
+ fStatusField = NSTextField;
+ fWindow = NSWindow;
+ };
+ SUPERCLASS = NSObject;
+ }
+ );
+ IBVersion = 1;
+} \ No newline at end of file
diff --git a/macosx/English.lproj/Queue.nib/info.nib b/macosx/English.lproj/Queue.nib/info.nib
new file mode 100644
index 000000000..4bd1dba9d
--- /dev/null
+++ b/macosx/English.lproj/Queue.nib/info.nib
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>IBDocumentLocation</key>
+ <string>483 594 453 434 0 0 1680 1028 </string>
+ <key>IBFramework Version</key>
+ <string>446.1</string>
+ <key>IBLockedObjects</key>
+ <array>
+ <integer>2382</integer>
+ </array>
+ <key>IBLockedTabItems</key>
+ <array>
+ <integer>1477</integer>
+ </array>
+ <key>IBOldestOS</key>
+ <integer>4</integer>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>2576</integer>
+ </array>
+ <key>IBSystem Version</key>
+ <string>8R2218</string>
+ <key>IBUsesTextArchiving</key>
+ <true/>
+</dict>
+</plist>
diff --git a/macosx/English.lproj/Queue.nib/keyedobjects.nib b/macosx/English.lproj/Queue.nib/keyedobjects.nib
new file mode 100644
index 000000000..e0811e93e
--- /dev/null
+++ b/macosx/English.lproj/Queue.nib/keyedobjects.nib
@@ -0,0 +1,3615 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>$archiver</key>
+ <string>NSKeyedArchiver</string>
+ <key>$objects</key>
+ <array>
+ <string>$null</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>257</integer>
+ </dict>
+ <key>NSAccessibilityConnectors</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>254</integer>
+ </dict>
+ <key>NSAccessibilityOidsKeys</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>255</integer>
+ </dict>
+ <key>NSAccessibilityOidsValues</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>256</integer>
+ </dict>
+ <key>NSClassesKeys</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>211</integer>
+ </dict>
+ <key>NSClassesValues</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>212</integer>
+ </dict>
+ <key>NSConnections</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>9</integer>
+ </dict>
+ <key>NSFontManager</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>0</integer>
+ </dict>
+ <key>NSFramework</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>5</integer>
+ </dict>
+ <key>NSNamesKeys</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>197</integer>
+ </dict>
+ <key>NSNamesValues</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>198</integer>
+ </dict>
+ <key>NSNextOid</key>
+ <integer>2587</integer>
+ <key>NSObjectsKeys</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>194</integer>
+ </dict>
+ <key>NSObjectsValues</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>196</integer>
+ </dict>
+ <key>NSOidsKeys</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>213</integer>
+ </dict>
+ <key>NSOidsValues</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>214</integer>
+ </dict>
+ <key>NSRoot</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <key>NSVisibleWindows</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>7</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>4</integer>
+ </dict>
+ <key>NSClassName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>3</integer>
+ </dict>
+ </dict>
+ <string>HBQueueController</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSCustomObject</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSCustomObject</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>6</integer>
+ </dict>
+ <key>NS.string</key>
+ <string>IBCocoaFramework</string>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSMutableString</string>
+ <string>NSString</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSMutableString</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>8</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array/>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSMutableSet</string>
+ <string>NSSet</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSMutableSet</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>71</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>10</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>78</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>149</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>151</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>153</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>155</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>157</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>159</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>161</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>163</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>166</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>168</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>170</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>172</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>187</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>188</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>190</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>192</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>76</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>75</integer>
+ </dict>
+ <key>NSClassName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>73</integer>
+ </dict>
+ <key>NSExtension</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>74</integer>
+ </dict>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>72</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ <key>NSSubviews</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>13</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>10</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>180</integer>
+ </dict>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>179</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>0</integer>
+ </dict>
+ <key>NSSubviews</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>178</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>71</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>14</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>19</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>36</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>40</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>56</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>61</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>18</integer>
+ </dict>
+ <key>NSDrawMatrix</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>15</integer>
+ </dict>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>17</integer>
+ </dict>
+ <key>NSMaxValue</key>
+ <real>100</real>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSpiFlags</key>
+ <integer>10</integer>
+ <key>NSvFlags</key>
+ <integer>1290</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>16</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSPSMatrix</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSPSMatrix</string>
+ </dict>
+ <string>{{90, 4}, {442, 20}}</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSProgressIndicator</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSProgressIndicator</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>35</integer>
+ </dict>
+ <key>NSCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>21</integer>
+ </dict>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>20</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>268</integer>
+ </dict>
+ <string>{{89, 28}, {154, 14}}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>34</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>26</integer>
+ </dict>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>272629760</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>19</integer>
+ </dict>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>23</integer>
+ </dict>
+ <key>NSTextColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>31</integer>
+ </dict>
+ </dict>
+ <string></string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>25</integer>
+ </dict>
+ <key>NSName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>24</integer>
+ </dict>
+ <key>NSSize</key>
+ <real>11</real>
+ <key>NSfFlags</key>
+ <integer>3100</integer>
+ </dict>
+ <string>LucidaGrande</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSFont</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSFont</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSCatalogName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>27</integer>
+ </dict>
+ <key>NSColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>29</integer>
+ </dict>
+ <key>NSColorName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>28</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>6</integer>
+ </dict>
+ <string>System</string>
+ <string>controlColor</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>3</integer>
+ <key>NSWhite</key>
+ <data>
+ MC42NjY2NjY2OQA=
+ </data>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSColor</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSColor</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSCatalogName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>27</integer>
+ </dict>
+ <key>NSColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>33</integer>
+ </dict>
+ <key>NSColorName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>32</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>6</integer>
+ </dict>
+ <string>controlTextColor</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>3</integer>
+ <key>NSWhite</key>
+ <data>
+ MAA=
+ </data>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSTextFieldCell</string>
+ <string>NSActionCell</string>
+ <string>NSCell</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSTextFieldCell</string>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSTextField</string>
+ <string>%NSTextField</string>
+ <string>NSControl</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSTextField</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>35</integer>
+ </dict>
+ <key>NSCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>38</integer>
+ </dict>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>37</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>266</integer>
+ </dict>
+ <string>{{245, 28}, {288, 14}}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>34</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>26</integer>
+ </dict>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>71303168</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>39</integer>
+ </dict>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>36</integer>
+ </dict>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>23</integer>
+ </dict>
+ <key>NSTextColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>31</integer>
+ </dict>
+ </dict>
+ <string>Time Remaining: Calculating...</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>55</integer>
+ </dict>
+ <key>NSCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>49</integer>
+ </dict>
+ <key>NSDragTypes</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>41</integer>
+ </dict>
+ <key>NSEditable</key>
+ <true/>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>48</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>268</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>8</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>42</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>43</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>44</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>45</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>46</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>47</integer>
+ </dict>
+ </array>
+ </dict>
+ <string>Apple PDF pasteboard type</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>{{20, 92}, {64, 64}}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>54</integer>
+ </dict>
+ <key>NSAlign</key>
+ <integer>0</integer>
+ <key>NSAnimates</key>
+ <false/>
+ <key>NSCellFlags</key>
+ <integer>130560</integer>
+ <key>NSCellFlags2</key>
+ <integer>33554432</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>50</integer>
+ </dict>
+ <key>NSScale</key>
+ <integer>0</integer>
+ <key>NSStyle</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>53</integer>
+ </dict>
+ <key>NSClassName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>51</integer>
+ </dict>
+ <key>NSResourceName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>52</integer>
+ </dict>
+ </dict>
+ <string>NSImage</string>
+ <string>JobLarge</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSCustomResource</string>
+ <string>%NSCustomResource</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSCustomResource</string>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSImageCell</string>
+ <string>%NSImageCell</string>
+ <string>NSCell</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSImageCell</string>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSImageView</string>
+ <string>NSControl</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSImageView</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>35</integer>
+ </dict>
+ <key>NSCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>58</integer>
+ </dict>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>57</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>266</integer>
+ </dict>
+ <string>{{89, 46}, {468, 110}}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>34</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>26</integer>
+ </dict>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>272629760</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>59</integer>
+ </dict>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>56</integer>
+ </dict>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>60</integer>
+ </dict>
+ <key>NSTextColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>31</integer>
+ </dict>
+ </dict>
+ <string>No job processing</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>25</integer>
+ </dict>
+ <key>NSName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>24</integer>
+ </dict>
+ <key>NSSize</key>
+ <real>13</real>
+ <key>NSfFlags</key>
+ <integer>1044</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>70</integer>
+ </dict>
+ <key>NSCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>63</integer>
+ </dict>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>62</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>265</integer>
+ </dict>
+ <string>{{538, 8}, {16, 18}}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>69</integer>
+ </dict>
+ <key>NSAlternateContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSAlternateImage</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>66</integer>
+ </dict>
+ <key>NSButtonFlags</key>
+ <integer>138690815</integer>
+ <key>NSButtonFlags2</key>
+ <integer>34</integer>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>134217728</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>61</integer>
+ </dict>
+ <key>NSKeyEquivalent</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>68</integer>
+ </dict>
+ <key>NSNormalImage</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>64</integer>
+ </dict>
+ <key>NSPeriodicDelay</key>
+ <integer>200</integer>
+ <key>NSPeriodicInterval</key>
+ <integer>25</integer>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>60</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>53</integer>
+ </dict>
+ <key>NSClassName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>51</integer>
+ </dict>
+ <key>NSResourceName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>65</integer>
+ </dict>
+ </dict>
+ <string>Delete</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>53</integer>
+ </dict>
+ <key>NSClassName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>51</integer>
+ </dict>
+ <key>NSResourceName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>67</integer>
+ </dict>
+ </dict>
+ <string>DeletePressed</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>6</integer>
+ </dict>
+ <key>NS.string</key>
+ <string></string>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSButtonCell</string>
+ <string>%NSButtonCell</string>
+ <string>NSActionCell</string>
+ <string>NSCell</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSButtonCell</string>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSButton</string>
+ <string>NSControl</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSButton</string>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSMutableArray</string>
+ <string>NSArray</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSMutableArray</string>
+ </dict>
+ <string>{{0, 257}, {574, 176}}</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSCustomView</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSCustomView</string>
+ </dict>
+ <string>fCurrentJobPane</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSNibOutletConnector</string>
+ <string>NSNibConnector</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSNibOutletConnector</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>148</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>75</integer>
+ </dict>
+ <key>NSClassName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>73</integer>
+ </dict>
+ <key>NSExtension</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>74</integer>
+ </dict>
+ <key>NSFrameSize</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>147</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ <key>NSSubviews</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>80</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>18</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>71</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>81</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>134</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>141</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>35</integer>
+ </dict>
+ <key>NSCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>83</integer>
+ </dict>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>82</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>264</integer>
+ </dict>
+ <string>{{59, 227}, {253, 14}}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>34</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>26</integer>
+ </dict>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>272760832</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>84</integer>
+ </dict>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>81</integer>
+ </dict>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>23</integer>
+ </dict>
+ <key>NSTextColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>31</integer>
+ </dict>
+ </dict>
+ <string>Pending Jobs</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>133</integer>
+ </dict>
+ <key>NSContentView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>87</integer>
+ </dict>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>132</integer>
+ </dict>
+ <key>NSHScroller</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>129</integer>
+ </dict>
+ <key>NSNextKeyView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>87</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSScrollAmts</key>
+ <data>
+ AAAAAAAAAABBmAAAQZgAAA==
+ </data>
+ <key>NSSubviews</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>86</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSVScroller</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>125</integer>
+ </dict>
+ <key>NSsFlags</key>
+ <integer>18</integer>
+ <key>NSvFlags</key>
+ <integer>274</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>71</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>87</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>125</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>129</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>124</integer>
+ </dict>
+ <key>NSBGColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>112</integer>
+ </dict>
+ <key>NSDocView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>123</integer>
+ </dict>
+ <key>NSNextKeyView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <key>NSSubviews</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>88</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <key>NScvFlags</key>
+ <integer>4</integer>
+ <key>NSvFlags</key>
+ <integer>2304</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>71</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>122</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>100</integer>
+ </dict>
+ <key>NSColumnAutoresizingStyle</key>
+ <integer>1</integer>
+ <key>NSCornerView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>91</integer>
+ </dict>
+ <key>NSDraggingSourceMaskForLocal</key>
+ <integer>15</integer>
+ <key>NSDraggingSourceMaskForNonLocal</key>
+ <integer>0</integer>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrameSize</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>90</integer>
+ </dict>
+ <key>NSGridColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>119</integer>
+ </dict>
+ <key>NSIntercellSpacingHeight</key>
+ <real>2</real>
+ <key>NSIntercellSpacingWidth</key>
+ <real>3</real>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>87</integer>
+ </dict>
+ <key>NSRowHeight</key>
+ <real>17</real>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>87</integer>
+ </dict>
+ <key>NSTableColumns</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>94</integer>
+ </dict>
+ <key>NSTvFlags</key>
+ <integer>314605568</integer>
+ <key>NSvFlags</key>
+ <integer>4352</integer>
+ </dict>
+ <string>{517, 190}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>93</integer>
+ </dict>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>92</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>0</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>256</integer>
+ </dict>
+ <string>{{518, 0}, {16, 17}}</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>_NSCornerView</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>_NSCornerView</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>71</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>95</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>106</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>114</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>105</integer>
+ </dict>
+ <key>NSDataCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>104</integer>
+ </dict>
+ <key>NSHeaderCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>97</integer>
+ </dict>
+ <key>NSIdentifier</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>96</integer>
+ </dict>
+ <key>NSIsEditable</key>
+ <true/>
+ <key>NSMaxWidth</key>
+ <real>20</real>
+ <key>NSMinWidth</key>
+ <real>20</real>
+ <key>NSTableView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <key>NSWidth</key>
+ <real>20</real>
+ </dict>
+ <string>icon</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>103</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>98</integer>
+ </dict>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>134217728</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>23</integer>
+ </dict>
+ <key>NSTextColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>101</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSCatalogName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>27</integer>
+ </dict>
+ <key>NSColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>100</integer>
+ </dict>
+ <key>NSColorName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>99</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>6</integer>
+ </dict>
+ <string>headerColor</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>3</integer>
+ <key>NSWhite</key>
+ <data>
+ MQA=
+ </data>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSCatalogName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>27</integer>
+ </dict>
+ <key>NSColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>33</integer>
+ </dict>
+ <key>NSColorName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>102</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>6</integer>
+ </dict>
+ <string>headerTextColor</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSTableHeaderCell</string>
+ <string>NSTextFieldCell</string>
+ <string>NSActionCell</string>
+ <string>NSCell</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSTableHeaderCell</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>54</integer>
+ </dict>
+ <key>NSAlign</key>
+ <integer>1</integer>
+ <key>NSAnimates</key>
+ <true/>
+ <key>NSCellFlags</key>
+ <integer>130560</integer>
+ <key>NSCellFlags2</key>
+ <integer>33554432</integer>
+ <key>NSScale</key>
+ <integer>2</integer>
+ <key>NSStyle</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSTableColumn</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSTableColumn</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>105</integer>
+ </dict>
+ <key>NSDataCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>111</integer>
+ </dict>
+ <key>NSHeaderCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>108</integer>
+ </dict>
+ <key>NSIdentifier</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>107</integer>
+ </dict>
+ <key>NSIsResizeable</key>
+ <true/>
+ <key>NSMaxWidth</key>
+ <real>9000</real>
+ <key>NSMinWidth</key>
+ <real>40</real>
+ <key>NSResizingMask</key>
+ <integer>1</integer>
+ <key>NSTableView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <key>NSWidth</key>
+ <real>468</real>
+ </dict>
+ <string>desc</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>103</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>110</integer>
+ </dict>
+ <key>NSCellFlags</key>
+ <integer>75628032</integer>
+ <key>NSCellFlags2</key>
+ <integer>0</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>109</integer>
+ </dict>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>23</integer>
+ </dict>
+ <key>NSTextColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>101</integer>
+ </dict>
+ </dict>
+ <string>Job</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>3</integer>
+ <key>NSWhite</key>
+ <data>
+ MC4zMzMzMzI5OQA=
+ </data>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>34</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>112</integer>
+ </dict>
+ <key>NSCellFlags</key>
+ <integer>337772096</integer>
+ <key>NSCellFlags2</key>
+ <integer>2048</integer>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>23</integer>
+ </dict>
+ <key>NSTextColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>31</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSCatalogName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>27</integer>
+ </dict>
+ <key>NSColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>29</integer>
+ </dict>
+ <key>NSColorName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>113</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>6</integer>
+ </dict>
+ <string>controlBackgroundColor</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>105</integer>
+ </dict>
+ <key>NSDataCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>117</integer>
+ </dict>
+ <key>NSHeaderCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>116</integer>
+ </dict>
+ <key>NSIdentifier</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>115</integer>
+ </dict>
+ <key>NSMaxWidth</key>
+ <real>1000</real>
+ <key>NSMinWidth</key>
+ <real>4</real>
+ <key>NSTableView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <key>NSWidth</key>
+ <real>20</real>
+ </dict>
+ <string>delete</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>103</integer>
+ </dict>
+ <key>NSBackgroundColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>98</integer>
+ </dict>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>134217728</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>23</integer>
+ </dict>
+ <key>NSTextColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>101</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>69</integer>
+ </dict>
+ <key>NSAlternateContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSButtonFlags</key>
+ <integer>135020799</integer>
+ <key>NSButtonFlags2</key>
+ <integer>6</integer>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>134217728</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <key>NSKeyEquivalent</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSNormalImage</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>64</integer>
+ </dict>
+ <key>NSPeriodicDelay</key>
+ <integer>400</integer>
+ <key>NSPeriodicInterval</key>
+ <integer>75</integer>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>118</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>25</integer>
+ </dict>
+ <key>NSName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>24</integer>
+ </dict>
+ <key>NSSize</key>
+ <real>12</real>
+ <key>NSfFlags</key>
+ <integer>16</integer>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSCatalogName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>27</integer>
+ </dict>
+ <key>NSColor</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>121</integer>
+ </dict>
+ <key>NSColorName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>120</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>6</integer>
+ </dict>
+ <string>gridColor</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>30</integer>
+ </dict>
+ <key>NSColorSpace</key>
+ <integer>3</integer>
+ <key>NSWhite</key>
+ <data>
+ MC41AA==
+ </data>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSTableView</string>
+ <string>%NSTableView</string>
+ <string>NSControl</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSTableView</string>
+ </dict>
+ <string>{{1, 1}, {517, 190}}</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSClipView</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSClipView</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>128</integer>
+ </dict>
+ <key>NSAction</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>127</integer>
+ </dict>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>126</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <key>NSPercent</key>
+ <real>0.93596059083938599</real>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <key>NSTarget</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>256</integer>
+ </dict>
+ <string>{{518, 1}, {15, 190}}</string>
+ <string>_doScroller:</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSScroller</string>
+ <string>NSControl</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSScroller</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>128</integer>
+ </dict>
+ <key>NSAction</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>131</integer>
+ </dict>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>130</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <key>NSPercent</key>
+ <real>0.88602942228317261</real>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <key>NSTarget</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <key>NSsFlags</key>
+ <integer>1</integer>
+ <key>NSvFlags</key>
+ <integer>-2147483392</integer>
+ </dict>
+ <string>{{-100, -100}, {482, 11}}</string>
+ <string>_doScroller:</string>
+ <string>{{20, 20}, {534, 192}}</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSScrollView</string>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSScrollView</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>70</integer>
+ </dict>
+ <key>NSCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>136</integer>
+ </dict>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>135</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>265</integer>
+ </dict>
+ <string>{{471, 226}, {85, 16}}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>69</integer>
+ </dict>
+ <key>NSAlternateContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSAlternateImage</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>138</integer>
+ </dict>
+ <key>NSButtonFlags</key>
+ <integer>1211912703</integer>
+ <key>NSButtonFlags2</key>
+ <integer>2</integer>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>131072</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>137</integer>
+ </dict>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>134</integer>
+ </dict>
+ <key>NSKeyEquivalent</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSPeriodicDelay</key>
+ <integer>200</integer>
+ <key>NSPeriodicInterval</key>
+ <integer>25</integer>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>23</integer>
+ </dict>
+ </dict>
+ <string>Show Detail</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>140</integer>
+ </dict>
+ <key>NSImageName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>139</integer>
+ </dict>
+ </dict>
+ <string>NSSwitch</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSButtonImageSource</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSButtonImageSource</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>70</integer>
+ </dict>
+ <key>NSCell</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>143</integer>
+ </dict>
+ <key>NSEnabled</key>
+ <true/>
+ <key>NSFrame</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>142</integer>
+ </dict>
+ <key>NSNextResponder</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSSuperview</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <key>NSvFlags</key>
+ <integer>268</integer>
+ </dict>
+ <string>{{20, 220}, {34, 32}}</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>69</integer>
+ </dict>
+ <key>NSAlternateContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSButtonFlags</key>
+ <integer>138690815</integer>
+ <key>NSButtonFlags2</key>
+ <integer>34</integer>
+ <key>NSCellFlags</key>
+ <integer>67239424</integer>
+ <key>NSCellFlags2</key>
+ <integer>134217728</integer>
+ <key>NSContents</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>22</integer>
+ </dict>
+ <key>NSControlView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>141</integer>
+ </dict>
+ <key>NSKeyEquivalent</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>146</integer>
+ </dict>
+ <key>NSNormalImage</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>144</integer>
+ </dict>
+ <key>NSPeriodicDelay</key>
+ <integer>200</integer>
+ <key>NSPeriodicInterval</key>
+ <integer>25</integer>
+ <key>NSSupport</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>60</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>53</integer>
+ </dict>
+ <key>NSClassName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>51</integer>
+ </dict>
+ <key>NSResourceName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>145</integer>
+ </dict>
+ </dict>
+ <string>Play</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>6</integer>
+ </dict>
+ <key>NS.string</key>
+ <string></string>
+ </dict>
+ <string>{574, 257}</string>
+ <string>fQueuePane</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>14</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>150</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <string>fProgressBar</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>134</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>152</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <string>fDetailCheckbox</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>81</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>154</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <string>fQueueCountField</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>156</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <string>fTaskView</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>36</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>158</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <string>fProgressTimeRemaining</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>19</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>160</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <string>fProgressStatus</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>56</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>162</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <string>fJobDescTextField</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>165</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>164</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>117</integer>
+ </dict>
+ </dict>
+ <string>removeSelectedJob:</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSNibControlConnector</string>
+ <string>NSNibConnector</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSNibControlConnector</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>167</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ </dict>
+ <string>dataSource</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>169</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ </dict>
+ <string>delegate</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>165</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>171</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>134</integer>
+ </dict>
+ </dict>
+ <string>detailChanged:</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>173</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>186</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>185</integer>
+ </dict>
+ <key>NSFrameAutosaveName</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>184</integer>
+ </dict>
+ <key>NSMaxSize</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>183</integer>
+ </dict>
+ <key>NSMinSize</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>182</integer>
+ </dict>
+ <key>NSScreenRect</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>181</integer>
+ </dict>
+ <key>NSViewClass</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>177</integer>
+ </dict>
+ <key>NSWTFlags</key>
+ <integer>1886912512</integer>
+ <key>NSWindowBacking</key>
+ <integer>2</integer>
+ <key>NSWindowClass</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>176</integer>
+ </dict>
+ <key>NSWindowRect</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>174</integer>
+ </dict>
+ <key>NSWindowStyleMask</key>
+ <integer>14</integer>
+ <key>NSWindowTitle</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>175</integer>
+ </dict>
+ <key>NSWindowView</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ </dict>
+ <string>{{651, 179}, {574, 433}}</string>
+ <string>Queue - HandBrake</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>6</integer>
+ </dict>
+ <key>NS.string</key>
+ <string>NSWindow</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>6</integer>
+ </dict>
+ <key>NS.string</key>
+ <string>View</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>71</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ </array>
+ </dict>
+ <string>{{1, 9}, {574, 433}}</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSView</string>
+ <string>NSResponder</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSView</string>
+ </dict>
+ <string>{{0, 0}, {1680, 1028}}</string>
+ <string>{525, 362}</string>
+ <string>{3.40282e+38, 3.40282e+38}</string>
+ <string>QueueWindow</string>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSWindowTemplate</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSWindowTemplate</string>
+ </dict>
+ <string>fQueueWindow</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>169</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>173</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>77</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>141</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>189</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ </dict>
+ <string>fStartPauseButton</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>165</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>191</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>141</integer>
+ </dict>
+ </dict>
+ <string>toggleStartPause:</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>165</integer>
+ </dict>
+ <key>NSDestination</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <key>NSLabel</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>193</integer>
+ </dict>
+ <key>NSSource</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>61</integer>
+ </dict>
+ </dict>
+ <string>cancelCurrentJob:</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>134</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>114</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>14</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>141</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>173</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>106</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>104</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>40</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>81</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>117</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>56</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>36</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>19</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>95</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>61</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSArray</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSArray</string>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>95</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>173</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>114</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>14</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>61</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>19</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>36</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>56</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>141</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>173</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>81</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>106</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>134</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>199</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>200</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>201</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>202</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>203</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>204</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>205</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>201</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>206</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>207</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>208</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>209</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>210</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>6</integer>
+ </dict>
+ <key>NS.string</key>
+ <string>File's Owner</string>
+ </dict>
+ <string>1</string>
+ <string>NSButton</string>
+ <string>NSTextField1</string>
+ <string>NSTextField11</string>
+ <string>NSTextField221</string>
+ <string>NSTableView</string>
+ <string>Window</string>
+ <string>NSTextField2</string>
+ <string>NSTableColumn</string>
+ <string>NSButton4</string>
+ <string>NSScrollView1</string>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array/>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array/>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>2</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>161</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>173</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>10</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>61</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>192</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>95</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>170</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>134</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>153</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>78</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>40</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>104</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>106</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>36</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>190</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>85</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>166</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>168</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>14</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>163</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>159</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>187</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>11</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>188</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>149</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>172</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>19</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>141</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>114</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>81</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>56</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>155</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>12</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>151</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>117</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>79</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>89</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>157</integer>
+ </dict>
+ </array>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array>
+ <dict>
+ <key>CF$UID</key>
+ <integer>215</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>216</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>217</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>218</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>219</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>220</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>221</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>222</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>223</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>224</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>225</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>226</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>227</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>228</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>229</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>230</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>231</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>232</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>233</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>234</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>235</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>236</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>237</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>238</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>239</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>240</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>241</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>242</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>243</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>244</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>245</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>246</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>247</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>248</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>249</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>250</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>251</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>252</integer>
+ </dict>
+ <dict>
+ <key>CF$UID</key>
+ <integer>253</integer>
+ </dict>
+ </array>
+ </dict>
+ <integer>1</integer>
+ <integer>2568</integer>
+ <integer>2576</integer>
+ <integer>2560</integer>
+ <integer>2584</integer>
+ <integer>2586</integer>
+ <integer>2553</integer>
+ <integer>2572</integer>
+ <integer>2535</integer>
+ <integer>2564</integer>
+ <integer>2561</integer>
+ <integer>2538</integer>
+ <integer>2559</integer>
+ <integer>2519</integer>
+ <integer>2542</integer>
+ <integer>2583</integer>
+ <integer>2517</integer>
+ <integer>2570</integer>
+ <integer>2571</integer>
+ <integer>2539</integer>
+ <integer>2569</integer>
+ <integer>2567</integer>
+ <integer>2579</integer>
+ <integer>2543</integer>
+ <integer>2581</integer>
+ <integer>2562</integer>
+ <integer>2578</integer>
+ <integer>2541</integer>
+ <integer>2580</integer>
+ <integer>2522</integer>
+ <integer>2511</integer>
+ <integer>2515</integer>
+ <integer>2565</integer>
+ <integer>2577</integer>
+ <integer>2563</integer>
+ <integer>2523</integer>
+ <integer>2547</integer>
+ <integer>2518</integer>
+ <integer>2566</integer>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>71</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array/>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array/>
+ </dict>
+ <dict>
+ <key>$class</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>195</integer>
+ </dict>
+ <key>NS.objects</key>
+ <array/>
+ </dict>
+ <dict>
+ <key>$classes</key>
+ <array>
+ <string>NSIBObjectData</string>
+ <string>NSObject</string>
+ </array>
+ <key>$classname</key>
+ <string>NSIBObjectData</string>
+ </dict>
+ </array>
+ <key>$top</key>
+ <dict>
+ <key>IB.objectdata</key>
+ <dict>
+ <key>CF$UID</key>
+ <integer>1</integer>
+ </dict>
+ </dict>
+ <key>$version</key>
+ <integer>100000</integer>
+</dict>
+</plist>
diff --git a/macosx/HBQueueController.h b/macosx/HBQueueController.h
new file mode 100644
index 000000000..4f7cd3fc1
--- /dev/null
+++ b/macosx/HBQueueController.h
@@ -0,0 +1,62 @@
+/* HBQueueController
+
+ This file is part of the HandBrake source code.
+ Homepage: <http://handbrake.m0k.org/>.
+ It may be used under the terms of the GNU General Public License. */
+
+
+#include <Cocoa/Cocoa.h>
+
+#include "hb.h"
+
+@interface HBQueueController : NSObject
+{
+ hb_handle_t *fHandle;
+ NSViewAnimation *fAnimation;
+ BOOL fCurrentJobHidden; // YES when fCurrentJobPane has been shifted out of view (see showCurrentJobPane)
+
+ // +---------------fQueueWindow----------------+
+ // |+-------------fCurrentJobPane-------------+|
+ // || ||
+ // || ||
+ // || ||
+ // |+-----------------------------------------+|
+ // |+---------------fQueuePane----------------+|
+ // || ||
+ // || ||
+ // || ||
+ // || ||
+ // || ||
+ // || ||
+ // || ||
+ // |+-----------------------------------------+|
+ // +-------------------------------------------+
+
+ IBOutlet NSWindow *fQueueWindow;
+
+ // fCurrentJobPane - visible only when processing a job
+ IBOutlet NSView *fCurrentJobPane;
+ IBOutlet NSTextField *fJobDescTextField;
+ IBOutlet NSProgressIndicator *fProgressBar;
+ IBOutlet NSTextField *fProgressStatus;
+ IBOutlet NSTextField *fProgressTimeRemaining;
+
+ // fQueuePane - always visible; fills entire window when fCurrentJobPane is hidden
+ IBOutlet NSView *fQueuePane;
+ IBOutlet NSTableView *fTaskView;
+ IBOutlet NSButton *fDetailCheckbox;
+ IBOutlet NSTextField *fQueueCountField;
+ IBOutlet NSButton *fStartPauseButton;
+
+}
+
+- (void)setHandle: (hb_handle_t *)handle;
+- (void)updateQueueUI;
+- (void)updateCurrentJobUI;
+- (IBAction)removeSelectedJob: (id)sender;
+- (IBAction)cancelCurrentJob: (id)sender;
+- (IBAction)detailChanged: (id)sender;
+- (IBAction)showQueueWindow: (id)sender;
+- (IBAction)toggleStartPause: (id)sender;
+
+@end
diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm
new file mode 100644
index 000000000..c4dfd5e38
--- /dev/null
+++ b/macosx/HBQueueController.mm
@@ -0,0 +1,841 @@
+/* HBQueueController
+
+ This file is part of the HandBrake source code.
+ Homepage: <http://handbrake.m0k.org/>.
+ It may be used under the terms of the GNU General Public License. */
+
+#include "HBQueueController.h"
+
+#if JOB_GROUPS
+/**
+ * Returns the number of jobs groups in the queue.
+ * @param h Handle to hb_handle_t.
+ * @return Number of job groups.
+ */
+static int hb_group_count(hb_handle_t * h)
+{
+ hb_job_t * job;
+ int count = 0;
+ int index = 0;
+ while( ( job = hb_job( h, index++ ) ) )
+ {
+ if (job->sequence_id == 0)
+ count++;
+ }
+ return count;
+}
+
+/**
+ * Returns handle to the first job in the i-th group within the job list.
+ * @param h Handle to hb_handle_t.
+ * @param i Index of group.
+ * @returns Handle to hb_job_t of desired job.
+ */
+static hb_job_t * hb_group(hb_handle_t * h, int i)
+{
+ hb_job_t * job;
+ int count = 0;
+ int index = 0;
+ while( ( job = hb_job( h, index++ ) ) )
+ {
+ if (job->sequence_id == 0)
+ {
+ if (count == i)
+ return job;
+ count++;
+ }
+ }
+ return NULL;
+}
+
+/**
+ * Removes a groups of jobs from the job list.
+ * @param h Handle to hb_handle_t.
+ * @param job Handle to the first job in the group.
+ */
+static void hb_rem_group( hb_handle_t * h, hb_job_t * job )
+{
+ // Find job in list
+ hb_job_t * j;
+ int index = 0;
+ while( ( j = hb_job( h, index ) ) )
+ {
+ if (j == job)
+ {
+ // Delete this job plus the following ones in the sequence
+ hb_rem( h, job );
+ while( ( j = hb_job( h, index ) ) && (j->sequence_id != 0) )
+ hb_rem( h, j );
+ return;
+ }
+ else
+ index++;
+ }
+}
+
+/**
+ * Returns handle to the next job after the given job.
+ * @param h Handle to hb_handle_t.
+ * @param job Handle to the a job in the group.
+ * @returns Handle to hb_job_t of desired job or NULL if no such job.
+ */
+static hb_job_t * hb_next_job( hb_handle_t * h, hb_job_t * job )
+{
+ hb_job_t * j = NULL;
+ int index = 0;
+ while( ( j = hb_job( h, index++ ) ) )
+ {
+ if (j == job)
+ return hb_job( h, index+1 );
+ }
+ return NULL;
+}
+
+#endif // JOB_GROUPS
+
+@implementation HBQueueController
+
+//------------------------------------------------------------------------------------
+// init
+//------------------------------------------------------------------------------------
+- (id)init
+{
+ if (self = [super init])
+ {
+ // Our defaults
+ [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:
+ @"NO", @"QueueWindowIsOpen",
+ @"NO", @"QueueShowsDetail",
+ nil]];
+ }
+ return self;
+}
+
+//------------------------------------------------------------------------------------
+// dealloc
+//------------------------------------------------------------------------------------
+- (void)dealloc
+{
+ [fAnimation release];
+
+ // clear the delegate so that windowWillClose is not attempted
+ if ([fQueueWindow delegate] == self)
+ [fQueueWindow setDelegate:nil];
+
+ [super dealloc];
+}
+
+//------------------------------------------------------------------------------------
+// Receive HB handle
+//------------------------------------------------------------------------------------
+- (void)setHandle: (hb_handle_t *)handle
+{
+ fHandle = handle;
+}
+
+//------------------------------------------------------------------------------------
+// Displays and brings the queue window to the front
+//------------------------------------------------------------------------------------
+- (IBAction) showQueueWindow: (id)sender
+{
+ if (!fQueueWindow)
+ {
+ BOOL loadSucceeded = [NSBundle loadNibNamed:@"Queue" owner:self] && fQueueWindow;
+ NSAssert(loadSucceeded, @"Could not open Queue nib file");
+ }
+
+ [self updateQueueUI];
+ [self updateCurrentJobUI];
+
+ [fQueueWindow makeKeyAndOrderFront: self];
+
+ [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"QueueWindowIsOpen"];
+}
+//------------------------------------------------------------------------------------
+// Show or hide the current job pane (fCurrentJobPane).
+//------------------------------------------------------------------------------------
+- (void) showCurrentJobPane: (BOOL)showPane
+{
+ if (showPane != fCurrentJobHidden)
+ return;
+
+ // Things to keep in mind:
+ // - When the current job pane is shown, it occupies the upper portion of the
+ // window with the queue occupying the bottom portion of the window.
+ // - When the current job pane is hidden, it slides up and out of view.
+ // NSView setHidden is NOT used. The queue pane is resized to occupy the full
+ // window.
+
+ NSRect windowFrame = [[fCurrentJobPane superview] frame];
+ NSRect queueFrame, jobFrame;
+ if (showPane)
+ NSDivideRect(windowFrame, &jobFrame, &queueFrame, NSHeight([fCurrentJobPane frame]), NSMaxYEdge);
+ else
+ {
+ queueFrame = windowFrame;
+ jobFrame = [fCurrentJobPane frame];
+ jobFrame.origin.y = NSHeight(windowFrame);
+ }
+
+ // Move fCurrentJobPane
+ NSDictionary * dict1 = [NSDictionary dictionaryWithObjectsAndKeys:
+ fCurrentJobPane, NSViewAnimationTargetKey,
+ [NSValue valueWithRect:jobFrame], NSViewAnimationEndFrameKey,
+ nil];
+
+ // Resize fQueuePane
+ NSDictionary * dict2 = [NSDictionary dictionaryWithObjectsAndKeys:
+ fQueuePane, NSViewAnimationTargetKey,
+ [NSValue valueWithRect:queueFrame], NSViewAnimationEndFrameKey,
+ nil];
+
+ if (!fAnimation)
+ fAnimation = [[NSViewAnimation alloc] initWithViewAnimations:nil];
+
+ [fAnimation setViewAnimations:[NSArray arrayWithObjects:dict1, dict2, nil]];
+ [fAnimation setDuration:0.25];
+ [fAnimation setAnimationBlockingMode:NSAnimationBlocking]; // prevent user from resizing the window during an animation
+ [fAnimation startAnimation];
+ fCurrentJobHidden = !showPane;
+}
+
+//------------------------------------------------------------------------------------
+// Enables or disables the display of detail information for each job.
+//------------------------------------------------------------------------------------
+- (void)showDetail: (BOOL)showDetail
+{
+ // clumsy - have to update UI
+ [fDetailCheckbox setState:showDetail ? NSOnState : NSOffState];
+
+ [fTaskView setRowHeight:showDetail ? 110.0 : 17.0];
+ if ([fTaskView selectedRow] != -1)
+ [fTaskView scrollRowToVisible:[fTaskView selectedRow]];
+}
+
+//------------------------------------------------------------------------------------
+// Generates a multi-line text string that includes the job name on the first line
+// followed by details of the job on subsequent lines. If the text is to be drawn as
+// part of a highlighted cell, set isHighlighted to true. The returned string may
+// contain multiple fonts and paragraph formating.
+//------------------------------------------------------------------------------------
+- (NSAttributedString *)attributedDescriptionForJob: (hb_job_t *)job
+ withDetail: (BOOL)detail
+ withHighlighting: (BOOL)highlighted
+{
+ NSMutableAttributedString * finalString; // the return value
+ NSAttributedString* anAttributedString; // a temp string for building up attributed substrings
+ NSMutableString* aMutableString; // a temp string for non-attributed substrings
+ hb_title_t * title = job->title;
+
+ NSMutableParagraphStyle *ps = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
+ [ps setLineBreakMode:NSLineBreakByClipping];
+
+ static NSDictionary* detailAttribute = [[NSDictionary dictionaryWithObjectsAndKeys:
+ [NSFont systemFontOfSize:10.0], NSFontAttributeName,
+ [NSColor darkGrayColor], NSForegroundColorAttributeName,
+ ps, NSParagraphStyleAttributeName,
+ nil] retain];
+ static NSDictionary* detailHighlightedAttribute = [[NSDictionary dictionaryWithObjectsAndKeys:
+ [NSFont systemFontOfSize:10.0], NSFontAttributeName,
+ [NSColor whiteColor], NSForegroundColorAttributeName,
+ ps, NSParagraphStyleAttributeName,
+ nil] retain];
+ static NSDictionary* titleAttribute = [[NSDictionary dictionaryWithObject:
+ [NSFont systemFontOfSize:[NSFont systemFontSize]] forKey:NSFontAttributeName] retain];
+
+ finalString = [[[NSMutableAttributedString alloc] init] autorelease];
+
+ // Title, in bold
+ // Show the name of the source Note: use title->name instead of title->dvd since
+ // name is just the chosen folder, instead of dvd which is the full path
+ anAttributedString = [[[NSAttributedString alloc] initWithString:[NSString stringWithUTF8String:title->name] attributes:titleAttribute] autorelease];
+ [finalString appendAttributedString:anAttributedString];
+
+ if (!detail)
+ return finalString;
+
+ // Other info in plain
+ aMutableString = [NSMutableString stringWithCapacity:200];
+
+
+#if JOB_GROUPS
+ // The subtitle scan doesn't contain all the stuff we need (like x264opts).
+ // So grab the next job in the group for display purposes.
+ if (job->pass == -1)
+ {
+ // When job is the one currently being processed, then the next in its group
+ // is the the first job in the queue.
+ hb_job_t * nextjob;
+ if (job == hb_current_job(fHandle))
+ nextjob = hb_job(fHandle, 0);
+ else
+ nextjob = hb_next_job(fHandle, job);
+ if (nextjob) // Overly cautious in case there is no next job!
+ job = nextjob;
+ }
+#endif
+
+ NSString * chapterString = (job->chapter_start == job->chapter_end) ?
+ [NSString stringWithFormat:@"Chapter %d", job->chapter_start] :
+ [NSString stringWithFormat:@"Chapters %d through %d", job->chapter_start, job->chapter_end];
+
+ // Scan pass
+ if (job->pass == -1)
+ {
+ [aMutableString appendString:[NSString stringWithFormat:
+ @"\nTitle %d, %@, Pass: Scan", title->index, chapterString]];
+ }
+
+ // Normal pass
+ else
+ {
+#if JOB_GROUPS
+ [aMutableString appendString:[NSString stringWithFormat:
+ @"\nTitle %d, %@, %d-Pass",
+ title->index, chapterString, MIN( 2, job->pass + 1 )]];
+#else
+ [aMutableString appendString:[NSString stringWithFormat:
+ @"\nTitle %d, %@, Pass %d of %d",
+ title->index, chapterString, MAX( 1, job->pass ), MIN( 2, job->pass + 1 )]];
+#endif
+
+ NSString * jobFormat;
+ NSString * jobPictureDetail;
+ NSString * jobVideoDetail;
+ NSString * jobVideoCodec;
+ NSString * jobVideoQuality;
+ NSString * jobAudioDetail;
+ NSString * jobAudioCodec;
+
+ /* Muxer settings (File Format in the gui) */
+ if (job->mux == 65536 || job->mux == 131072 || job->mux == 1048576)
+ jobFormat = @"MP4"; // HB_MUX_MP4,HB_MUX_PSP,HB_MUX_IPOD
+ else if (job->mux == 262144)
+ jobFormat = @"AVI"; // HB_MUX_AVI
+ else if (job->mux == 524288)
+ jobFormat = @"OGM"; // HB_MUX_OGM
+ else if (job->mux == 2097152)
+ jobFormat = @"MKV"; // HB_MUX_MKV
+ else
+ jobFormat = @"unknown";
+
+ // 2097152
+ /* Video Codec settings (Encoder in the gui) */
+ if (job->vcodec == 1)
+ jobVideoCodec = @"FFmpeg"; // HB_VCODEC_FFMPEG
+ else if (job->vcodec == 2)
+ jobVideoCodec = @"XviD"; // HB_VCODEC_XVID
+ else if (job->vcodec == 4)
+ {
+ /* Deterimine for sure how we are now setting iPod uuid atom */
+ if (job->h264_level) // We are encoding for iPod
+ jobVideoCodec = @"x264 (H.264 iPod)"; // HB_VCODEC_X264
+ else
+ jobVideoCodec = @"x264 (H.264 Main)"; // HB_VCODEC_X264
+ }
+ else
+ jobVideoCodec = @"unknown";
+
+ /* Audio Codecs (Second half of Codecs in the gui) */
+ if (job->acodec == 256)
+ jobAudioCodec = @"AAC"; // HB_ACODEC_FAAC
+ else if (job->acodec == 512)
+ jobAudioCodec = @"MP3"; // HB_ACODEC_LAME
+ else if (job->acodec == 1024)
+ jobAudioCodec = @"Vorbis"; // HB_ACODEC_VORBIS
+ else if (job->acodec == 2048)
+ jobAudioCodec = @"AC3"; // HB_ACODEC_AC3
+ else
+ jobAudioCodec = @"unknown";
+ /* Show Basic File info */
+ if (job->chapter_markers == 1)
+ [aMutableString appendString:[NSString stringWithFormat:@"\nFormat: %@ Container, %@ Video + %@ Audio, Chapter Markers", jobFormat, jobVideoCodec, jobAudioCodec]];
+ else
+ [aMutableString appendString:[NSString stringWithFormat:@"\nFormat: %@ Container, %@ Video + %@ Audio", jobFormat, jobVideoCodec, jobAudioCodec]];
+
+ /*Picture info*/
+ /*integers for picture values deinterlace, crop[4], keep_ratio, grayscale, pixel_ratio, pixel_aspect_width, pixel_aspect_height,
+ maxWidth, maxHeight */
+ if (job->pixel_ratio == 1)
+ {
+ int titlewidth = title->width - job->crop[2] - job->crop[3];
+ int displayparwidth = titlewidth * job->pixel_aspect_width / job->pixel_aspect_height;
+ int displayparheight = title->height - job->crop[0] - job->crop[1];
+ jobPictureDetail = [NSString stringWithFormat:@"Picture: %dx%d (%dx%d Anamorphic)", displayparwidth, displayparheight, job->width, displayparheight];
+ }
+ else
+ jobPictureDetail = [NSString stringWithFormat:@"Picture: %dx%d", job->width, job->height];
+ if (job->keep_ratio == 1)
+ jobPictureDetail = [jobPictureDetail stringByAppendingString:@" Keep Aspect Ratio"];
+
+ if (job->grayscale == 1)
+ jobPictureDetail = [jobPictureDetail stringByAppendingString:@", Grayscale"];
+
+ if (job->deinterlace == 1)
+ jobPictureDetail = [jobPictureDetail stringByAppendingString:@", Deinterlace"];
+ /* Show Picture info */
+ [aMutableString appendString:[NSString stringWithFormat:@"\n%@", jobPictureDetail]];
+
+ /* Detailed Video info */
+ if (job->vquality <= 0 || job->vquality >= 1)
+ jobVideoQuality =[NSString stringWithFormat:@"%d kbps", job->vbitrate];
+ else
+ {
+ NSNumber * vidQuality;
+ vidQuality = [NSNumber numberWithInt:job->vquality * 100];
+ /* this is screwed up kind of. Needs to be formatted properly */
+ if (job->crf == 1)
+ jobVideoQuality =[NSString stringWithFormat:@"%@%% CRF", vidQuality];
+ else
+ jobVideoQuality =[NSString stringWithFormat:@"%@%% CQP", vidQuality];
+ }
+
+ if (job->vrate_base == 1126125)
+ {
+ /* NTSC FILM 23.976 */
+ jobVideoDetail = [NSString stringWithFormat:@"Video: %@, %@, 23.976 fps", jobVideoCodec, jobVideoQuality];
+ }
+ else if (job->vrate_base == 900900)
+ {
+ /* NTSC 29.97 */
+ jobVideoDetail = [NSString stringWithFormat:@"Video: %@, %@, 29.97 fps", jobVideoCodec, jobVideoQuality];
+ }
+ else
+ {
+ /* Everything else */
+ jobVideoDetail = [NSString stringWithFormat:@"Video: %@, %@, %d fps", jobVideoCodec, jobVideoQuality, job->vrate / job->vrate_base];
+ }
+
+ /* Add the video detail string to the job filed in the window */
+ [aMutableString appendString:[NSString stringWithFormat:@"\n%@", jobVideoDetail]];
+
+ /* if there is an x264 option string, lets add it here*/
+ /*NOTE: Due to size, lets get this in a tool tip*/
+
+ if (job->x264opts)
+ [aMutableString appendString:[NSString stringWithFormat:@"\nx264 Options: %@", [NSString stringWithUTF8String:job->x264opts]]];
+
+ /* Audio Detail */
+ if ([jobAudioCodec isEqualToString: @"AC3"])
+ jobAudioDetail = [NSString stringWithFormat:@"Audio: %@, Pass-Through", jobAudioCodec];
+ else
+ jobAudioDetail = [NSString stringWithFormat:@"Audio: %@, %d kbps, %d Hz", jobAudioCodec, job->abitrate, job->arate];
+
+ /* we now get the audio mixdown info for each of the two gui audio tracks */
+ /* lets do it the long way here to get a handle on things.
+ Hardcoded for two tracks for gui: audio_mixdowns[i] audio_mixdowns[i] */
+ int ai; // counter for each audios [] , macgui only allows for two audio tracks currently
+ for( ai = 0; ai < 2; ai++ )
+ {
+ if (job->audio_mixdowns[ai] == HB_AMIXDOWN_MONO)
+ jobAudioDetail = [jobAudioDetail stringByAppendingString:[NSString stringWithFormat:@", Track %d: Mono",ai + 1]];
+ if (job->audio_mixdowns[ai] == HB_AMIXDOWN_STEREO)
+ jobAudioDetail = [jobAudioDetail stringByAppendingString:[NSString stringWithFormat:@", Track %d: Stereo",ai + 1]];
+ if (job->audio_mixdowns[ai] == HB_AMIXDOWN_DOLBY)
+ jobAudioDetail = [jobAudioDetail stringByAppendingString:[NSString stringWithFormat:@", Track %d: Dolby Surround",ai + 1]];
+ if (job->audio_mixdowns[ai] == HB_AMIXDOWN_DOLBYPLII)
+ jobAudioDetail = [jobAudioDetail stringByAppendingString:[NSString stringWithFormat:@", Track %d: Dolby Pro Logic II",ai + 1]];
+ if (job->audio_mixdowns[ai] == HB_AMIXDOWN_6CH)
+ jobAudioDetail = [jobAudioDetail stringByAppendingString:[NSString stringWithFormat:@", Track %d: 6-channel discreet",ai + 1]];
+ }
+
+ /* Add the Audio detail string to the job filed in the window */
+ [aMutableString appendString:[NSString stringWithFormat: @"\n%@", jobAudioDetail]];
+
+ /*Destination Field */
+ [aMutableString appendString:[NSString stringWithFormat:@"\nDestination: %@", [NSString stringWithUTF8String:job->file]]];
+ }
+
+ anAttributedString = [[[NSAttributedString alloc] initWithString:aMutableString attributes:highlighted ? detailHighlightedAttribute : detailAttribute] autorelease];
+ [finalString appendAttributedString:anAttributedString];
+
+
+ return finalString;
+}
+
+//------------------------------------------------------------------------------------
+// Generate string to display in UI.
+//------------------------------------------------------------------------------------
+- (NSString *) progressStatusStringForJob: (hb_job_t *)job state: (hb_state_t *)s
+{
+ if (s->state == HB_STATE_WORKING)
+ {
+ if (job->pass == -1)
+ return NSLocalizedString( @"Analyzing subtitles", nil );
+ if (job->pass == 1)
+ return NSLocalizedString( @"Analyzing video", nil );
+ else if ((job->pass == 0) || (job->pass == 2))
+ return NSLocalizedString( @"Encoding movie", nil );
+ }
+ else if (s->state == HB_STATE_MUXING)
+ {
+ return NSLocalizedString( @"Muxing", nil );
+ }
+ else if (s->state == HB_STATE_PAUSED)
+ {
+ return NSLocalizedString( @"Paused", nil );
+ }
+ else if (s->state == HB_STATE_WORKDONE)
+ {
+ return NSLocalizedString( @"Done", nil );
+ }
+
+ return @"";
+}
+
+//------------------------------------------------------------------------------------
+// Generate string to display in UI.
+//------------------------------------------------------------------------------------
+- (NSString *) progressTimeRemainingStringForJob: (hb_job_t *)job state: (hb_state_t *)s
+{
+ if (s->state == HB_STATE_WORKING)
+ {
+ #define p s->param.working
+ if( p.seconds > -1 )
+ {
+ float estHours = (p.hours + (p.minutes / 60.0));
+ float estMinutes = (p.minutes + (p.seconds / 60.0));
+
+ if (estHours > 1.5)
+ return [NSString stringWithFormat:NSLocalizedString( @"Time remaining: About %d hours", nil ), lrintf(estHours)];
+ else if (estHours > 0.983) // 59 minutes
+ return NSLocalizedString( @"Time remaining: About 1 hour", nil );
+ else if (estMinutes > 1.5)
+ return [NSString stringWithFormat:NSLocalizedString( @"Time remaining: About %d minutes", nil ), lrintf(estMinutes)];
+ else if (estMinutes > 0.983) // 59 seconds
+ return NSLocalizedString( @"Time remaining: About 1 minute", nil );
+ else if (p.seconds <= 5)
+ return NSLocalizedString( @"Time remaining: Less than 5 seconds", nil );
+ else if (p.seconds <= 10)
+ return NSLocalizedString( @"Time remaining: Less than 10 seconds", nil );
+ else
+ return NSLocalizedString( @"Time remaining: Less than 1 minute", nil );
+ }
+ else
+ return NSLocalizedString( @"Time remaining: Calculating...", nil );
+ #undef p
+ }
+
+ return @"";
+}
+
+//------------------------------------------------------------------------------------
+// Refresh progress bar (fProgressBar) from current state.
+//------------------------------------------------------------------------------------
+- (void) updateProgressBarWithState: (hb_state_t *)s
+{
+ if (s->state == HB_STATE_WORKING)
+ {
+ #define p s->param.working
+ [fProgressBar setIndeterminate:NO];
+#if JOB_GROUPS
+ float progress_total = 100.0 * ( p.progress + p.job_cur - 1 ) / p.job_count;
+#else
+ float progress_total = 100.0 * p.progress;
+#endif
+ [fProgressBar setDoubleValue:progress_total];
+ #undef p
+ }
+
+ else if (s->state == HB_STATE_MUXING)
+ {
+ #define p s->param.muxing
+ [fProgressBar setIndeterminate:YES];
+ [fProgressBar startAnimation:nil];
+ #undef p
+ }
+
+ else if (s->state == HB_STATE_WORKDONE)
+ {
+ [fProgressBar setIndeterminate:NO];
+ [fProgressBar setDoubleValue:0.0];
+ }
+}
+
+//------------------------------------------------------------------------------------
+// Refresh start/pause button (fStartPauseButton) from current state.
+//------------------------------------------------------------------------------------
+- (void) updateStartPauseButton
+{
+ if (!fHandle) return;
+
+ hb_state_t s;
+ hb_get_state2 (fHandle, &s);
+
+ if (s.state == HB_STATE_PAUSED)
+ {
+ [fStartPauseButton setEnabled:YES];
+// [fStartPauseButton setTitle:NSLocalizedString(@"Resume", nil)];
+ [fStartPauseButton setImage:[NSImage imageNamed: @"Play"]];
+ }
+
+ else if ((s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING))
+ {
+ [fStartPauseButton setEnabled:YES];
+// [fStartPauseButton setTitle:NSLocalizedString(@"Pause", nil)];
+ [fStartPauseButton setImage:[NSImage imageNamed: @"Pause"]];
+ }
+
+ else if (hb_count(fHandle) > 0)
+ {
+ [fStartPauseButton setEnabled:YES];
+// [fStartPauseButton setTitle:NSLocalizedString(@"Start", nil)];
+ [fStartPauseButton setImage:[NSImage imageNamed: @"Play"]];
+ }
+
+ else
+ {
+ [fStartPauseButton setEnabled:NO];
+// [fStartPauseButton setTitle:NSLocalizedString(@"Start", nil)];
+ [fStartPauseButton setImage:[NSImage imageNamed: @"Play"]];
+ }
+}
+
+//------------------------------------------------------------------------------------
+// Refresh queue count text field (fQueueCountField).
+//------------------------------------------------------------------------------------
+- (void)updateQueueCountField
+{
+ NSString * msg;
+#if JOB_GROUPS
+ int jobCount = fHandle ? hb_group_count(fHandle) : 0;
+#else
+ int jobCount = fHandle ? hb_count(fHandle) : 0;
+#endif
+ if (jobCount == 1)
+ msg = NSLocalizedString(@"1 pending job", nil);
+ else
+ msg = [NSString stringWithFormat:NSLocalizedString(@"%d pending jobs", nil), jobCount];
+ [fQueueCountField setStringValue:msg];
+}
+
+//------------------------------------------------------------------------------------
+// Refresh the UI in the current job pane. Should be called whenever the current job
+// being processed has changed or when progress has changed.
+//------------------------------------------------------------------------------------
+- (void)updateCurrentJobUI
+{
+ hb_state_t s;
+ hb_job_t * job = nil;
+
+ if (fHandle)
+ {
+ hb_get_state( fHandle, &s );
+ job = hb_current_job(fHandle);
+ }
+
+ if (job)
+ {
+ [fJobDescTextField setAttributedStringValue:[self attributedDescriptionForJob:job withDetail:YES withHighlighting:NO]];
+
+ [self showCurrentJobPane:YES];
+ [fProgressStatus setStringValue:[self progressStatusStringForJob:job state:&s]];
+ [fProgressTimeRemaining setStringValue:[self progressTimeRemainingStringForJob:job state:&s]];
+ [self updateProgressBarWithState:&s];
+ }
+ else
+ {
+ [fJobDescTextField setStringValue:NSLocalizedString(@"No job processing", nil)];
+
+ [self showCurrentJobPane:NO];
+ [fProgressBar stopAnimation:nil]; // just in case in was animating
+ }
+}
+
+//------------------------------------------------------------------------------------
+// Refresh the UI in the queue pane. Should be called whenever the content of HB's job
+// list has changed so that HBQueueController can sync up.
+//------------------------------------------------------------------------------------
+- (void)updateQueueUI
+{
+ [fTaskView noteNumberOfRowsChanged];
+ [fTaskView reloadData];
+
+ [self updateQueueCountField];
+ [self updateStartPauseButton];
+}
+
+//------------------------------------------------------------------------------------
+// Deletes the selected job from HB and the queue UI
+//------------------------------------------------------------------------------------
+- (IBAction)removeSelectedJob: (id)sender
+{
+ if (!fHandle) return;
+
+ int row = [sender selectedRow];
+ if (row != -1)
+ {
+#if JOB_GROUPS
+ hb_rem_group( fHandle, hb_group( fHandle, row ) );
+#else
+ hb_rem( fHandle, hb_job( fHandle, row ) );
+#endif
+ [self updateQueueUI];
+ }
+}
+
+//------------------------------------------------------------------------------------
+// Prompts user if the want to cancel encoding of current job. If so, hb_stop gets
+// called.
+//------------------------------------------------------------------------------------
+- (IBAction)cancelCurrentJob: (id)sender
+{
+ if (!fHandle) return;
+
+ hb_job_t * job = hb_current_job(fHandle);
+ if (!job) return;
+
+ // If command key is down, don't prompt
+ BOOL hasCmdKeyMask = ([[NSApp currentEvent] modifierFlags] & NSCommandKeyMask) != 0;
+ if (hasCmdKeyMask)
+ hb_stop(fHandle);
+ else
+ {
+ NSString * alertTitle = [NSString stringWithFormat:NSLocalizedString(@"Do you want to stop processing of %@?", nil),
+ [NSString stringWithUTF8String:job->title->name]];
+
+ NSBeginCriticalAlertSheet(
+ alertTitle,
+ NSLocalizedString(@"Stop Processing", nil), NSLocalizedString(@"Keep Processing", nil), nil, fQueueWindow, self,
+ @selector(cancelCurrentJob:returnCode:contextInfo:), nil, nil,
+ NSLocalizedString(@"Your movie will be lost if you don't continue processing.", nil),
+ [NSString stringWithUTF8String:job->title->name]);
+
+ // cancelCurrentJob:returnCode:contextInfo: will be called when the dialog is dismissed
+ }
+}
+
+- (void) cancelCurrentJob: (NSWindow *)sheet returnCode: (int)returnCode contextInfo: (void *)contextInfo
+{
+ if (returnCode == NSAlertDefaultReturn)
+ hb_stop(fHandle);
+}
+
+//------------------------------------------------------------------------------------
+// Enables or disables the display of detail information for each job based on the
+// current value of the fDetailCheckbox control.
+//------------------------------------------------------------------------------------
+- (IBAction)detailChanged: (id)sender
+{
+ BOOL detail = [fDetailCheckbox state] == NSOnState;
+ [[NSUserDefaults standardUserDefaults] setBool:detail forKey:@"QueueShowsDetail"];
+
+ [self showDetail:detail];
+}
+
+//------------------------------------------------------------------------------------
+// Toggles the processing of jobs on or off epending on the current state
+//------------------------------------------------------------------------------------
+- (IBAction)toggleStartPause: (id)sender
+{
+ if (!fHandle) return;
+
+ hb_state_t s;
+ hb_get_state2 (fHandle, &s);
+
+ if (s.state == HB_STATE_PAUSED)
+ hb_resume (fHandle);
+ else if ((s.state == HB_STATE_WORKING) || (s.state == HB_STATE_MUXING))
+ hb_pause (fHandle);
+#if JOB_GROUPS
+ else if (hb_group_count(fHandle) > 0)
+#else
+ else if (hb_count(fHandle) > 0)
+#endif
+ hb_start (fHandle);
+}
+
+//------------------------------------------------------------------------------------
+// awakeFromNib
+//------------------------------------------------------------------------------------
+- (void)awakeFromNib
+{
+ if (![fQueueWindow setFrameUsingName:@"Queue"])
+ [fQueueWindow center];
+ [fQueueWindow setFrameAutosaveName: @"Queue"];
+
+ // Show/hide UI elements
+ [self showDetail:[[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsDetail"]];
+ [self showCurrentJobPane:NO];
+}
+
+
+//------------------------------------------------------------------------------------
+// windowWillClose
+//------------------------------------------------------------------------------------
+- (void)windowWillClose:(NSNotification *)aNotification
+{
+ [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"QueueWindowIsOpen"];
+}
+
+//------------------------------------------------------------------------------------
+// NSTableView delegate
+//------------------------------------------------------------------------------------
+- (int)numberOfRowsInTableView: (NSTableView *)aTableView
+{
+#if JOB_GROUPS
+ return fHandle ? hb_group_count(fHandle) : 0;
+#else
+ return fHandle ? hb_count(fHandle) : 0;
+#endif
+}
+
+//------------------------------------------------------------------------------------
+// NSTableView delegate
+//------------------------------------------------------------------------------------
+- (id)tableView: (NSTableView *)aTableView
+ objectValueForTableColumn: (NSTableColumn *)aTableColumn
+ row: (int)rowIndex
+{
+ if (!fHandle)
+ return @""; // fatal error!
+
+ hb_job_t * job;
+#if JOB_GROUPS
+ job = hb_group(fHandle, rowIndex);
+#else
+ job = hb_job(fHandle, rowIndex);
+#endif
+ if (!job)
+ return @""; // fatal error!
+
+ if ([[aTableColumn identifier] isEqualToString:@"desc"])
+ {
+ BOOL highlighted = [aTableView isRowSelected:rowIndex] && [[aTableView window] isKeyWindow] && ([[aTableView window] firstResponder] == aTableView);
+ BOOL showDetail = [fDetailCheckbox state] == NSOnState;
+ return [self attributedDescriptionForJob:job withDetail:showDetail withHighlighting:highlighted];
+ }
+
+ else if ([[aTableColumn identifier] isEqualToString:@"delete"])
+ return @"";
+
+ else if ([[aTableColumn identifier] isEqualToString:@"icon"])
+ return [NSImage imageNamed:@"JobSmall"];
+
+ return @"";
+}
+
+//------------------------------------------------------------------------------------
+// NSTableView delegate
+//------------------------------------------------------------------------------------
+- (void)tableView: (NSTableView *)aTableView
+ willDisplayCell: (id)aCell
+ forTableColumn: (NSTableColumn *)aTableColumn
+ row: (int)rowIndex
+{
+ if ([[aTableColumn identifier] isEqualToString:@"delete"])
+ {
+ BOOL highlighted = [aTableView isRowSelected:rowIndex] && [[aTableView window] isKeyWindow] && ([[aTableView window] firstResponder] == aTableView);
+ if (highlighted)
+ {
+ [aCell setImage:[NSImage imageNamed:@"DeleteHighlight"]];
+ [aCell setAlternateImage:[NSImage imageNamed:@"DeleteHighlightPressed"]];
+ }
+ else
+ {
+ [aCell setImage:[NSImage imageNamed:@"Delete"]];
+ }
+ }
+}
+
+@end
diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj
index fe3dbdc39..06cf508a1 100644
--- a/macosx/HandBrake.xcodeproj/project.pbxproj
+++ b/macosx/HandBrake.xcodeproj/project.pbxproj
@@ -88,14 +88,12 @@
4DD93F8F082036E8008E1322 /* Controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DF3C8CB052889CD00A80101 /* Controller.h */; };
4DD93F90082036E8008E1322 /* PictureGLView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D85758F052B78E300C39CA9 /* PictureGLView.h */; };
4DD93F92082036E8008E1322 /* PictureController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D1FD381073D19CE00E46515 /* PictureController.h */; };
- 4DD93F93082036E8008E1322 /* QueueController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DD27BA507C0065C0023D231 /* QueueController.h */; };
4DD93F96082036E8008E1322 /* MainMenu.nib in Resources */ = {isa = PBXBuildFile; fileRef = 29B97318FDCFA39411CA2CEA /* MainMenu.nib */; };
4DD93F97082036E8008E1322 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; };
4DD93F9A082036E8008E1322 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.mm */; settings = {ATTRIBUTES = (); }; };
4DD93F9B082036E8008E1322 /* Controller.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4DF3C8CC052889CD00A80101 /* Controller.mm */; };
4DD93F9C082036E8008E1322 /* PictureGLView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4D85758E052B78E300C39CA9 /* PictureGLView.mm */; };
4DD93F9E082036E8008E1322 /* PictureController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4D1FD382073D19CE00E46515 /* PictureController.mm */; };
- 4DD93F9F082036E8008E1322 /* QueueController.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4DD27BA607C0065C0023D231 /* QueueController.mm */; };
4DD93FA2082036E8008E1322 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
4DD93FA3082036E8008E1322 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DEB2024052B055F00C39CA9 /* IOKit.framework */; };
4DD93FA4082036E8008E1322 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DDE9724052B7B2B00C39CA9 /* OpenGL.framework */; };
@@ -128,6 +126,15 @@
A2DFC6770C61980700E66E89 /* MVMenuButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A2DFC6760C61980700E66E89 /* MVMenuButton.m */; };
B48359A80C82960500E04440 /* lang.c in Sources */ = {isa = PBXBuildFile; fileRef = B48359A70C82960500E04440 /* lang.c */; };
D4D49FED0C83355600F01215 /* lang.c in Sources */ = {isa = PBXBuildFile; fileRef = B48359A70C82960500E04440 /* lang.c */; };
+ E3003C7F0C88505D0072F2A8 /* DeleteHighlightPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = E3003C7E0C88505D0072F2A8 /* DeleteHighlightPressed.png */; };
+ E3003CB50C8852B70072F2A8 /* DeletePressed.png in Resources */ = {isa = PBXBuildFile; fileRef = E3003CB40C8852B70072F2A8 /* DeletePressed.png */; };
+ E37C89410C83988F00C1B919 /* DeleteHighlight.png in Resources */ = {isa = PBXBuildFile; fileRef = E37C893D0C83988F00C1B919 /* DeleteHighlight.png */; };
+ E37C89420C83988F00C1B919 /* Delete.png in Resources */ = {isa = PBXBuildFile; fileRef = E37C893E0C83988F00C1B919 /* Delete.png */; };
+ E37C89430C83988F00C1B919 /* JobSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = E37C893F0C83988F00C1B919 /* JobSmall.png */; };
+ E37C89440C83988F00C1B919 /* JobLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = E37C89400C83988F00C1B919 /* JobLarge.png */; };
+ E37C89470C83989F00C1B919 /* HBQueueController.mm in Sources */ = {isa = PBXBuildFile; fileRef = E37C89450C83989F00C1B919 /* HBQueueController.mm */; };
+ E37C89480C83989F00C1B919 /* HBQueueController.h in Headers */ = {isa = PBXBuildFile; fileRef = E37C89460C83989F00C1B919 /* HBQueueController.h */; };
+ E37C894F0C8398CF00C1B919 /* Queue.nib in Resources */ = {isa = PBXBuildFile; fileRef = E37C894D0C8398CF00C1B919 /* Queue.nib */; };
EAA526930C3B25D200944FF2 /* stream.c in Sources */ = {isa = PBXBuildFile; fileRef = EAA526920C3B25D200944FF2 /* stream.c */; };
EAA526940C3B25D200944FF2 /* stream.c in Sources */ = {isa = PBXBuildFile; fileRef = EAA526920C3B25D200944FF2 /* stream.c */; };
FC8519500C59A02C0073812C /* denoise.c in Sources */ = {isa = PBXBuildFile; fileRef = FC85194C0C59A02C0073812C /* denoise.c */; };
@@ -236,8 +243,6 @@
4D3ECC2609A4917000B2E45F /* WhiteBox.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = WhiteBox.m; sourceTree = "<group>"; };
4D85758E052B78E300C39CA9 /* PictureGLView.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = PictureGLView.mm; sourceTree = "<group>"; };
4D85758F052B78E300C39CA9 /* PictureGLView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = PictureGLView.h; sourceTree = "<group>"; };
- 4DD27BA507C0065C0023D231 /* QueueController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = QueueController.h; sourceTree = "<group>"; };
- 4DD27BA607C0065C0023D231 /* QueueController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = QueueController.mm; sourceTree = "<group>"; };
4DDE9724052B7B2B00C39CA9 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
4DEB2024052B055F00C39CA9 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /System/Library/Frameworks/IOKit.framework; sourceTree = "<absolute>"; };
4DF3C8CB052889CD00A80101 /* Controller.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Controller.h; sourceTree = "<group>"; };
@@ -269,6 +274,15 @@
A2DFC6740C6197C600E66E89 /* MVMenuButton.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = MVMenuButton.h; sourceTree = "<group>"; };
A2DFC6760C61980700E66E89 /* MVMenuButton.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = MVMenuButton.m; sourceTree = "<group>"; };
B48359A70C82960500E04440 /* lang.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = lang.c; path = ../libhb/lang.c; sourceTree = SOURCE_ROOT; };
+ E3003C7E0C88505D0072F2A8 /* DeleteHighlightPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeleteHighlightPressed.png; sourceTree = "<group>"; };
+ E3003CB40C8852B70072F2A8 /* DeletePressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeletePressed.png; sourceTree = "<group>"; };
+ E37C893D0C83988F00C1B919 /* DeleteHighlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DeleteHighlight.png; sourceTree = "<group>"; };
+ E37C893E0C83988F00C1B919 /* Delete.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Delete.png; sourceTree = "<group>"; };
+ E37C893F0C83988F00C1B919 /* JobSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobSmall.png; sourceTree = "<group>"; };
+ E37C89400C83988F00C1B919 /* JobLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobLarge.png; sourceTree = "<group>"; };
+ E37C89450C83989F00C1B919 /* HBQueueController.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = HBQueueController.mm; sourceTree = "<group>"; };
+ E37C89460C83989F00C1B919 /* HBQueueController.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = HBQueueController.h; sourceTree = "<group>"; };
+ E37C894E0C8398CF00C1B919 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/Queue.nib; sourceTree = "<group>"; };
EAA526920C3B25D200944FF2 /* stream.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = stream.c; path = ../libhb/stream.c; sourceTree = SOURCE_ROOT; };
FC85194C0C59A02C0073812C /* denoise.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = denoise.c; path = ../libhb/denoise.c; sourceTree = SOURCE_ROOT; };
FC85194D0C59A02C0073812C /* deinterlace.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = deinterlace.c; path = ../libhb/deinterlace.c; sourceTree = SOURCE_ROOT; };
@@ -369,6 +383,7 @@
2538860A0BFE0B730064E995 /* OutputPanel.nib */,
25DE1FAB0C1699E500F01FC8 /* Preferences.nib */,
4D1EA3000993B13700FDC1A2 /* Express.nib */,
+ E37C894D0C8398CF00C1B919 /* Queue.nib */,
);
name = Resources;
sourceTree = "<group>";
@@ -452,8 +467,6 @@
4DF3C8CC052889CD00A80101 /* Controller.mm */,
4D85758E052B78E300C39CA9 /* PictureGLView.mm */,
4D85758F052B78E300C39CA9 /* PictureGLView.h */,
- 4DD27BA507C0065C0023D231 /* QueueController.h */,
- 4DD27BA607C0065C0023D231 /* QueueController.mm */,
4D3ECC2509A4917000B2E45F /* WhiteBox.h */,
4D3ECC2609A4917000B2E45F /* WhiteBox.m */,
593034E90BBA39A100172349 /* ChapterTitles.h */,
@@ -466,6 +479,8 @@
253886160BFE0C160064E995 /* HBOutputPanelController.m */,
25DE1FB40C169A0C00F01FC8 /* HBPreferencesController.h */,
25DE1FB50C169A0C00F01FC8 /* HBPreferencesController.m */,
+ E37C89460C83989F00C1B919 /* HBQueueController.h */,
+ E37C89450C83989F00C1B919 /* HBQueueController.mm */,
);
name = "HandBrake Sources";
sourceTree = "<group>";
@@ -495,6 +510,12 @@
A273E04B0C57B39A00493A45 /* Play.tiff */,
A273E04C0C57B39A00493A45 /* Stop.tiff */,
A273E04D0C57B39A00493A45 /* Terminal.tiff */,
+ E37C893E0C83988F00C1B919 /* Delete.png */,
+ E3003CB40C8852B70072F2A8 /* DeletePressed.png */,
+ E37C893D0C83988F00C1B919 /* DeleteHighlight.png */,
+ E3003C7E0C88505D0072F2A8 /* DeleteHighlightPressed.png */,
+ E37C89400C83988F00C1B919 /* JobLarge.png */,
+ E37C893F0C83988F00C1B919 /* JobSmall.png */,
);
path = icons;
sourceTree = "<group>";
@@ -525,11 +546,11 @@
4DD93F8F082036E8008E1322 /* Controller.h in Headers */,
4DD93F90082036E8008E1322 /* PictureGLView.h in Headers */,
4DD93F92082036E8008E1322 /* PictureController.h in Headers */,
- 4DD93F93082036E8008E1322 /* QueueController.h in Headers */,
A2A1EC310C76C35E00827E0D /* HBDVDDetector.h in Headers */,
253886010BFE0A5B0064E995 /* HBOutputRedirect.h in Headers */,
253886170BFE0C160064E995 /* HBOutputPanelController.h in Headers */,
25DE1FB60C169A0C00F01FC8 /* HBPreferencesController.h in Headers */,
+ E37C89480C83989F00C1B919 /* HBQueueController.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -676,6 +697,13 @@
A28468680C5A43D900EF9A98 /* Disc.tiff in Resources */,
A2DFC66E0C6196D900E66E89 /* actionWidget.png in Resources */,
A2DFC66F0C6196D900E66E89 /* actionWidgetPressed.png in Resources */,
+ E37C89410C83988F00C1B919 /* DeleteHighlight.png in Resources */,
+ E37C89420C83988F00C1B919 /* Delete.png in Resources */,
+ E37C89430C83988F00C1B919 /* JobSmall.png in Resources */,
+ E37C89440C83988F00C1B919 /* JobLarge.png in Resources */,
+ E37C894F0C8398CF00C1B919 /* Queue.nib in Resources */,
+ E3003C7F0C88505D0072F2A8 /* DeleteHighlightPressed.png in Resources */,
+ E3003CB50C8852B70072F2A8 /* DeletePressed.png in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -799,12 +827,12 @@
4DD93F9B082036E8008E1322 /* Controller.mm in Sources */,
4DD93F9C082036E8008E1322 /* PictureGLView.mm in Sources */,
4DD93F9E082036E8008E1322 /* PictureController.mm in Sources */,
- 4DD93F9F082036E8008E1322 /* QueueController.mm in Sources */,
A2A1EC3A0C76C58400827E0D /* HBDVDDetector.m in Sources */,
253886020BFE0A5B0064E995 /* HBOutputRedirect.m in Sources */,
253886180BFE0C160064E995 /* HBOutputPanelController.m in Sources */,
25DE1FB70C169A0C00F01FC8 /* HBPreferencesController.m in Sources */,
A2DFC6770C61980700E66E89 /* MVMenuButton.m in Sources */,
+ E37C89470C83989F00C1B919 /* HBQueueController.mm in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -861,6 +889,14 @@
name = MainMenu.nib;
sourceTree = "<group>";
};
+ E37C894D0C8398CF00C1B919 /* Queue.nib */ = {
+ isa = PBXVariantGroup;
+ children = (
+ E37C894E0C8398CF00C1B919 /* English */,
+ );
+ name = Queue.nib;
+ sourceTree = "<group>";
+ };
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
@@ -1274,6 +1310,7 @@
ppc,
i386,
);
+ GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1";
MACOSX_DEPLOYMENT_TARGET = 10.3;
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
};
@@ -1288,7 +1325,7 @@
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = s;
+ GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "";
HEADER_SEARCH_PATHS = "$(PROJECT_DIR)/../contrib/include";
@@ -1505,7 +1542,7 @@
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
GCC_MODEL_TUNING = G5;
- GCC_OPTIMIZATION_LEVEL = s;
+ GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
HEADER_SEARCH_PATHS = ../libhb;
@@ -1654,7 +1691,6 @@
GCC_DYNAMIC_NO_PIC = YES;
GCC_ENABLE_FIX_AND_CONTINUE = NO;
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
- GCC_OPTIMIZATION_LEVEL = s;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
HEADER_SEARCH_PATHS = (
../libhb,
@@ -1814,6 +1850,7 @@
GCC_DEBUGGING_SYMBOLS = default;
GCC_ENABLE_FIX_AND_CONTINUE = YES;
GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1";
MACOSX_DEPLOYMENT_TARGET = 10.3;
PREBINDING = NO;
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
@@ -1824,6 +1861,7 @@
4D4E7BC6087804870051572B /* Deployment */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1";
MACOSX_DEPLOYMENT_TARGET = 10.3;
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
};
@@ -1832,6 +1870,7 @@
4D4E7BC7087804870051572B /* Default */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ GCC_PREPROCESSOR_DEFINITIONS = "JOB_GROUPS=1";
MACOSX_DEPLOYMENT_TARGET = 10.3;
SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk;
};
diff --git a/macosx/icons/Delete.png b/macosx/icons/Delete.png
new file mode 100644
index 000000000..1568f0610
--- /dev/null
+++ b/macosx/icons/Delete.png
Binary files differ
diff --git a/macosx/icons/DeleteHighlight.png b/macosx/icons/DeleteHighlight.png
new file mode 100644
index 000000000..a24df6bc1
--- /dev/null
+++ b/macosx/icons/DeleteHighlight.png
Binary files differ
diff --git a/macosx/icons/DeleteHighlightPressed.png b/macosx/icons/DeleteHighlightPressed.png
new file mode 100644
index 000000000..0873028ae
--- /dev/null
+++ b/macosx/icons/DeleteHighlightPressed.png
Binary files differ
diff --git a/macosx/icons/DeletePressed.png b/macosx/icons/DeletePressed.png
new file mode 100644
index 000000000..f4995c4c8
--- /dev/null
+++ b/macosx/icons/DeletePressed.png
Binary files differ
diff --git a/macosx/icons/JobLarge.png b/macosx/icons/JobLarge.png
new file mode 100644
index 000000000..5b9c18f83
--- /dev/null
+++ b/macosx/icons/JobLarge.png
Binary files differ
diff --git a/macosx/icons/JobSmall.png b/macosx/icons/JobSmall.png
new file mode 100644
index 000000000..9467aefd8
--- /dev/null
+++ b/macosx/icons/JobSmall.png
Binary files differ