public IEnumerator <object> Task() { var g = Timeline.Instance.Globals; while (true) { var rq = g.Get <DragKeyframesRequest>(); if (rq != null) { Document.Current.History.DoTransaction(() => { Operations.DragKeyframes.Perform(rq.Offset, rq.RemoveOriginals); Operations.ShiftGridSelection.Perform(rq.Offset); if (rq.Offset.Y != 0) { var selected = Document.Current.SelectedRows().Where(r => r.Selected).Select(r => r.Index).ToDictionary(x => x); ClearRowSelection.Perform(); foreach (var row in Document.Current.Rows) { if (selected.ContainsKey(row.Index - rq.Offset.Y)) { SelectRow.Perform(row, select: true); } } } g.Remove <DragKeyframesRequest>(); }); } yield return(null); } }
protected void Populate() { _formControls.Clear(); _container.Children.Clear(); if (Form != null) { foreach (var field in Form.FormItems) { switch (field.FieldType) { case FormField.FieldType_MultilineText: AddChild(new TextAreaRow(this, field)); break; case "Bool": AddChild(new CheckBoxRow(this, field)); break; case FormField.FieldType_CheckBox: var cbRow = new CheckBoxRow(this, field); cbRow.OptionSelected += Picker_OptionSelected; AddChild(cbRow); break; case FormField.FeildType_EntityHeaderPicker: var ehPicker = new EntityHeaderPicker(this, field); ehPicker.PickerTapped += EhPicker_PickerTapped; AddChild(ehPicker); break; case FormField.FieldType_Picker: var picker = new SelectRow(this, field); picker.OptionSelected += Picker_OptionSelected; AddChild(picker); break; case FormField.FieldType_ChildList: var childListControl = new ChildListRow(this, field); if (Form.ChildLists.ContainsKey(field.Name)) { childListControl.ChildItems = Form.ChildLists[field.Name]; } childListControl.Add += ChildListControl_Add; childListControl.Deleted += ChildListControl_Deleted; childListControl.ItemSelected += ChildListControl_ItemSelected; AddChild(childListControl); break; case FormField.FieldType_LinkButton: AddChild(new LinkButton(this, field)); break; default: AddChild(new TextEditRow(this, field)); break; } } } }
private SelectTable ToSelectTable(ExecutedTable table) { var select = new SelectTable(); select.Columns = table.Descriptor.Properties.Select(x => new Sdk.SelectColumn() { Name = x.Name, Type = x.Type == null ? "" : x.Type.Name.ToString().ToLower() }).ToArray(); var list = new List <SelectRow>(); foreach (var row in table.Rows) { var selectRow = new SelectRow(); selectRow.Values = row.Values.Select(x => x.Value).ToArray(); list.Add(selectRow); } select.Rows = list.ToArray(); return(select); }
public IEnumerator <object> Task() { Probers.Add(new BoneRowProber()); Probers.Add(new FolderRowProber()); Probers.Add(new NodeRowProber()); Probers.Add(new AnimationTrackRowProber()); var roll = Timeline.Instance.Roll; var input = roll.RootWidget.Input; var cg = new ClickGesture(0, () => { var row = RowUnderMouse(input.MousePosition); if (row == null) { return; } if (input.IsKeyPressed(Key.Shift)) { if (Document.Current.SelectedRows().Any()) { var firstRow = Document.Current.SelectedRows().FirstOrDefault(); Document.Current.History.DoTransaction(() => { ClearRowSelection.Perform(); SelectRowRange.Perform(firstRow, row); }); } else { Document.Current.History.DoTransaction(() => { ClearRowSelection.Perform(); SelectRow.Perform(row); }); } } else if (input.IsKeyPressed(Key.Control)) { Document.Current.History.DoTransaction(() => { SelectRow.Perform(row, !row.Selected); }); } else { Document.Current.History.DoTransaction(() => { ClearRowSelection.Perform(); SelectRow.Perform(row); }); input.ConsumeKey(Key.Mouse0); } }); var dg = new DragGesture(0); dg.Recognized += () => { var row = RowUnderMouse(dg.MousePressPosition); // Have to turn off PreviewAnimation manually in order // to provide the same behaviour whether widget is selected or not // (PreviewAnimation is turned off when performing operation) if (Document.Current.PreviewAnimation) { Document.Current.TogglePreviewAnimation(); } if (!row?.Selected ?? false) { Document.Current.History.DoTransaction(() => { ClearRowSelection.Perform(); SelectRow.Perform(row); }); } roll.OnRenderOverlay += OnRollRenderOverlay; dragLocation = new RowLocation(Document.Current.RowTree, 0); }; dg.Changed += () => { dragLocation = MouseToRowLocation(input.MousePosition); CommonWindow.Current.Invalidate(); }; dg.Ended += () => { if (!dg.IsRecognizing()) { roll.OnRenderOverlay -= OnRollRenderOverlay; CommonWindow.Current.Invalidate(); if (dragLocation != null) { DragRows(dragLocation.Value); } } }; roll.RootWidget.Gestures.Add(dg); roll.RootWidget.Gestures.Add(cg); yield break; }
public IEnumerator <object> Task() { var roll = Timeline.Instance.Roll; var input = roll.RootWidget.Input; input.AcceptMouseThroughDescendants = true; while (true) { yield return(null); if (!input.WasMousePressed() || input.WasKeyPressed(Key.Mouse0DoubleClick)) { continue; } var initialMousePosition = input.MousePosition; var row = RowUnderMouse(initialMousePosition); if (row == null) { continue; } if (input.IsKeyPressed(Key.Shift)) { if (Document.Current.SelectedRows().Any()) { var firstRow = Document.Current.SelectedRows().FirstOrDefault(); Document.Current.History.DoTransaction(() => { ClearRowSelection.Perform(); SelectRowRange.Perform(firstRow, row); }); } else { Document.Current.History.DoTransaction(() => { ClearRowSelection.Perform(); SelectRow.Perform(row); }); } } else if (input.IsKeyPressed(Key.Control)) { Document.Current.History.DoTransaction(() => { SelectRow.Perform(row, !row.Selected); }); } else { if (!row.Selected) { Document.Current.History.DoTransaction(() => { ClearRowSelection.Perform(); SelectRow.Perform(row); }); } while ( input.IsMousePressed() && Math.Abs(initialMousePosition.Y - input.MousePosition.Y) < TimelineMetrics.DefaultRowHeight / 4 ) { yield return(null); } if (input.IsMousePressed()) { yield return(DragTask()); } else { Document.Current.History.DoTransaction(() => { ClearRowSelection.Perform(); SelectRow.Perform(row); }); } } } }