void ctr_OnRefresh(object sender, RoutedEventArgs e) { DialogOption senderOption = (DialogOption)(((Control)sender).DataContext); var page = DataContext as DialogPage; if (!senderOption.Enabled && !String.IsNullOrWhiteSpace(senderOption.Label)) { page.EnableOption(senderOption); } page.OnPropertyChanged("Options"); foreach (var option in page.Options) { option.RefreshBinding(); } stackPanel.Children.Clear(); BindOptions(); }
public void EnableOption(DialogOption option) { if (option.Enabled || string.IsNullOrWhiteSpace(option.Label)) { return; } option.Enabled = true; option.Target = new DialogPage(mOwner); var dv = mOwner.createNewVertex(option.Target); option.Target.PageOwner = this; option.Target.OptionOwner = option; option.Target.Label = option.LabelBinding; option.Target.Vertex = dv; option.Parent = this; option.Command = option.Command; mOwner.AddNode(dv); mOwner.LinkNodes(this.Vertex, dv); mOwner.Redraw(); }
private void BindOptions() { DialogPage dp = (DialogPage)DataContext; bool needNew = true; var options = dp.Options; foreach (var option in options) { if (String.IsNullOrEmpty(option.Label)) { needNew = false; } DialogOptionControl ctr = new DialogOptionControl(); ctr.OnOpen += ctr_OnOpen; ctr.OnRefresh += ctr_OnRefresh; ctr.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; ctr.DataContext = option; stackPanel.Children.Add(ctr); } if (needNew) { DialogOption option = new DialogOption(); DialogOptionControl ctr = new DialogOptionControl(); ctr.OnOpen += ctr_OnOpen; ctr.OnRefresh += ctr_OnRefresh; ctr.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; ctr.DataContext = option; stackPanel.Children.Add(ctr); dp.AddOption(option); } }
private static DialogPage translate_dialog(dialog dlg) { DialogPage dp = new DialogPage(null); dp.Label = dlg.name; dp.DisplayText = dlg.starting_text; dp.Options = new ObservableCollection <DialogOption>(); foreach (var choice in dlg.choices) { DialogOption option = new DialogOption(); option.LabelBinding = choice.tree; option.DisplayText = choice.text; if (choice.target != "self") { option.Command = choice.target; } for (int i = 0; i < choice.conditions.Count; i++) { option.Conditions[i].Skill = choice.conditions[i].name; option.Conditions[i].Value = choice.conditions[i].value; switch (choice.conditions[i].op) { case "=": option.Conditions[i].Type = ConditionTypes.Equal; break; case "!": option.Conditions[i].Type = ConditionTypes.NotEqual; break; case ">": option.Conditions[i].Type = ConditionTypes.GreaterThan; break; case "<": option.Conditions[i].Type = ConditionTypes.LessThan; break; } } for (int i = 0; i < choice.modifiers.Count; i++) { option.Modifiers[i].Skill = choice.modifiers[i].name; option.Modifiers[i].Value = choice.modifiers[i].value; switch (choice.modifiers[i].op) { case "=": option.Modifiers[i].Type = ModifierTypes.Equal; break; case "+": option.Modifiers[i].Type = ModifierTypes.Add; break; case "-": option.Modifiers[i].Type = ModifierTypes.Subtract; break; case "*": option.Modifiers[i].Type = ModifierTypes.Multiply; break; case "/": option.Modifiers[i].Type = ModifierTypes.Divide; break; case "^": option.Modifiers[i].Type = ModifierTypes.Execute; break; } } dp.Options.Add(option); } return(dp); }
public void AddOption(DialogOption option) { Options.Add(option); }