internal SettingIoViewModel( RootSettingSync rootModel, AutomationSettingSync model, SaveFileManager saveFileManager, IMessageSender sender ) : base(sender) { _rootModel = rootModel; _model = model; _saveFileManager = saveFileManager; OpenInstructionUrlCommand = new ActionCommand(OpenInstructionUrl); RequestEnableAutomationCommand = new ActionCommand(OnEnableAutomationRequested); RequestDisableAutomationCommand = new ActionCommand(OnDisableAutomationRequested); ApplyPortNumberCommand = new ActionCommand(ApplyPortNumber); ShowSaveModalCommand = new ActionCommand(ShowSaveModal); ShowLoadModalCommand = new ActionCommand(ShowLoadModal); ExportSettingToFileCommand = new ActionCommand(SaveSettingToFile); ImportSettingFromFileCommand = new ActionCommand(LoadSettingFromFile); AutomationPortNumberText = new RProperty <string>( _model.AutomationPortNumber.Value.ToString(), v => { //フォーマット違反になってないかチェック PortNumberIsInvalid.Value = !(int.TryParse(v, out int i) && i >= 0 && i < 65536); }); _model.AutomationPortNumber.PropertyChanged += (_, __) => { AutomationPortNumberText.Value = _model.AutomationPortNumber.Value.ToString(); }; }
public RootSettingSync(IMessageSender sender, IMessageReceiver receiver) { AvailableLanguageNames = new ReadOnlyObservableCollection <string>(_availableLanguageNames); _sender = sender; Window = new WindowSettingSync(sender); Motion = new MotionSettingSync(sender); Layout = new LayoutSettingSync(sender); Gamepad = new GamepadSettingSync(sender); Light = new LightSettingSync(sender); WordToMotion = new WordToMotionSettingSync(sender, receiver); ExternalTracker = new ExternalTrackerSettingSync(sender); Automation = new AutomationSettingSync(sender); //NOTE; LanguageSelectorとの二重管理っぽくて若干アレだがこのままで行く //初期値Defaultを入れることで、起動直後にPCのカルチャベースで言語を指定しなきゃダメかどうか判別する LanguageName = new RProperty <string>("Default", s => { LanguageSelector.Instance.LanguageName = s; }); }