UNIXworkcode

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Windows; 7 using System.Windows.Controls; 8 using System.Windows.Media; 9 10 namespace UI 11 { 12 public class MainToolBar 13 { 14 Dictionary<string, IToolItem> Items = new Dictionary<string, IToolItem>(); 15 List<string> Defaults = new List<string>(); 16 17 public MainToolBar() 18 { 19 20 } 21 22 public bool HasItems() 23 { 24 return Defaults.Count > 0 ? true : false; 25 } 26 27 public void AddDefault(string itemName) 28 { 29 Defaults.Add(itemName); 30 } 31 32 public void AddToolItem(string name, string label, Action<IntPtr> action) 33 { 34 ToolItem item = new ToolItem(); 35 item.Label = label; 36 item.Action = action; 37 Items.Add(name, item); 38 } 39 40 public ToolBarTray CreateToolBarTray(IntPtr objptr) 41 { 42 ToolBarTray tray = new ToolBarTray(); 43 ToolBar toolbar = new ToolBar(); 44 tray.ToolBars.Add(toolbar); 45 foreach(string s in Defaults) 46 { 47 IToolItem item = Items[s]; 48 item.AddTo(toolbar, objptr); 49 } 50 51 return tray; 52 } 53 } 54 55 public interface IToolItem 56 { 57 void AddTo(System.Windows.Controls.ToolBar toolbar, IntPtr uiobj); 58 } 59 60 public class ToolItem : IToolItem 61 { 62 public string Label { get; set; } 63 // TODO: icon 64 public Action<IntPtr> Action { get; set; } 65 66 public void AddTo(System.Windows.Controls.ToolBar toolbar, IntPtr uiobj) 67 { 68 Button button = new Button(); 69 button.Content = Label; 70 71 EventCallback e = new EventCallback(uiobj, Action); 72 button.Click += e.Callback; 73 74 toolbar.Items.Add(button); 75 } 76 } 77 } 78