public FunctionGroupManagerViewModel(Dispatcher dispatcher, FunctionGroupManager functionGroupManager) : base(dispatcher) { _functionGroupManager = functionGroupManager; Modules = new ObservableCollection <ModuleGroupViewModel>(); UpdateModules(functionGroupManager.Modules); functionGroupManager.PropertyChanged += FunctionGroupManagerOnPropertyChanged; }
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); }