Esempio n. 1
0
        /// <summary>
        /// Creates a scripting property definitions
        /// </summary>
        private static SciterNativePropertyDef DefineScriptingProperty(PropertyInfo propertyInfo, ScriptingPropertyAttribute propertyAttr)
        {
            return(new SciterNativePropertyDef()
            {
                name = propertyAttr.Name ?? propertyInfo.Name,

                // Property callback implementation
                property = (IntPtr hvm, ref JsonValue p_data_slot, bool set, ref JsonValue retval) =>
                {
                    try
                    {
                        var instance = default(object);
                        if (!propertyInfo.GetGetMethod().IsStatic)
                        {
                            instance = InstanceProtector.GetInstance(p_data_slot.GetNativeObject());
                        }

                        retval = new JsonValue();
                        if (set)
                        {
                            propertyInfo.SetValue(instance, retval.GetValue(), null);
                        }
                        else
                        {
                            retval = new JsonValue(propertyInfo.GetValue(instance, null));
                        }
                    }
                    catch (Exception ex)
                    {
                        SciterHostApi.SciterNativeThrow(hvm, ex.Message);
                    }
                }
            });
        }
Esempio n. 2
0
        /// <summary>
        /// Calls scripting function
        /// </summary>
        public static object SciterCall(IntPtr hwnd, string functionName, params object[] args)
        {
            var jsonResult = new JsonValue();
            var jsonParams = JsonValue.CreateJsonArray(args);

            try
            {
                SciterCall(hwnd, functionName, jsonParams.Length, jsonParams, out jsonResult);
                return(jsonResult.GetValue());
            }
            finally
            {
                JsonValue.FreeJsonArray(jsonParams);
                jsonResult.Clear();
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Calls scripting function
        /// </summary>
        public static object SciterCall(IntPtr hwnd, string functionName, params object[] args)
        {
            var jsonResult = new JsonValue();
            var jsonParams = JsonValue.CreateJsonArray(args);

            try
            {
                SciterCall(hwnd, functionName, jsonParams.Length, jsonParams, out jsonResult);
                return jsonResult.GetValue();
            }
            finally
            {
                JsonValue.FreeJsonArray(jsonParams);
                jsonResult.Clear();
            }
        }