コード例 #1
0
ファイル: WindowUtil.cs プロジェクト: falun/crayon
        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();
            }
        }
コード例 #2
0
ファイル: WindowUtil.cs プロジェクト: falun/crayon
        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;
        }
コード例 #3
0
ファイル: WindowUtil.cs プロジェクト: falun/crayon
        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);
        }
コード例 #4
0
ファイル: WindowUtil.cs プロジェクト: falun/crayon
        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();
        }