public void Run() { RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; var visualizer = new MenuViewMessageInterpreter(); var state = new MenuViewMessage { Items = { MenuItemViewMessage.MakeRange("[-1, 1]: 0.5", -1, +1, 0.5, false), MenuItemViewMessage.MakeRange("[-1, 1]: -1", -1, +1, -1, true), MenuItemViewMessage.MakeRange("[-1, 1]: 0", -1, +1, 0, false), MenuItemViewMessage.MakeRange("[-1, 1]: +1", -1, +1, +1, false), MenuItemViewMessage.MakeRange("[0, 1]: 0.5", 0, 1, 0.5, false), MenuItemViewMessage.MakeRange("[0, 1]: 0", 0, 1, 0, false), MenuItemViewMessage.MakeRange("[0, 1]: 1", 0, 1, 1, false) } }; var visual = visualizer.Interpret(state); var window = new Window { Background = Brushes.Pink, Content = visual }; window.Show(); Dispatcher.Run(); }
public MenuViewMessage AuthorMessage(MenuModel model) { List <MenuItemViewMessage> itemMessages = new List <MenuItemViewMessage>(); for (int i = 0; i < model.Items.Count; ++i) { var item = model.Items[i]; bool selected = i == model.SelectedItemIdx; bool isEditing = selected && model.IsEditing; MenuItemViewMessage itemMessage; switch (item) { case UpMenuItem upMenuItem: itemMessage = MenuItemViewMessage.MakeUpLevelButton(upMenuItem.Label); break; case SubLevelMenuItem subLevelItem: itemMessage = MenuItemViewMessage.MakeSubLevelButton(subLevelItem.Label); break; case IRangeMenuItem rangeItem: itemMessage = MenuItemViewMessage.MakeRange(rangeItem.Label, rangeItem.Min, rangeItem.Max, rangeItem.Value, isEditing); break; case IToggleMenuItem toggleMenuItem: itemMessage = MenuItemViewMessage.MakeToggle(toggleMenuItem.Label, toggleMenuItem.IsSet); break; case ActionMenuItem actionMenuItem: itemMessage = MenuItemViewMessage.MakeActionButton(actionMenuItem.Label, actionMenuItem.RequiresMoreInformation); break; default: throw new InvalidOperationException(); } if (selected) { itemMessage.Active = true; } itemMessages.Add(itemMessage); } return(new MenuViewMessage { Items = itemMessages, Position = model.ScrollPosition }); }