public override void DrawRect(CGRect dirtyRect) { NSColorList colors = NSColorList.ColorListNamed("System"); CGRect rect = Bounds; rect.Height = 12; var style = (NSMutableParagraphStyle)NSParagraphStyle.DefaultParagraphStyle.MutableCopy(); style.Alignment = NSTextAlignment.Right; var attrs = new NSStringAttributes { Font = NSFont.SystemFontOfSize(8), ForegroundColor = NSColor.LabelColor, ParagraphStyle = style }; foreach (NSString key in colors.AllKeys()) { if (DrawColors) { NSColor color = colors.ColorWithKey(key); color.Set(); NSGraphics.RectFill(rect); } if (DrawTitles) { key.DrawString(rect, attrs.Dictionary); } rect.Y += 12; } }
public override NSTouchBarItem MakeItem(NSTouchBar touchBar, string identifier) { switch (Array.IndexOf(DefaultIdentifiers, identifier)) { case 0: { var item = NSColorPickerTouchBarItem.CreateColorPicker(identifier, NSImage.ImageNamed(NSImageName.TouchBarColorPickerFill)); item.ColorList = NSColorList.ColorListNamed("Apple"); item.ShowsAlpha = false; item.Activated += (_, __) => { var color = item.Color.UsingColorSpace(NSColorSpace.CalibratedRGB); this.ColorSelected.Invoke(item, color); }; return(item); } case 1: { var item = new NSCustomTouchBarItem(identifier); item.View = NSButton.CreateButton(NSImage.ImageNamed(NSImageName.TouchBarRecordStopTemplate), () => this.TurnOffRequested.Invoke(this, null)); return(item); } default: return(null); } }
/// <summary>Shared initialization code.</summary> private void Initialize() { var cfg = SingleInstanceApplication.Instance.GetConfiguration <INTV.LtoFlash.Model.Configuration>(); var colorsPath = System.IO.Path.Combine(cfg.ApplicationConfigurationPath, MenuColors); NSColorList colorList = null; if (!System.IO.File.Exists(colorsPath)) { // We haven't stashed the color list, so make one. colorList = new NSColorList(MenuColorPaletteName); var colors = INTV.LtoFlash.ViewModel.MenuLayoutViewModel.Colors; int i = 0; foreach (var color in colors) { colorList.InsertColor(color.ToColor(), color.ToString(), i); ++i; } if (colorList.WriteToFile(colorsPath)) { // save it and mark read-only so users can't muck with it. var attributes = System.IO.File.GetAttributes(colorsPath); attributes |= System.IO.FileAttributes.ReadOnly; System.IO.File.SetAttributes(colorsPath, attributes); } } else { // just in case, mark read-only var attributes = System.IO.File.GetAttributes(colorsPath); attributes |= System.IO.FileAttributes.ReadOnly; System.IO.File.SetAttributes(colorsPath, attributes); } // Load from read-only color list colorList = new NSColorList(MenuColorPaletteName, colorsPath); NSColorPanel.SetPickerStyle(NSColorPanelFlags.ColorList); NSColorPanel.SetPickerMode(NSColorPanelMode.ColorList); var panel = NSColorPanel.SharedColorPanel; panel.AttachColorList(colorList); foreach (var defaultColorList in NSColorList.AvailableColorLists) { ////System.Diagnostics.Debug.WriteLine(defaultColorList.Name + " RetainCount: " + defaultColorList.RetainCount); #if __UNIFIED__ // HACK See this bug report: https://bugzilla.xamarin.com/show_bug.cgi?id=45621 // This keeps us from crashing hideously. The retain count behaves the same way in both MonoMac and Xamarin.Mac -- // namely, it drops by *TWO* when detaching the color list. However, in Xamarin.Mac, without this extra retain, // we will CRASH HARD. Ick. defaultColorList.DangerousRetain(); #endif // __UNIFIED__ panel.DetachColorList(defaultColorList); ////System.Diagnostics.Debug.WriteLine(defaultColorList.Name + " RetainCount: " + defaultColorList.RetainCount); } var button = panel.ContentView.FindChild <NSButton>(); button.Enabled = false; }
void Initialize() { // foreach (NSColorList cl in NSColorList.AvailableColorLists) { // Console.WriteLine("Color List: {0}", cl.Name); // } // Possible color list names - "Apple", "Crayons", "System" (causes crash), and "Web Safe Colors" (named by hex values); colorList = NSColorList.ColorListNamed("Crayons"); // foreach (string c in colorList.AllKeys()) { // Console.WriteLine("Color: {0}", c); // } }
public static NSColorPickerTouchBarItem CreateColorPicker(string identifier, string listName) { NSColorPickerTouchBarItem item; switch (listName) { case "Text": item = NSColorPickerTouchBarItem.CreateTextColorPicker(identifier); break; case "Stroke": item = NSColorPickerTouchBarItem.CreateStrokeColorPicker(identifier); break; default: item = NSColorPickerTouchBarItem.CreateColorPicker(identifier, NSImage.ImageNamed(NSImageName.TouchBarColorPickerFill)); item.ColorList = NSColorList.ColorListNamed(listName); item.ShowsAlpha = true; break; } item.Activated += (sender, e) => OnColorChange(item.CustomizationLabel, item.Color); return(item); }