/// <summary>スクリプトのルーチンを開始します。</summary> public void Start() { if (IsStarted) { return; } IsStarted = true; var chatWindowViewModel = new ChatWindowViewModel( _chatWindow, _mainWindow, _setting.ShownCharacterName, _setting.ChatWindowText, _setting.ChatWindowColor ); new ChatWindow { DataContext = chatWindowViewModel }.Show(); var stateStart = new ReadInitialize(_scriptStateManager); var scriptStateMachine = new StateMachine(stateStart); Task.Run(() => { while (!_scriptStateManager.IsDisposed) { scriptStateMachine.Update(); } }); }
public ChatWindow(TataruModel tataruModel, ChatWindowViewModel chatWindowViewModel) { InitializeComponent(); try { _TataruModel = tataruModel; _ChatWindowViewModel = chatWindowViewModel; this.DataContext = _ChatWindowViewModel; _WindowResizer = new WindowResizer(this); this.ShowInTaskbar = false; ChatRtb.AcceptsTab = true; ChatRtb.BorderThickness = new Thickness(0); ChatRtb.Document.Blocks.Clear(); ChatRtb.IsUndoEnabled = false; _TextArrivedTime = DateTime.UtcNow; _KeepWorking = true; _AutoHidden = false; } catch (Exception e) { Logger.WriteLog(e); } }
public ChatWindowView(SpaceBook myCoolBook) { ViewModel = new ChatWindowViewModel(myCoolBook); DataContext = ViewModel; InitializeComponent(); }
private async Task AsyncOnViewModelChatWindowsListChanged(AsyncListChangedEventHandler <ChatWindowViewModel> ea) { await Task.Run(() => { try { switch (ea.ChangedEventArgs.ListChangedType) { case ListChangedType.ItemAdded: { UiWindow.Window.UIThread(() => { ChatWindowViewModel newElem = ea.ChangedElemnt; _ChatWindows.Add(new ChatWindow(this, newElem, _MainWindow)); _ChatWindows[_ChatWindows.Count - 1].Show(); }); } break; case ListChangedType.ItemDeleted: { } break; } } catch (Exception e) { Logger.WriteLog(e); } }); }
public void CloseChatWindow(ChatWindowViewModel viewModel) { if (!_chatWindows.ContainsKey(viewModel)) { return; } var window = _chatWindows[viewModel]; window.Close(); }
public ShellViewModel( AuthenticationService authenticationService, LoginViewModel loginViewModel, ChatWindowViewModel chatWindowViewModel) { _authenticationService = authenticationService; _loginViewModel = loginViewModel; _chatWindowViewModel = chatWindowViewModel; Initialize(); }
public void ShowChatWindow(string organizationName, StreamWriter writer) { Dispatcher.UIThread.Post(() => { var chatWindow = new ChatWindow(); chatWindow.Closing += ChatWindow_Closing;; ChatViewModel = chatWindow.DataContext as ChatWindowViewModel; ChatViewModel.PipeStreamWriter = writer; ChatViewModel.OrganizationName = organizationName; App.Current.Run(chatWindow); }); }
public void ShowChatWindow(string organizationName, StreamWriter writer) { App.Current.Dispatcher.Invoke(() => { var chatWindow = new ChatWindow(); chatWindow.Closing += ChatWindow_Closing; ChatViewModel = chatWindow.DataContext as ChatWindowViewModel; ChatViewModel.PipeStreamWriter = writer; ChatViewModel.OrganizationName = organizationName; chatWindow.Show(); }); }
public ChatWindow(IServiceRegistry serviceRegistry, Conversation conversation) { this.serviceRegistry = serviceRegistry; var chatWindowViewModel = new ChatWindowViewModel(conversation, serviceRegistry); viewModel = chatWindowViewModel; chatWindowViewModel.OpenUserSettingsWindowRequested += OnOpenUserSettingsWindowRequested; InitializeComponent(); DataContext = chatWindowViewModel; chatWindowViewModel.InitialiseChat(); }
public async void ShowChatWindow(ChatWindowViewModel viewModel) { if (!_chatWindows.ContainsKey(viewModel) || _chatWindows[viewModel].IsClosed) { _chatWindows[viewModel] = new ChatWindow(); } var window = _chatWindows[viewModel]; window.DataContext = viewModel; window.Show(); await Task.Delay(10); window.Activate(); }
public static Window GetChatWindow(string chatPartnerName, string message) { if (ChatWindowPerContact.ContainsKey(chatPartnerName)) { ChatWindowViewModel ExistchatWindow = ChatWindowPerContact[chatPartnerName].Key; return(ChatWindowPerContact[chatPartnerName].Value); } ChatWindowViewModel chatWindowViewModel = new ChatWindowViewModel(new UserDTO { UserName = chatPartnerName }); chatWindowViewModel.MessagesLog += (message != string.Empty) ? ChatMessageFormatter.Format(message, chatPartnerName) : ""; Window chatWindow = WindowService.ShowWindow(chatWindowViewModel); chatWindow.Closing += OnWindowClosing; ChatWindowPerContact.Add(chatPartnerName, new KeyValuePair <ChatWindowViewModel, Window>(chatWindowViewModel, chatWindow)); return(chatWindow); }
private async Task AsyncOnViewModelWindowsListChanged(AsyncListChangedEventHandler <ChatWindowViewModel> ea) { switch (ea.ChangedEventArgs.ListChangedType) { case ListChangedType.ItemAdded: { await UiWindow.Window.UIThreadAsync(() => { ChatWindowViewModel newElem = ea.ChangedElemnt; var reslut = _TataruUIModel.ChatWindows.FirstOrDefault(x => x.WinId == newElem.WinId); if (reslut == null) { var sett = newElem.GetSettings(); _TataruUIModel.ChatWindows.Add(sett); var binder = new PropertyBinder(_TataruUIModel.ChatWindows[_TataruUIModel.ChatWindows.Count - 1], newElem); CreateBinderCouples(binder); _PropertyBinders.Add(binder); } }); } break; case ListChangedType.ItemDeleted: { await Task.Run(() => { SpinWait.SpinUntil(() => !deletingObject); lock (lockObj) { deletingObject = true; } }); await UiWindow.Window.UIThreadAsync(() => { try { ChatWindowViewModel deletedElem = ea.ChangedElemnt; ChatWindowViewModelSettings reslut = _TataruUIModel.ChatWindows.FirstOrDefault(x => x.WinId == deletedElem.WinId); if (reslut != null) { _TataruUIModel.ChatWindows.Remove(reslut); RemoveChatWindow(_ChatWindows, reslut.WinId); try { PropertyBinder binder = _PropertyBinders.FirstOrDefault(x => x.Object1 == reslut && x.Object2 == deletedElem); if (binder == null) { binder = _PropertyBinders.FirstOrDefault(x => x.Object2 == reslut && x.Object1 == deletedElem); } if (binder != null) { binder.Stop(); _PropertyBinders.Remove(binder); } } catch (Exception e) { Logger.WriteLog(e); } } } catch (Exception e) { Logger.WriteLog(e); } }); deletingObject = false; } break; } }
private async Task AsyncOnSettingsWindowsListChanged(AsyncListChangedEventHandler <ChatWindowViewModelSettings> ea) { switch (ea.ChangedEventArgs.ListChangedType) { case ListChangedType.ItemAdded: { await UiWindow.Window.UIThreadAsync(() => { ChatWindowViewModelSettings newElem = ea.ChangedElemnt; ChatWindowViewModel reslut = null; reslut = _TataruViewModel.ChatWindows.FirstOrDefault(x => x.WinId == newElem.WinId); if (reslut == null) { try { TataruViewModel.AddNewChatWindow(newElem); } catch (Exception e) { Logger.WriteLog(e); } var binder = new PropertyBinder(newElem, _TataruViewModel.ChatWindows[_TataruViewModel.ChatWindows.Count - 1]); CreateBinderCouples(binder); _PropertyBinders.Add(binder); } }); } break; case ListChangedType.ItemDeleted: { await Task.Run(() => { SpinWait.SpinUntil(() => !deletingObject); lock (lockObj) { deletingObject = true; } }); await UiWindow.Window.UIThreadAsync(() => { try { ChatWindowViewModelSettings deletedElem = ea.ChangedElemnt; var elementToDelete = _TataruViewModel.ChatWindows.FirstOrDefault(x => x.WinId == deletedElem.WinId); if (elementToDelete != null) { _TataruViewModel.DeleteChatWindow(_TataruViewModel.ChatWindows.IndexOf(elementToDelete)); RemoveChatWindow(_ChatWindows, elementToDelete.WinId); var binder = _PropertyBinders.FirstOrDefault(x => x.Object1 == elementToDelete && x.Object2 == deletedElem); if (binder == null) { binder = _PropertyBinders.FirstOrDefault(x => x.Object2 == elementToDelete && x.Object1 == deletedElem); } if (binder != null) { binder.Stop(); _PropertyBinders.Remove(binder); } } } catch (Exception e) { Logger.WriteLog(e); } }); deletingObject = false; } break; } }