protected void OnPropertyValueChanged(object s, PropertyValueChangedEventArgs e) { BaseController canvasController = serviceManager.Get <IFlowSharpCanvasService>().ActiveController; string label = e.ChangedItem.Label; // Updating a shape. if (pgElement.SelectedObject is ElementProperties) { canvasController.SelectedElements.ForEach(sel => { PropertyInfo piElProps = elementProperties.GetType().GetProperty(label); object oldVal = e.OldValue; object newVal = piElProps.GetValue(elementProperties); canvasController.UndoStack.UndoRedo("Update " + label, () => { canvasController.Redraw(sel, el => { piElProps.SetValue(elementProperties, newVal); elementProperties.Update(el, label); el.UpdateProperties(); el.UpdatePath(); pgElement.Refresh(); }); }, () => { canvasController.Redraw(sel, el => { piElProps.SetValue(elementProperties, oldVal); elementProperties.Update(el, label); el.UpdateProperties(); el.UpdatePath(); pgElement.Refresh(); }); }, false); }); canvasController.UndoStack.FinishGroup(); // Return focus to the canvas so that keyboard actions, like copy/paste, undo/redo, are intercepted // TODO: Seems really kludgy. Task.Delay(250).ContinueWith(t => pgElement.FindForm().BeginInvoke(() => canvasController.Canvas.Focus()) ); } else { // Updating canvas properties (pgElement.SelectedObject as IPropertyObject).Update(label); } }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context != null && context.Instance != null && provider != null) { IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { LimnorWebApp wapp = context.Instance as LimnorWebApp; if (wapp == null) { ClassPointer cp = context.Instance as ClassPointer; if (cp != null) { wapp = cp.ObjectInstance as LimnorWebApp; } } if (wapp != null) { Form frmOwner = null; Type t = edSvc.GetType(); PropertyInfo pif0 = t.GetProperty("OwnerGrid"); if (pif0 != null) { object g = pif0.GetValue(edSvc, null); PropertyGrid pg = g as PropertyGrid; if (pg != null) { frmOwner = pg.FindForm(); } } DialogProjectOutput dlg = new DialogProjectOutput(); dlg.LoadData(wapp.Project, wapp.TestWebSiteName(frmOwner)); if (edSvc.ShowDialog(dlg) == System.Windows.Forms.DialogResult.OK) { if (dlg.WebSite != null) { value = dlg.WebSite.WebName; wapp.WebSiteName = dlg.WebSite.WebName; } } } } } return(value); }
protected void OnPropertyValueChanged(object s, PropertyValueChangedEventArgs e) { canvasController.SelectedElements.ForEach(sel => { canvasController.Redraw(sel, el => { elementProperties.Update(el, e.ChangedItem.Label); el.UpdateProperties(); el.UpdatePath(); }); }); // Return focus to the canvas so that keyboard actions, like copy/paste, undo/redo, are intercepted // TODO: Seems really kludgy. Task.Delay(250).ContinueWith(t => pgElement.FindForm().BeginInvoke(() => canvasController.Canvas.Focus()) ); }