static Control OrdinaryQuestionWidget(Racr.AstNode n) { Widget w; if (n.Type() == ValueTypes.Boolean) { w = new CheckWidget(n.GetLabel()); var cb = w.GetCheckBox(); cb.CheckedChanged += (object sender, EventArgs e) => { if (!cb.ContainsFocus) return; n.SetValue(cb.Checked); n.Root().Render(); }; } else { w = new TextWidget(n.GetLabel()); var tb = w.GetTextBox(); tb.TextChanged += (object sender, EventArgs e) => { if (!tb.ContainsFocus) return; if (n.Type() == ValueTypes.Number) { try { n.SetValue(Convert.ToDouble(tb.Text)); } catch { return; } } else n.SetValue(tb.Text); n.Root().Render(); }; } n.Parent().Widget().Controls.Add(w); return w; }
static string ComputedQuestionSExpr(Racr.AstNode n) { return "(~? '" + n.GetName() + " " + Lexer.EscapeString(n.GetLabel()) + " " + n.GetExpression().SExpr() + ")"; }
static string OrdinaryQuestionSExpr(Racr.AstNode n) { return "(?? '" + n.GetName() + " " + Lexer.EscapeString(n.GetLabel()) + " " + n.Type() + " " + Lexer.EscapeValue(n.Value()) + ")"; }
static Control ComputedQuestionWidget(Racr.AstNode n) { Widget w; if (n.Type() == ValueTypes.Boolean) w = new CheckWidget(n.GetLabel(), false); else w = new TextWidget(n.GetLabel(), false); n.Parent().Widget().Controls.Add(w); return w; }