예제 #1
0
        private static void BuildMenu(DialogMenuItem current, List <MenuTemplateItem> itemTs)
        {
            while (i < itemTs.Count)
            {
                MenuTemplateItem itemT = itemTs[i++];

                DialogMenuItem item = new DialogMenuItem(itemT.mtString);

                if (HasChildren(itemT))
                {
                    BuildMenu(item, itemTs);
                }

                current.Children.Add(item);

                if (IsLast(itemT))
                {
                    return;
                }
            }
        }
예제 #2
0
        private static DialogMenu Create(BinaryReader rdr)
        {
            List <MenuTemplateItem> itemTs = new List <MenuTemplateItem>();

            MenuTemplateHeader header = new MenuTemplateHeader(rdr);

            rdr.ReadBytes(header.wOffset);

            while (rdr.BaseStream.Position < rdr.BaseStream.Length)
            {
                MenuTemplateItem itemT = new MenuTemplateItem(rdr);
                itemTs.Add(itemT);
            }

            DialogMenuItem root = new DialogMenuItem("Root");

            lock (_buildLock) {
                i = 0;
                BuildMenu(root, itemTs);
            }

            return(new DialogMenu(root));
        }
예제 #3
0
 private static Boolean IsLast(MenuTemplateItem itemT)
 {
     return((itemT.mtOption & MenuTemplateItemOptions.EndMenu) == MenuTemplateItemOptions.EndMenu);
 }
예제 #4
0
 private static Boolean HasChildren(MenuTemplateItem itemT)
 {
     return((itemT.mtOption & MenuTemplateItemOptions.Popup) == MenuTemplateItemOptions.Popup);
 }