// This will dynamically generate a gtkrc for certain widgets using system control colors. void PatchGtkTheme() { NSControlTint tint = NSColor.CurrentControlTint; NSColor text = NSColor.SelectedMenuItemText.UsingColorSpace(NSColorSpace.GenericRGBColorSpace); NSColor color = tint == NSControlTint.Blue ? NSColor.SelectedMenuItem.UsingColorSpace(NSColorSpace.GenericRGBColorSpace) : NSColor.SelectedMenuItem.UsingColorSpace(NSColorSpace.DeviceWhite); string gtkrc = String.Format(@" style ""treeview"" = ""default"" {{ GtkTreeView::odd-row-color = ""#f5f5f5"" base[SELECTED] = ""{0}"" base[ACTIVE] = ""{0}"" text[SELECTED] = ""{1}"" text[ACTIVE] = ""{1}"" engine ""xamarin"" {{ roundness = 0 gradient_shades = {{ 1.0, 0.95, 0.95, 0.90 }} glazestyle = 1 }} }} widget_class ""*.<GtkTreeView>*"" style ""treeview"" " , ConvertColorToHex(color), ConvertColorToHex(text) ); Gtk.Rc.ParseString(gtkrc); }
// This will dynamically generate a gtkrc for certain widgets using system control colors. void PatchGtkTheme() { string color_hex, text_hex; if (MonoDevelop.Core.Platform.OSVersion >= MonoDevelop.Core.MacSystemInformation.Yosemite) { NSControlTint tint = NSColor.CurrentControlTint; NSColor text = NSColor.SelectedMenuItemText.UsingColorSpace(NSColorSpace.GenericRGBColorSpace); NSColor color = tint == NSControlTint.Blue ? NSColor.SelectedMenuItem.UsingColorSpace(NSColorSpace.GenericRGBColorSpace) : NSColor.SelectedMenuItem.UsingColorSpace(NSColorSpace.DeviceWhite); color_hex = ConvertColorToHex(color); text_hex = ConvertColorToHex(text); } else { color_hex = "#c5d4e0"; text_hex = "#000"; } string gtkrc = String.Format(@" style ""treeview"" = ""default"" {{ GtkTreeView::odd-row-color = ""#f5f5f5"" base[SELECTED] = ""{0}"" base[ACTIVE] = ""{0}"" text[SELECTED] = ""{1}"" text[ACTIVE] = ""{1}"" engine ""xamarin"" {{ roundness = 0 gradient_shades = {{ 1.0, 0.95, 0.95, 0.90 }} glazestyle = 1 }} }} style ""menu-item"" {{ bg[SELECTED] = ""{0}"" }} widget_class ""*.<GtkTreeView>*"" style ""treeview"" widget_class ""*.<GtkMenuItem>*"" style ""menu-item"" " , color_hex, text_hex ); Gtk.Rc.ParseString(gtkrc); }
public static NSColor ColorForControlTint(NSControlTint controlTint) { switch (controlTint) { default: case NSControlTint.NSDefaultControlTint: return ColorForControlTint(CurrentControlTint); case NSControlTint.NSGraphiteControlTint: // FIXME case NSControlTint.NSClearControlTint: // FIXME case NSControlTint.NSBlueControlTint: return NSColor.BlueColor; } }