/// <summary> /// コンストラクタ /// </summary> public MainWindowViewModel() { server = new Server(false, false, SendData); _ = ClosedCommand.Subscribe(Close).AddTo(Disposable); _ = OpenCommand.Subscribe(tcpOpne).AddTo(Disposable); _ = CloseCommand.Subscribe(tcpClose).AddTo(Disposable); }
public MainPageViewModel(INavigationService navigationService) : base(navigationService) { //ViweModel→Model this.ServerSwitch = ReactiveProperty.FromObject(socket, x => x.IsServer).AddTo(this.Disposable); this.IpAddress = ReactiveProperty.FromObject(socket, x => x.IpAddress).AddTo(this.Disposable); this.Port = ReactiveProperty.FromObject(socket, x => x.Port).AddTo(this.Disposable); //ViewModel←Model this.SettingIsEnabled = socket.ObserveProperty(x => x.IsOpen).Select(x => !x).ToReactiveProperty().AddTo(this.Disposable); this.CloseCommand = socket.ObserveProperty(x => x.IsOpen).ToReactiveCommand().AddTo(this.Disposable); this.OpenCommand = socket.ObserveProperty(x => x.IsOpen).Select(x => !x).ToReactiveCommand().AddTo(this.Disposable); this.SendCommand = socket.ObserveProperty(x => x.IsOpen).ToReactiveCommand().AddTo(this.Disposable); this.ActionView = socket.ActionInfo.ToReadOnlyReactiveCollection().AddTo(this.Disposable); //ViewModel=Model this.SendData = socket.ToReactivePropertyAsSynchronized(x => x.SendData).AddTo(this.Disposable); //ViweModel内 this.ServerSwitchInfo = this.ServerSwitch.Select(x => x ? "サーバー" : "クライアント").ToReactiveProperty().AddTo(this.Disposable); this.IPAddressSettingIsEnabled = this.SettingIsEnabled.CombineLatest(this.ServerSwitch, (x, y) => x && !y) //クライアント且つCLOSE時のみIPアドレスは入力編集が可能 .ToReactiveProperty().AddTo(this.Disposable); //ボタン OpenCommand.Subscribe(_ => socket.Open()); CloseCommand.Subscribe(_ => socket.Close()); SendCommand.Subscribe(_ => socket.Send()); }
public EditingViewModel(Pack selectedPack, PhraseItem phraseItem, string author, ObservableAsPropertyHelper <ReactiveList <PhraseItem> > phrases) { _selectedPack = selectedPack; _author = author; _phrases = phrases; _oldPhrase = phraseItem; _isEditing = phraseItem != null; if (_isEditing) { Phrase = phraseItem.Phrase; Complexity = (int)phraseItem.Complexity; Description = phraseItem.Description; } SaveCommand = ReactiveCommand.Create(); SaveCommand.Subscribe(_ => { if (!Save(out string message)) { ShowError(message); } else { Close?.Invoke(); } }); CloseCommand = ReactiveCommand.Create(); CloseCommand.Subscribe(_ => { Close?.Invoke(); }); }
public PopUp(bool isPopup, bool isPage) { InitializeComponent(); CloseCommand.Subscribe(() => PopupNavigation.PopAsync()); BackCommand.Subscribe(() => App.Current.MainPage = new MainPage()); Items.Value = new string[] { "001 -- ika", "002 -- tako", "003 -- wakame" }; this.IsPopup.Value = isPopup; this.IsPage.Value = isPage; }
public DocumentTabViewModel(T model) : base(model) { CloseCommand = ReactiveCommand.Create(); CloseCommand.Subscribe((o) => { IoC.Get <IShell>().RemoveDocument(this); }); IsVisible = true; }
public OldToolViewModel(string contentId, string name) : base(contentId) { Name = name; ToolTitle = name; CloseCommand = ReactiveCommand.Create(); CloseCommand.Subscribe(o => { // Workspace.Instance.Tools.Remove (this); }); }
public ProjectConfigurationDialogViewModel(IProject project, Action onClose) { Title = project.Name; ConfigPages = new List <object>(); ConfigPages.AddRange(project.ConfigurationPages); CloseCommand.Subscribe(_ => { onClose(); }); }
public ChildPageViewModel(INavigationService navigation) { _navigationService = navigation; MsgText.Value = "ChildPage"; CloseCommand.Subscribe(_ => OnCloseCommandAsync()); NextPageCommand.Subscribe(_ => OnNextPageCommandAsync()); TitleText1.Value = "たいとる1"; TitleText2.Value = "たいとる2"; TitleText3.Value = "たいとる3"; }
public EditorViewModel() { InstanceCount++; ShellViewModel.Instance.InstanceCount = InstanceCount; text = "This is some text."; CloseCommand = ReactiveCommand.Create(); CloseCommand.Subscribe(_ => { ShellViewModel.Instance.Documents.Remove(this); }); }
public EditorViewModel() { disposables = new CompositeDisposable(); disposables.Add(CloseCommand.Subscribe(_ => { IoC.Get <IShell>().InvalidateErrors(); })); AddWatchCommand = ReactiveCommand.Create(); disposables.Add(AddWatchCommand.Subscribe(_ => { IoC.Get <IWatchList>()?.AddWatch(_editor?.GetWordAtOffset(_editor.CaretOffset)); })); Dock = Dock.Right; }
public EditorViewModel() { _shell = IoC.Get <ShellViewModel>(); disposables = new CompositeDisposable { CloseCommand.Subscribe(_ => { _shell.InvalidateErrors(); }) }; AddWatchCommand = ReactiveCommand.Create(); disposables.Add(AddWatchCommand.Subscribe(_ => { IoC.Get <IWatchList>()?.AddWatch(_editor?.GetWordAtOffset(_editor.CaretOffset)); })); Dock = Dock.Right; _fontSize = 14; ZoomLevel = _shell.GlobalZoomLevel; }
public EditorViewModel(EditorModel model) : base(model) { disposables = new CompositeDisposable(); highlightingData = new ObservableCollection <OffsetSyntaxHighlightingData>(); BeforeTextChangedCommand = ReactiveCommand.Create(); disposables.Add(BeforeTextChangedCommand.Subscribe(model.OnBeforeTextChanged)); TextChangedCommand = ReactiveCommand.Create(); disposables.Add(TextChangedCommand.Subscribe(model.OnTextChanged)); SaveCommand = ReactiveCommand.Create(); disposables.Add(SaveCommand.Subscribe(param => Save())); disposables.Add(CloseCommand.Subscribe(_ => { Model.ProjectFile.FileModifiedExternally -= ProjectFile_FileModifiedExternally; Model.Editor.CaretChangedByPointerClick -= Editor_CaretChangedByPointerClick; Save(); Model.ShutdownBackgroundWorkers(); Model.UnRegisterLanguageService(); intellisenseManager?.Dispose(); intellisenseManager = null; Diagnostics?.Clear(); ShellViewModel.Instance.InvalidateErrors(); Model.Dispose(); Intellisense.Dispose(); disposables.Dispose(); Model.TextDocument = null; })); AddWatchCommand = ReactiveCommand.Create(); disposables.Add(AddWatchCommand.Subscribe(_ => { IoC.Get <IWatchList>()?.AddWatch(WordAtCaret); })); tabCharacter = " "; model.DocumentLoaded += (sender, e) => { model.ProjectFile.FileModifiedExternally -= ProjectFile_FileModifiedExternally; Model.Editor.CaretChangedByPointerClick -= Editor_CaretChangedByPointerClick; foreach (var bgRenderer in languageServiceBackgroundRenderers) { BackgroundRenderers.Remove(bgRenderer); } languageServiceBackgroundRenderers.Clear(); foreach (var transformer in languageServiceDocumentLineTransformers) { DocumentLineTransformers.Remove(transformer); } languageServiceDocumentLineTransformers.Clear(); if (model.LanguageService != null) { languageServiceBackgroundRenderers.AddRange(model.LanguageService.GetBackgroundRenderers(model.ProjectFile)); foreach (var bgRenderer in languageServiceBackgroundRenderers) { BackgroundRenderers.Add(bgRenderer); } languageServiceDocumentLineTransformers.AddRange( model.LanguageService.GetDocumentLineTransformers(model.ProjectFile)); foreach (var textTransformer in languageServiceDocumentLineTransformers) { DocumentLineTransformers.Add(textTransformer); } intellisenseManager = new IntellisenseManager(Model.Editor, Intellisense, Intellisense.CompletionAssistant, model.LanguageService, model.ProjectFile); EventHandler <KeyEventArgs> tunneledKeyUpHandler = (send, ee) => { if (caretIndex > 0) { intellisenseManager.OnKeyUp(ee, CaretIndex, CaretTextLocation.Line, CaretTextLocation.Column); } }; EventHandler <KeyEventArgs> tunneledKeyDownHandler = (send, ee) => { if (caretIndex > 0) { intellisenseManager.OnKeyDown(ee, CaretIndex, CaretTextLocation.Line, CaretTextLocation.Column); } }; EventHandler <TextInputEventArgs> tunneledTextInputHandler = (send, ee) => { if (caretIndex > 0) { intellisenseManager.OnTextInput(ee, CaretIndex, CaretTextLocation.Line, CaretTextLocation.Column); } }; Model.Editor.CaretChangedByPointerClick += Editor_CaretChangedByPointerClick; disposables.Add(Model.Editor.AddHandler(InputElement.KeyDownEvent, tunneledKeyDownHandler, RoutingStrategies.Tunnel)); disposables.Add(Model.Editor.AddHandler(InputElement.KeyUpEvent, tunneledKeyUpHandler, RoutingStrategies.Tunnel)); disposables.Add(Model.Editor.AddHandler(InputElement.TextInputEvent, tunneledTextInputHandler, RoutingStrategies.Bubble)); } model.CodeAnalysisCompleted += (s, ee) => { Diagnostics = model.CodeAnalysisResults.Diagnostics; HighlightingData = new ObservableCollection <OffsetSyntaxHighlightingData>(model.CodeAnalysisResults.SyntaxHighlightingData); IndexItems = new ObservableCollection <IndexEntry>(model.CodeAnalysisResults.IndexItems); selectedIndexEntry = IndexItems.FirstOrDefault(); this.RaisePropertyChanged(nameof(SelectedIndexEntry)); ShellViewModel.Instance.InvalidateErrors(); }; model.ProjectFile.FileModifiedExternally += ProjectFile_FileModifiedExternally; TextDocument = model.TextDocument; Title = Model.ProjectFile.Name; }; model.TextChanged += (sender, e) => { if (ShellViewModel.Instance.DocumentTabs.TemporaryDocument == this) { Dock = Dock.Left; ShellViewModel.Instance.DocumentTabs.TemporaryDocument = null; } IsDirty = model.IsDirty; }; intellisense = new IntellisenseViewModel(model, this); documentLineTransformers = new ObservableCollection <IDocumentLineTransformer>(); backgroundRenderers = new ObservableCollection <IBackgroundRenderer>(); backgroundRenderers.Add(new SelectedLineBackgroundRenderer()); DebugLineHighlighter = new SelectedDebugLineBackgroundRenderer(); backgroundRenderers.Add(DebugLineHighlighter); backgroundRenderers.Add(new ColumnLimitBackgroundRenderer()); wordAtCaretHighlighter = new SelectedWordBackgroundRenderer(); backgroundRenderers.Add(wordAtCaretHighlighter); backgroundRenderers.Add(new SelectionBackgroundRenderer()); margins = new ObservableCollection <TextViewMargin>(); Dock = Dock.Right; }
// コンストラクタ public MainViewModel() { // picフォルダが存在しない場合は作成する if (!Directory.Exists(@"pic\")) { Directory.CreateDirectory(@"pic\"); } // debugフォルダが存在しない場合は作成する if (!Directory.Exists(@"debug\")) { Directory.CreateDirectory(@"debug\"); } // 設定項目を初期化する if (!SettingsStore.Initialize()) { MessageBox.Show("設定を読み込めませんでした。\nデフォルトの設定で起動します。", Utility.SoftwareName, MessageBoxButton.OK, MessageBoxImage.Exclamation); } // 資材データベースを初期化する SupplyStore.Initialize(); // 設定内容を画面に反映する SetSettings(); // プロパティを設定 ForTwitterFlg.Subscribe(x => { SettingsStore.ForTwitterFlg = x; }); MainWindowPositionLeft.Subscribe(x => { SettingsStore.MainWindowRect[0] = x; SettingsStore.ChangeSettingFlg = true; }); MainWindowPositionTop.Subscribe(x => { SettingsStore.MainWindowRect[1] = x; SettingsStore.ChangeSettingFlg = true; }); MainWindowPositionWidth.Subscribe(x => { SettingsStore.MainWindowRect[2] = x; SettingsStore.ChangeSettingFlg = true; }); MainWindowPositionHeight.Subscribe(x => { SettingsStore.MainWindowRect[3] = x; SettingsStore.ChangeSettingFlg = true; }); MemoryWindowPositionFlg.Subscribe(x => { SettingsStore.MemoryWindowPositionFlg = x; }); AutoSearchPositionFlg.Subscribe(x => { SettingsStore.AutoSearchPositionFlg = x; }); AutoSupplyScreenShotFlg.Subscribe(x => { SettingsStore.AutoSupplyScreenShotFlg = x; }); PutCharacterRecognitionFlg.Subscribe(x => { SettingsStore.PutCharacterRecognitionFlg = x; }); DragAndDropPictureFlg.Subscribe(x => { SettingsStore.DragAndDropPictureFlg = x; }); // コマンドを設定 GetGameWindowPositionCommand.Subscribe(_ => GetGameWindowPosition()); SaveScreenshotCommand.Subscribe(_ => { try { string fileName = $"{Utility.GetTimeStrLong()}.png"; ScreenShotProvider.GetScreenshot(ForTwitterFlg.Value).Save($"pic\\{fileName}"); PutLog($"スクリーンショット : 成功"); PutLog($"ファイル名 : {fileName}"); } catch (Exception) { PutLog($"スクリーンショット : 失敗"); } }); CloseCommand.Subscribe(_ => { CloseWindow.Value = true; }); SoftwareInfoCommand.Subscribe(_ => { // ソフトの情報を返す // 参考→http://dobon.net/vb/dotnet/file/myversioninfo.html var assembly = Assembly.GetExecutingAssembly(); // AssemblyTitle string asmttl = ((AssemblyTitleAttribute) Attribute.GetCustomAttribute(assembly, typeof(AssemblyTitleAttribute))).Title; // AssemblyCopyright string asmcpy = ((AssemblyCopyrightAttribute) Attribute.GetCustomAttribute(assembly, typeof(AssemblyCopyrightAttribute))).Copyright; // AssemblyProduct string asmprd = ((AssemblyProductAttribute) Attribute.GetCustomAttribute(assembly, typeof(AssemblyProductAttribute))).Product; // AssemblyVersion var asmver = assembly.GetName().Version; MessageBox.Show( $"{asmttl} Ver.{asmver}\n{asmcpy}\n{asmprd}", Utility.SoftwareName, MessageBoxButton.OK, MessageBoxImage.Information); }); ImportSettingsCommand.Subscribe(_ => { // インスタンスを作成 var ofd = new OpenFileDialog { // ファイルの種類を設定 Filter = "設定ファイル(*.json)|*.json|全てのファイル (*.*)|*.*" }; // ダイアログを表示 if ((bool)ofd.ShowDialog()) { // 設定をインポート if (!SettingsStore.LoadSettings(ofd.FileName)) { PutLog("エラー:設定を読み込めませんでした"); } else { PutLog("設定を読み込みました"); } SetSettings(); } }); ExportSettingsCommand.Subscribe(_ => { // インスタンスを作成 var sfd = new SaveFileDialog { // ファイルの種類を設定 Filter = "設定ファイル(*.json)|*.json|全てのファイル (*.*)|*.*" }; // ダイアログを表示 if ((bool)sfd.ShowDialog()) { // 設定をエクスポート if (!SettingsStore.SaveSettings(sfd.FileName)) { PutLog("エラー:設定を保存できませんでした"); } else { PutLog("設定を保存しました"); } } }); OpenPicFolderCommand.Subscribe(_ => System.Diagnostics.Process.Start(@"pic\")); OpenSupplyViewCommand.Subscribe(_ => { if (SettingsStore.ShowSupplyWindowFlg) { return; } var vm = new SupplyViewModel(); var view = new Views.SupplyView { DataContext = vm }; view.Show(); SettingsStore.ShowSupplyWindowFlg = true; }).AddTo(Disposable); OpenTimerViewCommand.Subscribe(_ => { if (SettingsStore.ShowTimerWindowFlg) { return; } var vm = new TimerViewModel(); var view = new Views.TimerView { DataContext = vm }; view.Show(); SettingsStore.ShowTimerWindowFlg = true; }).AddTo(Disposable); ImportMainSupplyCommand.Subscribe(async _ => { // 資材のインポート機能(燃料・資金・ダイヤ) // インスタンスを作成 var ofd = new OpenFileDialog { // ファイルの種類を設定 Filter = "設定ファイル(*.csv)|*.csv|全てのファイル (*.*)|*.*", FileName = "MainSupply.csv" }; // ダイアログを表示 if ((bool)ofd.ShowDialog()) { // 資材をインポート PutLog("資材データを読み込み開始..."); if (await SupplyStore.ImportOldMainSupplyDataAsync(ofd.FileName)) { PutLog("資材データを読み込みました"); } else { PutLog("エラー:資材データを読み込めませんでした"); } } }); ImportSubSupply1Command.Subscribe(async _ => await ImportSubSupplyAsync(0)); ImportSubSupply2Command.Subscribe(async _ => await ImportSubSupplyAsync(1)); ImportSubSupply3Command.Subscribe(async _ => await ImportSubSupplyAsync(2)); ImportSubSupply4Command.Subscribe(async _ => await ImportSubSupplyAsync(3)); // タイマーを初期化し、定時タスクを登録して実行する // http://takachan.hatenablog.com/entry/2017/09/09/225342 var timer = new Timer(200); timer.Elapsed += (sender, e) => { try{ timer.Stop(); HelperTaskF(); } finally{ timer.Start(); } }; timer.Start(); var timer2 = new Timer(1000); timer2.Elapsed += (sender, e) => { try { timer2.Stop(); HelperTaskS(); } finally { timer2.Start(); } }; timer2.Start(); // ウィンドウ表示関係 if (SettingsStore.AutoSupplyWindowFlg) { OpenSupplyViewCommand.Execute(); } if (SettingsStore.AutoTimerWindowFlg) { OpenTimerViewCommand.Execute(); } // 最新版をチェックする CheckSoftwareVer(); }
public EditorViewModel(EditorModel model) : base(model) { disposables = new CompositeDisposable(); highlightingData = new ObservableCollection <OffsetSyntaxHighlightingData>(); BeforeTextChangedCommand = ReactiveCommand.Create(); disposables.Add(BeforeTextChangedCommand.Subscribe(model.OnBeforeTextChanged)); TextChangedCommand = ReactiveCommand.Create(); disposables.Add(TextChangedCommand.Subscribe(model.OnTextChanged)); SaveCommand = ReactiveCommand.Create(); disposables.Add(SaveCommand.Subscribe(param => Save())); CloseCommand = ReactiveCommand.Create(); disposables.Add(CloseCommand.Subscribe(_ => { Model.ProjectFile.FileModifiedExternally -= ProjectFile_FileModifiedExternally; Save(); Model.ShutdownBackgroundWorkers(); Model.UnRegisterLanguageService(); if (ShellViewModel.Instance.DocumentTabs.TemporaryDocument == this) { ShellViewModel.Instance.DocumentTabs.TemporaryDocument = null; } ShellViewModel.Instance.InvalidateErrors(); Model.Dispose(); Intellisense.Dispose(); disposables.Dispose(); Model.TextDocument = null; ShellViewModel.Instance.DocumentTabs.Documents.Remove(this); })); AddWatchCommand = ReactiveCommand.Create(); disposables.Add(AddWatchCommand.Subscribe(_ => { IoC.Get <IWatchList>()?.AddWatch(WordAtCaret); })); tabCharacter = " "; model.DocumentLoaded += (sender, e) => { model.ProjectFile.FileModifiedExternally -= ProjectFile_FileModifiedExternally; foreach (var bgRenderer in languageServiceBackgroundRenderers) { BackgroundRenderers.Remove(bgRenderer); } languageServiceBackgroundRenderers.Clear(); foreach (var transformer in languageServiceDocumentLineTransformers) { DocumentLineTransformers.Remove(transformer); } languageServiceDocumentLineTransformers.Clear(); if (model.LanguageService != null) { languageServiceBackgroundRenderers.AddRange(model.LanguageService.GetBackgroundRenderers(model.ProjectFile)); foreach (var bgRenderer in languageServiceBackgroundRenderers) { BackgroundRenderers.Add(bgRenderer); } languageServiceDocumentLineTransformers.AddRange( model.LanguageService.GetDocumentLineTransformers(model.ProjectFile)); foreach (var textTransformer in languageServiceDocumentLineTransformers) { DocumentLineTransformers.Add(textTransformer); } } model.CodeAnalysisCompleted += (s, ee) => { Diagnostics = model.CodeAnalysisResults.Diagnostics; foreach (var marker in Diagnostics) { if (marker.Length == 0) { var line = TextDocument.GetLineByOffset(marker.StartOffset); var endoffset = TextUtilities.GetNextCaretPosition(TextDocument, marker.StartOffset, TextUtilities.LogicalDirection.Forward, TextUtilities.CaretPositioningMode.WordBorderOrSymbol); if (endoffset == -1) { marker.Length = line.Length; } else { marker.EndOffset = endoffset; } } } HighlightingData = new ObservableCollection <OffsetSyntaxHighlightingData>(model.CodeAnalysisResults.SyntaxHighlightingData); IndexItems = new ObservableCollection <IndexEntry>(model.CodeAnalysisResults.IndexItems); selectedIndexEntry = IndexItems.FirstOrDefault(); this.RaisePropertyChanged(nameof(SelectedIndexEntry)); ShellViewModel.Instance.InvalidateErrors(); }; model.ProjectFile.FileModifiedExternally += ProjectFile_FileModifiedExternally; TextDocument = model.TextDocument; this.RaisePropertyChanged(nameof(Title)); }; model.TextChanged += (sender, e) => { if (ShellViewModel.Instance.DocumentTabs.TemporaryDocument == this) { Dock = Dock.Left; ShellViewModel.Instance.DocumentTabs.TemporaryDocument = null; } this.RaisePropertyChanged(nameof(Title)); }; intellisense = new IntellisenseViewModel(model, this); documentLineTransformers = new ObservableCollection <IDocumentLineTransformer>(); backgroundRenderers = new ObservableCollection <IBackgroundRenderer>(); backgroundRenderers.Add(new SelectedLineBackgroundRenderer()); DebugLineHighlighter = new SelectedDebugLineBackgroundRenderer(); backgroundRenderers.Add(DebugLineHighlighter); backgroundRenderers.Add(new ColumnLimitBackgroundRenderer()); wordAtCaretHighlighter = new SelectedWordBackgroundRenderer(); backgroundRenderers.Add(wordAtCaretHighlighter); backgroundRenderers.Add(new SelectionBackgroundRenderer()); margins = new ObservableCollection <TextViewMargin>(); dock = Dock.Right; }