Class: Tray to zh-CN

This commit is contained in:
Weiqiang Lin 2017-02-12 22:51:36 +08:00
parent dddb6458da
commit b7551b5d84

View file

@ -1,205 +1,231 @@
# Tray # ClassTray
> 通过 `Tray` 向系统的通知区添加一个带有右键菜单的图标. > 将图标和上下文菜单添加到系统的通知区域。
可使用的进程: [主进程](../tutorial/quick-start.md#main-process)
`Tray` 是一个 [事件发出者][event-emitter]。
```javascript ```javascript
const electron = require('electron') const {app, Menu, Tray} = require('electron')
const app = electron.app
const Menu = electron.Menu
const Tray = electron.Tray
var appIcon = null let tray = null
app.on('ready', function () { app.on('ready', () => {
appIcon = new Tray('/path/to/my/icon') tray = new Tray('/path/to/my/icon')
var contextMenu = Menu.buildFromTemplate([ const contextMenu = Menu.buildFromTemplate([
{label: 'Item1', type: 'radio'}, {label: 'Item1', type: 'radio'},
{label: 'Item2', type: 'radio'}, {label: 'Item2', type: 'radio'},
{label: 'Item3', type: 'radio', checked: true}, {label: 'Item3', type: 'radio', checked: true},
{label: 'Item4', type: 'radio'} {label: 'Item4', type: 'radio'}
]) ])
appIcon.setToolTip('This is my application.') tray.setToolTip('This is my application.')
appIcon.setContextMenu(contextMenu) tray.setContextMenu(contextMenu)
}) })
``` ```
__平台限制:__ __平台限制:__
* 在 Linux 如果支持应用指示器则使用它,否则使用 `GtkStatusIcon` 代替. * 在 Linux 如果支持应用指示器则使用它,否则使用 `GtkStatusIcon` 代替
* 在 Linux ,配置了只有有了应用指示器的支持, 你必须安装 `libappindicator1` 来让 tray icon 执行. * 在 Linux ,配置了只有有了应用指示器的支持, 你必须安装 `libappindicator1` 来让 tray icon 执行
* 应用指示器只有在它拥有 context menu 时才会显示. * 应用指示器只有在它拥有 context menu 时才会显示
* 当在linux 上使用了应用指示器,将忽略点击事件. * 当在linux 上使用了应用指示器,将忽略点击事件
* 在 Linux为了让单独的 `MenuItem` 起效,需要再次调用 `setContextMenu` .例如: * 在 Linux为了让单独的 `MenuItem` 起效,需要再次调用 `setContextMenu` 。例如:
```javascript ```javascript
contextMenu.items[2].checked = false const {app, Menu, Tray} = require('electron')
let appIcon = null
app.on('ready', () => {
appIcon = new Tray('/path/to/my/icon')
const contextMenu = Menu.buildFromTemplate([
{label: 'Item1', type: 'radio'},
{label: 'Item2', type: 'radio'}
])
// Make a change to the context menu
contextMenu.items[1].checked = false
// Call this again for Linux because we modified the context menu
appIcon.setContextMenu(contextMenu) appIcon.setContextMenu(contextMenu)
})
``` ```
如果想在所有平台保持完全相同的行为,不应该依赖点击事件,而是一直将一个 context menu 添加到 tray icon.
## Class: Tray 如果想在所有平台保持完全相同的行为,不应该依赖点击事件,而是一直将一个 context menu 添加到 tray icon。
`Tray` 是一个 [事件发出者][event-emitter].
### `new Tray(image)` ### `new Tray(image)`
* `image` [NativeImage](native-image.md) * `image` ([NativeImage](native-image.md) | String)
创建一个与 `image` 相关的 icon. 创建一个与 `image` 相关的 icon
## 事件 ### Instance Events
`Tray` 模块可发出下列事件: `Tray` 模块可发出下列事件
**注意:** 一些事件只能在特定的os中运行已经标明. #### Event: 'click'
### Event: 'click'
* `event` Event * `event` Event
* `altKey` Boolean * `altKey` Boolean
* `shiftKey` Boolean * `shiftKey` Boolean
* `ctrlKey` Boolean * `ctrlKey` Boolean
* `metaKey` Boolean * `metaKey` Boolean
* `bounds` Object - tray icon 的 bounds. * `bounds` [Rectangle](structures/rectangle.md) - tray icon 的 bounds
* `x` Integer
* `y` Integer
* `width` Integer
* `height` Integer
tray icon被点击的时候发出事件. 当 tray icon 被点击的时候发出事件。
__注意:__ `bounds` 只在 macOS 和 Windows 上起效. #### Event: 'right-click' _macOS_ _Windows_
### Event: 'right-click' _macOS_ _Windows_
* `event` Event * `event` Event
* `altKey` Boolean * `altKey` Boolean
* `shiftKey` Boolean * `shiftKey` Boolean
* `ctrlKey` Boolean * `ctrlKey` Boolean
* `metaKey` Boolean * `metaKey` Boolean
* `bounds` Object - tray icon 的 bounds. * `bounds` [Rectangle](structures/rectangle.md) - tray icon 的 bounds
* `x` Integer
* `y` Integer
* `width` Integer
* `height` Integer
tray icon被鼠标右键点击的时候发出事件. 当 tray icon 被鼠标右键点击的时候发出事件。
### Event: 'double-click' _macOS_ _Windows_ #### Event: 'double-click' _macOS_ _Windows_
* `event` Event * `event` Event
* `altKey` Boolean * `altKey` Boolean
* `shiftKey` Boolean * `shiftKey` Boolean
* `ctrlKey` Boolean * `ctrlKey` Boolean
* `metaKey` Boolean * `metaKey` Boolean
* `bounds` Object - tray icon 的 bounds. * `bounds` [Rectangle](structures/rectangle.md) - tray icon 的 bounds
* `x` Integer
* `y` Integer
* `width` Integer
* `height` Integer
tray icon被双击的时候发出事件. 当 tray icon 被双击的时候发出事件。
### Event: 'balloon-show' _Windows_ #### Event: 'balloon-show' _Windows_
tray 气泡显示的时候发出事件. tray 气泡显示的时候发出事件。
### Event: 'balloon-click' _Windows_ #### Event: 'balloon-click' _Windows_
tray 气泡被点击的时候发出事件. tray 气泡被点击的时候发出事件。
### Event: 'balloon-closed' _Windows_ #### Event: 'balloon-closed' _Windows_
当tray 气泡关闭的时候发出事件,因为超时或人为关闭. tray 气泡关闭的时候发出事件,因为超时或人为关闭
### Event: 'drop' _macOS_ #### Event: 'drop' _macOS_
当tray icon上的任何可拖动项被删除的时候发出事件. tray icon 上的任何可拖动项被删除的时候发出事件
### Event: 'drop-files' _macOS_ #### Event: 'drop-files' _macOS_
* `event` * `event`
* `files` Array - 已删除文件的路径. * `files` Array - 已删除文件的路径.
当tray icon上的可拖动文件被删除的时候发出事件. tray icon 上的可拖动文件被删除的时候发出事件
### Event: 'drag-enter' _macOS_ #### Event: 'drag-enter' _macOS_
当一个拖动操作进入tray icon的时候发出事件. 当一个拖动操作进入 tray icon 的时候发出事件。
### Event: 'drag-leave' _macOS_ #### Event: 'drag-leave' _macOS_
当一个拖动操作离开tray icon的时候发出事件. 当一个拖动操作离开 tray icon 的时候发出事件。
Emitted when a drag operation exits the tray icon.
### Event: 'drag-end' _macOS_ #### Event: 'drag-end' _macOS_
当一个拖动操作在tray icon上或其它地方停止拖动的时候发出事件. 当一个拖动操作在 tray icon 上或其它地方停止拖动的时候发出事件
## 方法 ### 方法
`Tray` 模块有以下方法: `Tray` 模块有以下方法
**Note:** 一些方法只能在特定的os中运行已经标明. #### `tray.destroy()`
### `Tray.destroy()` 立刻删除 tray icon。
立刻删除 tray icon. #### `tray.setImage(image)`
### `Tray.setImage(image)` * `image` ([NativeImage](native-image.md) | String)
`image` 与 tray icon 关联起来。
#### `tray.setPressedImage(image)` _macOS_
* `image` [NativeImage](native-image.md) * `image` [NativeImage](native-image.md)
`image` 与 tray icon 关联起来. 当在 macOS 上按压 tray icon 的时候,让 `image` 与 tray icon 关联起来。
### `Tray.setPressedImage(image)` _macOS_ #### `tray.setToolTip(toolTip)`
* `image` [NativeImage](native-image.md)
当在 macOS 上按压 tray icon 的时候, 让 `image` 与 tray icon 关联起来.
### `Tray.setToolTip(toolTip)`
* `toolTip` String * `toolTip` String
为 tray icon 设置 hover text. 为 tray icon 设置 hover text。
### `Tray.setTitle(title)` _macOS_ #### `tray.setTitle(title)` _macOS_
* `title` String * `title` String
在状态栏沿着 tray icon 设置标题. 在状态栏沿着 tray icon 设置标题
### `Tray.setHighlightMode(highlight)` _macOS_ #### `tray.setHighlightMode(mode)` _macOS_
* `highlight` Boolean * `mode` String - Highlight mode with one of the following values:
* `selection` - Highlight the tray icon when it is clicked and also when
its context menu is open. This is the default.
* `always` - Always highlight the tray icon.
* `never` - Never highlight the tray icon.
当 tray icon 被点击的时候,是否设置它的背景色变为高亮(blue).默认为 true. 设置 tray icon 的背景色变为高亮blue
### `Tray.displayBalloon(options)` _Windows_ **注意:** 你可以使用 `highlightMode` 和一个 [`BrowserWindow`](browser-window.md)
通过在窗口可见性时切换 `'never'``'always'` 模式变化。
```javascript
const {BrowserWindow, Tray} = require('electron')
const win = new BrowserWindow({width: 800, height: 600})
const tray = new Tray('/path/to/my/icon')
tray.on('click', () => {
win.isVisible() ? win.hide() : win.show()
})
win.on('show', () => {
tray.setHighlightMode('always')
})
win.on('hide', () => {
tray.setHighlightMode('never')
})
```
#### `tray.displayBalloon(options)` _Windows_
* `options` Object * `options` Object
* `icon` [NativeImage](native-image.md) * `icon` ([NativeImage](native-image.md) | String) - (可选)
* `title` String * `title` String - (可选)
* `content` String * `content` String - (可选)
展示一个 tray balloon. 展示一个 tray balloon
### `Tray.popUpContextMenu([menu, position])` _macOS_ _Windows_ #### `tray.popUpContextMenu([menu, position])` _macOS_ _Windows_
* `menu` Menu (optional) * `menu` Menu (optional)
* `position` Object (可选) - 上托位置. * `position` Object (可选) - 上托位置.
* `x` Integer * `x` Integer
* `y` Integer * `y` Integer
从 tray icon 上托出 context menu . 当划过 `menu` 的时候, `menu` 显示,代替 tray 的 context menu . 从 tray icon 上托出 context menu。当划过 `menu` 的时候, `menu` 显示,代替 tray 的 context menu。
`position` 只在 windows 上可用,默认为 (0, 0) . `position` 只在 windows 上可用,默认为 (0, 0)
### `Tray.setContextMenu(menu)` #### `tray.setContextMenu(menu)`
* `menu` Menu * `menu` Menu
为这个 icon 设置 context menu . 为这个 icon 设置 context menu
[event-emitter]: http://nodejs.org/api/events.html#events_class_events_eventemitter #### `tray.getBounds()` _macOS_ _Windows_
返回 [`Rectangle`](structures/rectangle.md)
这个 tray icon 的 `bounds` 对象。
#### `tray.isDestroyed()`
返回 `Boolean` - tray icon 是否销毁。
[event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter