summaryrefslogtreecommitdiffstats
path: root/macosx/HBAddPresetController.m
diff options
context:
space:
mode:
Diffstat (limited to 'macosx/HBAddPresetController.m')
-rw-r--r--macosx/HBAddPresetController.m138
1 files changed, 138 insertions, 0 deletions
diff --git a/macosx/HBAddPresetController.m b/macosx/HBAddPresetController.m
new file mode 100644
index 000000000..c33610496
--- /dev/null
+++ b/macosx/HBAddPresetController.m
@@ -0,0 +1,138 @@
+//
+// HBAddPresetController.m
+// HandBrake
+//
+// Created by Damiano Galassi on 23/11/14.
+//
+//
+
+#import "HBAddPresetController.h"
+#import "HBPreset.h"
+
+@interface HBAddPresetController ()
+
+@property (assign) IBOutlet NSTextField *name;
+@property (assign) IBOutlet NSTextField *desc;
+
+@property (assign) IBOutlet NSPopUpButton *picSettingsPopUp;
+@property (assign) IBOutlet NSTextField *picWidth;
+@property (assign) IBOutlet NSTextField *picHeight;
+@property (assign) IBOutlet NSBox *picWidthHeightBox;
+
+@property (assign) IBOutlet NSButton *picFilters;
+
+@property (retain) HBPreset *preset;
+@property NSSize size;
+
+@end
+
+@implementation HBAddPresetController
+
+- (instancetype)initWithPreset:(HBPreset *)preset videoSize:(NSSize)size;
+{
+ self = [super initWithWindowNibName:@"AddPreset"];
+ if (self)
+ {
+ NSParameterAssert(preset);
+ _preset = [preset retain];
+ _size = size;
+ }
+ return self;
+}
+
+- (void)dealloc
+{
+ self.preset = nil;;
+ [super dealloc];
+}
+
+- (void)windowDidLoad {
+ [super windowDidLoad];
+
+ /*
+ * Populate the preset picture settings popup.
+ *
+ * Custom is not applicable when the anamorphic mode is Strict.
+ *
+ * Use [NSMenuItem tag] to store preset values for each option.
+ */
+ [self.picSettingsPopUp addItemWithTitle:NSLocalizedString(@"None", @"")];
+ [[self.picSettingsPopUp lastItem] setTag: 0];
+
+ if ([self.preset.content[@"PicturePAR"] integerValue] != HB_ANAMORPHIC_STRICT)
+ {
+ // not Strict, Custom is applicable
+ [self.picSettingsPopUp addItemWithTitle:NSLocalizedString(@"Custom", @"")];
+ [[self.picSettingsPopUp lastItem] setTag: 1];
+ }
+ [self.picSettingsPopUp addItemWithTitle:NSLocalizedString(@"Source Maximum (post source scan)", @"")];
+ [[self.picSettingsPopUp lastItem] setTag: 2];
+
+ /*
+ * Default to Source Maximum for anamorphic Strict
+ * Default to Custom for all other anamorphic modes
+ */
+ [self.picSettingsPopUp selectItemWithTag: (1 + ([self.preset.content[@"PicturePAR"] integerValue] == HB_ANAMORPHIC_STRICT))];
+ /* Save the current filters in the preset by default */
+ [self.picFilters setState:NSOnState];
+
+ /* Initialize custom height and width settings to current values */
+
+ [self.picWidth setStringValue: [NSString stringWithFormat:@"%d", (int)self.size.width]];
+ [self.picHeight setStringValue: [NSString stringWithFormat:@"%d",(int)self.size.height]];
+ [self addPresetPicDropdownChanged:nil];
+}
+
+- (IBAction)addPresetPicDropdownChanged:(id)sender
+{
+ if (self.picSettingsPopUp.selectedItem.tag == 1)
+ {
+ self.picWidthHeightBox.hidden = NO;
+ }
+ else
+ {
+ self.picWidthHeightBox.hidden = YES;
+ }
+}
+
+- (IBAction)add:(id)sender
+{
+ if (self.name.stringValue.length == 0)
+ {
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert setMessageText:NSLocalizedString(@"Warning!", @"")];
+ [alert setInformativeText:NSLocalizedString(@"You need to insert a name for the preset.", @"")];
+ [alert runModal];
+ [alert release];
+ }
+ else
+ {
+ self.preset.name = self.name.stringValue;
+ self.preset.presetDescription = self.name.stringValue;
+
+ NSMutableDictionary *dict = [[self.preset.content mutableCopy] autorelease];
+
+ // Get the picture size
+ dict[@"PictureWidth"] = @(self.picWidth.integerValue);
+ dict[@"PictureHeight"] = @(self.picHeight.integerValue);
+
+ //Get the whether or not to apply pic Size and Cropping (includes Anamorphic)
+ dict[@"UsesPictureSettings"] = @(self.picSettingsPopUp.selectedItem.tag);
+
+ // Get whether or not to use the current Picture Filter settings for the preset
+ dict[@"UsesPictureFilters"] = @(self.picFilters.state);
+
+ self.preset.content = [[dict copy] autorelease];
+
+ [[self window] orderOut:nil];
+ [NSApp endSheet:[self window] returnCode:NSModalResponseContinue];
+ }
+}
+
+- (IBAction)cancel:(id)sender
+{
+ [[self window] orderOut:nil];
+ [NSApp endSheet:[self window] returnCode:NSModalResponseAbort];
+}
+
+@end