[vlc-devel] [PATCH 04/23] macosx: refactor VLCVideoEffectsWindowController::resetValues

Victorien Le Couviour--Tuffet victorien.lecouviour.tuffet at gmail.com
Thu Jun 29 14:24:11 CEST 2017


---
 .../gui/macosx/VLCVideoEffectsWindowController.m   | 233 ++++++++++++---------
 1 file changed, 130 insertions(+), 103 deletions(-)

diff --git a/modules/gui/macosx/VLCVideoEffectsWindowController.m b/modules/gui/macosx/VLCVideoEffectsWindowController.m
index 842c7c08c5..b868acafd1 100644
--- a/modules/gui/macosx/VLCVideoEffectsWindowController.m
+++ b/modules/gui/macosx/VLCVideoEffectsWindowController.m
@@ -97,24 +97,34 @@
     [_transformCheckbox setTitle:_NS("Transform")];
     [_transformPopup removeAllItems];
     [_transformPopup addItemWithTitle: _NS("Rotate by 90 degrees")];
+    [[_transformPopup lastItem] setAttributedTitle: [[NSAttributedString alloc] initWithString: @"90"]];
     [[_transformPopup lastItem] setTag: 90];
     [_transformPopup addItemWithTitle: _NS("Rotate by 180 degrees")];
+    [[_transformPopup lastItem] setAttributedTitle: [[NSAttributedString alloc] initWithString: @"180"]];
     [[_transformPopup lastItem] setTag: 180];
     [_transformPopup addItemWithTitle: _NS("Rotate by 270 degrees")];
+    [[_transformPopup lastItem] setAttributedTitle: [[NSAttributedString alloc] initWithString: @"270"]];
     [[_transformPopup lastItem] setTag: 270];
     [_transformPopup addItemWithTitle: _NS("Flip horizontally")];
+    [[_transformPopup lastItem] setAttributedTitle: [[NSAttributedString alloc] initWithString: @"hflip"]];
     [[_transformPopup lastItem] setTag: 1];
     [_transformPopup addItemWithTitle: _NS("Flip vertically")];
+    [[_transformPopup lastItem] setAttributedTitle: [[NSAttributedString alloc] initWithString: @"vflip"]];
     [[_transformPopup lastItem] setTag: 2];
     [_zoomCheckbox setTitle:_NS("Magnification/Zoom")];
     [_puzzleCheckbox setTitle:_NS("Puzzle game")];
     [_puzzleRowsLabel setStringValue:_NS("Rows")];
+    [_puzzleRowsTextField setAttributedStringValue: [[NSAttributedString alloc] initWithString: @"isSpinBox"]];
     [_puzzleColumnsLabel setStringValue:_NS("Columns")];
+    [_puzzleColumnsTextField setAttributedStringValue: [[NSAttributedString alloc] initWithString: @"isSpinBox"]];
     [_cloneCheckbox setTitle:_NS("Clone")];
     [_cloneNumberLabel setStringValue:_NS("Number of clones")];
+    [_cloneNumberTextField setAttributedStringValue: [[NSAttributedString alloc] initWithString: @"isSpinBox"]];
     [_wallCheckbox setTitle:_NS("Wall")];
     [_wallNumbersOfRowsLabel setStringValue:_NS("Rows")];
+    [_wallNumbersOfRowsTextField setAttributedStringValue: [[NSAttributedString alloc] initWithString: @"isSpinBox"]];
     [_wallNumberOfColumnsLabel setStringValue:_NS("Columns")];
+    [_wallNumberOfColumnsTextField setAttributedStringValue: [[NSAttributedString alloc] initWithString: @"isSpinBox"]];
 
     [_thresholdCheckbox setTitle:_NS("Color threshold")];
     [_thresholdColorLabel setStringValue:_NS("Color")];
@@ -122,15 +132,19 @@
     [_thresholdSimilarityLabel setStringValue:_NS("Similarity")];
     [_sepiaCheckbox setTitle:_NS("Sepia")];
     [_sepiaLabel setStringValue:_NS("Intensity")];
+    [_sepiaTextField setAttributedStringValue: [[NSAttributedString alloc] initWithString: @"isSpinBox"]];
     [_noiseCheckbox setTitle:_NS("Noise")];
     [_gradientCheckbox setTitle:_NS("Gradient")];
     [_gradientModeLabel setStringValue:_NS("Mode")];
     [_gradientModePopup removeAllItems];
     [_gradientModePopup addItemWithTitle: _NS("Gradient")];
+    [[_gradientModePopup lastItem] setAttributedTitle: [[NSAttributedString alloc] initWithString: @"gradient"]];
     [[_gradientModePopup lastItem] setTag: 1];
     [_gradientModePopup addItemWithTitle: _NS("Edge")];
+    [[_gradientModePopup lastItem] setAttributedTitle: [[NSAttributedString alloc] initWithString: @"edge"]];
     [[_gradientModePopup lastItem] setTag: 2];
     [_gradientModePopup addItemWithTitle: _NS("Hough")];
+    [[_gradientModePopup lastItem] setAttributedTitle: [[NSAttributedString alloc] initWithString: @"hough"]];
     [[_gradientModePopup lastItem] setTag: 3];
     [_gradientColorCheckbox setTitle:_NS("Color")];
     [_gradientCartoonCheckbox setTitle:_NS("Cartoon")];
@@ -139,6 +153,7 @@
     [_invertCheckbox setTitle:_NS("Invert colors")];
     [_posterizeCheckbox setTitle:_NS("Posterize")];
     [_posterizeLabel setStringValue:_NS("Posterize level")];
+    [_posterizeTextField setAttributedStringValue: [[NSAttributedString alloc] initWithString: @"isSpinBox"]];
     [_blurCheckbox setTitle:_NS("Motion blur")];
     [_blurLabel setStringValue:_NS("Factor")];
     [_motiondetectCheckbox setTitle:_NS("Motion Detect")];
@@ -250,6 +265,84 @@
     [self profileSelectorAction:self];
 }
 
+- (void)setWidgetValue: (id)widget forOption: (char *)psz_option enabled: (bool)b_state
+{
+    intf_thread_t *p_intf = getIntf();
+
+    vlc_value_t val;
+    int i_type = config_GetType(p_intf, psz_option) & VLC_VAR_CLASS;
+    switch (i_type)
+    {
+    case VLC_VAR_BOOL:
+    case VLC_VAR_INTEGER:
+        val.i_int = config_GetInt(p_intf, psz_option);
+        break;
+    case VLC_VAR_FLOAT:
+        val.f_float = config_GetFloat(p_intf, psz_option);
+        break;
+    case VLC_VAR_STRING:
+        val.psz_string = config_GetPsz(p_intf, psz_option);
+        break;
+    default:
+        msg_Err(p_intf, "%s variable is of an unsupported type (%d)", psz_option, i_type);
+        return;
+    }
+
+    if (i_type == VLC_VAR_BOOL || i_type == VLC_VAR_INTEGER)
+    {
+        if ([widget isKindOfClass: [NSSlider class]])
+        {
+            [widget setIntValue: val.i_int];
+            [widget setToolTip: [NSString stringWithFormat:@"%lli", val.i_int]];
+        }
+        else if ([widget isKindOfClass: [NSButton class]])
+            [widget setState: val.i_int ? NSOnState : NSOffState];
+        else if ([widget isKindOfClass: [NSTextField class]])
+        {
+            if ([[[widget attributedStringValue] string] compare: @"isSpinBox"] == NSOrderedSame)
+                [widget setStringValue: [[NSString alloc] initWithFormat: @"%lli", val.i_int]];
+            else
+                [widget setStringValue: [[NSString alloc] initWithFormat: @"%06" PRIX64, val.i_int]];
+        }
+        else if ([widget isKindOfClass: [NSStepper class]])
+            [widget setIntValue: val.i_int];
+        else if ([widget isKindOfClass: [NSPopUpButton class]])
+            [widget selectItemWithTag: val.i_int];
+        else
+            msg_Warn(p_intf, "Could not find the correct Integer widget");
+    }
+    else if (i_type == VLC_VAR_FLOAT)
+    {
+        if ([widget isKindOfClass: [NSSlider class]])
+        {
+            [widget setFloatValue: val.f_float];
+            [widget setToolTip: [NSString stringWithFormat:@"%0.3f", val.f_float]];
+        }
+        else
+            msg_Warn(p_intf, "Could not find the correct Float widget");
+    }
+    else if (i_type == VLC_VAR_STRING)
+    {
+        if ([widget isKindOfClass: [NSPopUpButton class]])
+        {
+            for (NSMenuItem *item in [widget itemArray])
+                if ([item attributedTitle] &&
+                    !strcmp([[[item attributedTitle] string] UTF8String], val.psz_string))
+                {
+                    [widget selectItemWithTitle: [item title]];
+                    break;
+                }
+        }
+        else if ([widget isKindOfClass: [NSTextField class]])
+            [widget setStringValue: toNSStr(val.psz_string)];
+        else
+            msg_Warn(p_intf, "Could not find the correct String widget");
+        free(val.psz_string);
+    }
+
+    [widget setEnabled: b_state];
+}
+
 - (void)resetValues
 {
     intf_thread_t *p_intf = getIntf();
@@ -327,25 +420,13 @@
     }
 
     /* fetch and show the various values */
-    [_adjustHueSlider setFloatValue: config_GetFloat(p_intf, "hue")];
-    [_adjustContrastSlider setFloatValue: config_GetFloat(p_intf, "contrast")];
-    [_adjustBrightnessSlider setFloatValue: config_GetFloat(p_intf, "brightness")];
-    [_adjustSaturationSlider setFloatValue: config_GetFloat(p_intf, "saturation")];
-    [_adjustBrightnessCheckbox setState:(config_GetInt(p_intf, "brightness-threshold") != 0 ? NSOnState : NSOffState)];
-    [_adjustGammaSlider setFloatValue: config_GetFloat(p_intf, "gamma")];
-    [_adjustBrightnessSlider setToolTip: [NSString stringWithFormat:@"%0.3f", config_GetFloat(p_intf, "brightness")]];
-    [_adjustContrastSlider setToolTip: [NSString stringWithFormat:@"%0.3f", config_GetFloat(p_intf, "contrast")]];
-    [_adjustGammaSlider setToolTip: [NSString stringWithFormat:@"%0.3f", config_GetFloat(p_intf, "gamma")]];
-    [_adjustHueSlider setToolTip: [NSString stringWithFormat:@"%.0f", config_GetFloat(p_intf, "hue")]];
-    [_adjustSaturationSlider setToolTip: [NSString stringWithFormat:@"%0.3f", config_GetFloat(p_intf, "saturation")]];
     b_state = [_adjustCheckbox state];
-
-    [_adjustBrightnessSlider setEnabled: b_state];
-    [_adjustBrightnessCheckbox setEnabled: b_state];
-    [_adjustContrastSlider setEnabled: b_state];
-    [_adjustGammaSlider setEnabled: b_state];
-    [_adjustHueSlider setEnabled: b_state];
-    [_adjustSaturationSlider setEnabled: b_state];
+    [self setWidgetValue: _adjustHueSlider forOption:"hue" enabled: b_state];
+    [self setWidgetValue: _adjustContrastSlider forOption:"contrast" enabled: b_state];
+    [self setWidgetValue: _adjustBrightnessSlider forOption:"brightness" enabled: b_state];
+    [self setWidgetValue: _adjustSaturationSlider forOption:"saturation" enabled: b_state];
+    [self setWidgetValue: _adjustBrightnessCheckbox forOption:"brightness-threshold" enabled: b_state];
+    [self setWidgetValue: _adjustGammaSlider forOption:"gamma" enabled: b_state];
     [_adjustBrightnessLabel setEnabled: b_state];
     [_adjustContrastLabel setEnabled: b_state];
     [_adjustGammaLabel setEnabled: b_state];
@@ -353,19 +434,13 @@
     [_adjustSaturationLabel setEnabled: b_state];
     [_adjustResetButton setEnabled: b_state];
 
-    [_sharpenSlider setFloatValue: config_GetFloat(p_intf, "sharpen-sigma")];
-    [_sharpenSlider setToolTip: [NSString stringWithFormat:@"%0.3f", config_GetFloat(p_intf, "sharpen-sigma")]];
-    [_sharpenSlider setEnabled: [_sharpenCheckbox state]];
+    [self setWidgetValue: _sharpenSlider forOption: "sharpen-sigma" enabled: [_sharpenCheckbox state]];
     [_sharpenLabel setEnabled: [_sharpenCheckbox state]];
 
-    [_bandingSlider setIntValue: config_GetInt(p_intf, "gradfun-radius")];
-    [_bandingSlider setToolTip: [NSString stringWithFormat:@"%lli", config_GetInt(p_intf, "gradfun-radius")]];
-    [_bandingSlider setEnabled: [_bandingCheckbox state]];
+    [self setWidgetValue: _bandingSlider forOption: "gradfun-radius" enabled: [_bandingCheckbox state]];
     [_bandingLabel setEnabled: [_bandingCheckbox state]];
 
-    [_grainSlider setFloatValue: config_GetFloat(p_intf, "grain-variance")];
-    [_grainSlider setToolTip: [NSString stringWithFormat:@"%0.3f", config_GetFloat(p_intf, "grain-variance")]];
-    [_grainSlider setEnabled: [_grainCheckbox state]];
+    [self setWidgetValue: _grainSlider forOption: "grain-variance" enabled: [_grainCheckbox state]];
     [_grainLabel setEnabled: [_grainCheckbox state]];
 
     [self setCropLeftValue: 0];
@@ -375,119 +450,71 @@
     [_cropSyncTopBottomCheckbox setState: NSOffState];
     [_cropSyncLeftRightCheckbox setState: NSOffState];
 
-    tmpChar = config_GetPsz(p_intf, "transform-type");
-    tmpString = toNSStr(tmpChar);
-    if ([tmpString isEqualToString:@"hflip"])
-        [_transformPopup selectItemWithTag: 1];
-    else if ([tmpString isEqualToString:@"vflip"])
-        [_transformPopup selectItemWithTag: 2];
-    else
-        [_transformPopup selectItemWithTag:[tmpString intValue]];
-    FREENULL(tmpChar);
-    [_transformPopup setEnabled: [_transformCheckbox state]];
+    [self setWidgetValue: _transformPopup forOption:"transform-type" enabled: [_transformCheckbox state]];
 
-    [self setPuzzleColumnsValue: config_GetInt(p_intf, "puzzle-cols")];
-    [self setPuzzleRowsValue: config_GetInt(p_intf, "puzzle-rows")];
     b_state = [_puzzleCheckbox state];
-    [_puzzleRowsTextField setEnabled: b_state];
-    [_puzzleRowsStepper setEnabled: b_state];
+    [self setWidgetValue: _puzzleColumnsTextField forOption:"puzzle-cols" enabled: b_state];
+    [self setWidgetValue: _puzzleColumnsStepper forOption:"puzzle-cols" enabled: b_state];
+    [self setWidgetValue: _puzzleRowsTextField forOption:"puzzle-rows" enabled: b_state];
+    [self setWidgetValue: _puzzleRowsStepper forOption:"puzzle-rows" enabled: b_state];
     [_puzzleRowsLabel setEnabled: b_state];
-    [_puzzleColumnsTextField setEnabled: b_state];
-    [_puzzleColumnsStepper setEnabled: b_state];
     [_puzzleColumnsLabel setEnabled: b_state];
 
-    [self setCloneValue: config_GetInt(p_intf, "clone-count")];
     b_state = [_cloneCheckbox state];
+    [self setWidgetValue: _cloneNumberTextField forOption:"clone-count" enabled: b_state];
+    [self setWidgetValue: _cloneNumberStepper forOption:"clone-count" enabled: b_state];
     [_cloneNumberLabel setEnabled: b_state];
-    [_cloneNumberTextField setEnabled: b_state];
-    [_cloneNumberStepper setEnabled: b_state];
 
     b_state = [_wallCheckbox state];
-    [self setWallRowsValue: config_GetInt(p_intf, "wall-rows")];
+    [self setWidgetValue: _wallNumbersOfRowsTextField forOption:"wall-rows" enabled: b_state];
+    [self setWidgetValue: _wallNumbersOfRowsStepper forOption:"wall-rows" enabled: b_state];
+    [self setWidgetValue: _wallNumberOfColumnsTextField forOption:"wall-cols" enabled: b_state];
+    [self setWidgetValue: _wallNumberOfColumnsStepper forOption:"wall-cols" enabled: b_state];
     [_wallNumbersOfRowsLabel setEnabled: b_state];
-    [_wallNumbersOfRowsTextField setEnabled: b_state];
-    [_wallNumbersOfRowsStepper setEnabled: b_state];
-    [self setWallColumnsValue: config_GetInt(p_intf, "wall-cols")];
     [_wallNumberOfColumnsLabel setEnabled: b_state];
-    [_wallNumberOfColumnsTextField setEnabled: b_state];
-    [_wallNumberOfColumnsStepper setEnabled: b_state];
-
-    [_thresholdColorTextField setStringValue: [[NSString stringWithFormat:@"%llx", config_GetInt(p_intf, "colorthres-color")] uppercaseString]];
-    [_thresholdSaturationSlider setIntValue: config_GetInt(p_intf, "colorthres-saturationthres")];
-    [_thresholdSaturationSlider setToolTip: [NSString stringWithFormat:@"%lli", config_GetInt(p_intf, "colorthres-saturationthres")]];
-    [_thresholdSimilaritySlider setIntValue: config_GetInt(p_intf, "colorthres-similaritythres")];
-    [_thresholdSimilaritySlider setToolTip: [NSString stringWithFormat:@"%lli", config_GetInt(p_intf, "colorthres-similaritythres")]];
 
     b_state = [_thresholdCheckbox state];
-    [_thresholdColorTextField setEnabled: b_state];
+    [self setWidgetValue: _thresholdColorTextField forOption:"colorthres-color" enabled: b_state];
+    [self setWidgetValue: _thresholdSaturationSlider forOption:"colorthres-saturationthres" enabled: b_state];
+    [self setWidgetValue: _thresholdSimilaritySlider forOption:"colorthres-similaritythres" enabled: b_state];
     [_thresholdColorLabel setEnabled: b_state];
-    [_thresholdSaturationSlider setEnabled: b_state];
     [_thresholdSaturationLabel setEnabled: b_state];
-    [_thresholdSimilaritySlider setEnabled: b_state];
     [_thresholdSimilarityLabel setEnabled: b_state];
 
-    [self setSepiaValue: config_GetInt(p_intf, "sepia-intensity")];
     b_state = [_sepiaCheckbox state];
-    [_sepiaTextField setEnabled: b_state];
-    [_sepiaStepper setEnabled: b_state];
+    [self setWidgetValue: _sepiaTextField forOption:"sepia-intensity" enabled: b_state];
+    [self setWidgetValue: _sepiaStepper forOption: "sepia-intensity" enabled: b_state];
     [_sepiaLabel setEnabled: b_state];
 
-    tmpChar = config_GetPsz(p_intf, "gradient-mode");
-    tmpString = toNSStr(tmpChar);
-    if ([tmpString isEqualToString:@"hough"])
-        [_gradientModePopup selectItemWithTag: 3];
-    else if ([tmpString isEqualToString:@"edge"])
-        [_gradientModePopup selectItemWithTag: 2];
-    else
-        [_gradientModePopup selectItemWithTag: 1];
-    FREENULL(tmpChar);
-    [_gradientCartoonCheckbox setState: config_GetInt(p_intf, "gradient-cartoon")];
-    [_gradientColorCheckbox setState: config_GetInt(p_intf, "gradient-type")];
     b_state = [_gradientCheckbox state];
-    [_gradientModePopup setEnabled: b_state];
+    [self setWidgetValue: _gradientModePopup forOption:"gradient-mode" enabled: b_state];
+    [self setWidgetValue: _gradientCartoonCheckbox forOption:"gradient-cartoon" enabled: b_state];
+    [self setWidgetValue: _gradientColorCheckbox forOption:"gradient-type" enabled: b_state];
     [_gradientModeLabel setEnabled: b_state];
-    [_gradientCartoonCheckbox setEnabled: b_state];
-    [_gradientColorCheckbox setEnabled: b_state];
 
-    [_extractTextField setStringValue: [[NSString stringWithFormat:@"%llx", config_GetInt(p_intf, "extract-component")] uppercaseString]];
-    [_extractTextField setEnabled: [_extractCheckbox state]];
+    [self setWidgetValue: _extractTextField forOption:"extract-component" enabled: [_extractCheckbox state]];
     [_extractLabel setEnabled: [_extractCheckbox state]];
 
-    [self setPosterizeValue: config_GetInt(p_intf, "posterize-level")];
     b_state = [_posterizeCheckbox state];
-    [_posterizeTextField setEnabled: b_state];
-    [_posterizeStepper setEnabled: b_state];
+    [self setWidgetValue: _posterizeTextField forOption:"posterize-level" enabled: b_state];
+    [self setWidgetValue: _posterizeStepper forOption:"posterize-level" enabled: b_state];
     [_posterizeLabel setEnabled: b_state];
 
-    [_blurSlider setIntValue: config_GetInt(p_intf, "blur-factor")];
-    [_blurSlider setToolTip: [NSString stringWithFormat:@"%lli", config_GetInt(p_intf, "blur-factor")]];
-    [_blurSlider setEnabled: [_blurCheckbox state]];
+    [self setWidgetValue: _blurSlider forOption:"blur-factor" enabled: [_blurCheckbox state]];
     [_blurLabel setEnabled: [_blurCheckbox state]];
 
-    tmpChar = config_GetPsz(p_intf, "marq-marquee");
-    [_addTextTextTextField setStringValue:toNSStr(tmpChar)];
-    if (tmpChar)
-        FREENULL(tmpChar);
-    [_addTextPositionPopup selectItemWithTag: config_GetInt(p_intf, "marq-position")];
     b_state = [_addTextCheckbox state];
-    [_addTextPositionPopup setEnabled: b_state];
+    [self setWidgetValue: _addTextTextTextField forOption:"marq-marquee" enabled: b_state];
+    [self setWidgetValue: _addTextPositionPopup forOption:"marq-position" enabled: b_state];
     [_addTextPositionLabel setEnabled: b_state];
     [_addTextTextLabel setEnabled: b_state];
-    [_addTextTextTextField setEnabled: b_state];
 
-    tmpChar = config_GetPsz(p_intf, "logo-file");
-    [_addLogoLogoTextField setStringValue: toNSStr(tmpChar)];
-    if (tmpChar)
-        FREENULL(tmpChar);
-    [_addLogoPositionPopup selectItemWithTag: config_GetInt(p_intf, "logo-position")];
-    [_addLogoTransparencySlider setIntValue: config_GetInt(p_intf, "logo-opacity")];
-    [_addLogoTransparencySlider setToolTip: [NSString stringWithFormat:@"%lli", config_GetInt(p_intf, "logo-opacity")]];
     b_state = [_addLogoCheckbox state];
-    [_addLogoPositionPopup setEnabled: b_state];
+    [self setWidgetValue: _addLogoLogoTextField forOption:"logo-file" enabled: b_state];
+    [self setWidgetValue: _addLogoPositionPopup forOption:"logo-position" enabled: b_state];
+    [self setWidgetValue: _addLogoTransparencySlider forOption:"logo-opacity" enabled: b_state];
     [_addLogoPositionLabel setEnabled: b_state];
-    [_addLogoLogoTextField setEnabled: b_state];
     [_addLogoLogoLabel setEnabled: b_state];
-    [_addLogoTransparencySlider setEnabled: b_state];
     [_addLogoTransparencyLabel setEnabled: b_state];
 }
 
-- 
2.13.1



More information about the vlc-devel mailing list