[AgRule("Widget", "OrdinaryQuestion")] static Control OrdinaryQuestionWidget(Ast n) { QDialog dialog = n.Dialog(); ((Control)dialog).Enabled = true; EventHandler h = (object o, EventArgs a) => { if (!((Control)o).ContainsFocus) { return; // TODO: For which reason is this check needed? } n.SetValue(dialog.GetValue()); n.Root().Render(); }; dialog.AddEventHandler(h); var contentBox = new FlowLayoutPanel(); contentBox.AutoSize = true; contentBox.WrapContents = false; contentBox.FlowDirection = FlowDirection.LeftToRight; var label = new Label(); label.Text = n.GetLabel(); label.AutoSize = true; label.Anchor = AnchorStyles.Left; contentBox.Controls.Add(label); contentBox.Controls.Add((Control)dialog); n.Parent().Widget().Controls.Add(contentBox); return(contentBox); }
[AgRule("Widget", "ComputedQuestion")] static Box ComputedQuestionWidget(Ast n) { Widget dialog = (Widget)n.Dialog(); dialog.Sensitive = false; HBox box = new HBox(false, 5); if (!n.IsLValid()) { Image warning = new Image(Stock.DialogWarning, IconSize.Button); box.PackStart(warning, false, false, 3); } box.PackStart(new Label(n.GetLabel()), false, false, 5); box.PackStart(dialog, true, true, 5); n.Parent().Widget().PackStart(box, false, false, 5); box.ShowAll(); return(box); }
private static void UpdateQuestions(Ast n) { switch (n.NodeType()) { case "Form": case "Group": foreach (var c in n.GetBody().Children()) { UpdateQuestions(c as Ast); } break; case "ComputedQuestion": break; default: n.Dialog().SetValue(n.Value()); break; } }
[AgRule("Widget", "ComputedQuestion")] static Control ComputedQuestionWidget(Ast n) { Control dialog = (Control)n.Dialog(); dialog.Enabled = false; var contentBox = new FlowLayoutPanel(); contentBox.AutoSize = true; contentBox.WrapContents = false; contentBox.FlowDirection = FlowDirection.LeftToRight; var label = new Label(); label.Text = n.GetLabel(); label.AutoSize = true; label.Anchor = AnchorStyles.Left; contentBox.Controls.Add(label); contentBox.Controls.Add(dialog); n.Parent().Widget().Controls.Add(contentBox); return(contentBox); }
[AgRule("Widget", "OrdinaryQuestion")] static Box OrdinaryQuestionWidget(Ast n) { QDialog dialog = n.Dialog(); EventHandler h = (object o, EventArgs a) => { n.SetValue(dialog.GetValue()); n.Root().Render(); }; dialog.AddEventHandler(h); HBox box = new HBox(false, 5); if (!n.IsLValid()) { Image warning = new Image(Stock.DialogWarning, IconSize.Button); box.PackStart(warning, false, false, 3); } box.PackStart(new Label(n.GetLabel()), false, false, 5); box.PackStart((Widget)dialog, true, true, 5); n.Parent().Widget().PackStart(box, false, false, 5); box.ShowAll(); return(box); }
[AgRule("Render", "ComputedQuestion")] static bool ComputedQuestionRender(Ast n) { n.Dialog().SetValue(n.Value()); return(true); }