Support setting the initial/available colors

This commit is contained in:
Kevin Sawicki 2017-03-01 12:50:36 -08:00
parent f9dd91d54d
commit f153d08297
3 changed files with 26 additions and 4 deletions

View file

@ -253,6 +253,25 @@ static NSTouchBarItemIdentifier SliderIdentifier = @"com.electron.touchbar.slide
NSColorPickerTouchBarItem* item = [[NSClassFromString(@"NSColorPickerTouchBarItem") alloc] initWithIdentifier:identifier];
item.target = self;
item.action = @selector(colorPickerAction:);
std::string selectedColor;
if (settings.Get("selectedColor", &selectedColor)) {
item.color = [self colorFromHexColorString:selectedColor];
}
std::vector<std::string> colors;
if (settings.Get("availableColors", &colors) && colors.size() > 0) {
NSColorList* color_list = [[[NSColorList alloc] initWithName:identifier] autorelease];
for (size_t i = 0; i < colors.size(); ++i) {
[color_list insertColor:[self colorFromHexColorString:colors[i]]
key:base::SysUTF8ToNSString(colors[i])
atIndex:i];
}
item.colorList = color_list;
}
item.showsAlpha = NO;
[self updateColorPicker:item withSettings:settings];
return item;
}

View file

@ -98,6 +98,7 @@ static const NSTouchBarItemIdentifier NSTouchBarItemIdentifierOtherItemsProxy =
@property SEL action;
@property(weak) id target;
@property(copy) NSColor *color;
@property(strong) NSColorList *colorList;
@end

View file

@ -1,6 +1,6 @@
const {EventEmitter} = require('events')
let itemIdIncrementor = 1
let nextItemID = 1
class TouchBar extends EventEmitter {
@ -94,7 +94,7 @@ class TouchBar extends EventEmitter {
class TouchBarItem extends EventEmitter {
constructor (config) {
super()
this.id = `${itemIdIncrementor++}`
this.id = `${nextItemID++}`
}
}
@ -113,6 +113,8 @@ TouchBar.ColorPicker = class TouchBarColorPicker extends TouchBarItem {
constructor (config) {
super(config)
this.type = 'colorpicker'
this.availableColors = config.availableColors
this.selectedColor = config.selectedColor
const {change} = config
if (typeof change === 'function') {
@ -151,7 +153,7 @@ TouchBar.Label = class TouchBarLabel extends TouchBarItem {
}
}
TouchBar.PopOver = class TouchBarPopOver extends TouchBarItem {
TouchBar.Popover = class TouchBarPopover extends TouchBarItem {
constructor (config) {
super(config)
this.type = 'popover'