Exemple #1
0
        private static IFunctionCatalogGroup CreateViewGroup(ISettings settings, LrApi api)
        {
            var functions = new List <IFunctionFactory>();

            functions.AddRange(CreateSwitchToModule(settings, api));
            functions.AddRange(CreateShowView(settings, api));
            functions.AddRange(CreateShowSecondaryView(settings, api));
            functions.AddRange(new IFunctionFactory[]
            {
                new MethodFunctionFactory(settings, api, "Toggle secondary display", "ToggleSecondaryDisplay", a => a.LrApplicationView.ToggleSecondaryDisplay()),
                new MethodFunctionFactory(settings, api, "Toggle secondary display fullscreen", "ToggleSecondaryDisplayFullscreen", a => a.LrApplicationView.ToggleSecondaryDisplayFullscreen()),
                new MethodFunctionFactory(settings, api, "Toggle zoom", "ToggleZoom", a => a.LrApplicationView.ToggleZoom()),
                new MethodFunctionFactory(settings, api, "Zoom in", "ZoomIn", a => a.LrApplicationView.ZoomIn()),
                new MethodFunctionFactory(settings, api, "Zoom in some", "ZoomInSome", a => a.LrApplicationView.ZoomInSome()),
                new MethodFunctionFactory(settings, api, "Zoom out", "ZoomOut", a => a.LrApplicationView.ZoomOut()),
                new MethodFunctionFactory(settings, api, "Zoom out some", "ZoomOutSome", a => a.LrApplicationView.ZoomOutSome()),
                new ToggleDevelopBeforeAfterFunctionFactory(settings, api),
            });

            return(new FunctionCatalogGroup
            {
                DisplayName = "View",
                Key = "LrApplicationView",
                Functions = new ObservableCollection <IFunctionFactory>(functions),
            });
        }
 private static IFunctionCatalogGroup CreateUndoGroup(ISettings settings, LrApi api)
 {
     return(new FunctionCatalogGroup
     {
         DisplayName = "Undo",
         Key = "LrUndo",
         Functions = new ObservableCollection <IFunctionFactory>(new[]
Exemple #3
0
 protected Function(ISettings settings, LrApi api, string displayName, string key)
 {
     Settings    = settings;
     Api         = api;
     DisplayName = displayName;
     Key         = key;
 }
 public MethodFunctionFactory(ISettings settings, LrApi api, string displayName, string key,
                              Action <LrApi> method) : base(settings, api)
 {
     _method     = method;
     DisplayName = displayName;
     Key         = $"MethodFunction:{key}";
 }
        public ParameterFunction(ISettings settings, LrApi api, string displayName, IParameter <T> parameter, string key)
            : base(settings, api, displayName, key)
        {
            Parameter = parameter;

            api.LrDevelopController.AddParameterChangedListener(parameter, RequestUpdateControllerValue);
        }
        private static IFunctionCatalogGroup CreateDevelopGroup(ISettings settings, LrApi api)
        {
            var functions = new List <IFunctionFactory>();

            functions.AddRange(new []
            {
                new MethodFunctionFactory(settings, api, "Reset all develop adjustments", "ResetAllDevelopAdjustments", a => a.LrDevelopController.ResetAllDevelopAdjustments()),
                new MethodFunctionFactory(settings, api, "Reset Adjustment Brush", "ResetBrushing", a => a.LrDevelopController.ResetBrushing()),
                new MethodFunctionFactory(settings, api, "Reset Radial Filter", "ResetCircularGradient", a => a.LrDevelopController.ResetCircularGradient()),
                new MethodFunctionFactory(settings, api, "Reset Crop", "ResetCrop", a => a.LrDevelopController.ResetCrop()),
                new MethodFunctionFactory(settings, api, "Reset Graduated Filter", "ResetGradient", a => a.LrDevelopController.ResetGradient()),
                new MethodFunctionFactory(settings, api, "Reset Red Eye Correction", "ResetRedEye", a => a.LrDevelopController.ResetRedEye()),
                new MethodFunctionFactory(settings, api, "Reset Spot Removal", "ResetSpotRemoval", a => a.LrDevelopController.ResetSpotRemoval()),
            });

            foreach (var tool in Tool.AllEnums)
            {
                functions.Add(new MethodFunctionFactory(settings, api, $"Select Tool {tool.Name}", $"SelectTool{tool.Value}",
                                                        a => a.LrDevelopController.SelectTool(tool)));
            }

            return(new FunctionCatalogGroup
            {
                DisplayName = "Develop",
                Key = "LrDevelop",
                Functions = new ObservableCollection <IFunctionFactory>(functions)
            });
        }
Exemple #7
0
 private static ModuleGroup CreateModuleWithGlobal(LrApi api, Module module)
 {
     return(new ModuleGroup(module, new List <FunctionGroup>
     {
         new FunctionGroup(api)
         {
             Key = $"{module.Value}:Global"
         }
     }));
 }
Exemple #8
0
        public FunctionGroup(LrApi api, Panel panel = null)
        {
            _api     = api;
            IsGlobal = panel == null;
            Panel    = panel;

            _controllerFunctions = new List <ControllerFunction>();
            OnPropertyChanged(nameof(ControllerFunctions));

            AllFunctionGroups.Add(this);
        }
Exemple #9
0
 public static FunctionGroupManager DefaultGroups(LrApi api, IFunctionCatalog functionCatalog, Device device)
 {
     return(new FunctionGroupManager(functionCatalog, device, new List <ModuleGroup>
     {
         CreateModuleWithGlobal(api, Module.Library),
         CreateDevelopModule(api),
         CreateModuleWithGlobal(api, Module.Map),
         CreateModuleWithGlobal(api, Module.Book),
         CreateModuleWithGlobal(api, Module.Slideshow),
         CreateModuleWithGlobal(api, Module.Print),
         CreateModuleWithGlobal(api, Module.Web)
     }));
 }
Exemple #10
0
        private static ModuleGroup CreateDevelopModule(LrApi api)
        {
            var group = new ModuleGroup(Module.Develop, new List <FunctionGroup>
            {
                new FunctionGroup(api)
                {
                    Key = $"{Module.Develop.Value}:Global"
                }
            });

            foreach (var panel in Panel.AllEnums)
            {
                group.AddFunctionGroup(new FunctionGroup(api, panel)
                {
                    Key = $"{Module.Develop.Value}:{panel.Value}"
                });
            }

            return(group);
        }
        private LrControlApplication()
        {
            // Configure logging
            var template = "{Timestamp:yyyy-MM-dd HH:mm:ss.sss} [{SourceContext:l}] [{Level}] {Message}{NewLine}{Exception}";

            Serilog.Log.Logger = new LoggerConfiguration()
                                 .MinimumLevel.Information()
                                 .WriteTo.ColoredConsole(outputTemplate: template)
                                 .WriteTo.RollingFile("LrControl.exe.{Date}.log",
                                                      outputTemplate: template,
                                                      fileSizeLimitBytes: 10 * 1024 * 1024,
                                                      flushToDiskInterval: TimeSpan.FromSeconds(1),
                                                      retainedFileCountLimit: 5,
                                                      shared: true)
                                 .CreateLogger();

            _settings             = Configurations.Settings.LoadOrDefault();
            _lrApi                = new LrApi();
            _functionCatalog      = Functions.Catalog.FunctionCatalog.DefaultCatalog(_settings, _lrApi);
            _device               = new Device();
            _functionGroupManager = FunctionGroupManager.DefaultGroups(_lrApi, _functionCatalog, _device);

            // Hookup module listener
            _lrApi.LrApplicationView.ModuleChanged += _functionGroupManager.EnableModule;
            _lrApi.ConnectionStatus += (connected, version) => ConnectionStatus?.Invoke(connected, version);

            // Listen for Setting changes
            _settings.PropertyChanged += SettingsOnPropertyChanged;

            // Restore previously selected input/output devices
            RefreshAvailableDevices(false);
            SetInputDevice(_inputDevices.FirstOrDefault(x => x.Name == _settings.LastUsedInputDevice));
            SetOutputDevice(_outputDevices.FirstOrDefault(x => x.Name == _settings.LastUsedOutputDevice));

            // Load configuration
            LoadConfiguration();

            Log.Information("LrControl application started, running {Version}", Environment.Version);
        }
        protected override IFunction CreateFunction(ISettings settings, LrApi api)
        {
            switch (_parameter)
            {
            case IParameter <double> temperatureParameter when ReferenceEquals(temperatureParameter, Parameters.AdjustPanelParameters.Temperature):
                return(new TemperatureParameterFunction(settings, api, DisplayName, temperatureParameter, Key));

            case IParameter <int> intParameter:
                return(new ParameterFunction <int>(settings, api, DisplayName, intParameter, Key));

            case IParameter <double> doubleParameter:
                return(new ParameterFunction <double>(settings, api, DisplayName, doubleParameter, Key));

            case IParameter <bool> boolParameter:
                return(new ParameterFunction <bool>(settings, api, DisplayName, boolParameter, Key));

            default:
            {
                Log.Error("Unsupported Parameter {Parameter}", _parameter);
                throw new ArgumentException("Unsupported parameter type");
            }
            }
        }
 protected override IFunction CreateFunction(ISettings settings, LrApi api)
 {
     return(new MethodFunction(settings, api, DisplayName, _method, DisplayName, Key));
 }
        private static IEnumerable <IFunctionFactory> CreateFunctionsForEnumParameter(ISettings settings, LrApi api, IList <IParameter> parameters)
        {
            var enumFunctions = new List <IFunctionFactory>();

            foreach (var param in parameters)
            {
                var valueType = param.GetType().GetGenericArguments()[0];
                if (valueType.BaseType == null || !valueType.BaseType.IsGenericType || typeof(ClassEnum <,>) != valueType.BaseType.GetGenericTypeDefinition())
                {
                    continue;
                }

                var allEnumsProperty   = valueType.BaseType.GetProperty("AllEnums");
                var nameProperty       = valueType.BaseType.GetProperty("Name");
                var valueProperty      = valueType.BaseType.GetProperty("Value");
                var callSetValueMethod = valueType.BaseType.GetMethod("CallSetValue");

                var allEnums = (IEnumerable)allEnumsProperty.GetMethod.Invoke(null, null);
                foreach (var enumValue in allEnums)
                {
                    var name  = nameProperty.GetMethod.Invoke(enumValue, null);
                    var value = valueProperty.GetMethod.Invoke(enumValue, null);

                    enumFunctions.Add(
                        new MethodFunctionFactory(settings, api, $"Set {param.DisplayName} to {name}", $"Set{param.Name}To{value}",
                                                  a => callSetValueMethod.Invoke(null, new[] { a, param, enumValue })));
                }
            }

            return(enumFunctions);
        }
 public EnablePanelFunction(ISettings settings, LrApi api, string displayName, Panel panel, IParameter <bool> enablePanelParameter, string key) : base(settings, api, displayName, key)
 {
     _panel = panel;
     _enablePanelParamter = enablePanelParameter;
 }
 protected override IFunction CreateFunction(ISettings settings, LrApi api)
 {
     return(new ToggleParameterFunction(settings, api, DisplayName, _parameter, Key));
 }
 public ToggleParameterFunctionFactory(ISettings settings, LrApi api, IParameter <bool> parameter) : base(settings, api)
 {
     _parameter = parameter;
 }
Exemple #18
0
 public VuserClass()
 {
     lr = new LrApi();
 }
Exemple #19
0
 public static void CallSetValue(LrApi api, IParameter <TEnum> parameter, TEnum value)
 {
     api.LrDevelopController.SetValue(parameter, value);
 }
Exemple #20
0
 private static IEnumerable <MethodFunctionFactory> CreateShowSecondaryView(ISettings settings, LrApi api)
 {
     return(SecondaryView.AllEnums.Select(view =>
                                          new MethodFunctionFactory(settings, api, $"Change secondary monitor to {view.Name}", $"ShowSecondaryView{view.Value}",
                                                                    a => a.LrApplicationView.ShowSecondaryView(view))));
 }
Exemple #21
0
 private static IEnumerable <MethodFunctionFactory> CreateSwitchToModule(ISettings settings, LrApi api)
 {
     return(Module.AllEnums.Select(module =>
                                   new MethodFunctionFactory(settings, api, $"Switch to {module.Name}", $"SwitchToModule{module.Value}",
                                                             a => a.LrApplicationView.SwitchToModule(module))));
 }
        private static IEnumerable <IFunctionCatalogGroup> CreateDevelopGroups(ISettings settings, LrApi api)
        {
            var groups = new List <IFunctionCatalogGroup>();

            groups.Add(CreateDevelopGroup(settings, api));
            groups.Add(CreateDevelopPanelGroup(settings, api, Panel.Basic, null, Parameters.AdjustPanelParameters.AllParameters));
            groups.Add(CreateDevelopPanelGroup(settings, api, Panel.ToneCurve, Parameters.EnablePanelParameters.ToneCurve, Parameters.TonePanelParameters.AllParameters));
            groups.Add(CreateDevelopPanelGroup(settings, api, Panel.ColorAdjustment, Parameters.EnablePanelParameters.ColorAdjustments, Parameters.MixerPanelParameters.AllParameters));
            groups.Add(CreateDevelopPanelGroup(settings, api, Panel.SplitToning, Parameters.EnablePanelParameters.SplitToning, Parameters.SplitToningPanelParameters.AllParameters));
            groups.Add(CreateDevelopPanelGroup(settings, api, Panel.Detail, Parameters.EnablePanelParameters.Detail, Parameters.DetailPanelParameters.AllParameters));
            groups.Add(CreateDevelopPanelGroup(settings, api, Panel.LensCorrections, Parameters.EnablePanelParameters.LensCorrections, Parameters.LensCorrectionsPanelParameters.AllParameters));
            groups.Add(CreateDevelopPanelGroup(settings, api, Panel.Effects, Parameters.EnablePanelParameters.Effects, Parameters.EffectsPanelParameters.AllParameters));
            groups.Add(CreateDevelopPanelGroup(settings, api, Panel.CameraCalibration, Parameters.EnablePanelParameters.Calibration, Parameters.CalibratePanelParameters.AllParameters));
            groups.Add(CreateDevelopCropGroup(settings, api));
            groups.Add(CreateDevelopLocalizedGroup(settings, api));

            return(groups);
        }
        private static IFunctionCatalogGroup CreateDevelopLocalizedGroup(ISettings settings, LrApi api)
        {
            var functions = new List <IFunctionFactory>();

            // Change parameters
            foreach (var param in Parameters.LocalizedAdjustmentsParameters.AllParameters)
            {
                functions.Add(new ParameterFunctionFactory(settings, api, param));
            }

            // Reset parameter
            foreach (var param in Parameters.LocalizedAdjustmentsParameters.AllParameters)
            {
                functions.Add(new MethodFunctionFactory(settings, api, $"Reset {param.DisplayName} to default", $"ResetToDefault{param.Name}",
                                                        a =>
                {
                    a.LrDevelopController.StopTracking();
                    a.LrDevelopController.ResetToDefault(param);
                }));
            }

            return(new FunctionCatalogGroup
            {
                DisplayName = "Develop Localized",
                Key = "LrDevelopLocalized",
                Functions = new ObservableCollection <IFunctionFactory>(functions)
            });
        }
Exemple #24
0
 protected FunctionFactory(ISettings settings, LrApi api)
 {
     _settings = settings;
     _api      = api;
 }
Exemple #25
0
        private static IEnumerable <IFunctionCatalogGroup> CreateGroups(ISettings settings, LrApi api)
        {
            var groups = new List <IFunctionCatalogGroup>
            {
                CreateViewGroup(settings, api),
                CreateUndoGroup(settings, api),
                CreateSelectionGroup(settings, api)
            };

            groups.AddRange(CreateDevelopGroups(settings, api));
            return(groups);
        }
Exemple #26
0
 public static IFunctionCatalog DefaultCatalog(ISettings settings, LrApi api)
 {
     return(new FunctionCatalog(CreateGroups(settings, api)));
 }
 public ToggleParameterFunction(ISettings settings, LrApi api, string displayName, IParameter <bool> parameter, string key) : base(settings, api, displayName, key)
 {
     _parameter = parameter;
 }
 public ParameterFunctionFactory(ISettings settings, LrApi api, IParameter parameter) : base(settings, api)
 {
     _parameter = parameter;
 }
Exemple #29
0
 protected abstract IFunction CreateFunction(ISettings settings, LrApi api);
        private static IFunctionCatalogGroup CreateDevelopPanelGroup(ISettings settings, LrApi api, Panel panel, IParameter <bool> enablePanelParameter, IList <IParameter> parameters)
        {
            var functions = new List <IFunctionFactory>();

            functions.AddRange(new []
            {
                new EnablePanelFunctionFactory(settings, api, panel, enablePanelParameter),
            });

            // Change parameter
            foreach (var param in parameters)
            {
                if (param is IParameter <int> || param is IParameter <double> )
                {
                    functions.Add(new ParameterFunctionFactory(settings, api, param));
                }
            }

            // Change enum parameter
            functions.AddRange(CreateFunctionsForEnumParameter(settings, api, parameters));

            // Reset parameter
            foreach (var param in parameters)
            {
                functions.Add(new MethodFunctionFactory(settings, api, $"Reset {param.DisplayName} to default", $"ResetToDefault{param.Name}",
                                                        a =>
                {
                    a.LrDevelopController.StopTracking();
                    a.LrDevelopController.ResetToDefault(param);
                }));
            }


            // Toggle parameter
            functions.AddRange(parameters
                               .OfType <IParameter <bool> >()
                               .Select(parameter => new ToggleParameterFunctionFactory(settings, api, parameter)));

            // Increment / Decrement
            foreach (var param in parameters)
            {
                if (param is IParameter <int> || param is IParameter <double> )
                {
                    functions.Add(new MethodFunctionFactory(settings, api, $"Increment {param.DisplayName}", $"Increment{param.Name}",
                                                            a => a.LrDevelopController.Increment(param)));
                    functions.Add(new MethodFunctionFactory(settings, api, $"Decrement {param.DisplayName}", $"Decrement{param.Name}",
                                                            a => a.LrDevelopController.Decrement(param)));
                }
            }

            return(new FunctionCatalogGroup
            {
                DisplayName = $"Develop {panel.Name}",
                Key = $"LrDevelop{panel.Value}",
                Functions = new ObservableCollection <IFunctionFactory>(functions)
            });
        }