diff options
-rw-r--r-- | macosx/Controller.h | 1 | ||||
-rw-r--r-- | macosx/Controller.m | 58 | ||||
-rw-r--r-- | macosx/English.lproj/MainMenu.xib | 16 | ||||
-rw-r--r-- | macosx/English.lproj/PictureSettings.xib | 45 | ||||
-rw-r--r-- | macosx/English.lproj/Video.xib | 33 | ||||
-rw-r--r-- | macosx/HBJob.h | 2 | ||||
-rw-r--r-- | macosx/HBJob.m | 14 | ||||
-rw-r--r-- | macosx/HBOutputPanelController.h | 4 | ||||
-rw-r--r-- | macosx/HBOutputPanelController.m | 4 | ||||
-rw-r--r-- | macosx/HBPicture.m | 25 | ||||
-rw-r--r-- | macosx/HBQueueController.mm | 19 | ||||
-rw-r--r-- | macosx/HBRange.m | 5 | ||||
-rw-r--r-- | macosx/HBUtilities.m | 12 | ||||
-rw-r--r-- | macosx/HBVideo+UIAdditions.m | 2 | ||||
-rw-r--r-- | macosx/HBVideo.m | 9 | ||||
-rw-r--r-- | macosx/HBVideoController.h | 10 | ||||
-rw-r--r-- | macosx/HBVideoController.m | 11 |
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 |