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)); } }
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); } }
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); } }
internal static void Clear(ApplicationDataLocality locality) { var parms = new ApplicationDataContainer_ClearParams { Locality = locality.ToStringInvariant() }; TSInteropMarshaller.InvokeJS("UnoStatic_Windows_Storage_ApplicationDataContainer:clear", parms); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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."); } }
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); }
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); } }
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); } }
static partial void InitializePointersStaticPartial() { _pointerEventArgs = TSInteropMarshaller.Allocate <NativePointerEventArgs>("UnoStatic_Windows_UI_Xaml_UIElement:setPointerEventArgs"); _pointerEventResult = TSInteropMarshaller.Allocate <NativePointerEventResult>("UnoStatic_Windows_UI_Xaml_UIElement:setPointerEventResult"); }