Пример #1
0
        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);
            }
        }
Пример #2
0
 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);
 }
Пример #3
0
        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())
                                         );
        }