Exemplo n.º 1
0
        internal static Size MeasureView(IntPtr htmlId, Size availableSize)
        {
            if (UseJavascriptEval)
            {
                var w = double.IsInfinity(availableSize.Width) ? "null" : availableSize.Width.ToStringInvariant();
                var h = double.IsInfinity(availableSize.Height) ? "null" : availableSize.Height.ToStringInvariant();

                var command = "Uno.UI.WindowManager.current.measureView(\"" + htmlId + "\", \"" + w + "\", \"" + h + "\");";
                var result  = WebAssemblyRuntime.InvokeJS(command);

                var parts = result.Split(';');

                return(new Size(
                           double.Parse(parts[0], CultureInfo.InvariantCulture),
                           double.Parse(parts[1], CultureInfo.InvariantCulture)));
            }
            else
            {
                var parms = new WindowManagerMeasureViewParams
                {
                    HtmlId          = htmlId,
                    AvailableWidth  = availableSize.Width,
                    AvailableHeight = availableSize.Height
                };

                var ret = TSInteropMarshaller.InvokeJS <WindowManagerMeasureViewParams, WindowManagerMeasureViewReturn>("Uno:measureViewNative", parms);

                return(new Size(ret.DesiredWidth, ret.DesiredHeight));
            }
        }
Exemplo n.º 2
0
        internal static void CreateContent(IntPtr htmlId, string htmlTag, IntPtr handle, int uiElementRegistrationId, bool htmlTagIsSvg, bool isFocusable)
        {
            if (UseJavascriptEval)
            {
                var isSvgStr       = htmlTagIsSvg ? "true" : "false";
                var isFocusableStr = isFocusable ? "true" : "false";                 // by default all control are not focusable, it has to be change latter by the control itself

                WebAssemblyRuntime.InvokeJS(
                    "Uno.UI.WindowManager.current.createContent({" +
                    "id:\"" + htmlId + "\"," +
                    "tagName:\"" + htmlTag + "\", " +
                    "handle:" + handle + ", " +
                    "uiElementRegistrationId: " + uiElementRegistrationId + ", " +
                    "isSvg:" + isSvgStr + ", " +
                    "isFocusable:" + isFocusableStr +
                    "});");
            }
            else
            {
                var parms = new WindowManagerCreateContentParams
                {
                    HtmlId  = htmlId,
                    TagName = htmlTag,
                    Handle  = handle,
                    UIElementRegistrationId = uiElementRegistrationId,
                    IsSvg       = htmlTagIsSvg,
                    IsFocusable = isFocusable
                };

                TSInteropMarshaller.InvokeJS("Uno:createContentNative", parms);
            }
        }
Exemplo n.º 3
0
        internal static int RegisterUIElement(string typeName, string[] classNames, bool isFrameworkElement)
        {
            if (UseJavascriptEval)
            {
                var isFrameworkElementStr = isFrameworkElement ? "true" : "false";
                var classesParam          = classNames.Select(c => $"\"{c}\"").JoinBy(",");

                var ret = WebAssemblyRuntime.InvokeJS(
                    "Uno.UI.WindowManager.current.registerUIElement({" +
                    "typeName:\"" + typeName + "\"," +
                    "isFrameworkElement:" + isFrameworkElementStr + ", " +
                    "classes:[" + classesParam + "]" +
                    "});");

                return(int.Parse(ret));
            }
            else
            {
                var parms = new WindowManagerRegisterUIElementParams
                {
                    TypeName           = typeName,
                    IsFrameworkElement = isFrameworkElement,
                    Classes_Length     = classNames.Length,
                    Classes            = classNames,
                };

                var ret = (WindowManagerRegisterUIElementReturn)TSInteropMarshaller.InvokeJS("Uno:registerUIElementNative", parms, typeof(WindowManagerRegisterUIElementReturn));
                return(ret.RegistrationId);
            }
        }
Exemplo n.º 4
0
        internal static void Clear(ApplicationDataLocality locality)
        {
            var parms = new ApplicationDataContainer_ClearParams
            {
                Locality = locality.ToStringInvariant()
            };

            TSInteropMarshaller.InvokeJS("UnoStatic_Windows_Storage_ApplicationDataContainer:clear", parms);
        }
Exemplo n.º 5
0
        internal static void MakePersistent(params StorageFolder[] folders)
        {
            var parms = new StorageFolderMakePersistentParams()
            {
                Paths        = folders.SelectToArray(f => f.Path),
                Paths_Length = folders.Length
            };

            TSInteropMarshaller.InvokeJS <StorageFolderMakePersistentParams>("UnoStatic_Windows_Storage_StorageFolder:makePersistent", parms);
        }
Exemplo n.º 6
0
        public void When_SingleString()
        {
            var param = new When_SingleStringParams()
            {
                MyString = "This is 42"
            };

            var ret = (GenericReturn)TSInteropMarshaller.InvokeJS("TSBindingsUnitTests:When_SingleString", param, typeof(GenericReturn));

            Assert.AreEqual(param.MyString, ret.Value);
        }
Exemplo n.º 7
0
        public void When_IntPtr()
        {
            var param = new When_IntPtrParams()
            {
                Id = (IntPtr)42
            };

            var ret = (GenericReturn)TSInteropMarshaller.InvokeJS("TSBindingsUnitTests:When_IntPtr", param, typeof(GenericReturn));

            Assert.AreEqual("42", ret.Value);
        }
Exemplo n.º 8
0
        public void When_NullString()
        {
            var param = new When_SingleStringParams()
            {
                MyString = null
            };

            var ret = TSInteropMarshaller.InvokeJS <When_SingleStringParams, GenericReturn>("TSBindingsUnitTests:When_NullString", param);

            Assert.AreEqual("true", ret.Value);
        }
Exemplo n.º 9
0
        public void When_SingleUnicodeString()
        {
            var param = new When_SingleStringParams()
            {
                MyString = "This is 🤣 🎉"
            };

            var ret = TSInteropMarshaller.InvokeJS <When_SingleStringParams, GenericReturn>("TSBindingsUnitTests:When_SingleUnicodeString", param);

            Assert.AreEqual(param.MyString, ret.Value);
        }
Exemplo n.º 10
0
        internal static int GetCount(ApplicationDataLocality locality)
        {
            var parms = new ApplicationDataContainer_GetCountParams
            {
                Locality = locality.ToStringInvariant()
            };

            var ret = (ApplicationDataContainer_GetCountReturn)TSInteropMarshaller.InvokeJS("UnoStatic_Windows_Storage_ApplicationDataContainer:getCount", parms, typeof(ApplicationDataContainer_GetCountReturn));

            return(ret.Count);
        }
Exemplo n.º 11
0
        public void When_IntPtr_Zero()
        {
            var param = new When_IntPtrParams()
            {
                Id = (IntPtr)0
            };

            var ret = TSInteropMarshaller.InvokeJS <When_IntPtrParams, GenericReturn>("TSBindingsUnitTests:When_IntPtr_Zero", param);

            Assert.AreEqual("0", ret.Value);
        }
Exemplo n.º 12
0
        internal static void SetValue(ApplicationDataLocality locality, string key, string value)
        {
            var parms = new ApplicationDataContainer_SetValueParams
            {
                Key      = key,
                Value    = value,
                Locality = locality.ToStringInvariant()
            };

            TSInteropMarshaller.InvokeJS("UnoStatic_Windows_Storage_ApplicationDataContainer:setValue", parms);
        }
Exemplo n.º 13
0
        public void When_ArrayOfUnicodeStrings()
        {
            var param = new When_ArrayOfStringsParams()
            {
                MyArray_Length = 1,
                MyArray        = new[] { "🎉🤣😊👆🎁" }
            };

            var ret = TSInteropMarshaller.InvokeJS <When_ArrayOfStringsParams, GenericReturn>("TSBindingsUnitTests:When_ArrayOfUnicodeStrings", param);

            Assert.AreEqual(param.MyArray[0], ret.Value);
        }
Exemplo n.º 14
0
        public void When_NullArrayOfInt()
        {
            var param = new When_ArrayOfIntParams()
            {
                MyArray_Length = 0,
                MyArray        = null
            };

            var ret = TSInteropMarshaller.InvokeJS <When_ArrayOfIntParams, GenericReturn>("TSBindingsUnitTests:When_NullArrayOfInt", param);

            Assert.AreEqual("true", ret.Value);
        }
Exemplo n.º 15
0
        public void When_ArrayOfInt()
        {
            var param = new When_ArrayOfIntParams()
            {
                MyArray_Length = 4,
                MyArray        = new[] { 1, 2, 3, 42 }
            };

            var ret = TSInteropMarshaller.InvokeJS <When_ArrayOfIntParams, GenericReturn>("TSBindingsUnitTests:When_ArrayOfInt", param);

            Assert.AreEqual("1;2;3;42", ret.Value);
        }
Exemplo n.º 16
0
        public void When_NullArrayOfStrings()
        {
            var param = new When_ArrayOfStringsParams()
            {
                MyArray_Length = 0,
                MyArray        = null
            };

            var ret = (GenericReturn)TSInteropMarshaller.InvokeJS("TSBindingsUnitTests:When_NullArrayOfStrings", param, typeof(GenericReturn));

            Assert.AreEqual("true", ret.Value);
        }
Exemplo n.º 17
0
        public void When_ArrayOfNullStrings()
        {
            var param = new When_ArrayOfStringsParams()
            {
                MyArray_Length = 4,
                MyArray        = new string[4]
            };

            var ret = TSInteropMarshaller.InvokeJS <When_ArrayOfStringsParams, GenericReturn>("TSBindingsUnitTests:When_ArrayOfNullStrings", param);

            Assert.AreEqual("true;true;true;true", ret.Value);
        }
Exemplo n.º 18
0
        internal static bool ContainsKey(ApplicationDataLocality locality, string key)
        {
            var parms = new ApplicationDataContainer_ContainsKeyParams
            {
                Key      = key,
                Locality = locality.ToStringInvariant()
            };

            var ret = (ApplicationDataContainer_ContainsKeyReturn)TSInteropMarshaller.InvokeJS("UnoStatic_Windows_Storage_ApplicationDataContainer:containsKey", parms, typeof(ApplicationDataContainer_ContainsKeyReturn));

            return(ret.ContainsKey);
        }
Exemplo n.º 19
0
        public void When_ArrayOfStrings()
        {
            var param = new When_ArrayOfStringsParams()
            {
                MyArray_Length = 4,
                MyArray        = new[] { "1", "2", "3", "42" }
            };

            var ret = (GenericReturn)TSInteropMarshaller.InvokeJS("TSBindingsUnitTests:When_ArrayOfStrings", param, typeof(GenericReturn));

            Assert.AreEqual("1;2;3;42", ret.Value);
        }
Exemplo n.º 20
0
        internal static string GetValueByIndex(ApplicationDataLocality locality, int index)
        {
            var parms = new ApplicationDataContainer_GetValueByIndexParams
            {
                Locality = locality.ToStringInvariant(),
                Index    = index
            };

            var ret = (ApplicationDataContainer_GetValueByIndexReturn)TSInteropMarshaller.InvokeJS("UnoStatic_Windows_Storage_ApplicationDataContainer:getValueByIndex", parms, typeof(ApplicationDataContainer_GetValueByIndexReturn));

            return(ret.Value);
        }
Exemplo n.º 21
0
        internal static bool Remove(ApplicationDataLocality locality, string key)
        {
            var parms = new ApplicationDataContainer_RemoveParams
            {
                Locality = locality.ToStringInvariant(),
                Key      = key
            };

            var ret = (ApplicationDataContainer_RemoveReturn)TSInteropMarshaller.InvokeJS("UnoStatic_Windows_Storage_ApplicationDataContainer:remove", parms, typeof(ApplicationDataContainer_RemoveReturn));

            return(ret.Removed);
        }
Exemplo n.º 22
0
 private void Enable()
 {
     if (Interlocked.CompareExchange(ref _isInitialized, 1, 0) == 0)
     {
         _args = TSInteropMarshaller.Allocate <DragDropExtensionEventArgs>(
             "UnoStatic_Windows_ApplicationModel_DataTransfer_DragDrop_Core_DragDropExtension:enable",
             "UnoStatic_Windows_ApplicationModel_DataTransfer_DragDrop_Core_DragDropExtension:disable");
     }
     else
     {
         throw new InvalidOperationException("Multiple DragDropExtension is not supported yet.");
     }
 }
Exemplo n.º 23
0
        internal static bool TryGetValue(ApplicationDataLocality locality, string key, out string?value)
        {
            var parms = new ApplicationDataContainer_TryGetValueParams
            {
                Key      = key,
                Locality = locality.ToStringInvariant()
            };

            var ret = (ApplicationDataContainer_TryGetValueReturn)TSInteropMarshaller.InvokeJS("UnoStatic_Windows_Storage_ApplicationDataContainer:tryGetValue", parms, typeof(ApplicationDataContainer_TryGetValueReturn));

            value = ret.Value;

            return(ret.HasValue);
        }
Exemplo n.º 24
0
        internal static void Init(bool isHostedMode, bool isLoadEventsEnabled)
        {
            if (UseJavascriptEval)
            {
                WebAssemblyRuntime.InvokeJS($"Uno.UI.WindowManager.init({isHostedMode.ToString().ToLowerInvariant()}, {isLoadEventsEnabled.ToString().ToLowerInvariant()});");
            }
            else
            {
                var parms = new WindowManagerInitParams
                {
                    IsHostedMode        = isHostedMode,
                    IsLoadEventsEnabled = isLoadEventsEnabled
                };

                TSInteropMarshaller.InvokeJS <WindowManagerInitParams, bool>("UnoStatic:initNative", parms);
            }
        }
Exemplo n.º 25
0
        internal static void CreateContent(IntPtr htmlId, string htmlTag, IntPtr handle, string fullName, bool htmlTagIsSvg, bool isFrameworkElement, bool isFocusable, string[] classes)
        {
            if (UseJavascriptEval)
            {
                var isSvgStr = htmlTagIsSvg ? "true" : "false";
                var isFrameworkElementStr = isFrameworkElement ? "true" : "false";
                var isFocusableStr        = isFocusable ? "true" : "false";          // by default all control are not focusable, it has to be change latter by the control itself
                var classesParam          = classes.Select(c => $"\"{c}\"").JoinBy(",");

                WebAssemblyRuntime.InvokeJS(
                    "Uno.UI.WindowManager.current.createContent({" +
                    "id:\"" + htmlId + "\"," +
                    "tagName:\"" + htmlTag + "\", " +
                    "handle:" + handle + ", " +
                    "type:\"" + fullName + "\", " +
                    "isSvg:" + isSvgStr + ", " +
                    "isFrameworkElement:" + isFrameworkElementStr + ", " +
                    "isFocusable:" + isFocusableStr + ", " +
                    "classes:[" + classesParam + "]" +
                    "});");
            }
            else
            {
                var parms = new WindowManagerCreateContentParams
                {
                    HtmlId             = htmlId,
                    TagName            = htmlTag,
                    Handle             = handle,
                    Type               = fullName,
                    IsSvg              = htmlTagIsSvg,
                    IsFrameworkElement = isFrameworkElement,
                    IsFocusable        = isFocusable,
                    Classes_Length     = classes.Length,
                    Classes            = classes,
                };

                TSInteropMarshaller.InvokeJS <WindowManagerCreateContentParams, bool>("Uno:createContentNative", parms);
            }
        }
Exemplo n.º 26
0
 static partial void InitializePointersStaticPartial()
 {
     _pointerEventArgs   = TSInteropMarshaller.Allocate <NativePointerEventArgs>("UnoStatic_Windows_UI_Xaml_UIElement:setPointerEventArgs");
     _pointerEventResult = TSInteropMarshaller.Allocate <NativePointerEventResult>("UnoStatic_Windows_UI_Xaml_UIElement:setPointerEventResult");
 }