summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--macosx/Controller.h1
-rw-r--r--macosx/Controller.m58
-rw-r--r--macosx/English.lproj/MainMenu.xib16
-rw-r--r--macosx/English.lproj/PictureSettings.xib45
-rw-r--r--macosx/English.lproj/Video.xib33
-rw-r--r--macosx/HBJob.h2
-rw-r--r--macosx/HBJob.m14
-rw-r--r--macosx/HBOutputPanelController.h4
-rw-r--r--macosx/HBOutputPanelController.m4
-rw-r--r--macosx/HBPicture.m25
-rw-r--r--macosx/HBQueueController.mm19
-rw-r--r--macosx/HBRange.m5
-rw-r--r--macosx/HBUtilities.m12
-rw-r--r--macosx/HBVideo+UIAdditions.m2
-rw-r--r--macosx/HBVideo.m9
-rw-r--r--macosx/HBVideoController.h10
-rw-r--r--macosx/HBVideoController.m11
17 files changed, 158 insertions, 112 deletions
diff --git a/macosx/Controller.h b/macosx/Controller.h
index e0dae9d3f..2ee9999e9 100644
--- a/macosx/Controller.h
+++ b/macosx/Controller.h
@@ -136,7 +136,6 @@
IBOutlet NSMenu * presetsMenu;
IBOutlet NSDrawer * fPresetDrawer;
- IBOutlet NSTextField * fPresetSelectedDisplay;
/* Queue variables */
int hbInstanceNum; //stores the number of HandBrake instances currently running
diff --git a/macosx/Controller.m b/macosx/Controller.m
index 94bd09d44..abdc563f4 100644
--- a/macosx/Controller.m
+++ b/macosx/Controller.m
@@ -141,10 +141,6 @@
[fQueueController setHBController:self];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(autoSetM4vExtension:) name:HBMixdownChangedNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pictureSettingsDidChange) name:HBPictureChangedNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pictureSettingsDidChange) name:HBFiltersChangedNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(formatChanged:) name:HBContainerChangedNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(customSettingUsed) name:HBVideoChangedNotification object:nil];
}
return self;
@@ -322,11 +318,24 @@
fPictureController.filters = job.filters;
fPreviewController.job = job;
- fVideoController.video = job.video;
+ fVideoController.job = job;
fAudioController.job = job;
fSubtitlesViewController.job = job;
fChapterTitlesController.job = job;
+ if (job)
+ {
+ [[NSNotificationCenter defaultCenter] removeObserver:_job];
+ [[NSNotificationCenter defaultCenter] removeObserver:_job.picture];
+ [[NSNotificationCenter defaultCenter] removeObserver:_job.filters];
+ [[NSNotificationCenter defaultCenter] removeObserver:_job.video];
+
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pictureSettingsDidChange) name:HBPictureChangedNotification object:job.picture];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pictureSettingsDidChange) name:HBFiltersChangedNotification object:job.filters];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(formatChanged:) name:HBContainerChangedNotification object:job];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(customSettingUsed) name:HBVideoChangedNotification object:job.video];
+ }
+
// Retain the new job
[_job autorelease];
_job = [job retain];
@@ -1132,7 +1141,7 @@
}
if (action == @selector(selectPresetFromMenu:))
{
- if (!self.customPreset && [menuItem.representedObject isEqualTo:self.selectedPreset])
+ if ([menuItem.representedObject isEqualTo:self.selectedPreset])
{
[menuItem setState:NSOnState];
}
@@ -1537,7 +1546,6 @@
if (self.jobFromQueue)
{
[fPresetsView deselect];
- [self pictureSettingsDidChange];
self.jobFromQueue = nil;
}
@@ -1951,12 +1959,13 @@ static void queueFSEventStreamCallback(
{
HBJob *queueJob = QueueFileArray[currentQueueEncodeIndex];
// Tell HB to output a new activity log file for this encode
- [outputPanel startEncodeLog:[queueJob.destURL.path stringByDeletingLastPathComponent]];
+ [outputPanel startEncodeLog:queueJob.destURL];
// We now flag the queue item as being owned by this instance of HB using the PID
queueJob.pidId = pidNum;
// Get the currentQueueEncodeNameString from the queue item to display in the status field */
- currentQueueEncodeNameString = [[queueJob.destURL.path lastPathComponent]retain];
+ [currentQueueEncodeNameString autorelease];
+ currentQueueEncodeNameString = [[queueJob.destURL.path lastPathComponent] retain];
// We save all of the Queue data here
[self saveQueueFileItem];
@@ -2477,9 +2486,6 @@ static void queueFSEventStreamCallback(
// apply the current preset
if (!self.jobFromQueue)
{
- // Set Auto Crop to on upon selecting a new title
- self.job.picture.autocrop = YES;
-
[self applyPreset:self.selectedPreset];
}
}
@@ -2553,11 +2559,10 @@ static void queueFSEventStreamCallback(
*/
- (void)customSettingUsed
{
- // Deselect the currently selected Preset if there is one*/
+ // Deselect the currently selected Preset if there is one
[fPresetsView deselect];
- // Change UI to show "Custom" settings are being used */
- fPresetSelectedDisplay.stringValue = NSLocalizedString(@"Custom", @"");
- self.customPreset = YES;
+ // Change UI to show "Custom" settings are being used
+ self.job.presetName = NSLocalizedString(@"Custom", @"");
// If Auto Naming is on it might need to be update if it includes the quality token
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"DefaultAutoNaming"])
@@ -2574,12 +2579,7 @@ static void queueFSEventStreamCallback(
*/
- (void)pictureSettingsDidChange
{
- // align picture settings and video filters in the UI using tabs
- fVideoController.pictureSettings = self.job.picture.summary;
- fVideoController.pictureFilters = self.job.filters.summary;
-
[fPreviewController reloadPreviews];
-
[self customSettingUsed];
}
@@ -2672,16 +2672,6 @@ static void queueFSEventStreamCallback(
if (preset != nil && self.job)
{
self.selectedPreset = preset;
- self.customPreset = NO;
-
- if (preset.isDefault)
- {
- fPresetSelectedDisplay.stringValue = [NSString stringWithFormat:@"%@ (Default)", preset.name];
- }
- else
- {
- fPresetSelectedDisplay.stringValue = preset.name;
- }
// Apply the preset to the current job
[self.job applyPreset:preset];
@@ -2698,10 +2688,6 @@ static void queueFSEventStreamCallback(
[self updateFileName];
}
- // align picture settings and video filters in the UI using tabs
- fVideoController.pictureSettings = self.job.picture.summary;
- fVideoController.pictureFilters = self.job.filters.summary;
-
[fPreviewController reloadPreviews];
}
}
@@ -2764,7 +2750,7 @@ static void queueFSEventStreamCallback(
NSDictionary *currentPreset = self.selectedPreset.content;
preset[@"PresetBuildNumber"] = [NSString stringWithFormat: @"%d", [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] intValue]];
- preset[@"PresetName"] = fPresetSelectedDisplay.stringValue;
+ preset[@"PresetName"] = self.job.presetName;
preset[@"Folder"] = @NO;
// Set whether or not this is a user preset or factory 0 is factory, 1 is user
diff --git a/macosx/English.lproj/MainMenu.xib b/macosx/English.lproj/MainMenu.xib
index 889f71771..55b60f03f 100644
--- a/macosx/English.lproj/MainMenu.xib
+++ b/macosx/English.lproj/MainMenu.xib
@@ -292,12 +292,12 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
+ <binding destination="240" name="value" keyPath="self.job.range.frameStart" id="7yg-HW-q0R"/>
<binding destination="240" name="hidden" keyPath="self.job.range.framesSelected" id="nnF-AN-v4Q">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="240" name="value" keyPath="self.job.range.frameStart" id="7yg-HW-q0R"/>
</connections>
</textField>
<textField hidden="YES" verticalHuggingPriority="750" id="5493">
@@ -326,12 +326,12 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
+ <binding destination="240" name="value" keyPath="self.job.range.frameStop" id="8G6-K0-vyD"/>
<binding destination="240" name="hidden" keyPath="self.job.range.framesSelected" id="P5u-F3-Qyx">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="240" name="value" keyPath="self.job.range.frameStop" id="8G6-K0-vyD"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" id="1627">
@@ -358,6 +358,9 @@
<color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
+ <connections>
+ <binding destination="240" name="value" keyPath="self.job.presetName" id="R4b-YQ-IeI"/>
+ </connections>
</textField>
<textField verticalHuggingPriority="750" id="2006">
<rect key="frame" x="711" y="15" width="218" height="14"/>
@@ -443,13 +446,13 @@
</popUpButtonCell>
<accessibility description="Start Chapter"/>
<connections>
+ <binding destination="240" name="selectedIndex" keyPath="self.job.range.chapterStart" previousBinding="6kP-TS-bEc" id="U76-2W-TvD"/>
+ <binding destination="240" name="content" keyPath="self.job.range.chapters" id="6kP-TS-bEc"/>
<binding destination="240" name="hidden" keyPath="self.job.range.chaptersSelected" id="fix-9c-5P3">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="240" name="selectedIndex" keyPath="self.job.range.chapterStart" previousBinding="6kP-TS-bEc" id="U76-2W-TvD"/>
- <binding destination="240" name="content" keyPath="self.job.range.chapters" id="6kP-TS-bEc"/>
</connections>
</popUpButton>
<popUpButton verticalHuggingPriority="750" id="1548">
@@ -466,13 +469,13 @@
</popUpButtonCell>
<accessibility description="End Chapter"/>
<connections>
+ <binding destination="240" name="selectedIndex" keyPath="self.job.range.chapterStop" previousBinding="Yqp-Sg-lBf" id="4k2-Sm-RoJ"/>
+ <binding destination="240" name="content" keyPath="self.job.range.chapters" id="Yqp-Sg-lBf"/>
<binding destination="240" name="hidden" keyPath="self.job.range.chaptersSelected" id="PxP-LY-ZXR">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="240" name="selectedIndex" keyPath="self.job.range.chapterStop" previousBinding="Yqp-Sg-lBf" id="4k2-Sm-RoJ"/>
- <binding destination="240" name="content" keyPath="self.job.range.chapters" id="Yqp-Sg-lBf"/>
</connections>
</popUpButton>
</subviews>
@@ -1025,7 +1028,6 @@ DQ
<outlet property="fMainTabView" destination="1474" id="XMU-Vi-8QM"/>
<outlet property="fOpenSourceTitleMMenu" destination="2698" id="2700"/>
<outlet property="fPresetDrawer" destination="1841" id="1889"/>
- <outlet property="fPresetSelectedDisplay" destination="1882" id="1883"/>
<outlet property="fQueueStatus" destination="2006" id="2007"/>
<outlet property="fRipIndicator" destination="1373" id="1374"/>
<outlet property="fScanHorizontalLine" destination="3205" id="6004"/>
diff --git a/macosx/English.lproj/PictureSettings.xib b/macosx/English.lproj/PictureSettings.xib
index 9fac46c13..811dc456d 100644
--- a/macosx/English.lproj/PictureSettings.xib
+++ b/macosx/English.lproj/PictureSettings.xib
@@ -106,18 +106,18 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
- <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="zMs-ue-T1n" id="gD3-Yl-3au">
+ <binding destination="-2" name="hidden" keyPath="self.picture.customAnamorphicEnabled" previousBinding="gD3-Yl-3au" id="PSj-Fl-3Ni">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="-2" name="hidden" keyPath="self.picture.customAnamorphicEnabled" previousBinding="gD3-Yl-3au" id="PSj-Fl-3Ni">
+ <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="zMs-ue-T1n"/>
+ <binding destination="-2" name="value" keyPath="self.picture.displayWidth" id="nMg-v2-Fvg"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="zMs-ue-T1n" id="gD3-Yl-3au">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="zMs-ue-T1n"/>
- <binding destination="-2" name="value" keyPath="self.picture.displayWidth" id="nMg-v2-Fvg"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" id="440">
@@ -129,17 +129,17 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
- <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="Wvz-jo-lwE" id="b7l-Ej-dxa">
+ <binding destination="-2" name="hidden" keyPath="self.picture.customAnamorphicEnabled" previousBinding="b7l-Ej-dxa" id="4ER-Vi-m2V">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="-2" name="hidden" keyPath="self.picture.customAnamorphicEnabled" previousBinding="b7l-Ej-dxa" id="4ER-Vi-m2V">
+ <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="Wvz-jo-lwE"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="Wvz-jo-lwE" id="b7l-Ej-dxa">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="Wvz-jo-lwE"/>
<binding destination="-2" name="value" keyPath="self.picture.parWidth" id="PXg-GA-vo6"/>
</connections>
</textField>
@@ -152,17 +152,17 @@
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
- <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="Vjg-8L-veN" id="kG8-EC-OJR">
+ <binding destination="-2" name="hidden" keyPath="self.picture.customAnamorphicEnabled" previousBinding="kG8-EC-OJR" id="6PT-Pz-qs1">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="-2" name="hidden" keyPath="self.picture.customAnamorphicEnabled" previousBinding="kG8-EC-OJR" id="6PT-Pz-qs1">
+ <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="Vjg-8L-veN"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="Vjg-8L-veN" id="kG8-EC-OJR">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="Vjg-8L-veN"/>
<binding destination="-2" name="value" keyPath="self.picture.parHeight" id="HrI-5d-evg"/>
</connections>
</textField>
@@ -201,7 +201,7 @@
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="44">
<rect key="frame" x="143" y="103" width="15" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="16" minValue="64" maxValue="59" doubleValue="59" id="169">
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="16" minValue="64" maxValue="59" doubleValue="64" id="169">
<font key="font" metaFont="smallSystem"/>
</stepperCell>
<connections>
@@ -233,27 +233,27 @@
<rect key="frame" x="76" y="107" width="62" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<textFieldCell key="cell" controlSize="mini" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="167">
- <numberFormatter key="formatter" formatterBehavior="custom10_4" localizesFormat="NO" numberStyle="decimal" usesGroupingSeparator="NO" minimumIntegerDigits="1" maximumIntegerDigits="309" maximumFractionDigits="3" id="le0-iC-NhW">
- <real key="minimum" value="64"/>
+ <numberFormatter key="formatter" formatterBehavior="default10_4" localizesFormat="NO" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="le0-iC-NhW">
+ <real key="minimum" value="32"/>
</numberFormatter>
<font key="font" metaFont="miniSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
- <binding destination="-2" name="editable" keyPath="self.picture.widthEditable" id="YBx-pZ-bPA"/>
<binding destination="-2" name="value" keyPath="self.picture.width" id="Dr6-U5-h7T">
<dictionary key="options">
<integer key="NSNullPlaceholder" value="0"/>
<bool key="NSValidatesImmediately" value="YES"/>
</dictionary>
</binding>
+ <binding destination="-2" name="editable" keyPath="self.picture.widthEditable" id="YBx-pZ-bPA"/>
</connections>
</textField>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="46">
<rect key="frame" x="143" y="78" width="15" height="22"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
- <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="16" minValue="64" maxValue="59" doubleValue="64" id="171">
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="16" minValue="64" maxValue="59" doubleValue="59" id="171">
<font key="font" metaFont="smallSystem"/>
</stepperCell>
<connections>
@@ -320,24 +320,21 @@
<rect key="frame" x="76" y="81" width="62" height="16"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
<textFieldCell key="cell" controlSize="mini" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="168">
- <numberFormatter key="formatter" formatterBehavior="custom10_4" localizesFormat="NO" numberStyle="decimal" usesGroupingSeparator="NO" minimumIntegerDigits="1" maximumIntegerDigits="309" maximumFractionDigits="3" id="9iU-HJ-b4u">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" localizesFormat="NO" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="9iU-HJ-b4u">
<real key="minimum" value="64"/>
- <metadata>
- <real key="inspectorSampleValue" value="1.234"/>
- </metadata>
</numberFormatter>
<font key="font" metaFont="miniSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
- <binding destination="-2" name="editable" keyPath="self.picture.heightEditable" id="Je1-xf-WNB"/>
<binding destination="-2" name="value" keyPath="self.picture.height" id="T7h-fp-Qs6">
<dictionary key="options">
<integer key="NSNullPlaceholder" value="0"/>
<bool key="NSValidatesImmediately" value="YES"/>
</dictionary>
</binding>
+ <binding destination="-2" name="editable" keyPath="self.picture.heightEditable" id="Je1-xf-WNB"/>
</connections>
</textField>
<button id="45">
@@ -371,13 +368,13 @@
<font key="font" metaFont="smallSystem"/>
</stepperCell>
<connections>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxVerticalCrop" id="9ff-Ns-69S"/>
<binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="Vp0-sU-c5s">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
<binding destination="-2" name="value" keyPath="self.picture.cropTop" previousBinding="9ff-Ns-69S" id="4Cj-4f-6FM"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxVerticalCrop" id="9ff-Ns-69S"/>
</connections>
</stepper>
<stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="15">
@@ -387,13 +384,13 @@
<font key="font" metaFont="smallSystem"/>
</stepperCell>
<connections>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxHorizontalCrop" id="39d-dv-rDM"/>
<binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="5QD-Dh-bzl">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
<binding destination="-2" name="value" keyPath="self.picture.cropRight" previousBinding="39d-dv-rDM" id="OUg-17-HR9"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxHorizontalCrop" id="39d-dv-rDM"/>
</connections>
</stepper>
<matrix verticalHuggingPriority="750" allowsEmptySelection="NO" autosizesCells="NO" id="16">
@@ -477,13 +474,13 @@
<font key="font" metaFont="smallSystem"/>
</stepperCell>
<connections>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxHorizontalCrop" id="2Rh-om-NkW"/>
<binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="WmV-2A-EDo">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
<binding destination="-2" name="value" keyPath="self.picture.cropLeft" previousBinding="2Rh-om-NkW" id="hk3-CS-WKR"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxHorizontalCrop" id="2Rh-om-NkW"/>
</connections>
</stepper>
<textField verticalHuggingPriority="750" id="9">
@@ -537,13 +534,13 @@
<font key="font" metaFont="smallSystem"/>
</stepperCell>
<connections>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxVerticalCrop" id="jS8-Tg-h3O"/>
<binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="soK-UE-pde">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
<binding destination="-2" name="value" keyPath="self.picture.cropBottom" previousBinding="jS8-Tg-h3O" id="k6f-Bd-Crr"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxVerticalCrop" id="jS8-Tg-h3O"/>
</connections>
</stepper>
<textField verticalHuggingPriority="750" id="382">
diff --git a/macosx/English.lproj/Video.xib b/macosx/English.lproj/Video.xib
index ccffbb566..95029c656 100644
--- a/macosx/English.lproj/Video.xib
+++ b/macosx/English.lproj/Video.xib
@@ -43,6 +43,9 @@
<rect key="frame" x="507" y="241" width="78" height="19"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="eQl-KB-XJu">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="TQJ-nd-2BX">
+ <real key="minimum" value="0.0"/>
+ </numberFormatter>
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
@@ -57,7 +60,15 @@
<string key="NSValueTransformerName">NSIsNotNil</string>
</dictionary>
</binding>
- <binding destination="-2" name="value" keyPath="self.video.avgBitrate" id="7eN-5J-5WV"/>
+ <binding destination="-2" name="value" keyPath="self.video.avgBitrate" id="c27-4i-SiJ">
+ <dictionary key="options">
+ <bool key="NSContinuouslyUpdatesValue" value="YES"/>
+ <string key="NSNotApplicablePlaceholder">0</string>
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSRaisesForNotApplicableKeys" value="NO"/>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
<binding destination="-2" name="enabled" keyPath="self.video.qualityType" id="mjs-X8-KV8">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
@@ -163,30 +174,30 @@
<font key="font" metaFont="smallSystem"/>
</buttonCell>
<connections>
- <binding destination="-2" name="hidden2" keyPath="self.video.turboTwoPassSupported" previousBinding="jpH-IH-e0p" id="BFH-ET-uPq">
+ <binding destination="-2" name="enabled2" keyPath="self.video" previousBinding="iZE-er-OQN" id="Fbv-qd-JTg">
<dictionary key="options">
<integer key="NSMultipleValuesPlaceholder" value="-1"/>
<integer key="NSNoSelectionPlaceholder" value="-1"/>
<integer key="NSNotApplicablePlaceholder" value="-1"/>
<integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.video.qualityType" id="iZE-er-OQN">
+ <dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="-2" name="enabled2" keyPath="self.video" previousBinding="iZE-er-OQN" id="Fbv-qd-JTg">
+ <binding destination="-2" name="value" keyPath="self.video.turboTwoPass" id="4A4-hg-qhy"/>
+ <binding destination="-2" name="hidden2" keyPath="self.video.turboTwoPassSupported" previousBinding="jpH-IH-e0p" id="BFH-ET-uPq">
<dictionary key="options">
<integer key="NSMultipleValuesPlaceholder" value="-1"/>
<integer key="NSNoSelectionPlaceholder" value="-1"/>
<integer key="NSNotApplicablePlaceholder" value="-1"/>
<integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.video.qualityType" id="iZE-er-OQN">
- <dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
</dictionary>
</binding>
- <binding destination="-2" name="value" keyPath="self.video.turboTwoPass" id="4A4-hg-qhy"/>
<binding destination="-2" name="hidden" keyPath="self.video.twoPass" previousBinding="Fbv-qd-JTg" id="jpH-IH-e0p">
<dictionary key="options">
<string key="NSValueTransformerName">NSNegateBoolean</string>
@@ -371,13 +382,13 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
- <binding destination="-2" name="value" keyPath="pictureSettings" id="hem-VY-3fR"/>
<binding destination="-2" name="textColor" keyPath="self.labelColor" id="aVY-g8-jGq"/>
<binding destination="-2" name="enabled" keyPath="self.video" id="Ph9-Gy-Sru">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNotNil</string>
</dictionary>
</binding>
+ <binding destination="-2" name="value" keyPath="self.job.picture.summary" id="D4c-Mx-33o"/>
</connections>
</textField>
<textField verticalHuggingPriority="750" id="PW6-gP-Dyj">
@@ -389,13 +400,13 @@
<color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
</textFieldCell>
<connections>
- <binding destination="-2" name="value" keyPath="pictureFilters" id="Sr7-JI-M4y"/>
<binding destination="-2" name="textColor" keyPath="self.labelColor" id="FtS-pM-hKz"/>
<binding destination="-2" name="enabled" keyPath="self.video" id="ckY-jh-UvA">
<dictionary key="options">
<string key="NSValueTransformerName">NSIsNotNil</string>
</dictionary>
</binding>
+ <binding destination="-2" name="value" keyPath="self.job.filters.summary" id="tHU-9i-NhZ"/>
</connections>
</textField>
</subviews>
diff --git a/macosx/HBJob.h b/macosx/HBJob.h
index d37d48240..0ae7fb0b1 100644
--- a/macosx/HBJob.h
+++ b/macosx/HBJob.h
@@ -60,6 +60,7 @@ typedef NS_ENUM(NSUInteger, HBJobState) {
* Current state of the job.
*/
@property (nonatomic, readwrite) HBJobState state;
+@property (nonatomic, readwrite, copy) NSString *presetName;
@property (nonatomic, readwrite, assign) HBTitle *title;
@property (nonatomic, readonly) int titleIdx;
@@ -71,7 +72,6 @@ typedef NS_ENUM(NSUInteger, HBJobState) {
// Libhb job
@property (nonatomic, readonly) hb_job_t *hb_job;
-@property (nonatomic, readonly) NSAttributedString *jobDescription;
// Job settings
@property (nonatomic, readwrite) int container;
diff --git a/macosx/HBJob.m b/macosx/HBJob.m
index 23af79b7a..dccd9434c 100644
--- a/macosx/HBJob.m
+++ b/macosx/HBJob.m
@@ -64,6 +64,15 @@ NSString *keyContainerTag = @"keyContainerTag";
- (void)applyPreset:(HBPreset *)preset
{
+ if (preset.isDefault)
+ {
+ self.presetName = [NSString stringWithFormat:@"%@ (Default)", preset.name];
+ }
+ else
+ {
+ self.presetName = preset.name;
+ }
+
NSDictionary *content = preset.content;
self.container = hb_container_get_from_name(hb_container_sanitize_name([content[@"FileFormat"] UTF8String]));
@@ -648,6 +657,7 @@ NSString *keyContainerTag = @"keyContainerTag";
if (copy)
{
copy->_state = HBJobStateReady;
+ copy->_presetName = [_presetName copy];
copy->_titleIdx = _titleIdx;
copy->_pidId = _pidId;
@@ -664,6 +674,8 @@ NSString *keyContainerTag = @"keyContainerTag";
copy->_picture = [_picture copy];
copy->_filters = [_filters copy];
+ copy->_video.job = copy;
+
// Copy the tracks, but not the last one because it's empty.
copy->_audioTracks = [[NSMutableArray alloc] init];
[_audioTracks enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
@@ -696,6 +708,7 @@ NSString *keyContainerTag = @"keyContainerTag";
[coder encodeInt:1 forKey:@"HBVideoVersion"];
encodeInt(_state);
+ encodeObject(_presetName);
encodeInt(_titleIdx);
encodeInt(_pidId);
@@ -727,6 +740,7 @@ NSString *keyContainerTag = @"keyContainerTag";
self = [super init];
decodeInt(_state);
+ decodeObject(_presetName);
decodeInt(_titleIdx);
decodeInt(_pidId);
diff --git a/macosx/HBOutputPanelController.h b/macosx/HBOutputPanelController.h
index dc76e2a9c..5843ab1da 100644
--- a/macosx/HBOutputPanelController.h
+++ b/macosx/HBOutputPanelController.h
@@ -32,7 +32,7 @@
- (IBAction)openActivityLogFile:(id)sender;
- (IBAction)openEncodeLogDirectory:(id)sender;
- (IBAction)clearActivityLogFile:(id)sender;
-- (void) startEncodeLog:(NSString *) logPath;
-- (void) endEncodeLog;
+- (void)startEncodeLog:(NSURL *)logURL;
+- (void)endEncodeLog;
@end
diff --git a/macosx/HBOutputPanelController.m b/macosx/HBOutputPanelController.m
index 47133d05e..5f0f5519f 100644
--- a/macosx/HBOutputPanelController.m
+++ b/macosx/HBOutputPanelController.m
@@ -107,10 +107,10 @@
}
}
-- (void) startEncodeLog:(NSString *) logPath
+- (void)startEncodeLog:(NSURL *)logURL
{
encodeLogOn = YES;
- NSString *outputFileForEncode = logPath ;
+ NSString *outputFileForEncode = logURL.path ;
/* Since the destination path matches the extension of the output file, replace the
* output movie extension and replace it with ".txt"
*/
diff --git a/macosx/HBPicture.m b/macosx/HBPicture.m
index c758580a0..639535f35 100644
--- a/macosx/HBPicture.m
+++ b/macosx/HBPicture.m
@@ -16,6 +16,7 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
@interface HBPicture ()
@property (nonatomic, readwrite, getter=isValidating) BOOL validating;
+@property (nonatomic, readwrite, getter=areNotificationsEnabled) BOOL notificationsEnabled;
@property (nonatomic, readwrite) int keep;
@property (nonatomic, readwrite) BOOL darUpdated;
@@ -49,15 +50,20 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
_height = title.hb_title->geometry.height;
[self validateSettings];
+
+ _notificationsEnabled = YES;
}
return self;
}
- (void)postChangedNotification
{
- [[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName:HBPictureChangedNotification
- object:self
- userInfo:nil]];
+ if (self.areNotificationsEnabled)
+ {
+ [[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName:HBPictureChangedNotification
+ object:self
+ userInfo:nil]];
+ }
}
- (void)setWidth:(int)width
@@ -345,7 +351,7 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
retval = [NSSet setWithObjects:@"cropTop", @"cropBottom", @"cropLeft", @"cropRight", nil];
}
- if ([key isEqualToString:@"info"])
+ if ([key isEqualToString:@"info"] || [key isEqualToString:@"summary"])
{
retval = [NSSet setWithObjects:@"width", @"height",@"anamorphicMode", @"cropTop", @"cropBottom", @"cropLeft", @"cropRight", nil];
}
@@ -353,6 +359,11 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
return retval;
}
+- (void)setNilValueForKey:(NSString *)key
+{
+ [self setValue:@0 forKey:key];
+}
+
#pragma mark - Picture Update Logic
/**
@@ -437,6 +448,8 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
copy->_cropBottom = _cropBottom;
copy->_cropLeft = _cropLeft;
copy->_cropRight = _cropRight;
+
+ copy->_notificationsEnabled = _notificationsEnabled;
}
return copy;
@@ -486,6 +499,8 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
decodeInt(_cropBottom);
decodeInt(_cropLeft);
decodeInt(_cropRight);
+
+ _notificationsEnabled = YES;
return self;
}
@@ -510,6 +525,7 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
- (void)applyPreset:(NSDictionary *)preset
{
self.validating = YES;
+ self.notificationsEnabled = NO;
hb_title_t *title = self.title.hb_title;
/* Note: objectForKey:@"UsesPictureSettings" refers to picture size, which encompasses:
@@ -634,6 +650,7 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
self.displayWidth = display_width;
self.validating = NO;
+ self.notificationsEnabled = YES;
}
@end
diff --git a/macosx/HBQueueController.mm b/macosx/HBQueueController.mm
index e92b5bd09..cb49f9a42 100644
--- a/macosx/HBQueueController.mm
+++ b/macosx/HBQueueController.mm
@@ -55,6 +55,7 @@
NSMutableIndexSet *fSavedExpandedItems; // used by save/restoreOutlineViewState to preserve which items are expanded
NSMutableIndexSet *fSavedSelectedItems; // used by save/restoreOutlineViewState to preserve which items are selected
+ NSMutableDictionary *descriptions;
NSTimer *fAnimationTimer; // animates the icon of the current job in the queue outline view
int fAnimationIndex; // used to generate name of image used to animate the current job in the queue outline view
@@ -102,6 +103,7 @@
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"QueueWindowIsOpen": @"NO"}];
fJobGroups = [[NSMutableArray arrayWithCapacity:0] retain];
+ descriptions = [[NSMutableDictionary alloc] init];
[self initStyles];
}
@@ -112,6 +114,7 @@
- (void)setQueueArray:(NSMutableArray *)QueueFileArray
{
[fJobGroups setArray:QueueFileArray];
+ [descriptions removeAllObjects];
[fOutlineView reloadData];
@@ -705,10 +708,16 @@
{
if ([[tableColumn identifier] isEqualToString:@"desc"])
{
+ HBJob *job = item;
+
+ if ([descriptions objectForKey:@(job.hash)])
+ {
+ return [descriptions objectForKey:@(job.hash)];
+ }
+
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
/* Below should be put into a separate method but I am way too f'ing lazy right now */
NSMutableAttributedString *finalString = [[NSMutableAttributedString alloc] initWithString: @""];
- HBJob *job = item;
/* First line, we should strip the destination path and just show the file name and add the title num and chapters (if any) */
NSString *summaryInfo;
@@ -770,10 +779,8 @@
// End of Title Stuff
// Second Line (Preset Name)
- // FIXME
- //[finalString appendString: @"Preset: " withAttributes:detailBoldAttr];
- //[finalString appendString:[NSString stringWithFormat:@"%@\n", item[@"PresetName"]] withAttributes:detailAttr];
-
+ [finalString appendString: @"Preset: " withAttributes:detailBoldAttr];
+ [finalString appendString:[NSString stringWithFormat:@"%@\n", job.presetName] withAttributes:detailAttr];
// Third Line (Format Summary)
NSString *audioCodecSummary = @""; // This seems to be set by the last track we have available...
@@ -1057,6 +1064,8 @@
[pool release];
+ [descriptions setObject:finalString forKey:@(job.hash)];
+
return [finalString autorelease];
}
else if ([[tableColumn identifier] isEqualToString:@"icon"])
diff --git a/macosx/HBRange.m b/macosx/HBRange.m
index b176c872f..bd0e5730c 100644
--- a/macosx/HBRange.m
+++ b/macosx/HBRange.m
@@ -105,6 +105,11 @@
return retval;
}
+- (void)setNilValueForKey:(NSString *)key
+{
+ [self setValue:@0 forKey:key];
+}
+
#pragma mark - NSCopying
- (instancetype)copyWithZone:(NSZone *)zone
diff --git a/macosx/HBUtilities.m b/macosx/HBUtilities.m
index 7618c4263..eec539c2b 100644
--- a/macosx/HBUtilities.m
+++ b/macosx/HBUtilities.m
@@ -105,16 +105,16 @@
}
else if ([formatKey isEqualToString:@"{Quality/Bitrate}"])
{
- if (quality)
+ if (bitrate)
{
- // Append the right quality suffix for the selected codec (rf/qp)
- [name appendString:[[NSString stringWithUTF8String:hb_video_quality_get_name(codec)] lowercaseString]];
- [name appendString:[NSString stringWithFormat:@"%0.2f", quality]];
+ [name appendString:@"abr"];
+ [name appendString:[NSString stringWithFormat:@"%d", bitrate]];
}
else
{
- [name appendString:@"abr"];
- [name appendString:[NSString stringWithFormat:@"%d", bitrate]];
+ // Append the right quality suffix for the selected codec (rf/qp)
+ [name appendString:[[NSString stringWithUTF8String:hb_video_quality_get_name(codec)] lowercaseString]];
+ [name appendString:[NSString stringWithFormat:@"%0.2f", quality]];
}
}
else
diff --git a/macosx/HBVideo+UIAdditions.m b/macosx/HBVideo+UIAdditions.m
index 7d56431aa..eadeae6ce 100644
--- a/macosx/HBVideo+UIAdditions.m
+++ b/macosx/HBVideo+UIAdditions.m
@@ -69,7 +69,7 @@
- (BOOL)fastDecodeSupported
{
- return (self.encoder == HB_VCODEC_X264);
+ return (self.encoder == HB_VCODEC_X264 || self.encoder == HB_VCODEC_X265);
}
- (BOOL)turboTwoPassSupported
diff --git a/macosx/HBVideo.m b/macosx/HBVideo.m
index 119b9f421..9fe897b16 100644
--- a/macosx/HBVideo.m
+++ b/macosx/HBVideo.m
@@ -272,6 +272,11 @@ NSString * const HBVideoChangedNotification = @"HBVideoChangedNotification";
return retval;
}
+- (void)setNilValueForKey:(NSString *)key
+{
+ [self setValue:@0 forKey:key];
+}
+
#pragma mark -
- (NSArray *)presets
@@ -371,6 +376,8 @@ NSString * const HBVideoChangedNotification = @"HBVideoChangedNotification";
copy->_level = [_level copy];
copy->_videoOptionExtra = [_videoOptionExtra copy];
copy->_fastDecode = _fastDecode;
+
+ copy->_notificationsEnabled = _notificationsEnabled;
}
return copy;
@@ -437,6 +444,8 @@ NSString * const HBVideoChangedNotification = @"HBVideoChangedNotification";
decodeBool(_fastDecode);
+ _notificationsEnabled = YES;
+
return self;
}
diff --git a/macosx/HBVideoController.h b/macosx/HBVideoController.h
index 0816e1d71..d62edf45a 100644
--- a/macosx/HBVideoController.h
+++ b/macosx/HBVideoController.h
@@ -7,7 +7,7 @@
#import <Cocoa/Cocoa.h>
@class HBAdvancedController;
-@class HBVideo;
+@class HBJob;
/**
* HBVideoController
@@ -16,12 +16,6 @@
- (instancetype)initWithAdvancedController:(HBAdvancedController *)advancedController;
-/**
- * Summaries of the pictures and filters settings
- */
-@property (nonatomic, copy, readwrite) NSString *pictureSettings;
-@property (nonatomic, copy, readwrite) NSString *pictureFilters;
-
-@property (nonatomic, readwrite, assign) HBVideo *video;
+@property (nonatomic, readwrite, assign) HBJob *job;
@end
diff --git a/macosx/HBVideoController.m b/macosx/HBVideoController.m
index 95a956bda..e2d5d760d 100644
--- a/macosx/HBVideoController.m
+++ b/macosx/HBVideoController.m
@@ -7,6 +7,7 @@
#import "HBVideoController.h"
#import "HBAdvancedController.h"
#import "HBVideo+UIAdditions.h"
+#import "HBJob.h"
#include "hb.h"
@@ -36,6 +37,7 @@ static void *HBVideoControllerContext = &HBVideoControllerContext;
}
@property (nonatomic, retain, readwrite) HBAdvancedController *advancedController;
+@property (nonatomic, readwrite, assign) HBVideo *video;
@property (nonatomic, readwrite) BOOL presetViewEnabled;
@@ -84,11 +86,12 @@ static void *HBVideoControllerContext = &HBVideoControllerContext;
return self;
}
-- (void)setVideo:(HBVideo *)video
+- (void)setJob:(HBJob *)job
{
- _video = video;
+ _job = job;
+ self.video = job.video;
- if (_video)
+ if (job)
{
self.labelColor = [NSColor controlTextColor];
}
@@ -97,7 +100,7 @@ static void *HBVideoControllerContext = &HBVideoControllerContext;
self.labelColor = [NSColor disabledControlTextColor];
}
- [self enableEncoderOptionsWidgets:(video != nil)];
+ [self enableEncoderOptionsWidgets:(job != nil)];
}
#pragma mark - KVO