electron/docs/api/touch-bar.md

136 lines
3.6 KiB
Markdown
Raw Normal View History

2016-12-02 12:58:02 +00:00
## Class: TouchBar
> Create TouchBar layouts for native macOS applications
Process: [Main](../tutorial/quick-start.md#main-process)
### `new TouchBar(items)` _Experimental_
2016-12-02 12:58:02 +00:00
* `items` ([TouchBarButton](touch-bar-button.md) | [TouchBarColorPicker](touch-bar-color-picker.md) | [TouchBarGroup](touch-bar-group.md) | [TouchBarLabel](touch-bar-label.md) | [TouchBarPopover](touch-bar-popover.md) | [TouchBarScrubber](touch-bar-scrubber.md) | [TouchBarSegmentedControl](touch-bar-segmented-control.md) | [TouchBarSlider](touch-bar-slider.md) | [TouchBarSpacer](touch-bar-spacer.md))[]
2016-12-02 12:58:02 +00:00
2017-03-03 17:54:46 +00:00
Creates a new touch bar with the specified items. Use
`BrowserWindow.setTouchBar` to add the `TouchBar` to a window.
2016-12-02 12:58:02 +00:00
2017-03-07 17:42:45 +00:00
**Note:** The TouchBar API is currently experimental and may change or be
removed in future Electron releases.
### Instance Methods
The following methods are available on instances of `TouchBar`:
2017-03-29 04:11:39 +00:00
#### `touchBar.setEscapeItem([touchBarItem])`
* `touchBarItem` (TouchBarButton | TouchBarColorPicker | TouchBarGroup | TouchBarLabel | TouchBarPopover | TouchBarScrubber | TouchBarSegmentedControl | TouchBarSlider | TouchBarSpacer) - (Optional) The touch bar item to replace the escape button with
Replaces the "esc" button on the touchbar with the given TouchBarItem, if `touchBarItem` is not provided or is falsey the button is reset
to the "esc" button automatically.
2016-12-02 12:58:02 +00:00
## Examples
2017-03-03 17:54:46 +00:00
Below is an example of a simple slot machine touch bar game with a button
and some labels.
2016-12-02 12:58:02 +00:00
```javascript
2017-03-03 17:54:46 +00:00
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 = () => {
2017-03-03 18:54:21 +00:00
const values = ['🍒', '💎', '7⃣', '🍊', '🔔', '⭐', '🍇', '🍀']
2017-03-03 17:54:46 +00:00
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!'
result.textColor = '#FDFF00'
2017-03-03 17:54:46 +00:00
} else if (uniqueValues === 2) {
// 2 values are the same
result.label = '😍 Winner!'
result.textColor = '#FDFF00'
2017-03-03 17:54:46 +00:00
} else {
// No values are the same
result.label = '🙁 Spin Again'
result.textColor = null
2017-03-03 17:54:46 +00:00
}
spinning = false
}
2016-12-02 12:58:02 +00:00
const touchBar = new TouchBar([
2017-03-03 17:54:46 +00:00
spin,
new TouchBarSpacer({size: 'large'}),
reel1,
new TouchBarSpacer({size: 'small'}),
2017-03-03 17:54:46 +00:00
reel2,
new TouchBarSpacer({size: 'small'}),
2017-03-03 17:54:46 +00:00
reel3,
new TouchBarSpacer({size: 'large'}),
result
2016-12-02 12:58:02 +00:00
])
2017-03-03 17:54:46 +00:00
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)
})
2016-12-02 12:58:02 +00:00
```