public async Task <IOptions> LoadAsync(string path, IIo io) { var options = new DynamicOptionsTest(); var s = await io.ReadFileAsync(path); options.Deserialize(s); return(options); }
public IOptions Load(string path, IIo io) { var options = new DynamicOptionsTest(); var s = io.ReadFile(path); options.Deserialize(s); return(options); }
public void MCV_DynamicOoptionsTest_PassInvalidArgumentTest() { var options = new DynamicOptionsTest { BackColor = Colors.Aqua }; options.Deserialize("BackColor=invalidarg"); Assert.IsTrue(options.BackColor != Colors.Aqua); }
public void MCV_DynamicOptionsTest_SerializeDeserializeTest() { var optoins = new DynamicOptionsTest { BackColor = Colors.Aqua }; var s = optoins.Serialize(); var newOpt = new DynamicOptionsTest(); newOpt.Deserialize(s); Assert.AreEqual(Colors.Aqua, newOpt.BackColor); }
public void ForeColorを変更すると変更通知が来る() { var b1 = false; var options = new DynamicOptionsTest() { ForeColor = Colors.Blue, }; Assert.AreEqual(Colors.Blue, options.ForeColor); options.PropertyChanged += (s, e) => { switch (e.PropertyName) { case nameof(options.ForeColor): b1 = true; break; } }; options.ForeColor = Colors.Brown; Assert.IsTrue(b1); }
public void SetUp() { _options = new DynamicOptionsTest(); }
public async Task StartAsync() { var io = new Test.IOTest(); //settingsディレクトリの有無を確認し、無ければ作成する const string SettingsDirName = "settings"; if (!Directory.Exists(SettingsDirName)) { Directory.CreateDirectory(SettingsDirName); } //OptionsはMainViewModelのContentRendered()で読み込みたい。しかし、その前にConnectionNameWidth等が参照されるため現状ではコンストラクタ以前に読み込む必要がある。 //実行される順番は //ctor->ConnectionNameWidth->Activated->Loaded->ContentRendered //理想は、とりあえずViewを表示して、そこに"読み込み中です"みたいな表示を出している間に必要なものを読み込むこと。 //しかし、それをやるにはViewの位置はデフォルト値になってしまう。それでも良いか。 //これ↓が一番いいかも //ここでOptionsのインスタンスを作成し、MainViewModelに渡す。とりあえずデフォルト値で初期化させ、ContentRenderedで保存されたOptionsを読み込み差し替える。 var options = new DynamicOptionsTest(); try { var s = io.ReadFile(GetOptionsPath()); options.Deserialize(s); } catch (Exception ex) { _logger.LogException(ex); } try { SendErrorFile(); } catch { } ISitePluginLoader sitePluginLoader = new Test.SitePluginLoaderTest(); IBrowserLoader browserLoader = new BrowserLoader(_logger); //var model = new Model(new SitePluginLoaderTest(), options, _logger, io); //(IIo io, ILogger logger, IOptions options, ISitePluginLoader sitePluginLoader, IBrowserLoader browserLoader) //var viewModel = new MainViewModel(model); var viewModel = new MainViewModel(io, _logger, options, sitePluginLoader, browserLoader); viewModel.CloseRequested += ViewModel_CloseRequested; void windowClosed(object sender, EventArgs e) { viewModel.RequestClose(); try { var s = options.Serialize(); io.WriteFile(GetOptionsPath(), s); } catch (Exception ex) { _logger.LogException(ex); } try { var s = _logger.GetExceptions(); SendErrorReport(s, GetTitle(), GetVersion()); } catch (Exception ex) { //ここで例外が起きても送れない・・・。 Debug.WriteLine(ex.Message); } } //SplashScreen splashScreen = new SplashScreen(); //not disposable, but I'm keeping the same structure //{ // splashScreen.Closed += windowClosed; //if user closes splash screen, let's quit // splashScreen.Show(); await viewModel.InitializeAsync(); var mainForm = new MainWindow(); mainForm.Closed += windowClosed; mainForm.DataContext = viewModel; mainForm.Show(); // splashScreen.Owner = mainForm; // splashScreen.Closed -= windowClosed; // splashScreen.Close(); //} }