BoxViewClock Forms sample working in wasm
This commit is contained in:
parent
0f085717ad
commit
78528a0c87
|
@ -13,7 +13,7 @@ Expand that into this directory.
|
||||||
## Build
|
## Build
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
csc /nostdlib /target:library /r:managed/mscorlib.dll /r:managed/System.Runtime.dll /r:managed/Ooui.dll /out:managed/Ooui.Sample.dll ooui-sample.cs
|
csc /nostdlib /target:library /r:managed/mscorlib.dll /r:managed/System.Runtime.dll /r:managed/Xamarin.Forms.Core.dll /r:managed/Ooui.dll /r:managed/Ooui.Forms.dll /out:managed/Ooui.Sample.dll ../Samples/ISample.cs ../Samples/BoxViewClockSample.cs ooui-sample.cs
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,18 +3,30 @@ using Ooui;
|
||||||
|
|
||||||
public class Program
|
public class Program
|
||||||
{
|
{
|
||||||
|
static Element GetButtonElement ()
|
||||||
|
{
|
||||||
|
var l = new Label { Text = "Hello" };
|
||||||
|
var b = new Button ("Click Me");
|
||||||
|
var e = new Div (new Div (l), b);
|
||||||
|
int count = 0;
|
||||||
|
b.Click += (s, ee) => {
|
||||||
|
count++;
|
||||||
|
b.Text = $"Clicked {count} times";
|
||||||
|
};
|
||||||
|
return e;
|
||||||
|
}
|
||||||
|
|
||||||
|
static Element GetBoxViewClockElement ()
|
||||||
|
{
|
||||||
|
var s = new Samples.BoxViewClockSample ();
|
||||||
|
return s.CreateElement ();
|
||||||
|
}
|
||||||
|
|
||||||
public static string Main (string a0, string a1)
|
public static string Main (string a0, string a1)
|
||||||
{
|
{
|
||||||
|
Xamarin.Forms.Forms.Init ();
|
||||||
try {
|
try {
|
||||||
var l = new Label { Text = "Hello" };
|
var e = GetBoxViewClockElement ();
|
||||||
var b = new Button ("Click Me");
|
|
||||||
var e = new Div (new Div (l), b);
|
|
||||||
int count = 0;
|
|
||||||
b.Click += (s, ee) => {
|
|
||||||
count++;
|
|
||||||
b.Text = $"Clicked {count} times";
|
|
||||||
};
|
|
||||||
|
|
||||||
UI.SetGlobalElement ("main", e);
|
UI.SetGlobalElement ("main", e);
|
||||||
return e.ToString ();
|
return e.ToString ();
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
"System.Threading.Tasks.dll",
|
"System.Threading.Tasks.dll",
|
||||||
"System.Reflection.dll",
|
"System.Reflection.dll",
|
||||||
"System.Reflection.Extensions.dll",
|
"System.Reflection.Extensions.dll",
|
||||||
|
"System.Resources.ResourceManager.dll",
|
||||||
"System.Runtime.dll",
|
"System.Runtime.dll",
|
||||||
"System.Runtime.Extensions.dll",
|
"System.Runtime.Extensions.dll",
|
||||||
"System.Runtime.Serialization.dll",
|
"System.Runtime.Serialization.dll",
|
||||||
|
@ -48,6 +49,7 @@
|
||||||
"Xamarin.Forms.Platform.dll",
|
"Xamarin.Forms.Platform.dll",
|
||||||
"Xamarin.Forms.Xaml.dll",
|
"Xamarin.Forms.Xaml.dll",
|
||||||
"Ooui.dll",
|
"Ooui.dll",
|
||||||
|
"Ooui.Forms.dll",
|
||||||
mainAsmName + ".dll"
|
mainAsmName + ".dll"
|
||||||
];
|
];
|
||||||
oouiWasm (mainAsmName, "", "Program", "Main", assemblies);
|
oouiWasm (mainAsmName, "", "Program", "Main", assemblies);
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace Ooui
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QueueMessageLocked (Message message)
|
protected void QueueMessageLocked (Message message)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
// Make sure all the referenced objects have been created
|
// Make sure all the referenced objects have been created
|
||||||
|
|
|
@ -18,38 +18,43 @@ namespace Ooui
|
||||||
|
|
||||||
protected override void QueueMessage (Message message)
|
protected override void QueueMessage (Message message)
|
||||||
{
|
{
|
||||||
base.QueueMessage (message);
|
|
||||||
TransmitQueuedMessages ();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TransmitQueuedMessages ()
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Dequeue as many messages as we can
|
|
||||||
//
|
|
||||||
var messagesToSend = new List<Message> ();
|
|
||||||
lock (queuedMessages) {
|
lock (queuedMessages) {
|
||||||
messagesToSend.AddRange (queuedMessages);
|
QueueMessageLocked (message);
|
||||||
|
var max = 1;
|
||||||
|
var i = 0;
|
||||||
|
while (i < queuedMessages.Count) {
|
||||||
|
TransmitQueuedMessagesLocked (queuedMessages, i, max);
|
||||||
|
i += max;
|
||||||
|
}
|
||||||
|
// WebAssembly.Runtime.InvokeJS("console.log('TRANSMITTED'," + queuedMessages.Count + ")");
|
||||||
queuedMessages.Clear ();
|
queuedMessages.Clear ();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TransmitQueuedMessagesLocked (List<Message> messagesToSend, int startIndex, int max)
|
||||||
|
{
|
||||||
if (messagesToSend.Count == 0)
|
if (messagesToSend.Count == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Now actually send the messages
|
// Now actually send the messages
|
||||||
//
|
//
|
||||||
var sb = new StringBuilder ();
|
var sb = new System.IO.StringWriter ();
|
||||||
|
sb.Write ("__oouiReceiveMessages(\"");
|
||||||
|
sb.Write (id);
|
||||||
|
sb.Write ("\",");
|
||||||
|
sb.Write ("[");
|
||||||
var head = "";
|
var head = "";
|
||||||
sb.Append ("[");
|
int n = 0;
|
||||||
foreach (var m in messagesToSend) {
|
for (var i = startIndex; i < messagesToSend.Count && n < max; i++, n++) {
|
||||||
sb.Append (head);
|
sb.Write (head);
|
||||||
sb.Append (m.ToJson ());
|
messagesToSend[i].WriteJson (sb);
|
||||||
head = ",";
|
head = ",";
|
||||||
}
|
}
|
||||||
sb.Append ("]");
|
sb.Write ("])");
|
||||||
var json = sb.ToString ();
|
var jsonp = sb.ToString ();
|
||||||
WebAssembly.Runtime.InvokeJS ("__oouiReceiveMessages(\"" + id + "\", " + json + ")");
|
// WebAssembly.Runtime.InvokeJS("console.log('TRANSMIT',"+n+")");
|
||||||
|
WebAssembly.Runtime.InvokeJS (jsonp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ReceiveMessageJson (string json)
|
public void ReceiveMessageJson (string json)
|
||||||
|
|
Loading…
Reference in New Issue