Add initial touch bar docs

This commit is contained in:
Kevin Sawicki 2017-03-03 09:54:46 -08:00
parent 81ecd4499c
commit 002369576f
11 changed files with 280 additions and 35 deletions

View file

@ -341,7 +341,7 @@ static NSTouchBarItemIdentifier SliderIdentifier = @"com.electron.touchbar.slide
item.collapsedRepresentationImage = image.AsNSImage();
}
bool showCloseButton;
bool showCloseButton = true;
if (settings.Get("showCloseButton", &showCloseButton)) {
item.showsCloseButton = showCloseButton;
}

View file

@ -1270,7 +1270,8 @@ will remove the vibrancy effect on the window.
* `touchBar` TouchBar
Sets the touchBar layout for the current window.
Sets the touchBar layout for the current window. Specifying `null` or
`undefined` clears the touch bar.
[blink-feature-string]: https://cs.chromium.org/chromium/src/third_party/WebKit/Source/platform/RuntimeEnabledFeatures.json5?l=62
[quick-look]: https://en.wikipedia.org/wiki/Quick_Look

View file

@ -0,0 +1,33 @@
## Class: TouchBarButton
> Create a button in the touch bar for native macOS applications
Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBarButton(options)`
* `options` Object
* `label` String (optional) - Button text.
* `backgroundColor` String (optional) - Button background color in hex format,
i.e `#ABCDEF`.
* `icon` NativeImage (optional) - Button icon.
* `click` Function (optional) - Function to call when the button is clicked.
### Instance Properties
The following properties are available on instances of `TouchBarButton`:
#### `touchBarButton.label`
The button's current text. Changing this value immediately updates the button
in the touch bar.
#### `touchBarButton.backgroundColor`
The button's current background color. Changing this value immediately updates
the button in the touch bar.
#### `touchBarButton.icon`
The button's current icon. Changing this value immediately updates the button
in the touch bar.

View file

@ -0,0 +1,28 @@
## Class: TouchBarColorPicker
> Create a color picker in the touch bar for native macOS applications
Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBarColorPicker(options)`
* `options` Object
* `availableColors` String[] (optional) - Array of hex color strings to
appear as possible colors to select.
* `selectedColor` String (optional) - The selected hex color in the picker,
i.e `#ABCDEF`.
* `change` Function (optional) - Function to call when a color is selected.
### Instance Properties
The following properties are available on instances of `TouchBarColorPicker`:
#### `touchBarColorPicker.availableColors`
The color picker's available colors to select. Changing this value immediately
updates the color picker in the touch bar.
#### `touchBarColorPicker.selectedColor`
The color picker's currently selected color. Changing this value immediately
updates the color picker in the touch bar.

View file

@ -0,0 +1,10 @@
## Class: TouchBarGroup
> Create a group in the touch bar for native macOS applications
Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBarGroup(options)`
* `options` Object
* `items` TouchBar - Items to display as a group.

View file

@ -0,0 +1,19 @@
## Class: TouchBarLabel
> Create a label in the touch bar for native macOS applications
Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBarLabel(options)`
* `options` Object
* `label` String (optional) - Text to display.
### Instance Properties
The following properties are available on instances of `TouchBarLabel`:
#### `touchBarLabel.label`
The label's current text. Changing this value immediately updates the label in
the touch bar.

View file

@ -0,0 +1,28 @@
## Class: TouchBarPopover
> Create a popover in the touch bar for native macOS applications
Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBarPopover(options)`
* `options` Object
* `label` String (optional) - Popover button text.
* `icon` NativeImage (optional) - Popover button icon.
* `items` TouchBar (optional) - Items to display in the popover.
* `showCloseButton` Boolean (optional) - `true` to display a close button
on the left of the popover, `false` to not show it. Default is `true`.
### Instance Properties
The following properties are available on instances of `TouchBarPopover`:
#### `touchBarPopover.label`
The popover's current button text. Changing this value immediately updates the
popover in the touch bar.
#### `touchBarPopover.icon`
The popover's current button icon. Changing this value immediately updates the
popover in the touch bar.

View file

@ -0,0 +1,38 @@
## Class: TouchBarSlider
> Create a slider in the touch bar for native macOS applications
Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBarSlider(options)`
* `options` Object
* `label` String (optional) - Label text.
* `value` Integer (optional) - Selected value.
* `minValue` Integer (optional) - Minimum value.
* `maxValue` Integer (optional) - Maximum value.
* `change` Function (optional) - Function to call when the slider is changed.
### Instance Properties
The following properties are available on instances of `TouchBarSlider`:
#### `touchBarSlider.label`
The slider's current text. Changing this value immediately updates the slider
in the touch bar.
#### `touchBarSlider.value`
The slider's current value. Changing this value immediately updates the slider
in the touch bar.
#### `touchBarSlider.minValue`
The slider's current minimum value. Changing this value immediately updates the
slider in the touch bar.
#### `touchBarSlider.maxValue`
The slider's current maximum value. Changing this value immediately updates the
slider in the touch bar.

View file

@ -0,0 +1,13 @@
## Class: TouchBarSpacer
> Create a spacer between two items in the touch bar for native macOS applications
Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBarSlider(options)`
* `options` Object
* `size` String (optional) - Size of spacer, possible values are:
* `small` - Small space between items.
* `large` - Large space between items.
* `flexible` - Take up all available space.

View file

@ -6,39 +6,114 @@ Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBar(items)`
* `items` (TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopOver | TouchBarSlider)[]
* `items` (TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopOver | TouchBarSlider | TouchBarSpacer)[]
Creates a new touch bar. Note any changes to the TouchBar instance
will not affect the rendered TouchBar. To affect the rendered
TouchBar you **must** use either methods on the TouchBar or methods
on the TouchBar* items
### Instance Methods
The `menu` object has the following instance methods:
#### `touchBar.destroy()`
Immediately destroys the TouchBar instance and will reset the rendered
touch bar.
Creates a new touch bar with the specified items. Use
`BrowserWindow.setTouchBar` to add the `TouchBar` to a window.
## Examples
The `TouchBar` class is only available in the main process, it is not currently possible to use in the renderer process **even** through the remote module.
The `TouchBar` class is only available in the main process, it is not currently
possible to use in the renderer process **even** through the remote module.
### Main process
An example of creating a touch bar in the main process:
Below is an example of a simple slot machine touch bar game with a button
and some labels.
```javascript
const {TouchBar, TouchBarButton} = require('electron')
const {app, BrowserWindow, TouchBar} = require('electron')
const {TouchBarLabel, TouchBarButton, TouchBarSpacer} = TouchBar
let spinning = false
// Reel labels
const reel1 = new TouchBarLabel()
const reel2 = new TouchBarLabel()
const reel3 = new TouchBarLabel()
// Spin result label
const result = new TouchBarLabel()
// Spin button
const spin = new TouchBarButton({
label: '🎰 Spin',
backgroundColor: '#7851A9',
click: () => {
// Ignore clicks if already spinning
if (spinning) {
return
}
spinning = true
result.label = ''
let timeout = 10
const spinLength = 4 * 1000 // 4 seconds
const startTime = Date.now()
const spinReels = () => {
updateReels()
if ((Date.now() - startTime) >= spinLength) {
finishSpin()
} else {
// Slow down a bit on each spin
timeout *= 1.1
setTimeout(spinReels, timeout)
}
}
spinReels()
}
})
const getRandomValue = () => {
const values = ['🍒', '💎', '7⃣', '🍊', '🔔', '⭐', '🍇']
return values[Math.floor(Math.random() * values.length)]
}
const updateReels = () => {
reel1.label = getRandomValue()
reel2.label = getRandomValue()
reel3.label = getRandomValue()
}
const finishSpin = () => {
const uniqueValues = new Set([reel1.label, reel2.label, reel3.label]).size
if (uniqueValues === 1) {
// All 3 values are the same
result.label = '💰 Jackpot!'
} else if (uniqueValues === 2) {
// 2 values are the same
result.label = '😍 Winner!'
} else {
// No values are the same
result.label = '🙁 Spin Again'
}
spinning = false
}
const touchBar = new TouchBar([
new TouchBarButton({
label: 'Example Button',
click: () => console.log('I was clicked')
})
spin,
new TouchBarSpacer({size: 'large'}),
reel1,
reel2,
reel3,
new TouchBarSpacer({size: 'large'}),
result
])
mainWindow.setTouchBar(touchBar)
let window
app.once('ready', () => {
window = new BrowserWindow({
frame: false,
titleBarStyle: 'hidden-inset',
width: 200,
height: 200,
backgroundColor: '#000'
})
window.loadURL('about:blank')
window.setTouchBar(touchBar)
})
```

View file

@ -165,15 +165,6 @@ TouchBar.TouchBarLabel = class TouchBarLabel extends TouchBarItem {
}
}
TouchBar.TouchBarSpacer = class TouchBarSpacer extends TouchBarItem {
constructor (config) {
super()
if (config == null) config = {}
this.type = 'spacer'
this._addLiveProperty('size', config.size)
}
}
TouchBar.TouchBarPopover = class TouchBarPopover extends TouchBarItem {
constructor (config) {
super()
@ -209,4 +200,13 @@ TouchBar.TouchBarSlider = class TouchBarSlider extends TouchBarItem {
}
}
TouchBar.TouchBarSpacer = class TouchBarSpacer extends TouchBarItem {
constructor (config) {
super()
if (config == null) config = {}
this.type = 'spacer'
this.size = config.size
}
}
module.exports = TouchBar