public static void ShowWindow( object nativeWindowInstance, string title, bool isBlocking, int currentExecutionContextId, Value renderFunctionPointer, Value onLoadFunctionPointer, Value invokeMenuHandlerFunctionPointer, int width, int height) { NoriWindow window = (NoriWindow)nativeWindowInstance; window.IsBlocking = isBlocking; window.RenderFunctionPointer = renderFunctionPointer; window.OnLoadFunctionPointer = onLoadFunctionPointer; window.InvokeMenuHandlerFunctionPointer = invokeMenuHandlerFunctionPointer; window.ClientSize = new Size(width, height); window.Text = title; TranslationHelper.RunInterpreter(renderFunctionPointer); if (isBlocking) { window.ShowDialog(); } else { window.Show(); } }
public static void InstaniateWindow(object[] windowNativeData, object[] uiBoxNativeData, List <Value> sizeRelay) { NoriWindow window = new NoriWindow(sizeRelay); Panel uiBoxPanel = new Panel(); window.ContentHost.Controls.Add(uiBoxPanel); windowNativeData[0] = window; uiBoxNativeData[0] = uiBoxPanel; }
private static ToolStripItem GenerateMenuItem(NoriWindow window, object[] menuItem) { if (!(bool)menuItem[0]) { return(new ToolStripSeparator()); } string name = (string)menuItem[1]; string token = (string)menuItem[5]; ToolStripMenuItem item = new ToolStripMenuItem(name); item.Click += (sender, e) => { window.InvokeHandler(token); }; if (menuItem[6] != null) { object[] children = (object[])menuItem[6]; for (int i = 0; i < children.Length; ++i) { object[] child = (object[])children[i]; item.DropDownItems.Add(GenerateMenuItem(window, child)); } } return(item); }
public static void UpdateMenu(object windowObj, object[] menuData) { NoriWindow window = (NoriWindow)windowObj; MenuStrip strip = window.MainMenuStrip; window.MainMenuStrip.Items.Clear(); // TODO: suspend layout. window.MenuShown = menuData != null && menuData.Length > 0; if (window.MenuShown) { for (int i = 0; i < menuData.Length; ++i) { object[] menuItem = (object[])menuData[i]; if ((bool)menuItem[0]) { strip.Items.Add(GenerateMenuItem(window, menuItem)); } } } window.RunRenderer(); }