diff options
-rw-r--r-- | macosx/Controller.h | 9 | ||||
-rw-r--r-- | macosx/Controller.mm | 426 | ||||
-rw-r--r-- | macosx/English.lproj/Queue.nib/classes.nib | 13 | ||||
-rw-r--r-- | macosx/English.lproj/Queue.nib/info.nib | 2 | ||||
-rw-r--r-- | macosx/English.lproj/Queue.nib/keyedobjects.nib | 1406 | ||||
-rw-r--r-- | macosx/HBQueueController.h | 22 | ||||
-rw-r--r-- | macosx/HBQueueController.mm | 953 | ||||
-rw-r--r-- | macosx/HandBrake.xcodeproj/project.pbxproj | 58 | ||||
-rw-r--r-- | macosx/icons/Detail.png | bin | 0 -> 1808 bytes | |||
-rw-r--r-- | macosx/icons/DetailPressed.png | bin | 0 -> 4164 bytes | |||
-rw-r--r-- | macosx/icons/JobPassFirstLarge.png | bin | 0 -> 620 bytes | |||
-rw-r--r-- | macosx/icons/JobPassFirstSmall.png | bin | 0 -> 280 bytes | |||
-rw-r--r-- | macosx/icons/JobPassSecondLarge.png | bin | 0 -> 923 bytes | |||
-rw-r--r-- | macosx/icons/JobPassSecondSmall.png | bin | 0 -> 322 bytes | |||
-rw-r--r-- | macosx/icons/JobPassSubtitleLarge.png | bin | 0 -> 1051 bytes | |||
-rw-r--r-- | macosx/icons/JobPassSubtitleSmall.png | bin | 0 -> 333 bytes | |||
-rw-r--r-- | macosx/icons/JobPassUnknownLarge.png | bin | 0 -> 454 bytes | |||
-rw-r--r-- | macosx/icons/JobPassUnknownSmall.png | bin | 0 -> 234 bytes |
18 files changed, 1329 insertions, 1560 deletions
diff --git a/macosx/Controller.h b/macosx/Controller.h index dd985a7b1..807e08ff7 100644 --- a/macosx/Controller.h +++ b/macosx/Controller.h @@ -221,6 +221,10 @@ - (IBAction) openMainWindow: (id) sender; - (IBAction) addToQueue: (id) sender; +- (void) overwriteAddToQueueAlertDone: (NSWindow *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo; +- (void) doAddToQueue; + - (IBAction) showQueueWindow:(id)sender; - (IBAction)showPreferencesWindow:(id)sender; @@ -230,10 +234,9 @@ returnCode: (int) returnCode contextInfo: (void *) contextInfo; - (void) updateAlertDone: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo; -- (void) _Rip; +- (void) doRip; + - (IBAction) Cancel: (id) sender; -- (void) _Cancel: (NSWindow *) sheet returnCode: (int) returnCode - contextInfo: (void *) contextInfo; - (IBAction) Pause: (id) sender; - (IBAction) calculateBitrate: (id) sender; diff --git a/macosx/Controller.mm b/macosx/Controller.mm index 297eaf7e2..86d18ff13 100644 --- a/macosx/Controller.mm +++ b/macosx/Controller.mm @@ -51,23 +51,6 @@ static NSString * AddToQueueIdentifier = @"Add to Queue Ite static NSString * ShowActivityIdentifier = @"Debug Output Item Identifier"; static NSString * ChooseSourceIdentifier = @"Choose Source Item Identifier"; -/** - * 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; -} /******************************* * HBController implementation * @@ -101,6 +84,7 @@ static int hb_group_count(hb_handle_t * h) /* Init others controllers */ [fPictureController SetHandle: fHandle]; [fQueueController setHandle: fHandle]; + [fQueueController setHBController: self]; fChapterTitlesDelegate = [[ChapterTitles alloc] init]; [fChapterTable setDataSource:fChapterTitlesDelegate]; @@ -433,7 +417,7 @@ static int hb_group_count(hb_handle_t * h) { return [NSArray arrayWithObjects: StartEncodingIdentifier, PauseEncodingIdentifier, AddToQueueIdentifier, ChooseSourceIdentifier, ShowQueueIdentifier, ShowActivityIdentifier, ToggleDrawerIdentifier, - NSToolbarCustomizeToolbarItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, NSToolbarSpaceItemIdentifier, + NSToolbarCustomizeToolbarItemIdentifier, NSToolbarFlexibleSpaceItemIdentifier, NSToolbarSpaceItemIdentifier, NSToolbarSeparatorItemIdentifier, nil]; } @@ -451,9 +435,9 @@ static int hb_group_count(hb_handle_t * h) if ([ident isEqualToString: StartEncodingIdentifier]) { [toolbarItem setImage: [NSImage imageNamed: @"Stop"]]; - [toolbarItem setLabel: @"Cancel"]; - [toolbarItem setPaletteLabel: @"Cancel"]; - [toolbarItem setToolTip: @"Cancel Encoding"]; + [toolbarItem setLabel: @"Stop"]; + [toolbarItem setPaletteLabel: @"Stop"]; + [toolbarItem setToolTip: @"Stop Encoding"]; return YES; } if ([ident isEqualToString: PauseEncodingIdentifier]) @@ -490,7 +474,10 @@ static int hb_group_count(hb_handle_t * h) if ([ident isEqualToString: StartEncodingIdentifier]) { [toolbarItem setImage: [NSImage imageNamed: @"Play"]]; - [toolbarItem setLabel: @"Start"]; + if (hb_count(fHandle) > 0) + [toolbarItem setLabel: @"Start Queue"]; + else + [toolbarItem setLabel: @"Start"]; [toolbarItem setPaletteLabel: @"Start Encoding"]; [toolbarItem setToolTip: @"Start Encoding"]; return YES; @@ -707,8 +694,6 @@ static int hb_group_count(hb_handle_t * h) [self showNewScan: NULL]; } - BOOL jobGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; - hb_state_t s; hb_get_state( fHandle, &s ); @@ -768,7 +753,7 @@ static int hb_group_count(hb_handle_t * h) [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 + // that now. This code used to be in doRip. I moved it to here to handle // the case where hb_start is called by HBQueueController and not from // HBController. if (!fRipIndicatorShown) @@ -832,6 +817,27 @@ static int hb_group_count(hb_handle_t * h) case HB_STATE_WORKDONE: { + // HB_STATE_WORKDONE happpens as a result of hblib finishing all its jobs + // or someone calling hb_stop. In the latter case, hb_stop does not clear + // out the remaining passes/jobs in the queue. We'll do that here. + + // Delete all remaining scans of this job, ie, delete whole encodes. + 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); + fEncodeState = 1; + // Validate the toolbar (hack). The toolbar will usually get autovalidated + // before we had the chance to restart the queue, hence it will now be in + // the wrong state. + [toolbar validateVisibleItems]; + break; + } + [fStatusField setStringValue: _( @"Done." )]; [fRipIndicator setIndeterminate: NO]; [fRipIndicator setDoubleValue: 0.0]; @@ -840,21 +846,6 @@ static int hb_group_count(hb_handle_t * h) /* Restore dock icon */ [self UpdateDockIcon: -1.0]; - if (jobGroups) - { - // Delete all remaining scans of this job - 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; - } - if (fRipIndicatorShown) { NSRect frame = [fWindow frame]; @@ -888,7 +879,7 @@ static int hb_group_count(hb_handle_t * h) /*On Screen Notification*/ int status; NSBeep(); - status = NSRunAlertPanel(@"Put down that cocktail...",@"your HandBrake encode is done!", @"OK", nil, nil); + status = NSRunAlertPanel(@"Put down that cocktail...",@"Your HandBrake encode is done!", @"OK", nil, nil); [NSApp requestUserAttention:NSCriticalRequest]; if ( status == NSAlertDefaultReturn ) { @@ -943,12 +934,12 @@ static int hb_group_count(hb_handle_t * h) } /* Lets show the queue status here in the main window */ - int queue_count = jobGroups ? hb_group_count( fHandle ) : hb_count( fHandle ); + int queue_count = hb_count( fHandle ); if( queue_count ) { [fQueueStatus setStringValue: [NSString stringWithFormat: - @"%d task%s in the queue", - queue_count, ( queue_count > 1 ) ? "s" : ""]]; + @"%d pass%s in the queue", + queue_count, ( queue_count > 1 ) ? "es" : ""]]; } else { @@ -1540,114 +1531,142 @@ static int hb_group_count(hb_handle_t * h) +/* addToQueue: puts up an alert before ultimately calling doAddToQueue +*/ - (IBAction) addToQueue: (id) sender { -/* We get the destination directory from the destingation field here */ + /* We get the destination directory from the destination field here */ NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; /* We check for a valid destination here */ if ([[NSFileManager defaultManager] fileExistsAtPath:destinationDirectory] == 0) { NSRunAlertPanel(@"Warning!", @"This is not a valid destination directory!", @"OK", nil, nil); + return; } - else - { - - hb_list_t * list = hb_get_titles( fHandle ); - hb_title_t * title = (hb_title_t *) hb_list_item( list, - [fSrcTitlePopUp indexOfSelectedItem] ); - hb_job_t * job = title->job; - - // Assign a sequence number, starting at zero, to each job added so they can - // be lumped together in the UI. - job->sequence_id = -1; - - [self PrepareJob]; - - /* Destination file */ - job->file = [[fDstFile2Field stringValue] UTF8String]; - if( [fSubForcedCheck state] == NSOnState ) - { - job->subtitle_force = 1; - } else { - job->subtitle_force = 0; - } + /* We check for duplicate name here */ + if( [[NSFileManager defaultManager] fileExistsAtPath: + [fDstFile2Field stringValue]] ) + { + NSBeginCriticalAlertSheet( _( @"File already exists" ), + _( @"Cancel" ), _( @"Overwrite" ), NULL, fWindow, self, + @selector( overwriteAddToQueueAlertDone:returnCode:contextInfo: ), + NULL, NULL, [NSString stringWithFormat: + _( @"Do you want to overwrite %@?" ), + [fDstFile2Field stringValue]] ); + // overwriteAddToQueueAlertDone: will be called when the alert is dismissed. + } + else + { + [self doAddToQueue]; + } +} - /* - * subtitle of -1 is a scan - */ - if( job->subtitle == -1 ) - { - char *x264opts_tmp; - - /* - * When subtitle scan is enabled do a fast pre-scan job - * which will determine which subtitles to enable, if any. - */ - job->pass = -1; - x264opts_tmp = job->x264opts; - job->subtitle = -1; - - job->x264opts = NULL; - - job->indepth_scan = 1; - - job->select_subtitle = (hb_subtitle_t**)malloc(sizeof(hb_subtitle_t*)); - *(job->select_subtitle) = NULL; - - /* - * Add the pre-scan job - */ - job->sequence_id++; // for job grouping - hb_add( fHandle, job ); - - job->x264opts = x264opts_tmp; - } else { - job->select_subtitle = NULL; - } +/* overwriteAddToQueueAlertDone: called from the alert posted by addToQueue that asks + the user if they want to overwrite an exiting movie file. +*/ +- (void) overwriteAddToQueueAlertDone: (NSWindow *) sheet + returnCode: (int) returnCode contextInfo: (void *) contextInfo +{ + if( returnCode == NSAlertAlternateReturn ) + [self doAddToQueue]; +} - /* No subtitle were selected, so reset the subtitle to -1 (which before - * this point meant we were scanning - */ - if( job->subtitle == -2 ) - { - job->subtitle = -1; - } +- (void) doAddToQueue +{ + hb_list_t * list = hb_get_titles( fHandle ); + hb_title_t * title = (hb_title_t *) hb_list_item( list, [fSrcTitlePopUp indexOfSelectedItem] ); + hb_job_t * job = title->job; - if( [fVidTwoPassCheck state] == NSOnState ) - { - hb_subtitle_t **subtitle_tmp = job->select_subtitle; - job->indepth_scan = 0; + // Assign a sequence number, starting at zero, to each job added so they can + // be lumped together in the UI. + job->sequence_id = -1; - job->pass = 1; - job->sequence_id++; // for job grouping - hb_add( fHandle, job ); - - job->pass = 2; - job->sequence_id++; // for job grouping - - job->x264opts = (char *)calloc(1024, 1); /* Fixme, this just leaks */ - strcpy(job->x264opts, [[fAdvancedOptions optionsString] UTF8String]); + [self PrepareJob]; - job->select_subtitle = subtitle_tmp; + /* Destination file */ + job->file = [[fDstFile2Field stringValue] UTF8String]; - hb_add( fHandle, job ); - } - else - { - job->indepth_scan = 0; - job->pass = 0; - job->sequence_id++; // for job grouping - hb_add( fHandle, job ); - } + if( [fSubForcedCheck state] == NSOnState ) + job->subtitle_force = 1; + else + job->subtitle_force = 0; + + /* + * subtitle of -1 is a scan + */ + if( job->subtitle == -1 ) + { + char *x264opts_tmp; + + /* + * When subtitle scan is enabled do a fast pre-scan job + * which will determine which subtitles to enable, if any. + */ + job->pass = -1; + x264opts_tmp = job->x264opts; + job->subtitle = -1; + + job->x264opts = NULL; + + job->indepth_scan = 1; + + job->select_subtitle = (hb_subtitle_t**)malloc(sizeof(hb_subtitle_t*)); + *(job->select_subtitle) = NULL; + + /* + * Add the pre-scan job + */ + job->sequence_id++; // for job grouping + hb_add( fHandle, job ); + + job->x264opts = x264opts_tmp; + } + else + job->select_subtitle = NULL; + + /* No subtitle were selected, so reset the subtitle to -1 (which before + * this point meant we were scanning + */ + if( job->subtitle == -2 ) + job->subtitle = -1; + + if( [fVidTwoPassCheck state] == NSOnState ) + { + hb_subtitle_t **subtitle_tmp = job->select_subtitle; + job->indepth_scan = 0; + + job->pass = 1; + job->sequence_id++; // for job grouping + hb_add( fHandle, job ); + + job->pass = 2; + job->sequence_id++; // for job grouping + + job->x264opts = (char *)calloc(1024, 1); /* Fixme, this just leaks */ + strcpy(job->x264opts, [[fAdvancedOptions optionsString] UTF8String]); + + job->select_subtitle = subtitle_tmp; + + hb_add( fHandle, job ); + } + else + { + job->indepth_scan = 0; + job->pass = 0; + job->sequence_id++; // for job grouping + hb_add( fHandle, job ); + } + NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; [[NSUserDefaults standardUserDefaults] setObject:destinationDirectory forKey:@"LastDestinationDirectory"]; /* Lets try to update stuff, taken from remove in the queue controller */ [fQueueController performSelectorOnMainThread: @selector( updateQueueUI ) withObject: NULL waitUntilDone: NO]; - } } +/* Rip: puts up an alert before ultimately calling doRip +*/ - (IBAction) Rip: (id) sender { /* Rip or Cancel ? */ @@ -1659,17 +1678,26 @@ static int hb_group_count(hb_handle_t * h) [self Cancel: sender]; return; } - /* if there is no job in the queue, then add it to the queue and rip - otherwise, there are already jobs in queue, so just rip the queue */ - int count = hb_count( fHandle ); - if( count < 1 ) - { - [self addToQueue: sender]; - } - /* We check for duplicate name here */ - if( [[NSFileManager defaultManager] fileExistsAtPath: - [fDstFile2Field stringValue]] ) + // If there are jobs in the queue, then this is a rip the queue + + if (hb_count( fHandle ) > 0) + { + [self doRip]; + return; + } + + // Before adding jobs to the queue, check for a valid destination. + + NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; + if ([[NSFileManager defaultManager] fileExistsAtPath:destinationDirectory] == 0) + { + NSRunAlertPanel(@"Warning!", @"This is not a valid destination directory!", @"OK", nil, nil); + return; + } + + /* We check for duplicate name here */ + if( [[NSFileManager defaultManager] fileExistsAtPath:[fDstFile2Field stringValue]] ) { NSBeginCriticalAlertSheet( _( @"File already exists" ), _( @"Cancel" ), _( @"Overwrite" ), NULL, fWindow, self, @@ -1677,31 +1705,34 @@ static int hb_group_count(hb_handle_t * h) NULL, NULL, [NSString stringWithFormat: _( @"Do you want to overwrite %@?" ), [fDstFile2Field stringValue]] ); - return; + + // overWriteAlertDone: will be called when the alert is dismissed. It will call doRip. + } + else + { + [self doRip]; } - /* We get the destination directory from the destination field here */ - NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; - /* We check for a valid destination here */ - if ([[NSFileManager defaultManager] fileExistsAtPath:destinationDirectory] == 0) - { - NSRunAlertPanel(@"Warning!", @"This is not a valid destination directory!", @"OK", nil, nil); - } - else - { - [[NSUserDefaults standardUserDefaults] setObject:destinationDirectory forKey:@"LastDestinationDirectory"]; - [self _Rip]; - } - - - } +/* overWriteAlertDone: called from the alert posted by Rip: that asks the user if they + want to overwrite an exiting movie file. +*/ - (void) overWriteAlertDone: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo { if( returnCode == NSAlertAlternateReturn ) { - [self _Rip]; + /* if there is no job in the queue, then add it to the queue and rip + otherwise, there are already jobs in queue, so just rip the queue */ + int count = hb_count( fHandle ); + if( count == 0 ) + { + [self doAddToQueue]; + } + + NSString *destinationDirectory = [[fDstFile2Field stringValue] stringByDeletingLastPathComponent]; + [[NSUserDefaults standardUserDefaults] setObject:destinationDirectory forKey:@"LastDestinationDirectory"]; + [self doRip]; } } @@ -1721,7 +1752,7 @@ static int hb_group_count(hb_handle_t * h) [NSApp terminate: self]; } -- (void) _Rip +- (void) doRip { /* Let libhb do the job */ hb_start( fHandle ); @@ -1729,25 +1760,82 @@ static int hb_group_count(hb_handle_t * h) fEncodeState = 1; } -- (IBAction) Cancel: (id) sender + + + + +//------------------------------------------------------------------------------------ +// Cancels the current job and proceeds with the next one in the queue. +//------------------------------------------------------------------------------------ +- (void) doCancelCurrentJob { - NSBeginCriticalAlertSheet( _( @"Cancel - Are you sure?" ), - _( @"Keep working" ), _( @"Cancel encoding" ), NULL, fWindow, self, - @selector( _Cancel:returnCode:contextInfo: ), NULL, NULL, - _( @"Encoding won't be recoverable." ) ); + // Stop the current job. hb_stop will only cancel the current pass and then set + // its state to HB_STATE_WORKDONE. It also does this asynchronously. So when we + // see the state has changed to HB_STATE_WORKDONE (in updateUI), we'll delete the + // remaining passes of the job and then start the queue back up if there are any + // remaining jobs. + + hb_stop( fHandle ); + fEncodeState = 2; // don't alert at end of processing since this was a cancel + } -- (void) _Cancel: (NSWindow *) sheet - returnCode: (int) returnCode contextInfo: (void *) contextInfo +//------------------------------------------------------------------------------------ +// Displays an alert asking user if the want to cancel encoding of current job. +// Cancel: returns immediately after posting the alert. Later, when the user +// acknowledges the alert, doCancelCurrentJob is called. +//------------------------------------------------------------------------------------ +- (IBAction)Cancel: (id)sender { - if( returnCode == NSAlertAlternateReturn ) + 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) + [self doCancelCurrentJob]; + else { - hb_stop( fHandle ); - /*set the fEncodeState State */ - fEncodeState = 2; + NSString * alertTitle = [NSString stringWithFormat:NSLocalizedString(@"Do you want to stop encoding of %@?", nil), + [NSString stringWithUTF8String:job->title->name]]; + + // Which window to attach the sheet to? + NSWindow * docWindow; + if ([sender respondsToSelector: @selector(window)]) + docWindow = [sender window]; + else + docWindow = fWindow; + + NSBeginCriticalAlertSheet( + alertTitle, + NSLocalizedString(@"Keep Encoding", nil), NSLocalizedString(@"Stop Encoding", nil), nil, docWindow, self, + nil, @selector(didDimissCancelCurrentJob:returnCode:contextInfo:), nil, + NSLocalizedString(@"Your movie will be lost if you don't continue encoding.", nil), + [NSString stringWithUTF8String:job->title->name]); + + // didDimissCancelCurrentJob:returnCode:contextInfo: will be called when the dialog is dismissed + + // N.B.: didDimissCancelCurrentJob:returnCode:contextInfo: is designated as the dismiss + // selector to prevent a crash. As a dismiss selector, the alert window will + // have already be dismissed. If we don't do it this way, the dismissing of + // the alert window will cause the table view to be redrawn at a point where + // current job has been deleted by hblib but we don't know about it yet. This + // is a prime example of wy we need to NOT be relying on hb_current_job!!!! } } +- (void) didDimissCancelCurrentJob: (NSWindow *)sheet returnCode: (int)returnCode contextInfo: (void *)contextInfo +{ + if (returnCode == NSAlertAlternateReturn) + [self doCancelCurrentJob]; +} + + + + + - (IBAction) Pause: (id) sender { hb_state_t s; diff --git a/macosx/English.lproj/Queue.nib/classes.nib b/macosx/English.lproj/Queue.nib/classes.nib index 4e9bbaa78..3e0a52912 100644 --- a/macosx/English.lproj/Queue.nib/classes.nib +++ b/macosx/English.lproj/Queue.nib/classes.nib @@ -212,32 +212,31 @@ }; SUPERCLASS = NSObject; }, + {CLASS = HBImageAndTextCell; LANGUAGE = ObjC; SUPERCLASS = NSTextFieldCell; }, {CLASS = HBPictureGLView; LANGUAGE = ObjC; SUPERCLASS = NSOpenGLView; }, { ACTIONS = { cancelCurrentJob = id; - detailChanged = id; - jobGroupsChanged = id; + hideDetail = id; removeSelectedJob = id; + showDetail = id; + showJobsAsGroups = id; + showJobsAsPasses = id; showQueueWindow = id; - toggleShowsDetail = id; - toggleShowsJobsAsGroups = id; toggleStartPause = id; }; CLASS = HBQueueController; LANGUAGE = ObjC; OUTLETS = { fCurrentJobPane = NSView; - fDetailCheckbox = NSButton; fJobDescTextField = NSTextField; - fJobGroupsCheckbox = NSButton; fJobIconView = NSImageView; + fOutlineView = NSOutlineView; fProgressBar = NSProgressIndicator; fProgressTextField = NSTextField; fQueueCountField = NSTextField; fQueuePane = NSView; fQueueWindow = NSWindow; - fStartPauseButton = NSButton; fTaskView = NSTableView; }; SUPERCLASS = NSObject; diff --git a/macosx/English.lproj/Queue.nib/info.nib b/macosx/English.lproj/Queue.nib/info.nib index f2104c54a..0d9cf8ed4 100644 --- a/macosx/English.lproj/Queue.nib/info.nib +++ b/macosx/English.lproj/Queue.nib/info.nib @@ -3,7 +3,7 @@ <plist version="1.0"> <dict> <key>IBDocumentLocation</key> - <string>63 594 453 434 0 0 1680 1028 </string> + <string>361 594 453 434 0 0 1680 1028 </string> <key>IBFramework Version</key> <string>446.1</string> <key>IBLockedObjects</key> diff --git a/macosx/English.lproj/Queue.nib/keyedobjects.nib b/macosx/English.lproj/Queue.nib/keyedobjects.nib index 2b8608f38..b43b41bee 100644 --- a/macosx/English.lproj/Queue.nib/keyedobjects.nib +++ b/macosx/English.lproj/Queue.nib/keyedobjects.nib @@ -11,32 +11,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>264</integer> + <integer>222</integer> </dict> <key>NSAccessibilityConnectors</key> <dict> <key>CF$UID</key> - <integer>261</integer> + <integer>219</integer> </dict> <key>NSAccessibilityOidsKeys</key> <dict> <key>CF$UID</key> - <integer>262</integer> + <integer>220</integer> </dict> <key>NSAccessibilityOidsValues</key> <dict> <key>CF$UID</key> - <integer>263</integer> + <integer>221</integer> </dict> <key>NSClassesKeys</key> <dict> <key>CF$UID</key> - <integer>216</integer> + <integer>183</integer> </dict> <key>NSClassesValues</key> <dict> <key>CF$UID</key> - <integer>217</integer> + <integer>184</integer> </dict> <key>NSConnections</key> <dict> @@ -56,34 +56,34 @@ <key>NSNamesKeys</key> <dict> <key>CF$UID</key> - <integer>202</integer> + <integer>171</integer> </dict> <key>NSNamesValues</key> <dict> <key>CF$UID</key> - <integer>203</integer> + <integer>172</integer> </dict> <key>NSNextOid</key> - <integer>2596</integer> + <integer>2610</integer> <key>NSObjectsKeys</key> <dict> <key>CF$UID</key> - <integer>199</integer> + <integer>168</integer> </dict> <key>NSObjectsValues</key> <dict> <key>CF$UID</key> - <integer>201</integer> + <integer>170</integer> </dict> <key>NSOidsKeys</key> <dict> <key>CF$UID</key> - <integer>218</integer> + <integer>185</integer> </dict> <key>NSOidsValues</key> <dict> <key>CF$UID</key> - <integer>219</integer> + <integer>186</integer> </dict> <key>NSRoot</key> <dict> @@ -160,7 +160,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> <key>NS.objects</key> <array> @@ -170,79 +170,55 @@ </dict> <dict> <key>CF$UID</key> - <integer>74</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>150</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>152</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>154</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>156</integer> + <integer>72</integer> </dict> <dict> <key>CF$UID</key> - <integer>158</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>160</integer> + <integer>131</integer> </dict> <dict> <key>CF$UID</key> - <integer>162</integer> + <integer>133</integer> </dict> <dict> <key>CF$UID</key> - <integer>165</integer> + <integer>135</integer> </dict> <dict> <key>CF$UID</key> - <integer>167</integer> + <integer>137</integer> </dict> <dict> <key>CF$UID</key> - <integer>169</integer> + <integer>139</integer> </dict> <dict> <key>CF$UID</key> - <integer>171</integer> + <integer>141</integer> </dict> <dict> <key>CF$UID</key> - <integer>186</integer> + <integer>144</integer> </dict> <dict> <key>CF$UID</key> - <integer>187</integer> + <integer>146</integer> </dict> <dict> <key>CF$UID</key> - <integer>189</integer> + <integer>148</integer> </dict> <dict> <key>CF$UID</key> - <integer>191</integer> + <integer>163</integer> </dict> <dict> <key>CF$UID</key> - <integer>193</integer> + <integer>164</integer> </dict> <dict> <key>CF$UID</key> - <integer>195</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>197</integer> + <integer>166</integer> </dict> </array> </dict> @@ -250,7 +226,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> @@ -260,7 +236,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>72</integer> + <integer>70</integer> </dict> <key>NSSource</key> <dict> @@ -272,22 +248,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>69</integer> </dict> <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>67</integer> </dict> <key>NSExtension</key> <dict> <key>CF$UID</key> - <integer>70</integer> + <integer>68</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>68</integer> + <integer>66</integer> </dict> <key>NSNextResponder</key> <dict> @@ -311,12 +287,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>179</integer> + <integer>156</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>178</integer> + <integer>155</integer> </dict> <key>NSNextResponder</key> <dict> @@ -326,14 +302,14 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>177</integer> + <integer>154</integer> </dict> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> <key>NS.objects</key> <array> @@ -351,11 +327,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>48</integer> </dict> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>53</integer> </dict> </array> </dict> @@ -629,7 +605,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>51</integer> + <integer>47</integer> </dict> <key>NSCell</key> <dict> @@ -708,7 +684,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>46</integer> </dict> <key>NSAlign</key> <integer>0</integer> @@ -718,46 +694,12 @@ <integer>130560</integer> <key>NSCellFlags2</key> <integer>33554432</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> - <integer>46</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>49</integer> - </dict> - <key>NSClassName</key> - <dict> - <key>CF$UID</key> - <integer>47</integer> - </dict> - <key>NSResourceName</key> - <dict> - <key>CF$UID</key> - <integer>48</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> @@ -789,14 +731,14 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>54</integer> + <integer>50</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>53</integer> + <integer>49</integer> </dict> <key>NSNextResponder</key> <dict> @@ -830,17 +772,17 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>55</integer> + <integer>51</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>48</integer> </dict> <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>52</integer> </dict> <key>NSTextColor</key> <dict> @@ -869,19 +811,19 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>66</integer> + <integer>64</integer> </dict> <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>59</integer> + <integer>55</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>58</integer> + <integer>54</integer> </dict> <key>NSNextResponder</key> <dict> @@ -901,7 +843,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>63</integer> </dict> <key>NSAlternateContents</key> <dict> @@ -911,7 +853,7 @@ <key>NSAlternateImage</key> <dict> <key>CF$UID</key> - <integer>62</integer> + <integer>60</integer> </dict> <key>NSButtonFlags</key> <integer>138690815</integer> @@ -929,17 +871,17 @@ <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>53</integer> </dict> <key>NSKeyEquivalent</key> <dict> <key>CF$UID</key> - <integer>64</integer> + <integer>62</integer> </dict> <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>60</integer> + <integer>56</integer> </dict> <key>NSPeriodicDelay</key> <integer>200</integer> @@ -948,42 +890,53 @@ <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>56</integer> + <integer>52</integer> </dict> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>49</integer> + <integer>59</integer> </dict> <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>47</integer> + <integer>57</integer> </dict> <key>NSResourceName</key> <dict> <key>CF$UID</key> - <integer>61</integer> + <integer>58</integer> </dict> </dict> + <string>NSImage</string> <string>Delete</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>$class</key> <dict> <key>CF$UID</key> - <integer>49</integer> + <integer>59</integer> </dict> <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>47</integer> + <integer>57</integer> </dict> <key>NSResourceName</key> <dict> <key>CF$UID</key> - <integer>63</integer> + <integer>61</integer> </dict> </dict> <string>DeletePressed</string> @@ -1059,17 +1012,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>73</integer> </dict> <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>149</integer> + <integer>130</integer> </dict> <key>NSSource</key> <dict> @@ -1081,22 +1034,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>71</integer> + <integer>69</integer> </dict> <key>NSClassName</key> <dict> <key>CF$UID</key> - <integer>69</integer> + <integer>67</integer> </dict> <key>NSExtension</key> <dict> <key>CF$UID</key> - <integer>70</integer> + <integer>68</integer> </dict> <key>NSFrameSize</key> <dict> <key>CF$UID</key> - <integer>148</integer> + <integer>129</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1106,7 +1059,7 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>76</integer> + <integer>74</integer> </dict> <key>NSSuperview</key> <dict> @@ -1120,29 +1073,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>77</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>82</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>138</integer> + <integer>75</integer> </dict> <dict> <key>CF$UID</key> - <integer>144</integer> + <integer>80</integer> </dict> </array> </dict> @@ -1155,29 +1096,29 @@ <key>NSCell</key> <dict> <key>CF$UID</key> - <integer>79</integer> + <integer>77</integer> </dict> <key>NSEnabled</key> <true/> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>78</integer> + <integer>76</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>73</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>73</integer> </dict> <key>NSvFlags</key> <integer>264</integer> </dict> - <string>{{17, 227}, {231, 14}}</string> + <string>{{17, 227}, {540, 14}}</string> <dict> <key>$class</key> <dict> @@ -1196,17 +1137,17 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>80</integer> + <integer>78</integer> </dict> <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>75</integer> </dict> <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>79</integer> </dict> <key>NSTextColor</key> <dict> @@ -1235,32 +1176,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>130</integer> + <integer>128</integer> </dict> <key>NSContentView</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>82</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>129</integer> + <integer>127</integer> </dict> <key>NSHScroller</key> <dict> <key>CF$UID</key> - <integer>126</integer> + <integer>124</integer> </dict> <key>NSNextKeyView</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>82</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>73</integer> </dict> <key>NSScrollAmts</key> <data> @@ -1269,17 +1210,17 @@ <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>83</integer> + <integer>81</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>73</integer> </dict> <key>NSVScroller</key> <dict> <key>CF$UID</key> - <integer>122</integer> + <integer>120</integer> </dict> <key>NSsFlags</key> <integer>18</integer> @@ -1290,21 +1231,21 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>82</integer> </dict> <dict> <key>CF$UID</key> - <integer>122</integer> + <integer>120</integer> </dict> <dict> <key>CF$UID</key> - <integer>126</integer> + <integer>124</integer> </dict> </array> </dict> @@ -1312,42 +1253,42 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>121</integer> + <integer>119</integer> </dict> <key>NSBGColor</key> <dict> <key>CF$UID</key> - <integer>109</integer> + <integer>107</integer> </dict> <key>NSDocView</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>120</integer> + <integer>118</integer> </dict> <key>NSNextKeyView</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>80</integer> </dict> <key>NSSubviews</key> <dict> <key>CF$UID</key> - <integer>85</integer> + <integer>83</integer> </dict> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>80</integer> </dict> <key>NScvFlags</key> <integer>4</integer> @@ -1358,13 +1299,13 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> </array> </dict> @@ -1372,19 +1313,19 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>119</integer> + <integer>117</integer> </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>95</integer> </dict> <key>NSColumnAutoresizingStyle</key> <integer>1</integer> <key>NSCornerView</key> <dict> <key>CF$UID</key> - <integer>88</integer> + <integer>86</integer> </dict> <key>NSDraggingSourceMaskForLocal</key> <integer>15</integer> @@ -1395,12 +1336,12 @@ <key>NSFrameSize</key> <dict> <key>CF$UID</key> - <integer>87</integer> + <integer>85</integer> </dict> <key>NSGridColor</key> <dict> <key>CF$UID</key> - <integer>116</integer> + <integer>114</integer> </dict> <key>NSIntercellSpacingHeight</key> <real>2</real> @@ -1409,36 +1350,36 @@ <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>82</integer> </dict> <key>NSRowHeight</key> <real>17</real> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>84</integer> + <integer>82</integer> </dict> <key>NSTableColumns</key> <dict> <key>CF$UID</key> - <integer>91</integer> + <integer>89</integer> </dict> <key>NSTvFlags</key> <integer>314605568</integer> <key>NSvFlags</key> <integer>4352</integer> </dict> - <string>{517, 190}</string> + <string>{518, 190}</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>90</integer> + <integer>88</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>89</integer> + <integer>87</integer> </dict> <key>NSNextResponder</key> <dict> @@ -1464,21 +1405,21 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>90</integer> </dict> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>101</integer> </dict> <dict> <key>CF$UID</key> - <integer>111</integer> + <integer>109</integer> </dict> </array> </dict> @@ -1486,22 +1427,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>100</integer> </dict> <key>NSDataCell</key> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>99</integer> </dict> <key>NSHeaderCell</key> <dict> <key>CF$UID</key> - <integer>94</integer> + <integer>92</integer> </dict> <key>NSIdentifier</key> <dict> <key>CF$UID</key> - <integer>93</integer> + <integer>91</integer> </dict> <key>NSIsEditable</key> <true/> @@ -1512,7 +1453,7 @@ <key>NSTableView</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <key>NSWidth</key> <real>20</real> @@ -1522,12 +1463,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>98</integer> </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>93</integer> </dict> <key>NSCellFlags</key> <integer>67239424</integer> @@ -1541,12 +1482,12 @@ <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>79</integer> </dict> <key>NSTextColor</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>96</integer> </dict> </dict> <dict> @@ -1563,12 +1504,12 @@ <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>97</integer> + <integer>95</integer> </dict> <key>NSColorName</key> <dict> <key>CF$UID</key> - <integer>96</integer> + <integer>94</integer> </dict> <key>NSColorSpace</key> <integer>6</integer> @@ -1606,7 +1547,7 @@ <key>NSColorName</key> <dict> <key>CF$UID</key> - <integer>99</integer> + <integer>97</integer> </dict> <key>NSColorSpace</key> <integer>6</integer> @@ -1628,7 +1569,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>50</integer> + <integer>46</integer> </dict> <key>NSAlign</key> <integer>1</integer> @@ -1656,22 +1597,22 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>100</integer> </dict> <key>NSDataCell</key> <dict> <key>CF$UID</key> - <integer>108</integer> + <integer>106</integer> </dict> <key>NSHeaderCell</key> <dict> <key>CF$UID</key> - <integer>105</integer> + <integer>103</integer> </dict> <key>NSIdentifier</key> <dict> <key>CF$UID</key> - <integer>104</integer> + <integer>102</integer> </dict> <key>NSIsResizeable</key> <true/> @@ -1684,22 +1625,22 @@ <key>NSTableView</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <key>NSWidth</key> - <real>468</real> + <real>469</real> </dict> <string>desc</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>98</integer> </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>107</integer> + <integer>105</integer> </dict> <key>NSCellFlags</key> <integer>75628032</integer> @@ -1708,17 +1649,17 @@ <key>NSContents</key> <dict> <key>CF$UID</key> - <integer>106</integer> + <integer>104</integer> </dict> <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>79</integer> </dict> <key>NSTextColor</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>96</integer> </dict> </dict> <string>Job</string> @@ -1744,7 +1685,7 @@ <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>109</integer> + <integer>107</integer> </dict> <key>NSCellFlags</key> <integer>337772096</integer> @@ -1753,12 +1694,12 @@ <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>52</integer> </dict> <key>NSTextColor</key> <dict> @@ -1785,7 +1726,7 @@ <key>NSColorName</key> <dict> <key>CF$UID</key> - <integer>110</integer> + <integer>108</integer> </dict> <key>NSColorSpace</key> <integer>6</integer> @@ -1795,31 +1736,31 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>102</integer> + <integer>100</integer> </dict> <key>NSDataCell</key> <dict> <key>CF$UID</key> - <integer>114</integer> + <integer>112</integer> </dict> <key>NSHeaderCell</key> <dict> <key>CF$UID</key> - <integer>113</integer> + <integer>111</integer> </dict> <key>NSIdentifier</key> <dict> <key>CF$UID</key> - <integer>112</integer> + <integer>110</integer> </dict> <key>NSMaxWidth</key> - <real>1000</real> + <real>20</real> <key>NSMinWidth</key> - <real>4</real> + <real>8</real> <key>NSTableView</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <key>NSWidth</key> <real>20</real> @@ -1829,12 +1770,12 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>100</integer> + <integer>98</integer> </dict> <key>NSBackgroundColor</key> <dict> <key>CF$UID</key> - <integer>95</integer> + <integer>93</integer> </dict> <key>NSCellFlags</key> <integer>67239424</integer> @@ -1848,19 +1789,19 @@ <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>81</integer> + <integer>79</integer> </dict> <key>NSTextColor</key> <dict> <key>CF$UID</key> - <integer>98</integer> + <integer>96</integer> </dict> </dict> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>65</integer> + <integer>63</integer> </dict> <key>NSAlternateContents</key> <dict> @@ -1883,7 +1824,7 @@ <key>NSControlView</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <key>NSKeyEquivalent</key> <dict> @@ -1893,7 +1834,7 @@ <key>NSNormalImage</key> <dict> <key>CF$UID</key> - <integer>60</integer> + <integer>56</integer> </dict> <key>NSPeriodicDelay</key> <integer>400</integer> @@ -1902,7 +1843,7 @@ <key>NSSupport</key> <dict> <key>CF$UID</key> - <integer>115</integer> + <integer>113</integer> </dict> </dict> <dict> @@ -1935,12 +1876,12 @@ <key>NSColor</key> <dict> <key>CF$UID</key> - <integer>118</integer> + <integer>116</integer> </dict> <key>NSColorName</key> <dict> <key>CF$UID</key> - <integer>117</integer> + <integer>115</integer> </dict> <key>NSColorSpace</key> <integer>6</integer> @@ -1972,7 +1913,7 @@ <key>$classname</key> <string>NSTableView</string> </dict> - <string>{{1, 1}, {517, 190}}</string> + <string>{{1, 1}, {518, 190}}</string> <dict> <key>$classes</key> <array> @@ -1988,39 +1929,39 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>125</integer> + <integer>123</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>124</integer> + <integer>122</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>123</integer> + <integer>121</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>80</integer> </dict> <key>NSPercent</key> - <real>0.93596059083938599</real> + <real>0.95263159275054932</real> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>80</integer> </dict> <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>80</integer> </dict> <key>NSvFlags</key> <integer>256</integer> </dict> - <string>{{518, 1}, {15, 190}}</string> + <string>{{519, 1}, {15, 190}}</string> <string>_doScroller:</string> <dict> <key>$classes</key> @@ -2038,34 +1979,34 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>125</integer> + <integer>123</integer> </dict> <key>NSAction</key> <dict> <key>CF$UID</key> - <integer>128</integer> + <integer>126</integer> </dict> <key>NSFrame</key> <dict> <key>CF$UID</key> - <integer>127</integer> + <integer>125</integer> </dict> <key>NSNextResponder</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>80</integer> </dict> <key>NSPercent</key> <real>0.88602942228317261</real> <key>NSSuperview</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>80</integer> </dict> <key>NSTarget</key> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>80</integer> </dict> <key>NSsFlags</key> <integer>1</integer> @@ -2074,7 +2015,7 @@ </dict> <string>{{-100, -100}, {482, 11}}</string> <string>_doScroller:</string> - <string>{{20, 20}, {534, 192}}</string> + <string>{{20, 20}, {535, 192}}</string> <dict> <key>$classes</key> <array> @@ -2086,307 +2027,13 @@ <key>$classname</key> <string>NSScrollView</string> </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>66</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>133</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>132</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NSvFlags</key> - <integer>-2147483383</integer> - </dict> - <string>{{471, 226}, {85, 16}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <key>NSAlternateContents</key> - <dict> - <key>CF$UID</key> - <integer>22</integer> - </dict> - <key>NSAlternateImage</key> - <dict> - <key>CF$UID</key> - <integer>135</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>134</integer> - </dict> - <key>NSControlView</key> - <dict> - <key>CF$UID</key> - <integer>131</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>81</integer> - </dict> - </dict> - <string>Show Detail</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>137</integer> - </dict> - <key>NSImageName</key> - <dict> - <key>CF$UID</key> - <integer>136</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>66</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>140</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>139</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NSvFlags</key> - <integer>-2147483380</integer> - </dict> - <string>{{20, 220}, {34, 32}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>65</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>138</integer> - </dict> - <key>NSKeyEquivalent</key> - <dict> - <key>CF$UID</key> - <integer>143</integer> - </dict> - <key>NSNormalImage</key> - <dict> - <key>CF$UID</key> - <integer>141</integer> - </dict> - <key>NSPeriodicDelay</key> - <integer>200</integer> - <key>NSPeriodicInterval</key> - <integer>25</integer> - <key>NSSupport</key> - <dict> - <key>CF$UID</key> - <integer>56</integer> - </dict> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>49</integer> - </dict> - <key>NSClassName</key> - <dict> - <key>CF$UID</key> - <integer>47</integer> - </dict> - <key>NSResourceName</key> - <dict> - <key>CF$UID</key> - <integer>142</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> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>66</integer> - </dict> - <key>NSCell</key> - <dict> - <key>CF$UID</key> - <integer>146</integer> - </dict> - <key>NSEnabled</key> - <true/> - <key>NSFrame</key> - <dict> - <key>CF$UID</key> - <integer>145</integer> - </dict> - <key>NSNextResponder</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NSSuperview</key> - <dict> - <key>CF$UID</key> - <integer>75</integer> - </dict> - <key>NSvFlags</key> - <integer>-2147483383</integer> - </dict> - <string>{{370, 226}, {98, 16}}</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>65</integer> - </dict> - <key>NSAlternateContents</key> - <dict> - <key>CF$UID</key> - <integer>22</integer> - </dict> - <key>NSAlternateImage</key> - <dict> - <key>CF$UID</key> - <integer>135</integer> - </dict> - <key>NSButtonFlags</key> - <integer>1211912703</integer> - <key>NSButtonFlags2</key> - <integer>2</integer> - <key>NSCellFlags</key> - <integer>-2080244224</integer> - <key>NSCellFlags2</key> - <integer>131072</integer> - <key>NSContents</key> - <dict> - <key>CF$UID</key> - <integer>147</integer> - </dict> - <key>NSControlView</key> - <dict> - <key>CF$UID</key> - <integer>144</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>81</integer> - </dict> - </dict> - <string>Show Encodes</string> <string>{574, 257}</string> <string>fQueuePane</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> @@ -2396,7 +2043,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>151</integer> + <integer>132</integer> </dict> <key>NSSource</key> <dict> @@ -2409,40 +2056,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> - </dict> - <key>NSDestination</key> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - <key>NSLabel</key> - <dict> - <key>CF$UID</key> - <integer>153</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>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>75</integer> </dict> <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>155</integer> + <integer>134</integer> </dict> <key>NSSource</key> <dict> @@ -2455,17 +2079,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>157</integer> + <integer>136</integer> </dict> <key>NSSource</key> <dict> @@ -2478,7 +2102,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> @@ -2488,7 +2112,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>159</integer> + <integer>138</integer> </dict> <key>NSSource</key> <dict> @@ -2501,17 +2125,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>48</integer> </dict> <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>161</integer> + <integer>140</integer> </dict> <key>NSSource</key> <dict> @@ -2524,7 +2148,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>164</integer> + <integer>143</integer> </dict> <key>NSDestination</key> <dict> @@ -2534,12 +2158,12 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>163</integer> + <integer>142</integer> </dict> <key>NSSource</key> <dict> <key>CF$UID</key> - <integer>114</integer> + <integer>112</integer> </dict> </dict> <string>removeSelectedJob:</string> @@ -2557,7 +2181,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> @@ -2567,12 +2191,12 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>166</integer> + <integer>145</integer> </dict> <key>NSSource</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> </dict> <string>dataSource</string> @@ -2580,7 +2204,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> @@ -2590,12 +2214,12 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>168</integer> + <integer>147</integer> </dict> <key>NSSource</key> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> </dict> <string>delegate</string> @@ -2603,40 +2227,17 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>164</integer> - </dict> - <key>NSDestination</key> - <dict> - <key>CF$UID</key> - <integer>2</integer> - </dict> - <key>NSLabel</key> - <dict> - <key>CF$UID</key> - <integer>170</integer> - </dict> - <key>NSSource</key> - <dict> - <key>CF$UID</key> - <integer>131</integer> - </dict> - </dict> - <string>detailChanged:</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> <key>CF$UID</key> - <integer>172</integer> + <integer>149</integer> </dict> <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>185</integer> + <integer>162</integer> </dict> <key>NSSource</key> <dict> @@ -2648,32 +2249,32 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>184</integer> + <integer>161</integer> </dict> <key>NSFrameAutosaveName</key> <dict> <key>CF$UID</key> - <integer>183</integer> + <integer>160</integer> </dict> <key>NSMaxSize</key> <dict> <key>CF$UID</key> - <integer>182</integer> + <integer>159</integer> </dict> <key>NSMinSize</key> <dict> <key>CF$UID</key> - <integer>181</integer> + <integer>158</integer> </dict> <key>NSScreenRect</key> <dict> <key>CF$UID</key> - <integer>180</integer> + <integer>157</integer> </dict> <key>NSViewClass</key> <dict> <key>CF$UID</key> - <integer>176</integer> + <integer>153</integer> </dict> <key>NSWTFlags</key> <integer>1886912512</integer> @@ -2682,19 +2283,19 @@ <key>NSWindowClass</key> <dict> <key>CF$UID</key> - <integer>175</integer> + <integer>152</integer> </dict> <key>NSWindowRect</key> <dict> <key>CF$UID</key> - <integer>173</integer> + <integer>150</integer> </dict> <key>NSWindowStyleMask</key> <integer>4110</integer> <key>NSWindowTitle</key> <dict> <key>CF$UID</key> - <integer>174</integer> + <integer>151</integer> </dict> <key>NSWindowView</key> <dict> @@ -2702,17 +2303,9 @@ <integer>12</integer> </dict> </dict> - <string>{{420, 319}, {574, 433}}</string> + <string>{{176, 464}, {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> + <string>NSWindow</string> <dict> <key>$class</key> <dict> @@ -2726,7 +2319,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> <key>NS.objects</key> <array> @@ -2736,7 +2329,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>73</integer> </dict> </array> </dict> @@ -2769,52 +2362,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>73</integer> - </dict> - <key>NSDestination</key> - <dict> - <key>CF$UID</key> - <integer>2</integer> - </dict> - <key>NSLabel</key> - <dict> - <key>CF$UID</key> - <integer>168</integer> - </dict> - <key>NSSource</key> - <dict> - <key>CF$UID</key> - <integer>172</integer> - </dict> - </dict> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>73</integer> - </dict> - <key>NSDestination</key> - <dict> - <key>CF$UID</key> - <integer>138</integer> - </dict> - <key>NSLabel</key> - <dict> - <key>CF$UID</key> - <integer>188</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>164</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> @@ -2824,20 +2372,19 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>190</integer> + <integer>147</integer> </dict> <key>NSSource</key> <dict> <key>CF$UID</key> - <integer>138</integer> + <integer>149</integer> </dict> </dict> - <string>toggleStartPause:</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>164</integer> + <integer>143</integer> </dict> <key>NSDestination</key> <dict> @@ -2847,12 +2394,12 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>192</integer> + <integer>165</integer> </dict> <key>NSSource</key> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>53</integer> </dict> </dict> <string>cancelCurrentJob:</string> @@ -2860,53 +2407,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>164</integer> - </dict> - <key>NSDestination</key> - <dict> - <key>CF$UID</key> - <integer>2</integer> - </dict> - <key>NSLabel</key> - <dict> - <key>CF$UID</key> - <integer>194</integer> - </dict> - <key>NSSource</key> - <dict> - <key>CF$UID</key> - <integer>144</integer> - </dict> - </dict> - <string>jobGroupsChanged:</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>73</integer> - </dict> - <key>NSDestination</key> - <dict> - <key>CF$UID</key> - <integer>144</integer> - </dict> - <key>NSLabel</key> - <dict> - <key>CF$UID</key> - <integer>196</integer> - </dict> - <key>NSSource</key> - <dict> - <key>CF$UID</key> - <integer>2</integer> - </dict> - </dict> - <string>fJobGroupsCheckbox</string> - <dict> - <key>$class</key> - <dict> - <key>CF$UID</key> - <integer>73</integer> + <integer>71</integer> </dict> <key>NSDestination</key> <dict> @@ -2916,7 +2417,7 @@ <key>NSLabel</key> <dict> <key>CF$UID</key> - <integer>198</integer> + <integer>167</integer> </dict> <key>NSSource</key> <dict> @@ -2929,41 +2430,41 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>112</integer> </dict> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>53</integer> </dict> <dict> <key>CF$UID</key> - <integer>172</integer> + <integer>90</integer> </dict> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>84</integer> </dict> <dict> <key>CF$UID</key> - <integer>131</integer> + <integer>149</integer> </dict> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>19</integer> </dict> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>12</integer> </dict> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>75</integer> </dict> <dict> <key>CF$UID</key> @@ -2971,19 +2472,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>138</integer> + <integer>73</integer> </dict> <dict> <key>CF$UID</key> - <integer>111</integer> + <integer>14</integer> </dict> <dict> <key>CF$UID</key> - <integer>12</integer> + <integer>80</integer> </dict> <dict> <key>CF$UID</key> - <integer>144</integer> + <integer>48</integer> </dict> <dict> <key>CF$UID</key> @@ -2991,19 +2492,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>114</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>52</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>14</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>86</integer> + <integer>99</integer> </dict> <dict> <key>CF$UID</key> @@ -3011,7 +2500,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>19</integer> + <integer>109</integer> </dict> </array> </dict> @@ -3028,33 +2517,29 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>12</integer> + <integer>109</integer> </dict> <dict> <key>CF$UID</key> - <integer>75</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>2</integer> + <integer>11</integer> </dict> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>84</integer> </dict> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>80</integer> </dict> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>2</integer> </dict> <dict> <key>CF$UID</key> @@ -3062,35 +2547,27 @@ </dict> <dict> <key>CF$UID</key> - <integer>86</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>11</integer> + <integer>149</integer> </dict> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>73</integer> </dict> <dict> <key>CF$UID</key> - <integer>86</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>172</integer> + <integer>11</integer> </dict> <dict> <key>CF$UID</key> - <integer>75</integer> + <integer>12</integer> </dict> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>11</integer> </dict> <dict> <key>CF$UID</key> - <integer>111</integer> + <integer>73</integer> </dict> <dict> <key>CF$UID</key> @@ -3098,11 +2575,11 @@ </dict> <dict> <key>CF$UID</key> - <integer>11</integer> + <integer>84</integer> </dict> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>90</integer> </dict> <dict> <key>CF$UID</key> @@ -3110,7 +2587,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>11</integer> + <integer>84</integer> </dict> </array> </dict> @@ -3118,33 +2595,21 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>131</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>86</integer> + <integer>149</integer> </dict> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>48</integer> </dict> <dict> <key>CF$UID</key> - <integer>138</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>52</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>103</integer> + <integer>2</integer> </dict> <dict> <key>CF$UID</key> @@ -3152,7 +2617,7 @@ </dict> <dict> <key>CF$UID</key> - <integer>144</integer> + <integer>84</integer> </dict> <dict> <key>CF$UID</key> @@ -3160,19 +2625,19 @@ </dict> <dict> <key>CF$UID</key> - <integer>57</integer> + <integer>80</integer> </dict> <dict> <key>CF$UID</key> - <integer>172</integer> + <integer>101</integer> </dict> <dict> <key>CF$UID</key> - <integer>2</integer> + <integer>75</integer> </dict> <dict> <key>CF$UID</key> - <integer>77</integer> + <integer>53</integer> </dict> </array> </dict> @@ -3180,74 +2645,54 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>204</integer> + <integer>173</integer> </dict> <dict> <key>CF$UID</key> - <integer>205</integer> + <integer>174</integer> </dict> <dict> <key>CF$UID</key> - <integer>206</integer> + <integer>175</integer> </dict> <dict> <key>CF$UID</key> - <integer>207</integer> + <integer>176</integer> </dict> <dict> <key>CF$UID</key> - <integer>208</integer> + <integer>177</integer> </dict> <dict> <key>CF$UID</key> - <integer>209</integer> + <integer>178</integer> </dict> <dict> <key>CF$UID</key> - <integer>210</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>211</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>212</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>207</integer> + <integer>179</integer> </dict> <dict> <key>CF$UID</key> - <integer>213</integer> + <integer>180</integer> </dict> <dict> <key>CF$UID</key> - <integer>214</integer> + <integer>181</integer> </dict> <dict> <key>CF$UID</key> - <integer>215</integer> + <integer>182</integer> </dict> </array> </dict> - <string>NSButton4</string> - <string>NSTableView</string> - <string>NSScrollView1</string> - <string>NSButton</string> - <string>NSTextField221</string> - <string>NSTableColumn</string> - <string>1</string> - <string>NSButton41</string> - <string>NSTextField1</string> <string>Window</string> + <string>NSTextField221</string> <dict> <key>$class</key> <dict> @@ -3257,12 +2702,18 @@ <key>NS.string</key> <string>File's Owner</string> </dict> + <string>1</string> + <string>NSTableView</string> + <string>NSTextField1</string> + <string>NSScrollView1</string> + <string>NSTableColumn</string> <string>NSTextField2</string> + <string>NSButton</string> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array/> @@ -3271,7 +2722,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array/> @@ -3280,73 +2731,41 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array> <dict> <key>CF$UID</key> - <integer>12</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>197</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>19</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>160</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>172</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>57</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>77</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>186</integer> + <integer>14</integer> </dict> <dict> <key>CF$UID</key> - <integer>52</integer> + <integer>99</integer> </dict> <dict> <key>CF$UID</key> - <integer>75</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>193</integer> + <integer>36</integer> </dict> <dict> <key>CF$UID</key> - <integer>74</integer> + <integer>80</integer> </dict> <dict> <key>CF$UID</key> - <integer>101</integer> + <integer>11</integer> </dict> <dict> <key>CF$UID</key> - <integer>138</integer> + <integer>137</integer> </dict> <dict> <key>CF$UID</key> - <integer>92</integer> + <integer>131</integer> </dict> <dict> <key>CF$UID</key> - <integer>167</integer> + <integer>19</integer> </dict> <dict> <key>CF$UID</key> @@ -3354,99 +2773,95 @@ </dict> <dict> <key>CF$UID</key> - <integer>154</integer> + <integer>144</integer> </dict> <dict> <key>CF$UID</key> - <integer>189</integer> + <integer>90</integer> </dict> <dict> <key>CF$UID</key> - <integer>162</integer> + <integer>133</integer> </dict> <dict> <key>CF$UID</key> - <integer>169</integer> + <integer>101</integer> </dict> <dict> <key>CF$UID</key> - <integer>152</integer> + <integer>112</integer> </dict> <dict> <key>CF$UID</key> - <integer>165</integer> + <integer>166</integer> </dict> <dict> <key>CF$UID</key> - <integer>187</integer> + <integer>141</integer> </dict> <dict> <key>CF$UID</key> - <integer>114</integer> + <integer>48</integer> </dict> <dict> <key>CF$UID</key> - <integer>11</integer> + <integer>146</integer> </dict> <dict> <key>CF$UID</key> - <integer>111</integer> + <integer>75</integer> </dict> <dict> <key>CF$UID</key> - <integer>171</integer> + <integer>164</integer> </dict> <dict> <key>CF$UID</key> - <integer>14</integer> + <integer>73</integer> </dict> <dict> <key>CF$UID</key> - <integer>82</integer> + <integer>12</integer> </dict> <dict> <key>CF$UID</key> - <integer>191</integer> + <integer>148</integer> </dict> <dict> <key>CF$UID</key> - <integer>156</integer> + <integer>10</integer> </dict> <dict> <key>CF$UID</key> - <integer>144</integer> + <integer>135</integer> </dict> <dict> <key>CF$UID</key> - <integer>195</integer> + <integer>163</integer> </dict> <dict> <key>CF$UID</key> - <integer>10</integer> + <integer>139</integer> </dict> <dict> <key>CF$UID</key> - <integer>103</integer> + <integer>149</integer> </dict> <dict> <key>CF$UID</key> - <integer>86</integer> + <integer>84</integer> </dict> <dict> <key>CF$UID</key> - <integer>158</integer> + <integer>53</integer> </dict> <dict> <key>CF$UID</key> - <integer>36</integer> + <integer>109</integer> </dict> <dict> <key>CF$UID</key> - <integer>150</integer> - </dict> - <dict> - <key>CF$UID</key> - <integer>131</integer> + <integer>72</integer> </dict> </array> </dict> @@ -3454,222 +2869,177 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array> <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> + <integer>187</integer> </dict> <dict> <key>CF$UID</key> - <integer>230</integer> + <integer>188</integer> </dict> <dict> <key>CF$UID</key> - <integer>231</integer> + <integer>189</integer> </dict> <dict> <key>CF$UID</key> - <integer>232</integer> + <integer>190</integer> </dict> <dict> <key>CF$UID</key> - <integer>233</integer> + <integer>191</integer> </dict> <dict> <key>CF$UID</key> - <integer>234</integer> + <integer>192</integer> </dict> <dict> <key>CF$UID</key> - <integer>235</integer> + <integer>193</integer> </dict> <dict> <key>CF$UID</key> - <integer>236</integer> + <integer>194</integer> </dict> <dict> <key>CF$UID</key> - <integer>237</integer> + <integer>195</integer> </dict> <dict> <key>CF$UID</key> - <integer>238</integer> + <integer>196</integer> </dict> <dict> <key>CF$UID</key> - <integer>239</integer> + <integer>197</integer> </dict> <dict> <key>CF$UID</key> - <integer>240</integer> + <integer>198</integer> </dict> <dict> <key>CF$UID</key> - <integer>241</integer> + <integer>199</integer> </dict> <dict> <key>CF$UID</key> - <integer>242</integer> + <integer>200</integer> </dict> <dict> <key>CF$UID</key> - <integer>243</integer> + <integer>201</integer> </dict> <dict> <key>CF$UID</key> - <integer>244</integer> + <integer>202</integer> </dict> <dict> <key>CF$UID</key> - <integer>245</integer> + <integer>203</integer> </dict> <dict> <key>CF$UID</key> - <integer>246</integer> + <integer>204</integer> </dict> <dict> <key>CF$UID</key> - <integer>247</integer> + <integer>205</integer> </dict> <dict> <key>CF$UID</key> - <integer>248</integer> + <integer>206</integer> </dict> <dict> <key>CF$UID</key> - <integer>249</integer> + <integer>207</integer> </dict> <dict> <key>CF$UID</key> - <integer>250</integer> + <integer>208</integer> </dict> <dict> <key>CF$UID</key> - <integer>251</integer> + <integer>209</integer> </dict> <dict> <key>CF$UID</key> - <integer>252</integer> + <integer>210</integer> </dict> <dict> <key>CF$UID</key> - <integer>253</integer> + <integer>211</integer> </dict> <dict> <key>CF$UID</key> - <integer>254</integer> + <integer>212</integer> </dict> <dict> <key>CF$UID</key> - <integer>255</integer> + <integer>213</integer> </dict> <dict> <key>CF$UID</key> - <integer>256</integer> + <integer>214</integer> </dict> <dict> <key>CF$UID</key> - <integer>257</integer> + <integer>215</integer> </dict> <dict> <key>CF$UID</key> - <integer>258</integer> + <integer>216</integer> </dict> <dict> <key>CF$UID</key> - <integer>259</integer> + <integer>217</integer> </dict> <dict> <key>CF$UID</key> - <integer>260</integer> + <integer>218</integer> </dict> </array> </dict> - <integer>2577</integer> - <integer>2595</integer> - <integer>2541</integer> - <integer>2568</integer> - <integer>2576</integer> - <integer>2584</integer> - <integer>2511</integer> - <integer>2579</integer> - <integer>2515</integer> - <integer>2547</integer> - <integer>2588</integer> - <integer>2561</integer> + <integer>2539</integer> <integer>2559</integer> - <integer>2580</integer> - <integer>2553</integer> - <integer>2571</integer> + <integer>2538</integer> + <integer>2517</integer> + <integer>2543</integer> + <integer>2567</integer> + <integer>2562</integer> + <integer>2541</integer> <integer>1</integer> - <integer>2564</integer> - <integer>2583</integer> - <integer>2569</integer> - <integer>2572</integer> - <integer>2563</integer> <integer>2570</integer> - <integer>2581</integer> + <integer>2553</integer> + <integer>2564</integer> + <integer>2519</integer> <integer>2523</integer> - <integer>2543</integer> - <integer>2522</integer> - <integer>2578</integer> - <integer>2539</integer> - <integer>2517</integer> + <integer>2595</integer> + <integer>2569</integer> + <integer>2515</integer> + <integer>2571</integer> + <integer>2511</integer> <integer>2586</integer> - <integer>2565</integer> - <integer>2587</integer> - <integer>2589</integer> + <integer>2547</integer> + <integer>2577</integer> + <integer>2578</integer> <integer>2560</integer> - <integer>2519</integer> + <integer>2565</integer> + <integer>2579</integer> + <integer>2568</integer> + <integer>2576</integer> <integer>2518</integer> - <integer>2567</integer> - <integer>2538</integer> - <integer>2562</integer> - <integer>2535</integer> + <integer>2584</integer> + <integer>2522</integer> + <integer>2561</integer> <dict> <key>$class</key> <dict> <key>CF$UID</key> - <integer>67</integer> + <integer>65</integer> </dict> <key>NS.objects</key> <array/> @@ -3678,7 +3048,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array/> @@ -3687,7 +3057,7 @@ <key>$class</key> <dict> <key>CF$UID</key> - <integer>200</integer> + <integer>169</integer> </dict> <key>NS.objects</key> <array/> diff --git a/macosx/HBQueueController.h b/macosx/HBQueueController.h index 7ee030eec..474392507 100644 --- a/macosx/HBQueueController.h +++ b/macosx/HBQueueController.h @@ -8,14 +8,24 @@ #include <Cocoa/Cocoa.h> #include "hb.h" +@class HBController; + +// HB_OUTLINE_QUEUE turns on an outline view for the queue. +#define HB_OUTLINE_QUEUE 0 + @interface HBQueueController : NSObject { hb_handle_t *fHandle; + HBController *fHBController; NSViewAnimation *fAnimation; BOOL fCurrentJobHidden; // YES when fCurrentJobPane has been shifted out of view (see showCurrentJobPane) BOOL fShowsJobsAsGroups; BOOL fShowsDetail; +#if HB_OUTLINE_QUEUE + NSMutableArray *fEncodes; + IBOutlet NSOutlineView *fOutlineView; +#endif // +---------------fQueueWindow----------------+ // |+-------------fCurrentJobPane-------------+| @@ -46,24 +56,22 @@ // fQueuePane - always visible; fills entire window when fCurrentJobPane is hidden IBOutlet NSView *fQueuePane; IBOutlet NSTableView *fTaskView; - IBOutlet NSButton *fDetailCheckbox; - IBOutlet NSButton *fJobGroupsCheckbox; // just for testing IBOutlet NSTextField *fQueueCountField; - IBOutlet NSButton *fStartPauseButton; } - (void)setHandle: (hb_handle_t *)handle; +- (void)setHBController: (HBController *)controller; - (void)updateQueueUI; - (void)updateCurrentJobUI; - (IBAction)showQueueWindow: (id)sender; - (IBAction)removeSelectedJob: (id)sender; - (IBAction)cancelCurrentJob: (id)sender; -- (IBAction)detailChanged: (id)sender; -- (IBAction)jobGroupsChanged: (id)sender; -- (IBAction)toggleShowsDetail: (id)sender; -- (IBAction)toggleShowsJobsAsGroups: (id)sender; +- (IBAction)showDetail: (id)sender; +- (IBAction)hideDetail: (id)sender; +- (IBAction)showJobsAsGroups: (id)sender; +- (IBAction)showJobsAsPasses: (id)sender; - (IBAction)toggleStartPause: (id)sender; @end diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm index 657178c74..755692a02 100644 --- a/macosx/HBQueueController.mm +++ b/macosx/HBQueueController.mm @@ -5,6 +5,25 @@ It may be used under the terms of the GNU General Public License. */ #include "HBQueueController.h" +#include "Controller.h" + +#define HB_QUEUE_DRAGGING 0 +#define HBQueueDataType @"HBQueueDataType" + +// UNI_QUEUE turns on the feature where the first item in the queue NSTableView is the +// current job followed by the jobs in hblib's queue. In this scheme, fCurrentJobPane +// disappers. +#define HB_UNI_QUEUE 0 + +#define HB_ROW_HEIGHT_DETAIL 98.0 +#define HB_ROW_HEIGHT_NO_DETAIL 17.0 +#define HB_ROW_HEIGHT_ACTIVE_JOB 60.0 + +//------------------------------------------------------------------------------------ +#pragma mark Job group functions +//------------------------------------------------------------------------------------ +// These could be part of hblib if we think hblib should have knowledge of groups. +// For now, I see groups as a metaphor that HBQueueController provides. /** * Returns the number of jobs groups in the queue. @@ -85,12 +104,53 @@ static hb_job_t * hb_next_job( hb_handle_t * h, hb_job_t * job ) while( ( j = hb_job( h, index++ ) ) ) { if (j == job) - return hb_job( h, index+1 ); + return hb_job( h, index ); } return NULL; } #pragma mark - +//------------------------------------------------------------------------------------ +// HBJob +//------------------------------------------------------------------------------------ + +#if HB_OUTLINE_QUEUE + +@interface HBJob : NSObject +{ + hb_job_t *fJob; +} ++ (HBJob*) jobWithJob: (hb_job_t *) job; +- (id) initWithJob: (hb_job_t *) job; +- (hb_job_t *) job; +@end + +@implementation HBJob ++ (HBJob*) jobWithJob: (hb_job_t *) job +{ + return [[[HBJob alloc] initWithJob:job] autorelease]; +} + +- (id) initWithJob: (hb_job_t *) job +{ + if (self = [super init]) + { + // job is not owned by HBJob. It does not get dealloacted when HBJob is released. + fJob = job; + } + return self; +} + +- (hb_job_t*) job +{ + return fJob; +} + +@end + +#endif // HB_OUTLINE_QUEUE + +#pragma mark - // Toolbar identifiers static NSString* HBQueueToolbar = @"HBQueueToolbar"; @@ -116,8 +176,15 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo nil]]; fShowsDetail = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsDetail"]; +#if HB_OUTLINE_QUEUE + fShowsJobsAsGroups = YES; +#else fShowsJobsAsGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; +#endif +#if HB_OUTLINE_QUEUE + fEncodes = [[NSMutableArray arrayWithCapacity:0] retain]; +#endif } return self; } @@ -133,6 +200,10 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo if ([fQueueWindow delegate] == self) [fQueueWindow setDelegate:nil]; +#if HB_OUTLINE_QUEUE + [fEncodes release]; +#endif + [super dealloc]; } @@ -145,6 +216,14 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo } //------------------------------------------------------------------------------------ +// Receive HBController +//------------------------------------------------------------------------------------ +- (void)setHBController: (HBController *)controller +{ + fHBController = controller; +} + +//------------------------------------------------------------------------------------ // Displays and brings the queue window to the front //------------------------------------------------------------------------------------ - (IBAction) showQueueWindow: (id)sender @@ -220,10 +299,19 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo [[NSUserDefaults standardUserDefaults] setBool:showsDetail forKey:@"QueueShowsDetail"]; [[NSUserDefaults standardUserDefaults] synchronize]; - // clumsy - have to update UI - [fDetailCheckbox setState:showsDetail ? NSOnState : NSOffState]; - - [fTaskView setRowHeight:showsDetail ? 98.0 : 17.0]; + [fTaskView setRowHeight:showsDetail ? HB_ROW_HEIGHT_DETAIL : HB_ROW_HEIGHT_NO_DETAIL]; +#if HB_UNI_QUEUE + if (hb_count(fHandle)) + [fTaskView noteHeightOfRowsWithIndexesChanged:[NSIndexSet indexSetWithIndex:0]]; +#endif +#if HB_OUTLINE_QUEUE + + [fOutlineView noteHeightOfRowsWithIndexesChanged: + [NSIndexSet indexSetWithIndexesInRange: + NSMakeRange(0,[fOutlineView numberOfRows]) + ]]; +#endif + if ([fTaskView selectedRow] != -1) [fTaskView scrollRowToVisible:[fTaskView selectedRow]]; } @@ -233,27 +321,85 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo //------------------------------------------------------------------------------------ - (void)setShowsJobsAsGroups: (BOOL)showsGroups { +#if HB_OUTLINE_QUEUE + return; // Can't modify this value. It's always YES. +#endif fShowsJobsAsGroups = showsGroups; [[NSUserDefaults standardUserDefaults] setBool:showsGroups forKey:@"QueueShowsJobsAsGroups"]; [[NSUserDefaults standardUserDefaults] synchronize]; - // clumsy - have to update UI - [fJobGroupsCheckbox setState:showsGroups ? NSOnState : NSOffState]; - [self updateQueueUI]; if ([fTaskView selectedRow] != -1) [fTaskView scrollRowToVisible:[fTaskView selectedRow]]; } //------------------------------------------------------------------------------------ +// Returns a 16x16 image that represents a job pass. +//------------------------------------------------------------------------------------ +- (NSImage *)smallImageForPass: (int)pass +{ + switch (pass) + { + case -1: return [NSImage imageNamed: @"JobPassSubtitleSmall"]; + case 1: return [NSImage imageNamed: @"JobPassFirstSmall"]; + case 2: return [NSImage imageNamed: @"JobPassSecondSmall"]; + default: return [NSImage imageNamed: @"JobPassUnknownSmall"]; + } +} + +//------------------------------------------------------------------------------------ +// Returns a 64x64 image that represents a job pass. +//------------------------------------------------------------------------------------ +- (NSImage *)largeImageForPass: (int)pass +{ + switch (pass) + { + case -1: return [NSImage imageNamed: @"JobPassSubtitleLarge"]; + case 1: return [NSImage imageNamed: @"JobPassFirstLarge"]; + case 2: return [NSImage imageNamed: @"JobPassSecondLarge"]; + default: return [NSImage imageNamed: @"JobPassUnknownLarge"]; + } +} + +#if HB_OUTLINE_QUEUE +//------------------------------------------------------------------------------------ +// Rebuilds the contents of fEncodes which is a array of encodes and HBJobs. +//------------------------------------------------------------------------------------ +- (void)rebuildEncodes +{ + [fEncodes removeAllObjects]; + + NSMutableArray * aJobGroup = [NSMutableArray arrayWithCapacity:0]; + hb_job_t * nextJob = hb_group( fHandle, 0 ); + while( nextJob ) + { + if (nextJob->sequence_id == 0) + { + // Encountered a new group. Add the current one to fEncodes and then start a new one. + if ([aJobGroup count] > 0) + { + [fEncodes addObject:aJobGroup]; + aJobGroup = [NSMutableArray arrayWithCapacity:0]; + } + } + [aJobGroup addObject: [HBJob jobWithJob:nextJob]]; + nextJob = hb_next_job (fHandle, nextJob); + } + if ([aJobGroup count] > 0) + [fEncodes addObject:aJobGroup]; +} +#endif + +//------------------------------------------------------------------------------------ // 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 + withTitle: (BOOL)withTitle + withDetail: (BOOL)withDetail withHighlighting: (BOOL)highlighted { NSMutableAttributedString * finalString; // the return value @@ -284,17 +430,19 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo // 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 (withTitle) + { + anAttributedString = [[[NSAttributedString alloc] initWithString:[NSString stringWithUTF8String:title->name] attributes:titleAttribute] autorelease]; + [finalString appendAttributedString:anAttributedString]; + } + // Other info in plain - aMutableString = [NSMutableString stringWithCapacity:200]; - BOOL jobGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; + aMutableString = [NSMutableString stringWithCapacity:200]; // 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 (jobGroups && job->pass == -1) + if (fShowsJobsAsGroups && 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. @@ -307,177 +455,182 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo job = nextjob; } - 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) + if (withTitle) { - [aMutableString appendString:[NSString stringWithFormat: - @" (Title %d, %@, Subtitle Scan)", title->index, chapterString]]; + 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: + @" (Title %d, %@, Subtitle Scan)", title->index, chapterString]]; + } + else + { + if (fShowsJobsAsGroups) + [aMutableString appendString:[NSString stringWithFormat: + @" (Title %d, %@, %d-Pass)", + title->index, chapterString, MIN( 2, job->pass + 1 )]]; + else + [aMutableString appendString:[NSString stringWithFormat: + @" (Title %d, %@, Pass %d of %d)", + title->index, chapterString, MAX( 1, job->pass ), MIN( 2, job->pass + 1 )]]; + } } - - // Normal pass - else + + // End of title stuff + + + // Normal pass - show detail + if (withDetail && job->pass != -1) { - if (jobGroups) - [aMutableString appendString:[NSString stringWithFormat: - @" (Title %d, %@, %d-Pass)", - title->index, chapterString, MIN( 2, job->pass + 1 )]]; + 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 - [aMutableString appendString:[NSString stringWithFormat: - @" (Title %d, %@, Pass %d of %d)", - title->index, chapterString, MAX( 1, job->pass ), MIN( 2, job->pass + 1 )]]; + jobFormat = @"unknown"; - if (detail) + // 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) { - 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 + /* 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 - 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]]]; + 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]]; - /* Audio Detail */ - if ([jobAudioCodec isEqualToString: @"AC3"]) - jobAudioDetail = [NSString stringWithFormat:@"Audio: %@, Pass-Through", 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 - 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]]]; + 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]; @@ -609,8 +762,7 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo #define p s->param.working [fProgressBar setIndeterminate:NO]; - BOOL jobGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; - float progress_total = jobGroups ? + float progress_total = fShowsJobsAsGroups ? 100.0 * ( p.progress + p.job_cur - 1 ) / p.job_count : 100.0 * p.progress; @@ -634,56 +786,14 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo } //------------------------------------------------------------------------------------ -// Refresh start/pause button (fStartPauseButton) from current state. -//------------------------------------------------------------------------------------ -- (void) updateStartPauseButton -{ - -// ************* THIS METHOD CAN DISAPPEAR. THE BUTTON IS NOW HIDDEN AND CAN BE DELETED - 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; int jobCount; - BOOL jobGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; - if (jobGroups) + if (fShowsJobsAsGroups) { jobCount = fHandle ? hb_group_count(fHandle) : 0; if (jobCount == 1) @@ -715,16 +825,16 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo if (fHandle) { - hb_get_state( fHandle, &s ); + hb_get_state2( fHandle, &s ); job = hb_current_job(fHandle); } if (job) { - [fJobDescTextField setAttributedStringValue:[self attributedDescriptionForJob:job withDetail:YES withHighlighting:NO]]; + [fJobDescTextField setAttributedStringValue:[self attributedDescriptionForJob:job withTitle:YES withDetail:YES withHighlighting:NO]]; [self showCurrentJobPane:YES]; - [fJobIconView setImage: fShowsJobsAsGroups ? [NSImage imageNamed:@"JobLarge"] : [NSImage imageNamed:@"JobPassLarge"] ]; + [fJobIconView setImage: fShowsJobsAsGroups ? [NSImage imageNamed:@"JobLarge"] : [self largeImageForPass: job->pass] ]; NSString * statusMsg = [self progressStatusStringForJob:job state:&s]; NSString * timeMsg = [self progressTimeRemainingStringForJob:job state:&s]; @@ -740,10 +850,6 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo [self showCurrentJobPane:NO]; [fProgressBar stopAnimation:nil]; // just in case in was animating } - - // Gross hack. Also update start/pause button. Have to do it here since we don't - // have any other periodic chance to update the button. - [self updateStartPauseButton]; } //------------------------------------------------------------------------------------ @@ -752,11 +858,15 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo //------------------------------------------------------------------------------------ - (void)updateQueueUI { +#if HB_OUTLINE_QUEUE + [self rebuildEncodes]; + [fOutlineView noteNumberOfRowsChanged]; + [fOutlineView reloadData]; +#endif [fTaskView noteNumberOfRowsChanged]; [fTaskView reloadData]; [self updateQueueCountField]; - [self updateStartPauseButton]; } //------------------------------------------------------------------------------------ @@ -769,109 +879,76 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo int row = [sender selectedRow]; if (row != -1) { - BOOL jobGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; - if (jobGroups) +#if HB_UNI_QUEUE + if (row == 0) + { + [self cancelCurrentJob:sender]; + } + else + { + row--; + if (fShowsJobsAsGroups) + hb_rem_group( fHandle, hb_group( fHandle, row ) ); + else + hb_rem( fHandle, hb_job( fHandle, row ) ); + } +#else + if (fShowsJobsAsGroups) 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. +// Prompts user if the want to cancel encoding of current job. If so, doCancelCurrentJob +// 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); + [fHBController Cancel:sender]; } //------------------------------------------------------------------------------------ -// Enables or disables the display of detail information for each job based on the -// state of the sender. +// Turns on the display of detail information for each job. Does nothing if detail is +// already turned on. //------------------------------------------------------------------------------------ -- (IBAction)detailChanged: (id)sender +- (IBAction)showDetail: (id)sender { - if ([sender isMemberOfClass:[NSButton class]]) - { - BOOL detail = [sender state] == NSOnState; - [[NSUserDefaults standardUserDefaults] setBool:detail forKey:@"QueueShowsDetail"]; - - [self setShowsDetail:detail]; - } + if (!fShowsDetail) + [self setShowsDetail:YES]; } //------------------------------------------------------------------------------------ -// Enables or disables the display of job groups based on the state of the sender. +// Turns off the display of detail information for each job. Does nothing if detail is +// already turned off. //------------------------------------------------------------------------------------ -- (IBAction)jobGroupsChanged: (id)sender +- (IBAction)hideDetail: (id)sender { - if ([sender isMemberOfClass:[NSButton class]]) - { - BOOL groups = [sender state] == NSOnState; - [[NSUserDefaults standardUserDefaults] setBool:groups forKey:@"QueueShowsJobsAsGroups"]; - - [self setShowsJobsAsGroups:groups]; - } - else if ([sender isMemberOfClass:[NSSegmentedControl class]]) - { - BOOL groups = [sender selectedSegment] == 0; - [[NSUserDefaults standardUserDefaults] setBool:groups forKey:@"QueueShowsJobsAsGroups"]; - - [self setShowsJobsAsGroups:groups]; - } - else if ([sender isMemberOfClass:[NSMatrix class]]) - { - BOOL groups = [sender selectedColumn] == 0; - [[NSUserDefaults standardUserDefaults] setBool:groups forKey:@"QueueShowsJobsAsGroups"]; - - [self setShowsJobsAsGroups:groups]; - } + if (fShowsDetail) + [self setShowsDetail:NO]; } //------------------------------------------------------------------------------------ -// Toggles the Shows Detail setting. +// Turns on displaying of jobs as groups by calling setShowsJobsAsGroups:YES. Does +// nothing if groups are already turned on. //------------------------------------------------------------------------------------ -- (IBAction)toggleShowsDetail: (id)sender +- (IBAction)showJobsAsGroups: (id)sender { - [self setShowsDetail:!fShowsDetail]; + if (!fShowsJobsAsGroups) + [self setShowsJobsAsGroups:YES]; } //------------------------------------------------------------------------------------ -// Toggles the Shows Jobs As Groups setting. +// Turns on displaying of jobs as individual items by calling setShowsJobsAsGroups:NO. +// Does nothing if groups are already turned off. //------------------------------------------------------------------------------------ -- (IBAction)toggleShowsJobsAsGroups: (id)sender +- (IBAction)showJobsAsPasses: (id)sender { - [self setShowsJobsAsGroups:!fShowsJobsAsGroups]; + if (fShowsJobsAsGroups) + [self setShowsJobsAsGroups:NO]; } //------------------------------------------------------------------------------------ @@ -890,14 +967,13 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo hb_pause (fHandle); else { - BOOL jobGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; - if (jobGroups) + if (fShowsJobsAsGroups) { if (hb_group_count(fHandle) > 0) - hb_start (fHandle); + [fHBController doRip]; } else if (hb_count(fHandle) > 0) - hb_start (fHandle); + [fHBController doRip]; } } @@ -959,33 +1035,45 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier] autorelease]; // Set the text label to be displayed in the toolbar and customization palette - [toolbarItem setLabel: @"Show Detail"]; - [toolbarItem setPaletteLabel: @"Show Detail"]; + [toolbarItem setLabel: @"Detail"]; + [toolbarItem setPaletteLabel: @"Detail"]; // Set up a reasonable tooltip, and image - [toolbarItem setToolTip: @"Show Detail"]; - [toolbarItem setImage: [NSImage imageNamed: @"Info"]]; + [toolbarItem setToolTip: @"Displays detailed information in the queue"]; + [toolbarItem setImage: [NSImage imageNamed: @"Detail"]]; // Tell the item what message to send when it is clicked [toolbarItem setTarget: self]; - [toolbarItem setAction: @selector(toggleShowsDetail:)]; + [toolbarItem setAction: fShowsDetail ? @selector(hideDetail:) : @selector(showDetail:)]; } else if ([itemIdentifier isEqual: HBShowGroupsToolbarIdentifier]) { toolbarItem = [[[NSToolbarItem alloc] initWithItemIdentifier: itemIdentifier] autorelease]; +/* // Set the text label to be displayed in the toolbar and customization palette - [toolbarItem setLabel: @"View"]; - [toolbarItem setPaletteLabel: @"View"]; + [toolbarItem setLabel: @"Passes"]; + [toolbarItem setPaletteLabel: @"Passes"]; // Set up a reasonable tooltip, and image - [toolbarItem setToolTip: @"View"]; -// [toolbarItem setImage: [NSImage imageNamed: @"Disc"]]; - + [toolbarItem setToolTip: @"Displays individual passes in the queue"]; + [toolbarItem setImage: [NSImage imageNamed: @"Passes"]]; + // Tell the item what message to send when it is clicked + [toolbarItem setTarget: self]; + [toolbarItem setAction: fShowsJobsAsGroups ? @selector(showJobsAsPasses:) : @selector(showJobsAsGroups:)]; +*/ + +// Various attempts at other button types in the toolbar. A matrix worked fine to display +// a button for encodes & passes, but ultimately I decided to go with a single button +// called "Passes" that toggles on or off. All these suffer from the fact taht you need +// to override NSToolbarItem for them in order to validate their state. + [toolbarItem setLabel: @"View"]; + [toolbarItem setPaletteLabel: @"View"]; + NSButtonCell * buttonCell = [[[NSButtonCell alloc] initImageCell:nil] autorelease]; - [buttonCell setBezelStyle:NSShadowlessSquareBezelStyle];//NSShadowlessSquareBezelStyle + [buttonCell setBezelStyle:NSShadowlessSquareBezelStyle]; [buttonCell setButtonType:NSToggleButton]; [buttonCell setBordered:NO]; [buttonCell setImagePosition:NSImageOnly]; @@ -1003,10 +1091,16 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo [buttonCell setTitle:@""]; [buttonCell setImage:[NSImage imageNamed: @"Encodes"]]; [buttonCell setAlternateImage:[NSImage imageNamed: @"EncodesPressed"]]; + [buttonCell setAction: @selector(showJobsAsGroups:)]; + [matrix setToolTip: @"Displays encodes in the queue" forCell:buttonCell]; + buttonCell = [matrix cellAtRow:0 column:1]; [buttonCell setTitle:@""]; [buttonCell setImage:[NSImage imageNamed: @"Passes"]]; [buttonCell setAlternateImage:[NSImage imageNamed: @"PassesPressed"]]; + [buttonCell setAction: @selector(showJobsAsPasses:)]; + [matrix setToolTip: @"Displays individual passes in the queue" forCell:buttonCell]; + [toolbarItem setMinSize: [matrix frame].size]; [toolbarItem setMaxSize: [matrix frame].size]; [toolbarItem setView: matrix]; @@ -1027,18 +1121,18 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo */ /* - NSButton * button = [[[NSButton alloc] initWithFrame:NSMakeRect(0,0,20,20)] autorelease]; + NSButton * button = [[[NSButton alloc] initWithFrame:NSMakeRect(0,0,32,32)] autorelease]; [button setButtonType:NSSwitchButton]; [button setTitle:@""]; [button setState: fShowsJobsAsGroups ? NSOnState : NSOffState]; [toolbarItem setMinSize: NSMakeSize(20,20)]; [toolbarItem setMaxSize: NSMakeSize(20,20)]; [toolbarItem setView: button]; -*/ // Tell the item what message to send when it is clicked [toolbarItem setTarget: self]; [toolbarItem setAction: @selector(jobGroupsChanged:)]; +*/ } return toolbarItem; @@ -1134,38 +1228,34 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo } } -/* not used because HBShowGroupsToolbarIdentifier is now a custom view else if ([[toolbarItem itemIdentifier] isEqual: HBShowGroupsToolbarIdentifier]) { enable = hb_count(fHandle) > 0; + [toolbarItem setAction: fShowsJobsAsGroups ? @selector(showJobsAsPasses:) : @selector(showJobsAsGroups:)]; if (fShowsJobsAsGroups) { - [toolbarItem setLabel: @"View Passes"]; - [toolbarItem setPaletteLabel: @"View Passes"]; - [toolbarItem setToolTip: @"Displays items in the queue as individual passes"]; + [toolbarItem setImage: [NSImage imageNamed: @"Passes"]]; + [toolbarItem setToolTip: @"Displays individual passes in the queue"]; } else { - [toolbarItem setLabel: @"View Encodes"]; - [toolbarItem setPaletteLabel: @"View Encodes"]; - [toolbarItem setToolTip: @"Displays items in the queue as encodes"]; + [toolbarItem setImage: [NSImage imageNamed: @"PassesPressed"]]; + [toolbarItem setToolTip: @"Displays encodes in the queue"]; } } -*/ else if ([[toolbarItem itemIdentifier] isEqual: HBShowDetailToolbarIdentifier]) { enable = hb_count(fHandle) > 0; + [toolbarItem setAction: fShowsDetail ? @selector(hideDetail:) : @selector(showDetail:)]; if (fShowsDetail) { - [toolbarItem setLabel: @"Hide Detail"]; - [toolbarItem setPaletteLabel: @"Hide Detail"]; - [toolbarItem setToolTip: @"Displays detailed information in the queue"]; + [toolbarItem setImage: [NSImage imageNamed: @"DetailPressed"]]; + [toolbarItem setToolTip: @"Hides detailed information in the queue"]; } else { - [toolbarItem setLabel: @"Show Detail"]; - [toolbarItem setPaletteLabel: @"Show Detail"]; + [toolbarItem setImage: [NSImage imageNamed: @"Detail"]]; [toolbarItem setToolTip: @"Displays detailed information in the queue"]; } } @@ -1191,6 +1281,16 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo [self setShowsDetail:fShowsDetail]; [self setShowsJobsAsGroups:fShowsJobsAsGroups]; [self showCurrentJobPane:NO]; + +#if HB_QUEUE_DRAGGING + [fTaskView registerForDraggedTypes: [NSArray arrayWithObject:HBQueueDataType] ]; +#endif + +#if HB_OUTLINE_QUEUE + // Don't allow autoresizing of main column, else the "delete" column will get + // pushed out of view. + [fOutlineView setAutoresizesOutlineColumn: NO]; +#endif } @@ -1210,11 +1310,18 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo //------------------------------------------------------------------------------------ - (int)numberOfRowsInTableView: (NSTableView *)aTableView { - BOOL jobGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; - if (jobGroups) +#if HB_UNI_QUEUE + int numItems = hb_current_job(fHandle) ? 1 : 0; + if (fShowsJobsAsGroups) + return numItems + hb_group_count(fHandle); + else + return numItems + hb_count(fHandle); +#else + if (fShowsJobsAsGroups) return hb_group_count(fHandle); else return hb_count(fHandle); +#endif } //------------------------------------------------------------------------------------ @@ -1227,28 +1334,47 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo if (!fHandle) return @""; // fatal error! - hb_job_t * job; + hb_job_t * job = nil; - BOOL jobGroups = [[NSUserDefaults standardUserDefaults] boolForKey:@"QueueShowsJobsAsGroups"]; - if (jobGroups) +#if HB_UNI_QUEUE + // Looking for the current job? + int jobIndex = rowIndex; + if (hb_current_job(fHandle)) + { + if (rowIndex == 0) + job = hb_current_job(fHandle); + else + jobIndex = rowIndex - 1; + } + + if (!job) + { + if (fShowsJobsAsGroups) + job = hb_group(fHandle, jobIndex); + else + job = hb_job(fHandle, jobIndex); + } +#else + if (fShowsJobsAsGroups) 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); - return [self attributedDescriptionForJob:job withDetail:fShowsDetail withHighlighting:highlighted]; + return [self attributedDescriptionForJob:job withTitle:YES withDetail:fShowsDetail withHighlighting:highlighted]; } else if ([[aTableColumn identifier] isEqualToString:@"delete"]) return @""; else if ([[aTableColumn identifier] isEqualToString:@"icon"]) - return fShowsJobsAsGroups ? [NSImage imageNamed:@"JobSmall"] : [NSImage imageNamed:@"JobPassSmall"]; + return fShowsJobsAsGroups ? [NSImage imageNamed:@"JobSmall"] : [self smallImageForPass: job->pass]; return @""; } @@ -1276,4 +1402,153 @@ static NSString* HBShowGroupsToolbarIdentifier = @"HBShowGroupsTo } } +//------------------------------------------------------------------------------------ +// NSTableView delegate +//------------------------------------------------------------------------------------ +#if HB_UNI_QUEUE +- (float)tableView:(NSTableView *)tableView heightOfRow:(int)row +{ + if ((row == 0) && hb_current_job(fHandle)) + return HB_ROW_HEIGHT_ACTIVE_JOB; + else + return fShowsDetail ? HB_ROW_HEIGHT_DETAIL : HB_ROW_HEIGHT_NO_DETAIL; +} +#endif + +#if HB_QUEUE_DRAGGING +- (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard*)pboard +{ + // Copy the row numbers to the pasteboard. + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes]; + [pboard declareTypes:[NSArray arrayWithObject:HBQueueDataType] owner:self]; + [pboard setData:data forType:HBQueueDataType]; + return YES; +} +#endif + +#if HB_QUEUE_DRAGGING +- (NSDragOperation)tableView:(NSTableView*)tv validateDrop:(id <NSDraggingInfo>)info proposedRow:(int)row proposedDropOperation:(NSTableViewDropOperation)op +{ + // Add code here to validate the drop + NSLog(@"validate Drop"); + return NSDragOperationEvery; +} +#endif + +#if HB_QUEUE_DRAGGING +- (BOOL)tableView:(NSTableView *)aTableView acceptDrop:(id <NSDraggingInfo>)info + row:(int)row dropOperation:(NSTableViewDropOperation)operation +{ + NSPasteboard* pboard = [info draggingPasteboard]; + NSData* rowData = [pboard dataForType:HBQueueDataType]; + NSIndexSet* rowIndexes = [NSKeyedUnarchiver unarchiveObjectWithData:rowData]; + int dragRow = [rowIndexes firstIndex]; + + // Move the specified row to its new location... + + return YES; +} +#endif + + +#if HB_OUTLINE_QUEUE + +- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item +{ + if (item == nil) + return [fEncodes objectAtIndex:index]; + else + return [item objectAtIndex:index]; +} + +- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item +{ + return ! [item isKindOfClass:[HBJob class]]; +} + +- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item +{ + if (item == nil) + return [fEncodes count]; + else + return [item count]; +} + +- (float)outlineView:(NSOutlineView *)outlineView heightOfRowByItem:(id)item +{ + if (fShowsDetail && [item isKindOfClass:[HBJob class]]) + return HB_ROW_HEIGHT_DETAIL; + else + return HB_ROW_HEIGHT_NO_DETAIL; +} + +- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item +{ + BOOL highlighted = [outlineView isRowSelected:[outlineView rowForItem: item]] && [[outlineView window] isKeyWindow] && ([[outlineView window] firstResponder] == outlineView); + if ([item isKindOfClass:[HBJob class]]) + { + if ([[tableColumn identifier] isEqualToString:@"desc"]) + { + hb_job_t * job = [item job]; +// return [self attributedDescriptionForJob:job withTitle:NO withDetail:fShowsDetail withHighlighting:highlighted]; + if (job->pass == -1) + return @"Subtitle Scan"; + else + { + int passNum = MAX( 1, job->pass ); + if (passNum == 1) + return @"1st Pass"; + if (passNum == 2) + return @"2nd Pass"; + else + return [NSString stringWithFormat: @"Pass %d", passNum]; + } + } + } + + else + { + hb_job_t * job = [[item objectAtIndex:0] job]; + if ([[tableColumn identifier] isEqualToString:@"desc"]) + return [self attributedDescriptionForJob:job withTitle:YES withDetail:NO withHighlighting:highlighted]; + } + + return @""; +} + +- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item +{ + if ([[tableColumn identifier] isEqualToString:@"desc"]) + { + if ([item isKindOfClass:[HBJob class]]) + [cell setImage:[self smallImageForPass: [item job]->pass]]; + else + [cell setImage:[NSImage imageNamed:@"JobSmall"]]; + } + + else if ([[tableColumn identifier] isEqualToString:@"delete"]) + { + // The Delete action can only be applied for group items, not indivdual jobs. + if ([item isKindOfClass:[HBJob class]]) + { + [cell setEnabled: NO]; + [cell setImage: nil]; + } + else + { + [cell setEnabled: YES]; + BOOL highlighted = [outlineView isRowSelected:[outlineView rowForItem: item]] && [[outlineView window] isKeyWindow] && ([[outlineView window] firstResponder] == outlineView); + if (highlighted) + { + [cell setImage:[NSImage imageNamed:@"DeleteHighlight"]]; + [cell setAlternateImage:[NSImage imageNamed:@"DeleteHighlightPressed"]]; + } + else + [cell setImage:[NSImage imageNamed:@"Delete"]]; + } + } +} + +#endif + @end diff --git a/macosx/HandBrake.xcodeproj/project.pbxproj b/macosx/HandBrake.xcodeproj/project.pbxproj index 9f0045429..aec33037a 100644 --- a/macosx/HandBrake.xcodeproj/project.pbxproj +++ b/macosx/HandBrake.xcodeproj/project.pbxproj @@ -131,7 +131,6 @@ A9AC41DF0C918DB500DDF9B8 /* HBAdvancedController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9AC41DD0C918DB500DDF9B8 /* HBAdvancedController.m */; }; A9AC41E00C918DB500DDF9B8 /* HBAdvancedController.h in Headers */ = {isa = PBXBuildFile; fileRef = A9AC41DE0C918DB500DDF9B8 /* HBAdvancedController.h */; }; A9AC41E70C918DC000DDF9B8 /* AdvancedView.nib in Resources */ = {isa = PBXBuildFile; fileRef = A9AC41E50C918DC000DDF9B8 /* AdvancedView.nib */; }; - A9B4CEC80C95752B0086548A /* pref-general.png in Resources */ = {isa = PBXBuildFile; fileRef = A9B4CEC70C95752B0086548A /* pref-general.png */; }; A9DE40450C959834008A5440 /* minus-8.png in Resources */ = {isa = PBXBuildFile; fileRef = A9DE40430C959834008A5440 /* minus-8.png */; }; A9DE40460C959834008A5440 /* plus-8.png in Resources */ = {isa = PBXBuildFile; fileRef = A9DE40440C959834008A5440 /* plus-8.png */; }; B48359A80C82960500E04440 /* lang.c in Sources */ = {isa = PBXBuildFile; fileRef = B48359A70C82960500E04440 /* lang.c */; }; @@ -142,9 +141,16 @@ E30EC7740C90BDD0004B9545 /* PassesPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = E30EC7700C90BDD0004B9545 /* PassesPressed.png */; }; E30EC7750C90BDD0004B9545 /* Passes.png in Resources */ = {isa = PBXBuildFile; fileRef = E30EC7710C90BDD0004B9545 /* Passes.png */; }; E30EC7760C90BDD0004B9545 /* EncodesPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = E30EC7720C90BDD0004B9545 /* EncodesPressed.png */; }; - E318F0470C90D6D3003EFB59 /* JobPassLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = E318F0460C90D6D3003EFB59 /* JobPassLarge.png */; }; - E318F0580C90D88C003EFB59 /* JobPassSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = E318F0570C90D88C003EFB59 /* JobPassSmall.png */; }; - E318F0830C90DC4A003EFB59 /* Info.png in Resources */ = {isa = PBXBuildFile; fileRef = E318F0820C90DC4A003EFB59 /* Info.png */; }; + E37167800C92F5090072B384 /* DetailPressed.png in Resources */ = {isa = PBXBuildFile; fileRef = E371677E0C92F5090072B384 /* DetailPressed.png */; }; + E37167810C92F5090072B384 /* Detail.png in Resources */ = {isa = PBXBuildFile; fileRef = E371677F0C92F5090072B384 /* Detail.png */; }; + E37167890C92F6180072B384 /* JobPassSecondSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = E37167830C92F6180072B384 /* JobPassSecondSmall.png */; }; + E371678A0C92F6180072B384 /* JobPassSubtitleSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = E37167840C92F6180072B384 /* JobPassSubtitleSmall.png */; }; + E371678B0C92F6180072B384 /* JobPassFirstSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = E37167850C92F6180072B384 /* JobPassFirstSmall.png */; }; + E371678C0C92F6180072B384 /* JobPassFirstLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = E37167860C92F6180072B384 /* JobPassFirstLarge.png */; }; + E371678D0C92F6180072B384 /* JobPassSubtitleLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = E37167870C92F6180072B384 /* JobPassSubtitleLarge.png */; }; + E371678E0C92F6180072B384 /* JobPassSecondLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = E37167880C92F6180072B384 /* JobPassSecondLarge.png */; }; + E37167A90C92FAA50072B384 /* JobPassUnknownSmall.png in Resources */ = {isa = PBXBuildFile; fileRef = E37167A70C92FAA50072B384 /* JobPassUnknownSmall.png */; }; + E37167AA0C92FAA50072B384 /* JobPassUnknownLarge.png in Resources */ = {isa = PBXBuildFile; fileRef = E37167A80C92FAA50072B384 /* JobPassUnknownLarge.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 */; }; @@ -307,9 +313,16 @@ E30EC7700C90BDD0004B9545 /* PassesPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = PassesPressed.png; sourceTree = "<group>"; }; E30EC7710C90BDD0004B9545 /* Passes.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Passes.png; sourceTree = "<group>"; }; E30EC7720C90BDD0004B9545 /* EncodesPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = EncodesPressed.png; sourceTree = "<group>"; }; - E318F0460C90D6D3003EFB59 /* JobPassLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassLarge.png; sourceTree = "<group>"; }; - E318F0570C90D88C003EFB59 /* JobPassSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSmall.png; sourceTree = "<group>"; }; - E318F0820C90DC4A003EFB59 /* Info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Info.png; sourceTree = "<group>"; }; + E371677E0C92F5090072B384 /* DetailPressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DetailPressed.png; sourceTree = "<group>"; }; + E371677F0C92F5090072B384 /* Detail.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Detail.png; sourceTree = "<group>"; }; + E37167830C92F6180072B384 /* JobPassSecondSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSecondSmall.png; sourceTree = "<group>"; }; + E37167840C92F6180072B384 /* JobPassSubtitleSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSubtitleSmall.png; sourceTree = "<group>"; }; + E37167850C92F6180072B384 /* JobPassFirstSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassFirstSmall.png; sourceTree = "<group>"; }; + E37167860C92F6180072B384 /* JobPassFirstLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassFirstLarge.png; sourceTree = "<group>"; }; + E37167870C92F6180072B384 /* JobPassSubtitleLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSubtitleLarge.png; sourceTree = "<group>"; }; + E37167880C92F6180072B384 /* JobPassSecondLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassSecondLarge.png; sourceTree = "<group>"; }; + E37167A70C92FAA50072B384 /* JobPassUnknownSmall.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassUnknownSmall.png; sourceTree = "<group>"; }; + E37167A80C92FAA50072B384 /* JobPassUnknownLarge.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JobPassUnknownLarge.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>"; }; @@ -558,15 +571,22 @@ E3003CB40C8852B70072F2A8 /* DeletePressed.png */, E37C893D0C83988F00C1B919 /* DeleteHighlight.png */, E3003C7E0C88505D0072F2A8 /* DeleteHighlightPressed.png */, - E37C89400C83988F00C1B919 /* JobLarge.png */, - E37C893F0C83988F00C1B919 /* JobSmall.png */, E30EC76F0C90BDD0004B9545 /* Encodes.png */, E30EC7720C90BDD0004B9545 /* EncodesPressed.png */, E30EC7700C90BDD0004B9545 /* PassesPressed.png */, E30EC7710C90BDD0004B9545 /* Passes.png */, - E318F0570C90D88C003EFB59 /* JobPassSmall.png */, - E318F0460C90D6D3003EFB59 /* JobPassLarge.png */, - E318F0820C90DC4A003EFB59 /* Info.png */, + E37C89400C83988F00C1B919 /* JobLarge.png */, + E37C893F0C83988F00C1B919 /* JobSmall.png */, + E37167850C92F6180072B384 /* JobPassFirstSmall.png */, + E37167860C92F6180072B384 /* JobPassFirstLarge.png */, + E37167830C92F6180072B384 /* JobPassSecondSmall.png */, + E37167880C92F6180072B384 /* JobPassSecondLarge.png */, + E37167840C92F6180072B384 /* JobPassSubtitleSmall.png */, + E37167870C92F6180072B384 /* JobPassSubtitleLarge.png */, + E37167A70C92FAA50072B384 /* JobPassUnknownSmall.png */, + E37167A80C92FAA50072B384 /* JobPassUnknownLarge.png */, + E371677E0C92F5090072B384 /* DetailPressed.png */, + E371677F0C92F5090072B384 /* Detail.png */, ); path = icons; sourceTree = "<group>"; @@ -760,13 +780,19 @@ E30EC7740C90BDD0004B9545 /* PassesPressed.png in Resources */, E30EC7750C90BDD0004B9545 /* Passes.png in Resources */, E30EC7760C90BDD0004B9545 /* EncodesPressed.png in Resources */, - E318F0470C90D6D3003EFB59 /* JobPassLarge.png in Resources */, - E318F0580C90D88C003EFB59 /* JobPassSmall.png in Resources */, - E318F0830C90DC4A003EFB59 /* Info.png in Resources */, A9AC41E70C918DC000DDF9B8 /* AdvancedView.nib in Resources */, A97A1DB40C91A6800015BC08 /* Express.nib in Resources */, A9ABA2270C92AECA00D98324 /* PictureSettings.nib in Resources */, - A9B4CEC80C95752B0086548A /* pref-general.png in Resources */, + E37167800C92F5090072B384 /* DetailPressed.png in Resources */, + E37167810C92F5090072B384 /* Detail.png in Resources */, + E37167890C92F6180072B384 /* JobPassSecondSmall.png in Resources */, + E371678A0C92F6180072B384 /* JobPassSubtitleSmall.png in Resources */, + E371678B0C92F6180072B384 /* JobPassFirstSmall.png in Resources */, + E371678C0C92F6180072B384 /* JobPassFirstLarge.png in Resources */, + E371678D0C92F6180072B384 /* JobPassSubtitleLarge.png in Resources */, + E371678E0C92F6180072B384 /* JobPassSecondLarge.png in Resources */, + E37167A90C92FAA50072B384 /* JobPassUnknownSmall.png in Resources */, + E37167AA0C92FAA50072B384 /* JobPassUnknownLarge.png in Resources */, A9DE40450C959834008A5440 /* minus-8.png in Resources */, A9DE40460C959834008A5440 /* plus-8.png in Resources */, A94537560C95E6A300EBB9B1 /* pref-picture.png in Resources */, diff --git a/macosx/icons/Detail.png b/macosx/icons/Detail.png Binary files differnew file mode 100644 index 000000000..b98500a08 --- /dev/null +++ b/macosx/icons/Detail.png diff --git a/macosx/icons/DetailPressed.png b/macosx/icons/DetailPressed.png Binary files differnew file mode 100644 index 000000000..b4ecf3e16 --- /dev/null +++ b/macosx/icons/DetailPressed.png diff --git a/macosx/icons/JobPassFirstLarge.png b/macosx/icons/JobPassFirstLarge.png Binary files differnew file mode 100644 index 000000000..e772fdbe3 --- /dev/null +++ b/macosx/icons/JobPassFirstLarge.png diff --git a/macosx/icons/JobPassFirstSmall.png b/macosx/icons/JobPassFirstSmall.png Binary files differnew file mode 100644 index 000000000..415ac3f93 --- /dev/null +++ b/macosx/icons/JobPassFirstSmall.png diff --git a/macosx/icons/JobPassSecondLarge.png b/macosx/icons/JobPassSecondLarge.png Binary files differnew file mode 100644 index 000000000..f5f6dcd69 --- /dev/null +++ b/macosx/icons/JobPassSecondLarge.png diff --git a/macosx/icons/JobPassSecondSmall.png b/macosx/icons/JobPassSecondSmall.png Binary files differnew file mode 100644 index 000000000..ec111d2f9 --- /dev/null +++ b/macosx/icons/JobPassSecondSmall.png diff --git a/macosx/icons/JobPassSubtitleLarge.png b/macosx/icons/JobPassSubtitleLarge.png Binary files differnew file mode 100644 index 000000000..8ea9ddbc9 --- /dev/null +++ b/macosx/icons/JobPassSubtitleLarge.png diff --git a/macosx/icons/JobPassSubtitleSmall.png b/macosx/icons/JobPassSubtitleSmall.png Binary files differnew file mode 100644 index 000000000..c6e04bee1 --- /dev/null +++ b/macosx/icons/JobPassSubtitleSmall.png diff --git a/macosx/icons/JobPassUnknownLarge.png b/macosx/icons/JobPassUnknownLarge.png Binary files differnew file mode 100644 index 000000000..c6c50878d --- /dev/null +++ b/macosx/icons/JobPassUnknownLarge.png diff --git a/macosx/icons/JobPassUnknownSmall.png b/macosx/icons/JobPassUnknownSmall.png Binary files differnew file mode 100644 index 000000000..d60542e3f --- /dev/null +++ b/macosx/icons/JobPassUnknownSmall.png |