private void openMiClicked(Object sender, EventArgs e) { if (changesMade) { DialogResult result = discardChangesDialog(); if (result == DialogResult.No) { saveMiClicked(new object(), new EventArgs()); } else if (result == DialogResult.Cancel) { return; } } OpenFileDialog openFD = new OpenFileDialog(); openFD.Filter = "Dialog (*.xml)|*.xml"; openFD.RestoreDirectory = true; DialogResult dialogResult = openFD.ShowDialog(); if (dialogResult == DialogResult.OK) { fileName = openFD.FileName.ToString(); conversation = MyXml.load(fileName); NpcIdGenerator = new IdGenerator(); DialogNode[] nodes = conversation.getDialog(); for (int i = 0; i < nodes.Length; i++) { NpcIdGenerator.addId(nodes[i].id); } this.Text = "Dialog Manager - " + conversation.npcName; treeListView.Roots = new ArrayList(conversation. getRootNodes()); treeListView.ExpandAll(); changesMade = false; } }
private void cellEditValidating(object sender, CellEditEventArgs e) { if (e.SubItemIndex == 2 && e.RowObject is DialogResponse) { DialogResponse r = (DialogResponse)e.RowObject; if (((ComboBox)e.Control).SelectedItem == null) { treeListView.RefreshObject(r); return; } r.link = (String)((ComboBox)e.Control).SelectedItem; if (r.link.Equals("End conversation")) { r.linkType = ResponseLinkType.endConversation; } else if (!r.link.Equals("End & switch conversation")) { r.linkType = ResponseLinkType.dialogNode; } treeListView.RefreshObject(r); } else if (e.SubItemIndex == 1 && e.RowObject is DialogNode) { String id = (String)e.NewValue; DialogNode node = (DialogNode)e.RowObject; if (NpcIdGenerator.contains(id) && !id.Equals(node.id)) { showError("String is not unique", "Error"); e.NewValue = node.id; e.Cancel = true; return; } if (id.Equals("")) { showError("Id can not be empty.", "Error"); e.NewValue = node.id; e.Cancel = true; return; } NpcIdGenerator.removeId(node.id); node.id = (String)e.NewValue; NpcIdGenerator.addId(node.id); treeListView.RefreshObject(node); //change links of responses where link == oldId List <DialogResponse> responses = new List <DialogResponse>(); for (int i = 0; i < conversation.getRootNodes().Length; i++) { DialogNode n = conversation.getRootNode(i); responses.AddRange(getResponses(n)); } for (int i = 0; i < responses.Count; i++) { DialogResponse r = responses[i]; if (r.link.Equals((String)e.Value)) { r.link = node.id; treeListView.RefreshObject(r); } } } if (!changesMade) { this.Text = this.Text + "*"; } changesMade = true; }
private void openMiClicked(Object sender, EventArgs e) { if (changesMade) { DialogResult result = discardChangesDialog(); if (result == DialogResult.No) { saveMiClicked(new object(), new EventArgs()); } else if (result == DialogResult.Cancel) return; } OpenFileDialog openFD = new OpenFileDialog(); openFD.Filter = "Dialog (*.xml)|*.xml"; openFD.RestoreDirectory = true; DialogResult dialogResult = openFD.ShowDialog(); if (dialogResult == DialogResult.OK) { fileName = openFD.FileName.ToString(); conversation = MyXml.load(fileName); NpcIdGenerator = new IdGenerator(); DialogNode[] nodes = conversation.getDialog(); for (int i = 0; i < nodes.Length; i++) NpcIdGenerator.addId(nodes[i].id); this.Text = "Dialog Manager - " + conversation.npcName; treeListView.Roots = new ArrayList(conversation. getRootNodes()); treeListView.ExpandAll(); changesMade = false; } }