示例#1
0
 /// <summary>
 /// 当选中一条或多条对话时的操作,第一条选中的对话出现在主框上。
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void DialogueBox_GotFocus(object sender, RoutedEventArgs e)
 {
     if (DialoguesGrid.SelectedItems.Count > 0)
     {
         editingDialogue = DialoguesGrid.SelectedItems[0] as DialogueViewModel;
     }
 }
示例#2
0
 /// <summary>
 /// 当对话框失去焦点时,说明已经编辑完成。
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void DialogueBox_LostFocus(object sender, RoutedEventArgs e)
 {
     if (editingDialogue != null)
     {
         editingDialogue.Line = DialogueBox.Text;
         editingDialogue      = null;
     }
 }
示例#3
0
        public IActionResult Dialogue(string ID)
        {
            DialogueViewModel viewModel = new DialogueViewModel();

            viewModel.messages = _manager.GetDialogue(ID);
            viewModel.id       = ID;
            return(View(viewModel));
        }
示例#4
0
        public void Dev2Dialogue_NullImageSource_ValidTitleDescriptionDescriptionTitle_Expected_NullImageReference()
        {
            IDialogueViewModel dev2Dialogue = new DialogueViewModel();

            dev2Dialogue.SetupDialogue("Test Title", "Test Description", null, "SomeTitleText");
            Assert.IsTrue(dev2Dialogue.ImageSource == null);
            // cleanup - Dispose of the dev2Dialogue
            dev2Dialogue.Dispose();
        }
示例#5
0
        public void Dev2Dialogue_NullTitleDesciptionImageSource_ValidDescriptionTitle_Expected_CreatedWithOnlyDescriptionTitleText()
        {
            IDialogueViewModel dev2Dialogue = new DialogueViewModel();

            dev2Dialogue.SetupDialogue(null, null, null, "SomeTitleText");
            Assert.IsFalse(string.IsNullOrEmpty(dev2Dialogue.DescriptionTitleText));
            // cleanup - Dispose of the dev2Dialogue
            dev2Dialogue.Dispose();
        }
        public IDialogueViewModel CreateServerAboutDialog(string serverVersion)
        {
            IDialogueViewModel dialogueViewModel = new DialogueViewModel();
            string             packUri           = StringResources.Warewolf_Logo;

            var ver = VersionInfo.FetchVersionInfo();

            SetupServerDialogAction(dialogueViewModel, ver, packUri, serverVersion);
            return(dialogueViewModel);
        }
示例#7
0
        public void Dev2Dialogue_NullDescription_ValidDescriptionImgSourceDecsriptionTitle_Expected_DialogueSetup_DescriptionSetToEmpty()
        {
            IDialogueViewModel dev2Dialogue = new DialogueViewModel();
            string             newFileName  = _filePath.Replace(".png", "Dev2Dialogue_NullDescription_ValidDescriptionImgSourceDecsriptionTitle_Expected_DialogueSetup_DescriptionSetToEmpty.png");

            createFile(newFileName);
            dev2Dialogue.SetupDialogue("Test Title", null, newFileName, "SomeTitleText");
            File.Delete(newFileName);
            Assert.AreEqual(string.Empty, dev2Dialogue.DescriptionText);
            // cleanup - Dispose of the dev2Dialogue
            dev2Dialogue.Dispose();
        }
        public static IDialogueViewModel CreateAboutDialog()
        {
            IDialogueViewModel dialogueViewModel = new DialogueViewModel();
            string             packUri           = StringResources.Warewolf_Logo;

            var ver = VersionInfo.FetchVersionInfo();

            dialogueViewModel.SetupDialogue(StringResources.About_Header_Text,
                                            String.Format(StringResources.About_Content, ver,
                                                          ver), packUri,
                                            StringResources.About_Description_Header, StringResources.EULA_Link, StringResources.EULA_Text);
            return(dialogueViewModel);
        }
示例#9
0
        // ReSharper disable once InconsistentNaming
        public void Dev2DialogueSetup_CorrectParameterSet_Test()
        {
            IDialogueViewModel dev2Dialogue = new DialogueViewModel();
            string             newFileName  = _filePath.Replace(".png", "Dev2DialogueSetup_CorrectParameterSet_Test.png");

            createFile(newFileName);
            dev2Dialogue.SetupDialogue("Test Title", "Test Description", newFileName, "SomeTitleText");
            File.Delete(newFileName);
            Assert.IsTrue(dev2Dialogue.ImageSource != null);

            // cleanup - Dispose of the dev2Dialogue
            dev2Dialogue.Dispose();
        }
示例#10
0
        public void Dev2Dialogue_NullTitleDescriptionDescriptionTitleText_ValidImageSource_Expected_ValidImage()
        {
            IDialogueViewModel dev2Dialogue = new DialogueViewModel();
            string             newFileName  = _filePath.Replace(".png", "Dev2Dialogue_NullTitleDescriptionDescriptionTitleText_ValidImageSource_Expected_ValidImage.png");

            createFile(newFileName);
            dev2Dialogue.SetupDialogue("Test Title", null, newFileName, null);
            File.Delete(newFileName);
            Assert.IsNotNull(dev2Dialogue.ImageSource);

            // cleanup - Dispose of the dev2Dialogue
            dev2Dialogue.Dispose();
        }
示例#11
0
        public void Dev2Dialogue_NullDescriptionDescriptionTitleText_ValidTitleImageSource_Expected_EmptyDescriptionTitleAndDescription()
        {
            IDialogueViewModel dev2Dialogue = new DialogueViewModel();
            string             newFileName  = _filePath.Replace(".png", "Dev2Dialogue_NullDescriptionDescriptionTitleText_ValidTitleImageSource_Expected_EmptyDescriptionTitleAndDescription.png");

            createFile(newFileName);
            dev2Dialogue.SetupDialogue("Test Title", null, newFileName, null);
            File.Delete(newFileName);
            Assert.IsTrue(dev2Dialogue.DescriptionText == string.Empty && dev2Dialogue.DescriptionTitleText == string.Empty);

            // cleanup - Dispose of the dev2Dialogue
            dev2Dialogue.Dispose();
        }
示例#12
0
        public void Dev2Dialogue_NullTitleDescription_ValidgImgSourceDecsriptionTitle_Expected_DialogueSetup_TitleandDescriptionSetToEmpty()
        {
            IDialogueViewModel dev2Dialogue = new DialogueViewModel();
            string             newFileName  = _filePath.Replace(".png", "Dev2Dialogue_NullTitleDescription_ValidgImgSourceDecsriptionTitle_Expected_DialogueSetup_TitleandDescriptionSetToEmpty.png");

            createFile(newFileName);
            dev2Dialogue.SetupDialogue(null, null, newFileName, "SomeTitleText");
            File.Delete(newFileName);
            Assert.IsTrue(dev2Dialogue.Title == string.Empty && dev2Dialogue.DescriptionText == string.Empty);

            // cleanup - Dispose of the dev2Dialogue
            dev2Dialogue.Dispose();
        }
示例#13
0
        public ViewResult DialogueWith(int userId, int page = 1)
        {
            int pageSize = 100;

            ViewBag.UserAuth = User.Identity.IsAuthenticated;
            ViewBag.UserName = User.Identity.Name;

            User user1      = db.Users.Include(xc => xc.UserDialogues).ThenInclude(xc => xc.Dialogue).FirstOrDefault(x => x.Email == User.Identity.Name);
            User user2      = db.Users.Include(xc => xc.UserDialogues).ThenInclude(xc => xc.Dialogue).FirstOrDefault(x => x.UserId == userId);
            int  dialogueId = FindDialogueId(user1, user2);

            Dialogue       dialogue  = db.Dialogues.Include(xc => xc.Messages).ThenInclude(x => x.Sender).FirstOrDefault(x => x.DialogueId == dialogueId);
            Dialogue       dialogue2 = db.Dialogues.Include(xc => xc.UserDialogues).FirstOrDefault(x => x.DialogueId == dialogueId);
            List <Message> messages  = dialogue.Messages.OrderByDescending(x => x.Time).ToList();
            UserDialogue   ud        = dialogue2.UserDialogues.FirstOrDefault(x => x.UserId == user1.UserId);

            ud.IsRead = true;
            db.Update(ud);
            db.SaveChanges();

            var count = messages.Count();

            ViewBag.SearchCount = count;
            var           items         = messages.Skip((page - 1) * pageSize).Take(pageSize).ToList();
            PageViewModel pageViewModel = new PageViewModel(count, page, pageSize);

            DialogueViewModel d1 = new DialogueViewModel
            {
                Dialogue      = dialogue,
                User2         = user2,
                Messages      = messages,
                PageViewModel = pageViewModel
            };

            return(View(d1));
        }
示例#14
0
 public void TestCreateDialogueViewModel()
 {
     var viewModel = new DialogueViewModel();
 }
        public DialogueView()
        {
            InitializeComponent();

            _viewModel = (DialogueViewModel)Resources["viewModel"];
        }
 public DialogueView(IViewModel viewModel)
 {
     vm = (DialogueViewModel)viewModel;
     InitializeComponent();
 }
示例#17
0
        public static new  void CreateEditor(ContentControl document)
        {
            RodskaApp app = (RodskaApp)RodskaApp.Current;

            document.Content = null;
            ITypeFactory typeFactory = app.currentMainVM.GetTypeFactory();
            MainWindow   mainWindow  = (MainWindow)app.MainWindow;

            if (mainWindow.CurrentDocument == null)
            {
                return;
            }
            Dialogue          dialogue = (Dialogue)mainWindow.CurrentDocument;
            DialogueViewModel dialogVM = typeFactory.CreateInstanceWithParametersAndAutoCompletion <DialogueViewModel>(dialogue);
            DialogueControl   control  = new DialogueControl(dialogVM);

            control.conversationWorkspace.ViewModel = new NodeNetwork.ViewModels.NetworkViewModel();
            DialogueNode node = new DialogueNode(dialogue);

            using (control.ConversationWorkspace.ViewModel.SuppressChangeNotifications())
            {
                Dictionary <string, DialoguePromptNode>   PromptNodes   = new Dictionary <string, DialoguePromptNode>();
                Dictionary <string, DialogueResponseNode> ResponseNodes = new Dictionary <string, DialogueResponseNode>();

                if (dialogue.Prompts.Count > 0)
                {
                    foreach (DialoguePrompt prompt in dialogue.Prompts)
                    {
                        DialoguePromptNode dialoguePrompt = new DialoguePromptNode();
                        StringNode         SpeechNode     = new StringNode();
                        SpeechNode.ValueEditor.Value = prompt.Speech;
                        ConnectionViewModel speechToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.SpeechInput, SpeechNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(SpeechNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(speechToPrompt);

                        StringNode TitleNode = new StringNode();
                        TitleNode.ValueEditor.Value = prompt.Title;
                        ConnectionViewModel titleToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.Title, TitleNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(TitleNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(titleToPrompt);

                        IntegerNode PriorityNode = new IntegerNode();
                        PriorityNode.ValueEditor.Value = prompt.Priority;
                        ConnectionViewModel priorityToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.Priority, PriorityNode.Output);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(PriorityNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(priorityToPrompt);

                        StringNode ActionLuaNode = new StringNode();
                        ActionLuaNode.ValueEditor.Value = prompt.ActionLua ?? "";
                        ConnectionViewModel actionLuaToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.ActionLua, ActionLuaNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(ActionLuaNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(actionLuaToPrompt);

                        StringNode ConditionLuaNode = new StringNode();
                        ActionLuaNode.ValueEditor.Value = prompt.ConditionLua ?? "return true";
                        ConnectionViewModel conditionLuaToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.ConditionLua, ConditionLuaNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(ConditionLuaNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(conditionLuaToPrompt);

                        ConnectionViewModel promptToDialogue = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, node.Prompts, dialoguePrompt.FinalPrompt);
                        ConnectionViewModel promptToDialogue2;
                        if (DialoguePrompt.GetLeafWithName(prompt.Title, dialogue.InitialPrompts) != null)
                        {
                            promptToDialogue2 = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, node.InitialPrompts, dialoguePrompt.FinalPrompt);
                            control.ConversationWorkspace.ViewModel.Connections.Add(promptToDialogue2);
                        }
                        control.ConversationWorkspace.ViewModel.Nodes.Add(dialoguePrompt);
                        control.ConversationWorkspace.ViewModel.Connections.Add(promptToDialogue);

                        PromptNodes[prompt.Title] = dialoguePrompt;
                    }
                }

                if (dialogue.Responses.Count > 0)
                {
                    Console.WriteLine("Responses found.");
                    foreach (DialogueResponse response in dialogue.Responses)
                    {
                        Console.WriteLine(response);
                        DialogueResponseNode dialogueResponse = new DialogueResponseNode();
                        StringNode           SpeechNode       = new StringNode();
                        SpeechNode.ValueEditor.Value = response.Speech;
                        ConnectionViewModel speechToResponse = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.SpeechInput, SpeechNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(SpeechNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(speechToResponse);

                        StringNode TitleNode = new StringNode();
                        TitleNode.ValueEditor.Value = response.Title;
                        ConnectionViewModel titleToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.Title, TitleNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(TitleNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(titleToPrompt);

                        IntegerNode OrderNode = new IntegerNode();
                        OrderNode.ValueEditor.Value = response.Order;
                        ConnectionViewModel priorityToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.Order, OrderNode.Output);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(OrderNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(priorityToPrompt);

                        StringNode ActionLuaNode = new StringNode();
                        ActionLuaNode.ValueEditor.Value = response.ActionLua ?? "";
                        ConnectionViewModel actionLuaToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.ActionLua, ActionLuaNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(ActionLuaNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(actionLuaToPrompt);

                        StringNode ConditionLuaNode = new StringNode();
                        ActionLuaNode.ValueEditor.Value = response.ConditionLua ?? "return true";
                        ConnectionViewModel conditionLuaToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.ConditionLua, ConditionLuaNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(ConditionLuaNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(conditionLuaToPrompt);

                        ConnectionViewModel promptToDialogue = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, node.Responses, dialogueResponse.FinalPrompt);
                        control.ConversationWorkspace.ViewModel.Nodes.Add(dialogueResponse);
                        control.ConversationWorkspace.ViewModel.Connections.Add(promptToDialogue);

                        ResponseNodes[response.Title] = dialogueResponse;
                    }
                }

                foreach (DialoguePrompt prompt in dialogue.Prompts)
                {
                    DialoguePromptNode pNode = PromptNodes[prompt.Title];
                    if (prompt.Responses.Count > 0 && pNode != null)
                    {
                        foreach (DialogueResponse response in prompt.Responses)
                        {
                            if (ResponseNodes[response.Title] != null)
                            {
                                ConnectionViewModel connection = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, pNode.Responses, ResponseNodes[response.Title].FinalPrompt);
                                control.ConversationWorkspace.ViewModel.Connections.Add(connection);
                            }
                        }
                        if (prompt.ChainedPrompts.Count > 0 && pNode != null)
                        {
                            foreach (DialoguePrompt prompt1 in prompt.ChainedPrompts)
                            {
                                if (PromptNodes[prompt.Title] != null)
                                {
                                    ConnectionViewModel connection = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, pNode.ChainedPromptsInput, PromptNodes[prompt.Title].FinalPrompt);
                                    control.ConversationWorkspace.ViewModel.Connections.Add(connection);
                                }
                            }
                        }
                    }
                }

                foreach (DialogueResponse response in dialogue.Responses)
                {
                    DialogueResponseNode rNode = ResponseNodes[response.Title];
                    if (response.Prompts.Count > 0 && rNode != null)
                    {
                        foreach (DialoguePrompt prompt in response.Prompts)
                        {
                            if (PromptNodes[prompt.Title] != null)
                            {
                                ConnectionViewModel connection = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, rNode.PromptsInput, PromptNodes[prompt.Title].FinalPrompt);
                                control.ConversationWorkspace.ViewModel.Connections.Add(connection);
                            }
                        }
                    }
                }
            }
            node.Name = dialogue.Title;
            control.conversationWorkspace.ViewModel.Nodes.Add(node);

            control.CurrentDocument = dialogue;
            document.Content        = control;
        }