--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/wpf/UIcore/MainToolBar.cs Wed Dec 09 11:32:01 2020 +0100 @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Media; + +namespace UI +{ + public class MainToolBar + { + Dictionary<string, IToolItem> Items = new Dictionary<string, IToolItem>(); + List<string> Defaults = new List<string>(); + + public MainToolBar() + { + + } + + public bool HasItems() + { + return Defaults.Count > 0 ? true : false; + } + + public void AddDefault(string itemName) + { + Defaults.Add(itemName); + } + + public void AddToolItem(string name, string label, Action<IntPtr> action) + { + ToolItem item = new ToolItem(); + item.Label = label; + item.Action = action; + Items.Add(name, item); + } + + public ToolBarTray CreateToolBarTray(IntPtr objptr) + { + ToolBarTray tray = new ToolBarTray(); + ToolBar toolbar = new ToolBar(); + tray.ToolBars.Add(toolbar); + foreach(string s in Defaults) + { + IToolItem item = Items[s]; + item.AddTo(toolbar, objptr); + } + + return tray; + } + } + + public interface IToolItem + { + void AddTo(System.Windows.Controls.ToolBar toolbar, IntPtr uiobj); + } + + public class ToolItem : IToolItem + { + public string Label { get; set; } + // TODO: icon + public Action<IntPtr> Action { get; set; } + + public void AddTo(System.Windows.Controls.ToolBar toolbar, IntPtr uiobj) + { + Button button = new Button(); + button.Content = Label; + + EventCallback e = new EventCallback(uiobj, Action); + button.Click += e.Callback; + + toolbar.Items.Add(button); + } + } +}