public static MenuItemDataProperty CreateMenuItem(IProperty p, LimnorContextMenuCollection menus)
        {
            PropertyPointer pp = p as PropertyPointer;

            if (pp != null)
            {
                return(new PropertyItem(p.Name, menus.Owner, pp.Info));
            }
            else
            {
                PropertyClass pc = p as PropertyClass;
                if (pc != null)
                {
                    return(new PropertyItemClassPointer(p.Name, menus.Owner, pc));
                }
                else
                {
                    IPropertyWrapper w = p as IPropertyWrapper;
                    if (w != null)
                    {
                    }
                }
            }
            throw new DesignerException("Unsupported property type {0} for CreateMenuItem", p.GetType());
        }
Пример #2
0
        protected unsafe object GetObject(IntPtr guid)
        {
            // NOT WORKING with APPDATA
            var prop = new PropertyPointer();

            InitHeader <PropertyPointer>(ref prop.Header);
            IntPtr value = IntPtr.Zero;

            prop.Data = new IntPtr(&value);
            Device.GetProperty(guid, new IntPtr(&prop));

            if (prop.Data.ToInt64() == -1)
            {
                return(null);
            }

            var handle = GCHandle.FromIntPtr(prop.Data);

            if (!handle.IsAllocated)
            {
                return(null);
            }

            return(handle.Target);
        }
Пример #3
0
        protected unsafe void SetObject(IntPtr guid, object value)
        {
            // NOT WORKING with APPDATA
            var prop = new PropertyPointer();

            InitHeader <PropertyPointer>(ref prop.Header);
            var dataValue = IntPtr.Zero;

            prop.Data = new IntPtr(&dataValue);

            // Free previous application data if any
            Device.GetProperty(guid, new IntPtr(&prop));

            GCHandle handle;

            if (prop.Data.ToInt64() != -1)
            {
                handle = GCHandle.FromIntPtr(prop.Data);
                if (handle.IsAllocated)
                {
                    handle.Free();
                }
            }

            // Set new object value
            handle    = GCHandle.Alloc(value, GCHandleType.Pinned);
            prop.Data = handle.AddrOfPinnedObject();
            Device.SetProperty(guid, new IntPtr(&prop));
        }
        public override ActionClass CreateSetPropertyAction(ILimnorDesignPane designPane, IClass holder, IMethod scopeMethod, IActionsHolder actsHolder)
        {
            PropertyPointer pp = new PropertyPointer();

            pp.SetPropertyInfo(_val);
            pp.Owner = Owner;
            return(DesignUtil.CreateSetPropertyAction(pp, designPane, scopeMethod, actsHolder, designPane.PaneHolder.FindForm()));
        }
        public override bool ExecuteMenuCommand(LimnorProject project, IClass holder, XmlNode node, MultiPanes pane, IMethod scopeMethod, IActionsHolder actsHolder)
        {
            PropertyPointer pp = new PropertyPointer();

            pp.SetPropertyInfo(_val);
            pp.Owner = Owner;
            return(DesignUtil.CreateSetPropertyAction(pp, pane.Loader.DesignPane, scopeMethod, actsHolder, pane.FindForm()) != null);
        }
Пример #6
0
        public override PropertyPointer CreatePropertyPointer(string propertyName)
        {
            PropertyDescriptor pd = VPLUtil.GetProperty(_type, propertyName);
            PropertyPointer    pp = new PropertyPointer();

            pp.Owner = ClassPointer;
            pp.SetPropertyInfo(pd);
            return(pp);
        }
Пример #7
0
        public bool IsField()
        {
            PropertyPointer pp = _valuePointer as PropertyPointer;

            if (pp != null)
            {
                return(pp.IsField());
            }
            return(false);
        }
Пример #8
0
        private void buttonCameraStatupPerspective_Click(object sender, EventArgs e)
        {
            if (!Msg.OkCancel(this, Resources.StoreCameraPerspective, MsgSeverity.Info, Resources.StoreCameraPerspectiveOK, Resources.StoreCameraPerspectiveCancel))
            {
                return;
            }

            var cameraStatePointer = new PropertyPointer <CameraState <Vector2> >(() => _universe.CurrentCamera, camera => _universe.CurrentCamera = camera);

            ExecuteCommand(new SetValueCommand <CameraState <Vector2> >(cameraStatePointer, _presenter.CameraState));
        }
Пример #9
0
        /// <summary>
        /// Wraps a <see cref="TimeSpan"/> pointer in a <see cref="string"/> pointer.
        /// </summary>
        public static PropertyPointer <string> ToStringPointer([NotNull] this PropertyPointer <TimeSpan> pointer)
        {
            if (pointer == null)
            {
                throw new ArgumentNullException(nameof(pointer));
            }

            return(new PropertyPointer <string>(
                       getValue: () => ((int)pointer.Value.TotalSeconds).ToString(CultureInfo.InvariantCulture),
                       setValue: value => pointer.Value = TimeSpan.FromSeconds(int.Parse(value)),
                       defaultValue: ((int)pointer.DefaultValue.TotalSeconds).ToString(CultureInfo.InvariantCulture)));
        }
Пример #10
0
        /// <summary>
        /// Wraps a <see cref="bool"/> pointer in a <see cref="string"/> pointer.
        /// </summary>
        public static PropertyPointer <string> ToStringPointer([NotNull] this PropertyPointer <bool> pointer)
        {
            if (pointer == null)
            {
                throw new ArgumentNullException(nameof(pointer));
            }

            return(new PropertyPointer <string>(
                       getValue: () => pointer.Value.ToString(CultureInfo.InvariantCulture),
                       setValue: value => pointer.Value = (value == "1" || (value != "0" && bool.Parse(value))),
                       defaultValue: pointer.DefaultValue.ToString(CultureInfo.InvariantCulture)));
        }
Пример #11
0
        /// <summary>
        /// Wraps an <see cref="Uri"/> pointer in a <see cref="string"/> pointer.
        /// </summary>
        public static PropertyPointer <string> ToStringPointer([NotNull] this PropertyPointer <Uri> pointer)
        {
            if (pointer == null)
            {
                throw new ArgumentNullException(nameof(pointer));
            }

            return(new PropertyPointer <string>(
                       getValue: () => pointer.Value?.ToStringRfc(),
                       setValue: value => pointer.Value = (value == null) ? null : new Uri(value),
                       defaultValue: pointer.DefaultValue?.ToStringRfc()));
        }
Пример #12
0
        public void LoadData(LimnorContextMenuCollection type)
        {
            _menus = type;
            //
            List <MenuItemDataProperty> ps = _menus.PrimaryProperties;

            if (ps != null && ps.Count > 0)
            {
                foreach (MenuItemDataProperty p in ps)
                {
                    lstP.Items.Add(p);
                }
            }
            List <MenuItemDataProperty> sps = _menus.SecondaryProperties;

            if (sps != null && sps.Count > 0)
            {
                foreach (MenuItemDataProperty p in sps)
                {
                    lstS.Items.Add(p);
                }
            }
            SortedDictionary <string, IProperty> all         = _menus.GetAllProperties();
            SortedDictionary <string, TreeNode>  customNodes = new SortedDictionary <string, TreeNode>();

            foreach (KeyValuePair <string, IProperty> kv in all)
            {
                PropertyPointer pi = kv.Value as PropertyPointer;
                if (pi != null)
                {
                    treeViewAll.Nodes.Add(new TreeNodeProperty(false, pi));
                }
                else
                {
                    PropertyClass pc = kv.Value as PropertyClass;
                    if (pc != null)
                    {
                        //use 0 as the scope method Id because property selection does not method scope
                        TreeNodeCustomProperty tnc = new TreeNodeCustomProperty(treeViewAll, pc.IsStatic, pc, 0);
                        customNodes.Add(tnc.Text, tnc);
                    }
                }
            }
            int i = 0;

            foreach (KeyValuePair <string, TreeNode> kv in customNodes)
            {
                treeViewAll.Nodes.Insert(i++, kv.Value);
            }
            //
        }
Пример #13
0
        /// <summary>
        /// Wraps a <see cref="FeedUri"/> pointer in a <see cref="string"/> pointer.
        /// </summary>
        public static PropertyPointer <string> ToStringPointer([NotNull] this PropertyPointer <FeedUri> pointer)
        {
            #region Sanity checks
            if (pointer == null)
            {
                throw new ArgumentNullException("pointer");
            }
            #endregion

            return(new PropertyPointer <string>(
                       getValue: () => (pointer.Value == null) ? null : pointer.Value.ToStringRfc(),
                       setValue: value => pointer.Value = (value == null) ? null : new FeedUri(value),
                       defaultValue: (pointer.DefaultValue == null) ? null : pointer.DefaultValue.ToStringRfc()));
        }
Пример #14
0
 public override CodeExpression ExportIsNotNullCheck(IMethodCompile method)
 {
     if (_valuePointer != null)
     {
         PropertyPointer        mp = _valuePointer as PropertyPointer;
         IDatabaseFieldProvider ep = _valuePointer.Owner as IDatabaseFieldProvider;
         if (ep != null && mp != null)
         {
             CodeExpression propOwner = _valuePointer.Owner.GetReferenceCode(method, method.MethodCode.Statements, true);
             return(ep.GetIsNotNullCheck(method, method.MethodCode.Statements, mp.MemberName, propOwner));
         }
         else
         {
             CodeExpression ce = _valuePointer.GetReferenceCode(method, method.MethodCode.Statements, true);
             return(new CodeBinaryOperatorExpression(ce, CodeBinaryOperatorType.IdentityInequality, new CodePrimitiveExpression(null)));
         }
     }
     else
     {
         CodeArgumentReferenceExpression ce = new CodeArgumentReferenceExpression(CodeName);
         return(new CodeBinaryOperatorExpression(ce, CodeBinaryOperatorType.IdentityInequality, new CodePrimitiveExpression(null)));
     }
 }
Пример #15
0
 public MethodPointer(PropertyPointer owner, MethodInfo method)
 {
     _methodOwner = owner;
     _method      = method;
     _name        = method.Name;
 }
Пример #16
0
 /// <summary>
 /// Wraps a <see cref="FeedUri"/> pointer in a <see cref="string"/> pointer. Maps empty strings to <c>null</c> URIs.
 /// </summary>
 public static PropertyPointer <string> ToStringPointer(this PropertyPointer <FeedUri?> pointer)
 => PropertyPointer.For(
Пример #17
0
        public FeedStructureEditor()
        {
            DescribeRoot <FeedEditor>("interface")
            .AddPlainList("category", x => x.Categories)
            .AddPlainList("feed", x => x.Feeds)
            .AddPlainList("feed-for", x => x.FeedFor)
            .AddProperty("replaced-by", x => PropertyPointer.For(() => x.ReplacedBy))
            .AddPlainList("entry-point", x => x.EntryPoints, new EntryPointEditor())
            .AddPlainList("capabilities", x => x.CapabilityLists)
            .AddPlainList("splash-screen", x => x.SplashScreens, new IconEditor());

            Describe <IIconContainer>()
            .AddPlainList("icon", x => x.Icons, new IconEditor());

            Describe <IDependencyContainer>()
            .AddPlainList("requires", x => x.Dependencies)
            .AddPlainList("restricts", x => x.Restrictions);

            Describe <IBindingContainer>()
            .AddList(x => x.Bindings)
            .AddElement("binding", new GenericBinding())
            .AddElement("environment", new EnvironmentBinding())
            .AddElement("overlay", new OverlayBinding())
            .AddElement("executable-in-var", new ExecutableInVar())
            .AddElement("executable-in-path", new ExecutableInPath());

            Describe <Element>()
            .AddPlainList("command", x => x.Commands);

            Describe <Implementation>()
            .AddList(implementation => implementation.RetrievalMethods)
            .AddElement("archive", new Archive(), new ArchiveEditor())
            .AddElement("file", new SingleFile(), new SingleFileEditor())
            .AddElement("recipe", new Recipe(), new RecipeEditor());

            Describe <IElementContainer>()
            .AddList(x => x.Elements)
            .AddElement("implementation", new Implementation())
            .AddElement("package-implementation", new PackageImplementation())
            .AddElement("group", new Group());

            Describe <Restriction>()
            .AddPlainList("version", x => x.Constraints);

            Describe <Command>()
            .AddProperty("runner", x => PropertyPointer.For(() => x.Runner))
            .AddProperty("working-dir", x => PropertyPointer.For(() => x.WorkingDir));

            Describe <IArgBaseContainer>()
            .AddList(x => x.Arguments)
            .AddElement("arg", new Arg())
            .AddElement("for-each", new ForEachArgs());
            Describe <ForEachArgs>()
            .AddPlainList("arg", x => x.Arguments);

            Describe <Recipe>()
            .AddList(x => x.Steps)
            .AddElement("archive", new Archive(), new ArchiveEditor())
            .AddElement("file", new SingleFile(), new SingleFileEditor())
            .AddElement("rename", new RenameStep())
            .AddElement("remove", new RemoveStep())
            .AddElement("copy-from", new CopyFromStep());

            Describe <CapabilityList>()
            .AddList(x => x.Entries)
            .AddElement("registration", new AppRegistration())
            .AddElement("auto-play", new AutoPlay(), new DescriptionEditor <AutoPlay>())
            .AddElement("com-server", new ComServer())
            .AddElement("context-menu", new ContextMenu(), new DescriptionEditor <ContextMenu>())
            .AddElement("default-program", new DefaultProgram(), new DescriptionEditor <DefaultProgram>())
            .AddElement("file-type", new FileType(), new DescriptionEditor <FileType>())
            .AddElement("url-protocol", new UrlProtocol(), new DescriptionEditor <UrlProtocol>());
            Describe <AutoPlay>()
            .AddPlainList("event", x => x.Events)
            .AddProperty("verb", x => PropertyPointer.For(() => x.Verb), new DescriptionEditor <Verb>());
            Describe <ContextMenu>()
            .AddPlainList("extension", x => x.Extensions);
            Describe <FileType>()
            .AddPlainList("extension", x => x.Extensions);
            Describe <UrlProtocol>()
            .AddPlainList("known-prefix", x => x.KnownPrefixes);
            Describe <VerbCapability>()
            .AddPlainList("verb", x => x.Verbs, new DescriptionEditor <Verb>());
            Describe <Verb>()
            .AddPlainList("arg", x => x.Arguments);
        }
Пример #18
0
 /// <summary>
 /// Creates a new value-setting command.
 /// </summary>
 /// <param name="pointer">The object controlling how to read/write the value to be modified.</param>
 /// <param name="newValue">The new value to be set.</param>
 public SetValueCommand([NotNull] PropertyPointer <T> pointer, T newValue)
 {
     _newValue = newValue;
     _pointer  = pointer ?? throw new ArgumentNullException(nameof(pointer));
 }
Пример #19
0
 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
 {
     if (context != null && context.Instance != null && provider != null)
     {
         IWindowsFormsEditorService service = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService));
         if (service != null)
         {
             IObjectPointer mm = value as IObjectPointer;
             if (mm == null)
             {
                 PropertyPointer pp = new PropertyPointer();
                 IDataScope      dv = context.Instance as IDataScope;
                 if (dv != null)
                 {
                     pp.Scope = dv.ScopeDataType;
                     pp.Owner = dv.ScopeOwner;
                 }
                 mm = pp;
             }
             if (mm != null)
             {
                 IMethod      imScope = null;
                 Type         t       = service.GetType();
                 PropertyInfo pif0    = t.GetProperty("OwnerGrid");
                 if (pif0 != null)
                 {
                     object           pv = pif0.GetValue(service, null);
                     MathPropertyGrid pg = pv as MathPropertyGrid;
                     if (pg != null)
                     {
                         imScope = pg.ScopeMethod;
                     }
                 }
                 if (imScope == null)
                 {
                     IScopeMethodHolder mh = context.Instance as IScopeMethodHolder;
                     if (mh != null)
                     {
                         imScope = mh.GetScopeMethod();
                     }
                 }
                 DataTypePointer scope = null;
                 IOwnerScope     ios   = context.Instance as IOwnerScope;
                 if (ios != null)
                 {
                     scope = ios.OwnerScope;
                 }
                 if (scope == null)
                 {
                     ParameterValue pv = context.Instance as ParameterValue;
                     if (pv != null && pv.DataType != null && pv.DataType.BaseClassType != null)
                     {
                         if (typeof(Delegate).IsAssignableFrom(pv.DataType.BaseClassType))
                         {
                             scope = pv.DataType;
                         }
                     }
                 }
                 FrmObjectExplorer dlg = DesignUtil.GetPropertySelector(mm, imScope, scope);
                 if (dlg != null)
                 {
                     OnDialogCreated(dlg);
                     if (service.ShowDialog(dlg) == System.Windows.Forms.DialogResult.OK)
                     {
                         bool   isValid = true;
                         string msg     = string.Empty;
                         if (MethodEditContext.IsWebPage)
                         {
                             IObjectPointer iop = dlg.SelectedObject as IObjectPointer;
                             if (iop != null)
                             {
                                 if (MethodEditContext.UseClientPropertyOnly)
                                 {
                                     if (iop.RunAt == EnumWebRunAt.Server)
                                     {
                                         isValid = false;
                                         msg     = "Server value is not allowed";
                                     }
                                 }
                                 else if (MethodEditContext.UseServerPropertyOnly)
                                 {
                                     if (iop.RunAt == EnumWebRunAt.Client)
                                     {
                                         isValid = false;
                                         msg     = "Client value is not allowed";
                                     }
                                 }
                             }
                         }
                         if (!isValid)
                         {
                             MessageBox.Show(msg, "Select value", MessageBoxButtons.OK, MessageBoxIcon.Error);
                         }
                         else
                         {
                             value = dlg.SelectedObject;
                             if (context.PropertyDescriptor.IsReadOnly)
                             {
                                 //manually set it
                                 PropertyInfo pif = context.Instance.GetType().GetProperty(context.PropertyDescriptor.Name);
                                 pif.SetValue(context.Instance, value, new object[] { });
                             }
                         }
                     }
                     dlg.ResetSelectLValue();
                 }
             }
         }
     }
     return(value);
 }
        public override void LoadNextLevel(TreeViewObjectExplorer tv, TreeNodeObject parentNode)
        {
            UInt32 scopeId = parentNode.ScopeMethodId;
            SortedList <string, TreeNode> newNodes = new SortedList <string, TreeNode>();
            HtmlElement_BodyBase          heb      = (HtmlElement_BodyBase)parentNode.OwnerIdentity;
            PropertyDescriptorCollection  pifs     = TypeDescriptor.GetProperties(heb.GetType());
            TreeNodeClassRoot             topClass = parentNode.TopLevelRootClassNode;
            Dictionary <UInt32, IAction>  actions  = null;

            if (topClass != null)
            {
                if (!topClass.StaticScope)
                {
                    actions = topClass.GetActions();
                }
            }
            else
            {
                if (tv != null)
                {
                    if (tv.RootClassNode != null)
                    {
                        actions = tv.RootClassNode.GetActions();
                    }
                }
                if (actions == null)
                {
                    TreeNodeClassType rootType = parentNode.TopLevelNode as TreeNodeClassType;
                    if (rootType != null)
                    {
                        actions = rootType.GetActions();
                    }
                }
            }
            for (int i = 0; i < pifs.Count; i++)
            {
                if (NotForProgrammingAttribute.IsNotForProgramming(pifs[i]))
                {
                    continue;
                }
                if (!WebClientMemberAttribute.IsClientProperty(pifs[i]) && !WebServerMemberAttribute.IsServerProperty(pifs[i]))
                {
                    continue;
                }
                TreeNodeProperty nodeProperty;
                PropertyPointer  pp;
                pp       = new PropertyPointer();
                pp.Owner = new HtmlElementPointer(heb);
                pp.SetPropertyInfo(pifs[i]);
                if (!newNodes.ContainsKey(pp.Name))
                {
                    nodeProperty = new TreeNodeProperty(ForStatic, pp);
                    try
                    {
                        newNodes.Add(pp.Name, nodeProperty);
                    }
                    catch (Exception err)
                    {
                        MathNode.Log(tv != null ? tv.FindForm() : null, err);
                    }
                    //load actions
                    bool bHasActions = false;
                    if (string.CompareOrdinal(pp.Name, "Cursor") == 0)
                    {
                        bHasActions = false;
                    }
                    if (actions != null)
                    {
                        foreach (IAction a in actions.Values)
                        {
                            if (a != null && a.IsStatic == parentNode.IsStatic)
                            {
                                if (nodeProperty.IncludeAction(a, tv, scopeId, false))
                                {
                                    bHasActions = true;
                                    break;
                                }
                            }
                        }
                        if (bHasActions)
                        {
                            nodeProperty.OnShowActionIcon();
                        }
                    }
                }
            }
            parentNode.AddSortedNodes(newNodes);
        }