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; } } }
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)); }
private static Boolean IsLast(MenuTemplateItem itemT) { return((itemT.mtOption & MenuTemplateItemOptions.EndMenu) == MenuTemplateItemOptions.EndMenu); }
private static Boolean HasChildren(MenuTemplateItem itemT) { return((itemT.mtOption & MenuTemplateItemOptions.Popup) == MenuTemplateItemOptions.Popup); }