Merge pull request #2690 from preco21/master

Fix mistranslation, update as upstream
This commit is contained in:
Cheng Zhao 2015-09-03 17:12:30 +09:00
commit c56b78f0fa
17 changed files with 387 additions and 268 deletions

View file

@ -17,7 +17,7 @@
## API 레퍼런스
* [개요](api/synopsis.md)
* [프로세스 객체](api/process.md)
* [process](api/process.md)
* [크롬 Command-Line 스위치 지원](api/chrome-command-line-switches.md)
커스텀 DOM elements:

View file

@ -1,7 +1,7 @@
# global-shortcut
`global-shortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을 제공합니다.
이 모듈을 사용하여 사용자가 다양한 단축키 작업을 할 수 있도록 단축키를 정의 할 수 있습니다.
이 모듈을 사용하여 사용자가 다양한 작업을 편하게 할 수 있도록 단축키를 정의 할 수 있습니다.
**참고:** 등록된 단축키는 어플리케이션이 백그라운드로 작동(창이 포커스 되지 않음) 할 때도 계속해서 작동합니다.
이 모듈은 `app` 모듈의 `ready` 이벤트 이전에 사용할 수 없습니다.

View file

@ -1,12 +1,18 @@
# menu-item
# MenuItem
`menu-item` 모듈은 어플리케이션 또는 컨텐츠 [`menu`](menu.md)에 아이템을 추가할 수 있도록 관련 클래스를 제공합니다.
[`menu`](menu.md)에서 예제를 확인할 수 있습니다.
## Class: MenuItem
`MenuItem` 인스턴스 객체에서 사용할 수 있는 메서드입니다:
### new MenuItem(options)
* `options` Object
* `click` Function - 메뉴 아이템이 클릭될 때 호출되는 콜백 함수
* `selector` String - First Responder가 클릭될 때 호출 되는 선택자 (OS X 전용)
* `click` Function - 메뉴 아이템이 클릭될 때 `click(menuItem, browserWindow)` 형태로 호출 되는 콜백 함수
* `role` String - 메뉴 아이템의 액션을 정의합니다. 이 속성을 지정하면 `click` 속성이 무시됩니다.
* `type` String - `MenuItem`의 타입 `normal`, `separator`, `submenu`, `checkbox` 또는 `radio` 사용가능
* `label` String
* `sublabel` String
@ -18,3 +24,29 @@
* `submenu` Menu - 보조메뉴를 설정합니다. `type``submenu`일 경우 반드시 설정해야합니다. 일반 메뉴 아이템일 경우 생략할 수 있습니다.
* `id` String - 현재 메뉴 아이템에 대해 유일키를 지정합니다. 이 키는 이후 `position` 옵션에서 사용할 수 있습니다.
* `position` String - 미리 지정한 `id`를 이용하여 메뉴 아이템의 위치를 세밀하게 조정합니다.
When creating menu items, it is recommended to specify `role` instead of
manually implementing the behavior if there is matching action, so menu can have
best native experience.
The `role` property can have following values:
* `undo`
* `redo`
* `cut`
* `copy`
* `paste`
* `selectall`
* `minimize` - Minimize current window
* `close` - Close current window
On OS X `role` can also have following additional values:
* `about` - Map to the `orderFrontStandardAboutPanel` action
* `hide` - Map to the `hide` action
* `hideothers` - Map to the `hideOtherApplications` action
* `unhide` - Map to the `unhideAllApplications` action
* `front` - Map to the `arrangeInFront` action
* `window` - The submenu is a "Window" menu
* `help` - The submenu is a "Help" menu
* `services` - The submenu is a "Services" menu

View file

@ -1,11 +1,12 @@
# menu
# Menu
`Menu` 클래스는 어플리케이션 메뉴와 컨텍스트 메뉴를 만들 때 사용됩니다.
메뉴는 여러 개의 메뉴 아이템으로 구성되고 서브 메뉴를 가질 수도 있습니다.
`menu` 클래스는 어플리케이션 메뉴와 [컨텍스트 메뉴](https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/PopupGuide/ContextMenus)를 만들 때 사용됩니다.
이 모듈은 메인 프로세스용 모듈이지만 `remote` 모듈을 통해 랜더러 프로세스에서도 사용할 수 있습니다.
각 메뉴는 여러 개의 [메뉴 아이템](menu-item.md)으로 구성되고 서브 메뉴를 가질 수도 있습니다.
다음 예제는 웹 페이지 내에서 [remote](remote.md) 모듈을 활용하여 동적으로 메뉴를 생성하는 예제입니다.
이 예제에서 만들어진 메뉴는 유저가 페이지에서 오른쪽 클릭을 할 때 마우스 위치에 팝업 형태로 표시됩니다:
그리고 유저가 페이지에서 오른쪽 클릭을 할 때마다 마우스 위치에 팝업 형태로 메뉴를 표시합니다:
```html
<!-- index.html -->
@ -26,69 +27,22 @@ window.addEventListener('contextmenu', function (e) {
</script>
```
다음 예제는 template API를 활용하여 어플리케이션 메뉴를 만드는 간단한 예제입니다:
또 하나의 예를 들자면 다음 예제는 랜더러 프로세스에서 template API를 사용하여 어플리케이션 메뉴를 만듭니다:
**Windows 와 Linux 유저 주의:** 각 메뉴 아이템의 `selector` 멤버는 Mac 운영체제 전용입니다. [Accelerator 옵션](accelerator.md)
```html
<!-- index.html -->
<script>
var remote = require('remote');
var Menu = remote.require('menu');
```javascript
var template = [
{
label: 'Electron',
submenu: [
{
label: 'About Electron',
selector: 'orderFrontStandardAboutPanel:'
},
{
type: 'separator'
},
{
label: 'Services',
submenu: []
},
{
type: 'separator'
},
{
label: 'Hide Electron',
accelerator: 'CmdOrCtrl+H',
selector: 'hide:'
},
{
label: 'Hide Others',
accelerator: 'CmdOrCtrl+Shift+H',
selector: 'hideOtherApplications:'
},
{
label: 'Show All',
selector: 'unhideAllApplications:'
},
{
type: 'separator'
},
{
label: 'Quit',
accelerator: 'CmdOrCtrl+Q',
selector: 'terminate:'
},
]
},
{
label: 'Edit',
submenu: [
{
label: 'Undo',
accelerator: 'CmdOrCtrl+Z',
selector: 'undo:'
role: 'undo'
},
{
label: 'Redo',
accelerator: 'Shift+CmdOrCtrl+Z',
selector: 'redo:'
role: 'redo'
},
{
type: 'separator'
@ -96,23 +50,23 @@ var template = [
{
label: 'Cut',
accelerator: 'CmdOrCtrl+X',
selector: 'cut:'
role: 'cut'
},
{
label: 'Copy',
accelerator: 'CmdOrCtrl+C',
selector: 'copy:'
role: 'copy'
},
{
label: 'Paste',
accelerator: 'CmdOrCtrl+V',
selector: 'paste:'
role: 'paste'
},
{
label: 'Select All',
accelerator: 'CmdOrCtrl+A',
selector: 'selectAll:'
}
role: 'selectall'
},
]
},
{
@ -121,62 +75,144 @@ var template = [
{
label: 'Reload',
accelerator: 'CmdOrCtrl+R',
click: function() { remote.getCurrentWindow().reload(); }
click: function(item, focusedWindow) {
if (focusedWindow)
focusedWindow.reload();
}
},
{
label: 'Toggle DevTools',
accelerator: 'Alt+CmdOrCtrl+I',
click: function() { remote.getCurrentWindow().toggleDevTools(); }
label: 'Toggle Full Screen',
accelerator: (function() {
if (process.platform == 'darwin')
return 'Ctrl+Command+F';
else
return 'F11';
})(),
click: function(item, focusedWindow) {
if (focusedWindow)
focusedWindow.setFullScreen(!focusedWindow.isFullScreen());
}
},
{
label: 'Toggle Developer Tools',
accelerator: (function() {
if (process.platform == 'darwin')
return 'Alt+Command+I';
else
return 'Ctrl+Shift+I';
})(),
click: function(item, focusedWindow) {
if (focusedWindow)
focusedWindow.toggleDevTools();
}
},
]
},
{
label: 'Window',
role: 'window',
submenu: [
{
label: 'Minimize',
accelerator: 'CmdOrCtrl+M',
selector: 'performMiniaturize:'
role: 'minimize'
},
{
label: 'Close',
accelerator: 'CmdOrCtrl+W',
selector: 'performClose:'
role: 'close'
},
]
},
{
label: 'Help',
role: 'help',
submenu: [
{
label: 'Learn More',
click: function() { require('shell').openExternal('http://electron.atom.io') }
},
]
},
];
if (process.platform == 'darwin') {
var name = require('app').getName();
template.unshift({
label: name,
submenu: [
{
label: 'About ' + name,
role: 'about'
},
{
type: 'separator'
},
{
label: 'Bring All to Front',
selector: 'arrangeInFront:'
}
label: 'Services',
role: 'services',
submenu: []
},
{
type: 'separator'
},
{
label: 'Hide ' + name,
accelerator: 'Command+H',
role: 'hide'
},
{
label: 'Hide Others',
accelerator: 'Command+Shift+H',
role: 'hideothers:'
},
{
label: 'Show All',
role: 'unhide:'
},
{
type: 'separator'
},
{
label: 'Quit',
accelerator: 'Command+Q',
click: function() { app.quit(); }
},
]
},
{
label: 'Help',
submenu: []
}
];
});
// Window menu.
template[3].submenu.push(
{
type: 'separator'
},
{
label: 'Bring All to Front',
role: 'front'
}
);
}
menu = Menu.buildFromTemplate(template);
Menu.setApplicationMenu(menu);
</script>
```
## Class: Menu
### new Menu()
### `new Menu()`
새로운 메뉴를 생성합니다.
### Class Method: Menu.setApplicationMenu(menu)
### Methods
`menu` 클래스는 다음과 같은 메서드를 가지고 있습니다:
### `Menu.setApplicationMenu(menu)`
* `menu` Menu
지정한 `menu`를 이용하여 어플리케이션 메뉴를 만듭니다. OS X에선 상단바에 표시되며 Windows와 Linux에선 각 창의 상단에 표시됩니다.
지정한 `menu`어플리케이션 메뉴로 만듭니다. OS X에선 상단바에 표시되며 Windows와 Linux에선 각 창의 상단에 표시됩니다.
### Class Method: Menu.sendActionToFirstResponder(action)
### `Menu.sendActionToFirstResponder(action)` _OS X_
* `action` String
@ -185,7 +221,7 @@ Menu.setApplicationMenu(menu);
**참고:** 이 메서드는 OS X에서만 사용할 수 있습니다.
### Class Method: Menu.buildFromTemplate(template)
### `Menu.buildFromTemplate(template)`
* `template` Array
@ -193,57 +229,58 @@ Menu.setApplicationMenu(menu);
또한 `template`에는 다른 속성도 추가할 수 있으며 메뉴가 만들어질 때 해당 메뉴 아이템의 프로퍼티로 변환됩니다.
### Menu.popup(browserWindow, [x, y])
### `Menu.popup(browserWindow[, x, y])`
* `browserWindow` BrowserWindow
* `x` Number
* `y` Number
* `x` Number (optional)
* `y` Number (만약 `x`를 지정했을 경우 `y`도 필수로 지정해야 합니다)
메뉴를 `browserWindow` 안에서 팝업으로 표시합니다.
옵션으로 메뉴를 표시할 `(x,y)` 좌표를 임의로 지정할 수 있습니다. 따로 지정하지 않은 경우 마우스 커서 위치에 표시됩니다.
메뉴를 `browserWindow` 내부 팝업으로 표시합니다.
옵션으로 메뉴를 표시할 `(x,y)` 좌표를 지정할 수 있습니다.
따로 좌표를 지정하지 않은 경우 마우스 커서 위치에 표시됩니다.
### Menu.append(menuItem)
### `Menu.append(menuItem)`
* `menuItem` MenuItem
메뉴의 리스트 끝에 `menuItem`을 삽입합니다.
### Menu.insert(pos, menuItem)
### `Menu.insert(pos, menuItem)`
* `pos` Integer
* `menuItem` MenuItem
`pos` 위치에 `menuItem`을 삽입합니다.
### Menu.items
### `Menu.items()`
메뉴가 가지고 있는 메뉴 아이템들의 배열입니다.
## OS X 어플리케이션 메뉴에 대해 알아 둬야 할 것들
OS X에선 Windows, Linux와 달리 완전히 다른 어플리케이션 메뉴 스타일을 가지고 있습니다.
어플리케이션을 네이티브처럼 작동할 수 있도록 하기 위해 다음 몇 가지 유의 사항을 숙지해야 합니다.
그래서 어플리케이션을 네이티브처럼 작동할 수 있도록 하기 위해 다음 몇 가지 유의 사항을 숙지해야 합니다.
### 기본 메뉴
OS X엔 `Services``Windows`와 같은 많은 시스템 지정 기본 메뉴가 있습니다.
기본 메뉴를 만들려면 다음 중 하나를 메뉴의 라벨로 지정하기만 하면 됩니다.
기본 메뉴를 만들려면 반드시 다음 리스트 중 한 가지를 선택하여 메뉴의 `role`로 지정해야 합니다.
그러면 Electron이 자동으로 인식하여 해당 메뉴를 기본 메뉴로 만듭니다:
* `Window`
* `Help`
* `Services`
* `window`
* `help`
* `services`
### 기본 메뉴 아이템 동작
### 메뉴 아이템 기본 동작
OS X는 몇몇의 메뉴 아이템에 대해 `About xxx`, `Hide xxx`, `Hide Others`와 같은 기본 동작을 제공하고 있습니다. (`selector`라고 불립니다)
메뉴 아이템의 기본 동작을 지정하려면 메뉴 아이템의 `selector` 속성을 사용하면 됩니다.
OS X는 몇가지 메뉴 아이템에 대해 `About xxx`, `Hide xxx`, `Hide Others`와 같은 기본 동작을 제공하고 있습니다.
메뉴 아이템의 기본 동작을 지정하려면 반드시 메뉴 아이템의 `role` 속성을 지정해야 합니다.
### 메인 메뉴의 이름
OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번째 라벨은 언제나 어플리케이션의 이름이 됩니다.
어플리케이션 이름을 변경하려면 앱 번들내의 `Info.plist` 파일을 수정해야합니다.
자세한 내용은 [About Information Property List Files](https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html)을 참고하세요.
자세한 내용은 [About Information Property List Files][AboutInformationPropertyListFiles] 문서를 참고하세요.
## 메뉴 아이템 위치
@ -257,7 +294,7 @@ OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번
* `endof` - 이 아이템을 id의 논리 그룹에 맞춰서 각 그룹의 항목 뒤에 삽입합니다. (그룹은 분리자 아이템에 의해 만들어집니다)
만약 참조된 아이템의 분리자 그룹이 존재하지 않을 경우 지정된 id로 새로운 분리자 그룹을 만든 후 해당 그룹의 뒤에 삽입됩니다.
위치를 지정한 아이템의 뒤에 위치가 지정되지 않은 아이템이 있을 경우 해당 아이템의 위치가 지정되기 전까지 이전에 위치가 지정된 아이템의 위치 지정을 따릅니다.
위치를 지정한 아이템의 뒤에 위치가 지정되지 않은 아이템이 있을 경우 각 아이템의 위치가 지정되기 전까지 모든 아이템이 위치가 지정된 아이템의 뒤에 삽입됩니다.
이에 따라 위치를 이동하고 싶은 특정 그룹의 아이템들이 있을 경우 해당 그룹의 맨 첫번째 메뉴 아이템의 위치만을 지정하면 됩니다.
### 예제
@ -309,3 +346,5 @@ OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번
- 2
- 3
```
[AboutInformationPropertyListFiles]: https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html

View file

@ -1,15 +1,16 @@
# NativeImage
Electron은 파일 경로나 `NativeImage` 인스턴스를 전달하여 사용하는 이미지 API를 가지고 있습니다. `null`을 전달할 경우 빈 이미지가 사용됩니다.
Electron은 파일 경로 또는 `NativeImage` 인스턴스를 통해 이미지를 사용할 수 있는 API를 가지고 있습니다.
`null`을 전달할 경우 빈 이미지가 생성됩니다.
예를 들어 트레이 메뉴를 만들거나 윈도우의 아이콘을 설정할 때 다음과 같이 `문자열`파일 경로를 전달할 수 있습니다:
예를 들어 트레이 메뉴를 만들거나 윈도우의 아이콘을 설정할 때 다음과 같이 파일 경로를 전달하여 이미지를 사용할 수 있습니다:
```javascript
var appIcon = new Tray('/Users/somebody/images/icon.png');
var window = new BrowserWindow({icon: '/Users/somebody/images/window.png'});
```
또는 클립보드로부터 이미지를 읽어올 수 있습니다:
이 예제는 클립보드로부터 가져온 `NativeImage`로 트레이 메뉴를 생성합니다:
```javascript
var clipboard = require('clipboard');
@ -19,7 +20,8 @@ var appIcon = new Tray(image);
## 지원하는 포맷
현재 `PNG``JPEG` 포맷을 지원하고 있습니다. 손실 없는 이미지 압축과 투명도 지원을 위해 `PNG` 사용을 권장합니다.
현재 `PNG``JPEG` 이미지 포맷을 지원하고 있습니다.
손실 없는 이미지 압축과 투명도 지원을 위해 `PNG` 사용을 권장합니다.
그리고 Windows에서는 `ICO` 포맷도 사용할 수 있습니다.
@ -27,9 +29,9 @@ var appIcon = new Tray(image);
플랫폼이 high-DPI를 지원하는 경우 `@2x`와 같이 이미지의 파일명 뒤에 접미사를 추가하여 고해상도 이미지로 지정할 수 있습니다.
예를 들어 `icon.png` 라는 기본 해상도의 이미지를 기준으로 크기를 두 배로 늘린 이미지를 `icon@2x.png`와 같이 이름을 지정하면 고해상도 이미지로 처리됩니다.
예를 들어 `icon.png` 라는 기본 해상도의 이미지를 기준으로 크기를 두 배로 늘린 이미지를 `icon@2x.png` 처럼 지정하면 고해상도 이미지로 처리됩니다.
서로 다른 해상도(DPI)의 이미지를 지원하고 싶다면 다중 해상도의 이미지를 접미사를 붙여 한 폴더에 넣으면 됩니다. 이 이미지를 사용(로드)할 땐 접미사를 붙이지 않습니다:
서로 다른 해상도(DPI)의 이미지를 같이 지원하고 싶다면 다중 해상도의 이미지를 접미사를 붙여 한 폴더에 같이 넣으면 됩니다. 이 이미지를 사용(로드)할 땐 따로 접미사를 붙이지 않습니다:
```text
images/
@ -64,69 +66,79 @@ var appIcon = new Tray('/Users/somebody/images/icon.png');
가장 일반적으로 템플릿 이미지는 밝고 어두운 테마 색상으로 변경할 수 있는 메뉴 바 아이콘 등에 사용되고 있습니다.
템플릿 이미지는 Mac 운영체제만 지원합니다.
**참고:** 템플릿 이미지는 OS X 운영체제만 지원합니다.
템플릿 이미지를 지정하려면 다음 예제와 같이 파일명에 `Template` 문자열을 추가해야 합니다:
* `xxxTemplate.png`
* `xxxTemplate@2x.png`
## nativeImage.createEmpty()
## Methods
`NativeImage` 클래스는 다음과 같은 메서드를 가지고 있습니다:
### `NativeImage.createEmpty()`
`NativeImage` 인스턴스를 만듭니다.
## nativeImage.createFromPath(path)
### `NativeImage.createFromPath(path)`
* `path` String
`path`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다.
## nativeImage.createFromBuffer(buffer[, scaleFactor])
### `NativeImage.createFromBuffer(buffer[, scaleFactor])`
* `buffer` [Buffer][buffer]
* `scaleFactor` Double
* `scaleFactor` Double (optional)
`buffer`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다. `scaleFactor`는 1.0이 기본입니다.
## nativeImage.createFromDataUrl(dataUrl)
### `NativeImage.createFromDataUrl(dataUrl)`
* `dataUrl` String
`dataUrl`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다.
## Class: NativeImage
## Instance Methods
이미지를 표현한 클래스입니다.
`nativeImage` 인스턴스 객체에서 사용할 수 있는 메서드 입니다:
### NativeImage.toPng()
```javascript
var NativeImage = require('native-image');
var image = NativeImage.createFromPath('/Users/somebody/images/icon.png');
```
### `image.toPng()`
`PNG` 이미지를 인코딩한 데이터를 [Buffer][buffer]로 반환합니다.
### NativeImage.toJpeg(quality)
### `image.toJpeg(quality)`
* `quality` Integer (0 - 100 사이의 값)
* `quality` Integer 0 - 100 사이의 값 (**required**)
`JPEG` 이미지를 인코딩한 데이터를 [Buffer][buffer]로 반환합니다.
### NativeImage.toDataUrl()
### `image.toDataUrl()`
이미지의 data URL을 반환합니다.
이미지를 data URL로 반환합니다.
### NativeImage.isEmpty()
### `image.isEmpty()`
이미지가 비었는지를 체크합니다.
이미지가 비었는지 확인합니다.
### NativeImage.getSize()
### `image.getSize()`
이미지의 사이즈를 반환합니다.
### NativeImage.setTemplateImage(option)
### `image.setTemplateImage(option)`
* `option` Boolean
해당 이미지를 템플릿 이미지로 설정합니다.
### NativeImage.isTemplateImage()
### `image.isTemplateImage()`
이미지가 템플릿 이미지인지 확인합니다.

View file

@ -16,18 +16,22 @@ app.on('ready', function() {
});
```
## Event: suspend
## Events
`power-monitor` 모듈은 다음과 같은 이벤트를 가지고 있습니다:
## Event: `suspend`
시스템이 절전모드로 진입할 때 발생하는 이벤트입니다.
## Event: resume
## Event: `resume`
시스템의 절전모드가 해제될 때 발생하는 이벤트입니다.
## Event: on-ac
## Event: `on-ac`
시스템이 AC 어뎁터 충전기를 사용하기 시작할 때 발생하는 이벤트입니다.
## Event: on-battery
## Event: `on-battery`
시스템이 배터리를 사용하기 시작할 때 발생하는 이벤트입니다.

View file

@ -1,6 +1,6 @@
# power-save-blocker
# powerSaveBlocker
`power-save-blocker` 모듈은 시스템이 저전력 모드(슬립)로 진입하는 것을 막고 앱 및 화면이 항상 활성화되어 있는 상태를 만들 수 있도록 해줍니다.
`power-save-blocker` 모듈은 시스템이 저전력(슬립) 모드로 진입하는 것을 막고 앱 시스템과 화면이 항상 활성화 상태를 유지할 수 있도록 하는 몇가지 유틸리티를 제공하는 모듈입니다.
예제:
@ -13,31 +13,34 @@ console.log(powerSaveBlocker.isStarted(id));
powerSaveBlocker.stop(id);
```
## powerSaveBlocker.start(type)
## Methods
`powerSaveBlocker` 모듈은 다음과 같은 메서드를 가지고 있습니다:
### `powerSaveBlocker.start(type)`
* `type` String - Power save blocker 종류
* `prevent-app-suspension` - 저전력 모드 등으로 인한 어플리케이션 작동 중단을 방지합니다.
시스템을 항시 활성화 상태로 만듭니다, 하지만 화면은 자동으로 꺼질 수 있습니다. 사용 예시: 파일 다운로드, 음악 재생 등.
시스템을 항시 활성화 상태로 만듭니다. 하지만 화면은 자동으로 꺼질 수 있습니다. 사용 예시: 파일 다운로드, 음악 재생 등.
* `prevent-display-sleep`- 슬립 모드 등으로 인한 어플리케이션의 작동 중단을 방지합니다.
시스템을 항시 활성화 상태로 만들고 슬립 모드(화면 꺼짐)를 방지합니다. 사용 예시: 비디오 재생 등.
Power save blocker를 시작하고 시스템이 저전력 모드(슬립)로 진입하는 것을 막니다. 정수로 된 식별 ID를 반환합니다.
시스템이 저전력 모드(슬립)로 진입하는 것을 막기 시작합니다. 정수로 된 식별 ID를 반환합니다.
**참고:**
`prevent-display-sleep` 모드는 `prevent-app-suspension` 보다 우선순위가 높습니다.
가장 높은 우선순위의 모드만 작동합니다. 다시 말해 `prevent-display-sleep` 모드는 언제나 `prevent-app-suspension` 모드의 효과를 덮어씌웁니다.
**참고:** `prevent-display-sleep` 모드는 `prevent-app-suspension` 보다 우선 순위가 높습니다.
두 모드 중 가장 높은 우선 순위의 모드만 작동합니다. 다시 말해 `prevent-display-sleep` 모드는 언제나 `prevent-app-suspension` 모드의 효과를 덮어씌웁니다.
예를 들어 A-요청이 `prevent-app-suspension` 모드를 사용하고 B-요청이 `prevent-display-sleep`를 사용하는 API 호출이 있었다 치면
`prevent-display-sleep` 모드를 사용하는 B의 작동이 중단(stop)되기 전까지 작동하다 B가 중단되면 `prevent-app-suspension` 모드를 사용하는 A가 작동하기 시작합니다.
## powerSaveBlocker.stop(id)
### `powerSaveBlocker.stop(id)`
* `id` Integer - `powerSaveBlocker.start`로 부터 반환되는 power save blocker 식별 ID.
설정한 power save blocker를 중지합니다.
## powerSaveBlocker.isStarted(id)
### `powerSaveBlocker.isStarted(id)`
* `id` Integer - `powerSaveBlocker.start`로 부터 반환되는 power save blocker 식별 ID.
해당하는 id의 `powerSaveBlocker`가 실행중인지 확인합니다.
지정한 id의 `powerSaveBlocker`가 실행 중인지 확인합니다.

View file

@ -1,4 +1,4 @@
# 프로세스 객체
# process
Electron의 `process` 객체는 기존의 node와는 달리 약간의 차이점이 있습니다:
@ -7,11 +7,15 @@ Electron의 `process` 객체는 기존의 node와는 달리 약간의 차이점
* `process.versions['chrome']` String - Chromium의 버전.
* `process.resourcesPath` String - JavaScript 소스코드의 경로.
## process.hang
## Methods
`process` 객체는 다음과 같은 메서드를 가지고 있습니다:
### `process.hang()`
현재 프로세스의 주 스레드를 중단시킵니다.
## process.setFdLimit(maxDescriptors) _OS X_ _Linux_
### `process.setFdLimit(maxDescriptors)` _OS X_ _Linux_
* `maxDescriptors` Integer

View file

@ -2,7 +2,7 @@
`protocol` 모듈은 이미 있는 프로토콜의 동작을 가로채거나 새로운 프로토콜을 만들 수 있는 기능을 제공합니다.
다음 예제는 `file://` 프로토콜과 같은 일을 하는 커스텀 프로토콜을 설정합니다:
다음 예제는 `file://` 프로토콜과 비슷한 일을 하는 커스텀 프로토콜을 설정합니다:
```javascript
var app = require('app');
@ -20,24 +20,28 @@ app.on('ready', function() {
});
```
**참고:** 이 모듈은 `ready` 이벤트가 호출된 이후에만 사용할 수 있습니다.
**참고:** 이 모듈은 `app` 모듈의 `ready` 이벤트가 발생한 이후에만 사용할 수 있습니다.
## protocol.registerStandardSchemes(schemes)
## Methods
`protocol` 모듈은 다음과 같은 메서드를 가지고 있습니다:
### `protocol.registerStandardSchemes(schemes)`
* `schemes` Array - 표준 스킴으로 등록할 커스텀 스킴 리스트
표준 스킴의 형식은 RFC 3986 [일반 URI 구문](https://tools.ietf.org/html/rfc3986#section-3) 표준을 따릅니다.
표준 `scheme`의 형식은 RFC 3986 [일반 URI 구문](https://tools.ietf.org/html/rfc3986#section-3) 표준을 따릅니다.
이 형식은 `file:``filesystem:`을 포함합니다.
## protocol.registerFileProtocol(scheme, handler[, completion])
### `protocol.registerFileProtocol(scheme, handler[, completion])`
* `scheme` String
* `handler` Function
* `completion` Function
* `completion` Function (optional)
`scheme`에 파일을 응답으로 보내는 프로토콜을 등록합니다.
`handler``request`가 `scheme`와 함께 생성될 때 `handler(request, callback)` 형식으로 호출됩니다.
`completion``scheme`가 성공적으로 등록되었을 때 `completion(null)` 형식으로 호출되고
`handler``scheme`와 함께 `request` 생성될 때 `handler(request, callback)` 형식으로 호출됩니다.
`completion` 콜백`scheme`가 성공적으로 등록되었을 때 `completion(null)` 형식으로 호출되고
등록에 실패했을 땐 `completion(error)` 형식으로 에러 내용을 담아 호출됩니다.
`request`를 처리할 때 반드시 파일 경로 또는 `path` 속성을 포함하는 객체를 인자에 포함하여 `callback`을 호출해야 합니다.
@ -45,16 +49,16 @@ app.on('ready', function() {
만약 `callback`이 아무 인자도 없이 호출되거나 숫자나 `error` 프로퍼티를 가진 객체가 인자로 전달될 경우
`request`는 지정한 `error` 코드(숫자)를 출력합니다.
사용할 수 있는 에러 코드는 다음 링크에서 확인할 수 있습니다: https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h
사용할 수 있는 에러 코드는 [네트워크 에러 목록](https://code.google.com/p/chromium/codesearch#chromium/src/net/base/net_error_list.h)에서 확인할 수 있습니다.
기본적으로 스킴`http:`와 같이 처리됩니다. `file:`과 같이 "일반적인 URI 문법"과는 다르게 인식되는 프로토콜은
기본적으로 `scheme``http:`와 같이 처리됩니다. `file:`과 같이 "일반적인 URI 문법"과는 다르게 인식되는 프로토콜은
`protocol.registerStandardSchemes`을 사용하여 표준 스킴으로 처리되도록 할 수 있습니다.
## protocol.registerBufferProtocol(scheme, handler[, completion])
### `protocol.registerBufferProtocol(scheme, handler[, completion])`
* `scheme` String
* `handler` Function
* `completion` Function
* `completion` Function (optional)
`scheme``Buffer`를 응답으로 보내는 프로토콜을 등록합니다.
반드시 `Buffer` 또는 `data`, `mimeType`, `chart` 속성을 포함한 객체 중 하나를 인자에 포함하여 `callback`을 호출해야 합니다.
@ -70,76 +74,75 @@ protocol.registerBufferProtocol('atom', function(request, callback) {
});
```
## protocol.registerStringProtocol(scheme, handler[, completion])
### `protocol.registerStringProtocol(scheme, handler[, completion])`
* `scheme` String
* `handler` Function
* `completion` Function
* `completion` Function (optional)
`scheme``문자열` 응답으로 보내는 프로토콜을 등록합니다.
`scheme``문자열` 응답으로 보내는 프로토콜을 등록합니다.
반드시 `문자열` 또는 `data`, `mimeType`, `chart` 속성을 포함한 객체 중 하나를 인자에 포함하여 `callback`을 호출해야 합니다.
## protocol.registerHttpProtocol(scheme, handler[, completion])
### `protocol.registerHttpProtocol(scheme, handler[, completion])`
* `scheme` String
* `handler` Function
* `completion` Function
* `completion` Function (optional)
`scheme`에 HTTP 요청을 응답으로 보내는 프로토콜을 등록합니다.
반드시 `url`, `method`, `referer`, `session` 속성을 포함하는 객체를 인자에 포함하여 `callback`을 호출해야 합니다.
기본적으로 HTTP 요청은 현재 세션을 재사용합니다. 만약 서로 다른 세션에 요청을 보내고 싶으면 `session``null`로 지정해야 합니다.
## protocol.unregisterProtocol(scheme[, completion])
### `protocol.unregisterProtocol(scheme[, completion])`
* `scheme` String
* `completion` Function
* `completion` Function (optional)
`scheme`의 커스텀 프로토콜 등록을 해제합니다.
## protocol.isProtocolHandled(scheme, callback)
### `protocol.isProtocolHandled(scheme, callback)`
* `scheme` String
* `callback` Function
`scheme`에 동작(handler)이 등록되어 있는지 여부를 확인합니다. `callback`으로 결과(boolean)가 반환됩니다.
## protocol.interceptFileProtocol(scheme, handler[, completion])
### `protocol.interceptFileProtocol(scheme, handler[, completion])`
* `scheme` String
* `handler` Function
* `completion` Function
* `completion` Function (optional)
`scheme` 프로토콜을 가로채고 `handler`를 파일 전송에 대한 새로운 동작으로 사용합니다.
## protocol.interceptStringProtocol(scheme, handler[, completion])
### `protocol.interceptStringProtocol(scheme, handler[, completion])`
* `scheme` String
* `handler` Function
* `completion` Function
* `completion` Function (optional)
`scheme` 프로토콜을 가로채고 `handler`를 문자열 전송에 대한 새로운 동작으로 사용합니다.
## protocol.interceptBufferProtocol(scheme, handler[, completion])
### `protocol.interceptBufferProtocol(scheme, handler[, completion])`
* `scheme` String
* `handler` Function
* `completion` Function
* `completion` Function (optional)
`scheme` 프로토콜을 가로채고 `handler``Buffer` 전송에 대한 새로운 동작으로 사용합니다.
## protocol.interceptHttpProtocol(scheme, handler[, completion])
### `protocol.interceptHttpProtocol(scheme, handler[, completion])`
* `scheme` String
* `handler` Function
* `completion` Function
* `completion` Function (optional)
`scheme` 프로토콜을 가로채고 `handler`를 HTTP 프로토콜의 요청에 대한 새로운 동작으로 사용합니다.
## protocol.uninterceptProtocol(scheme[, completion])
### `protocol.uninterceptProtocol(scheme[, completion])`
* `scheme` String
* `completion` Function
* `completion` Function (optional)
가로챈 `scheme`를 삭제하고 기본 핸들러로 복구합니다.

View file

@ -1,10 +1,10 @@
# remote
`remote` 모듈은 메인 프로세스와 랜더러 프로세스 사이에 inter-process 통신을 간단하게 추상화 한 모듈입니다.
`remote` 모듈은 메인 프로세스와 랜더러 프로세스(웹 페이지) 사이의 inter-process (IPC) 통신을 간단하게 추상화 한 모듈입니다.
Electron의 랜더러 프로세스에선 GUI와 관련 없는 모듈만 사용할 수 있습니다.
기본적으로 랜더러 프로세스에서 메인 프로세스의 API를 사용하려면 inter-process 통신을 사용해야 합니다.
하지만 `remote` 모듈을 사용하면 따로 inter-process 통신을 사용하지 않고 직접 명시적으로 사용할 수 있습니다.
기본적으로 랜더러 프로세스에서 메인 프로세스의 API를 사용하려면 메인 프로세스와 inter-process 통신을 해야 합니다.
하지만 `remote` 모듈을 사용하면 따로 inter-process 통신을 하지 않고 직접 명시적으로 모듈을 사용할 수 있습니다.
Java의 [RMI](http://en.wikipedia.org/wiki/Java_remote_method_invocation)와 개념이 비슷합니다.
다음 예제는 랜더러 프로세스에서 브라우저 창을 만드는 예제입니다:
@ -12,11 +12,12 @@ Java의 [RMI](http://en.wikipedia.org/wiki/Java_remote_method_invocation)와 개
```javascript
var remote = require('remote');
var BrowserWindow = remote.require('browser-window');
var win = new BrowserWindow({ width: 800, height: 600 });
win.loadUrl('https://github.com');
```
**참고:** 반대로 하려면(메인 프로세스에서 랜더러 프로세스에 접근) [webContents.executeJavascript](browser-window.md#webcontents-executejavascript-code) API를 사용하면 됩니다.
**참고:** 반대로 메인 프로세스에서 랜더러 프로세스에 접근 하려면 [webContents.executeJavascript](browser-window.md#webcontents-executejavascript-code) 메서드를 사용하면 됩니다.
## Remote 객체
@ -26,7 +27,7 @@ Remote 모듈의 메서드를 호출하거나, 객체에 접근하거나, 생성
위의 예제에서 사용한 두 `BrowserWindow``win`은 remote 객체입니다. 그리고 `new BrowserWindow`이 생성하는 `BrowserWindow` 객체는 랜더러 프로세스에서 생성되지 않습니다.
대신에 이 `BrowserWindow` 객체는 메인 프로세스에서 생성되며 랜더러 프로세스에 `win` 객체와 같이 이에 대응하는 remote 객체를 반환합니다.
## Remote 객체의
## Remote 객체의 생명 주기
Electron은 랜더러 프로세스의 remote 객체가 살아있는 한(다시 말해서 GC(garbage collection)가 일어나지 않습니다) 대응하는 메인 프로세스의 객체는 릴리즈되지 않습니다.
Remote 객체가 GC 되려면 대응하는 메인 프로세스 내부 객체의 참조가 해제되어야만 합니다.
@ -54,10 +55,12 @@ exports.withRendererCallback = function(mapper) {
exports.withLocalCallback = function() {
return exports.mapNumbers(function(x) {
return x + 1;
return x + 1;
});
}
```
```javascript
// 랜더러 프로세스
var mapNumbers = require("remote").require("mapNumbers");
@ -80,6 +83,7 @@ console.log(withRendererCb, withLocalCb) // [true, true, true], [2, 3, 4]
```javascript
var remote = require('remote');
remote.getCurrentWindow().on('close', function() {
// blabla...
});
@ -94,26 +98,30 @@ remote.getCurrentWindow().on('close', function() {
이러한 문제를 피하려면 랜더러 프로세스에서 메인 프로세스로 넘긴 함수의 참조를 사용 후 확실하게 제거해야 합니다.
작업 후 이벤트 콜백을 포함하여 책임 있게 함수의 참조를 제거하거나 메인 프로세스에서 랜더러 프로세스가 종료될 때 내부적으로 함수 참조를 제거하도록 설계해야 합니다.
## remote.require(module)
## Methods
`remote` 모듈은 다음과 같은 메서드를 가지고 있습니다:
### `remote.require(module)`
* `module` String
메인 프로세스의 `require(module)` API를 실행한 후 결과 객체를 반환합니다.
## remote.getCurrentWindow()
### `remote.getCurrentWindow()`
현재 웹 페이지가 들어있는 [BrowserWindow](browser-window.md) 객체를 반환합니다.
현재 웹 페이지가 들어있는 [`BrowserWindow`](browser-window.md) 객체를 반환합니다.
## remote.getCurrentWebContents()
### `remote.getCurrentWebContents()`
현재 웹 페이지의 WebContents 객체를 반환합니다.
현재 웹 페이지의 [`WebContents`](web-contents.md) 객체를 반환합니다.
## remote.getGlobal(name)
### `remote.getGlobal(name)`
* `name` String
메인 프로세스의 전역 변수(`name`)를 가져옵니다. (예시: `global[name]`)
## remote.process
### `remote.process`
메인 프로세스의 `process` 객체를 반환합니다. `remote.getGlobal('process')`와 같습니다. 하지만 캐시 됩니다.

View file

@ -5,8 +5,8 @@
`screen`은 [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)를 상속 받았습니다.
한가지 주의할 점은 랜더러 / DevTools에선 이 모듈의 이름인 `screen`은 이미 DOM 속성에 `window.screen`로 존재 하므로 `screen = require('screen')`
사용할 수 없습니다. 밑의 예제와 같이 `atomScreen`등의 이름으로 변수 이름을 대체하여 사용해야 합니다.
**참고:** 랜더러 / DevTools에선 이미 DOM 속성이 `window.screen`을 가지고 있으므로 `screen = require('screen')` 형식으로 모듈을 사용할 수 없습니다.
밑의 예제와 같이 `atomScreen` 같은 이름으로 모듈 이름을 대체하여 사용해야 합니다.
다음 예제는 화면 전체를 채우는 윈도우 창을 생성합니다:
@ -51,43 +51,57 @@ app.on('ready', function() {
});
```
## Event: display-added
## Events
`screen` 모듈은 다음과 같은 이벤트를 가지고 있습니다:
### Event: 'display-added'
Returns:
* `event` Event
* `newDisplay` Object
새로운 디스플레이가 추가되면 발생하는 이벤트입니다.
## Event: display-removed
### Event: 'display-removed'
Returns:
* `event` Event
* `oldDisplay` Object
기존의 디스플레이가 제거되면 발생하는 이벤트입니다.
## Event: display-metrics-changed
### Event: 'display-metrics-changed'
Returns:
* `event` Event
* `display` Object
* `changedMetrics` Array
`display` 하나 또는 다수의 매트릭스가 변경될 때 발생하는 이벤트입니다.
`display`에서 하나 또는 다수의 매트릭스가 변경될 때 발생하는 이벤트입니다.
`changedMetrics`는 변경에 대한 정보를 담은 문자열의 배열입니다.
`bounds`, `workArea`, `scaleFactor`, `rotation`등이 변경될 수 있습니다.
## screen.getCursorScreenPoint()
## Methods
`screen` 모듈은 다음과 같은 메서드를 가지고 있습니다:
### `screen.getCursorScreenPoint()`
현재 마우스 포인터의 절대 위치를 반환합니다.
## screen.getPrimaryDisplay()
### `screen.getPrimaryDisplay()`
기본 디스플레이를 반환합니다.
## screen.getAllDisplays()
### `screen.getAllDisplays()`
사용 가능한 모든 디스플레이를 배열로 반환합니다.
## screen.getDisplayNearestPoint(point)
### `screen.getDisplayNearestPoint(point)`
* `point` Object
* `x` Integer
@ -95,7 +109,7 @@ app.on('ready', function() {
지정한 좌표에 가까운 디스플레이를 반환합니다.
## screen.getDisplayMatching(rect)
### `screen.getDisplayMatching(rect)`
* `rect` Object
* `x` Integer

View file

@ -1,34 +1,39 @@
# shell
`shell` 모듈은 데스크톱 환경 통합에 관련하여 제공되는 모듈입니다.
`shell` 모듈은 데스크톱 환경 통합에 관련한 유틸리티를 제공하는 모듈입니다.
다음 예제는 기본 브라우저로 설정된 URL을 엽니다:
다음 예제는 설정된 URL을 유저의 기본 브라우저로 엽니다:
```javascript
var shell = require('shell');
shell.openExternal('https://github.com');
```
## shell.showItemInFolder(fullPath)
## Methods
`shell` 모듈은 다음과 같은 메서드를 가지고 있습니다:
### `shell.showItemInFolder(fullPath)`
* `fullPath` String
지정한 파일을 탐색기에서 보여줍니다. 가능한 경우 탐색기 내에서 파일을 선택합니다.
## shell.openItem(fullPath)
### `shell.openItem(fullPath)`
* `fullPath` String
지정한 파일을 데스크톱 기본 프로그램으로 엽니다.
## shell.openExternal(url)
### `shell.openExternal(url)`
* `url` String
제공된 외부 프로토콜 URL을 기반으로 데스크톱의 기본 프로그램으로 엽니다. (예를 들어 mailto: URL은 해당 URL을 기본 메일 에이전트로 엽니다.)
제공된 외부 프로토콜 URL을 기반으로 데스크톱의 기본 프로그램으로 엽니다. (예를 들어 mailto: URL은 유저의 기본 이메일 에이전트로 URL을 엽니다.)
역주: 폴더는 'file:\\\\C:\\'와 같이 지정하여 열 수 있습니다. (`\\`로 경로를 표현한 이유는 Escape 문자열을 참고하세요.)
## shell.moveItemToTrash(fullPath)
### `shell.moveItemToTrash(fullPath)`
* `fullPath` String
@ -36,6 +41,6 @@ Move the given file to trash and returns boolean status for the operation.
지정한 파일을 휴지통으로 이동합니다. 작업의 성공여부를 boolean 형으로 리턴합니다.
## shell.beep()
### `shell.beep()`
비프음을 재생합니다.

View file

@ -1,14 +1,15 @@
# 개요
Electron은 모든 [node.js's built-in 모듈](http://nodejs.org/api/)과 third-party node 모듈을 완벽하게 지원합니다. ([네이티브 모듈](../tutorial/using-native-node-modules.md) 포함해서)
Electron은 모든 [Node.js의 built-in 모듈](http://nodejs.org/api/)과 third-party node 모듈을 완벽하게 지원합니다. ([네이티브 모듈](../tutorial/using-native-node-modules.md) 포함)
Electron은 네이티브 데스크톱 어플리케이션을 개발 할 수 있도록 추가적인 built-in 모듈을 제공합니다.
몇몇 모듈은 메인 프로세스에서만 사용할 수 있고 어떤 모듈은 랜더러 프로세스에서만 사용할 수 있습니다. 또한 두 프로세스 모두 사용할 수 있는 모듈도 있습니다.
기본적인 규칙은 다음과 같습니다: GUI와 저 수준 시스템에 관련된 모듈은 오직 메인 프로세스에서만 사용할 수 있습니다.
[메인 프로세스 vs. 랜더러 프로세스](../tutorial/quick-start.md#메인 프로세스) 컨셉에 익숙해야 이 모듈들을 사용하기 쉬우므로 해당 문서를 정독하는 것을 권장합니다.
몇몇 모듈은 메인 프로세스에서만 사용할 수 있고 어떤 모듈은 랜더러 프로세스(웹 페이지)에서만 사용할 수 있습니다.
또한 두 프로세스 모두 사용할 수 있는 모듈도 있습니다.
기본적인 규칙으로 [GUI](https://en.wikipedia.org/wiki/Graphical_user_interface)와 저 수준 시스템에 관련된 모듈들은 오직 메인 프로세스에서만 사용할 수 있습니다.
[메인 프로세스 vs. 랜더러 프로세스](../tutorial/quick-start.md#메인 프로세스) 컨셉에 익숙해야 이 모듈들을 사용하기 쉬우므로 관련 문서를 읽어 보는 것을 권장합니다.
메인 프로세스 스크립트는 일반 `node.js` 스크립트와 같습니다:
메인 프로세스 스크립트는 일반 Node.js 스크립트와 비슷합니다:
```javascript
var app = require('app');
@ -22,7 +23,7 @@ app.on('ready', function() {
});
```
웹 페이지 역시 예외적인 node module을 사용할 수 있다는 점을 제외하면 일반 웹 페이지와 다를게 없습니다:
랜더러 프로세스도 예외적인 node module들을 사용할 수 있다는 점을 제외하면 일반 웹 페이지와 크게 다를게 없습니다:
```html
<!DOCTYPE html>

View file

@ -1,6 +1,6 @@
# Tray
`Tray`는 OS의 알림영역에 아이콘을 표시합니다. 보통 컨텍스트 메뉴(context menu)를 같이 사용합니다.
`Tray`는 OS의 알림 영역에 아이콘을 표시합니다. 보통 컨텍스트 메뉴(context menu)를 같이 사용합니다.
```javascript
var app = require('app');
@ -29,19 +29,25 @@ __플랫폼별 한계:__
* 앱 알림 표시기는 컨텍스트 메뉴를 가지고 있을 때만 보입니다.
* Linux에서 앱 알림 표시기가 사용될 경우, `clicked` 이벤트는 무시됩니다.
이러한 이유로 만약 Tray API가 모든 플랫폼에서 똑같이 작동하게 하고 싶다면, 설계시 `clicked` 이벤트에 의존하지 말아야합니다.
그리고 언제나 컨텍스트 메뉴를 포함해서 사용해야 합니다.
이러한 이유로 Tray API가 모든 플랫폼에서 똑같이 작동하게 하고 싶다면 `clicked` 이벤트에 의존해선 안됩니다.
그리고 언제나 컨텍스트 메뉴를 포함해야 합니다.
## Class: Tray
`Tray`는 [EventEmitter][event-emitter]를 상속 받았습니다.
### new Tray(image)
### `new Tray(image)`
* `image` [NativeImage](native-image.md)
전달된 `image`를 이용하여 트레이 아이콘을 만듭니다.
## Events
`Tray` 모듈은 다음과 같은 이벤트를 가지고 있습니다:
**참고:** 몇가지 이벤트는 특정한 플랫폼에서만 작동합니다.
### Event: 'clicked'
* `event` Event
@ -57,9 +63,9 @@ __플랫폼별 한계:__
트레이 아이콘이 클릭될 때 발생하는 이벤트입니다.
__주의:__ `bounds`는 OS X 와 Windows 7 이후 버전에서만 작동합니다.
__주의:__ `bounds`는 OS X 와 Windows에서만 작동합니다.
### Event: 'right-clicked'
### Event: 'right-clicked' _OS X_ _Windows_
* `event` Event
* `altKey` Boolean
@ -74,9 +80,7 @@ __주의:__ `bounds`는 OS X 와 Windows 7 이후 버전에서만 작동합니
트레이 아이콘을 오른쪽 클릭될 때 호출 됩니다.
__주의:__ 이 기능은 OS X 와 Windows 운영체제에서만 작동합니다.
### Event: 'double-clicked'
### Event: 'double-clicked' _OS X_ _Windows_
* `event` Event
* `altKey` Boolean
@ -91,76 +95,66 @@ __주의:__ 이 기능은 OS X 와 Windows 운영체제에서만 작동합니다
트레이 아이콘이 더블 클릭될 때 발생하는 이벤트입니다.
__주의:__ 이 기능은 OS X 와 Windows 운영체제에서만 작동합니다.
### Event: 'balloon-show'
### Event: 'balloon-show' _Windows_
알림풍선이 보여질 때 발생하는 이벤트입니다.
__주의:__ 이 기능은 Windows에서만 작동합니다.
### Event: 'balloon-clicked'
### Event: 'balloon-clicked' _Windows_
알림풍선이 클릭될 때 발생하는 이벤트입니다.
__주의:__ 이 기능은 Windows에서만 작동합니다.
### Event: 'balloon-closed'
### Event: 'balloon-closed' _Windows_
알림풍선이 시간이 지나 사라지거나 유저가 클릭하여 닫을 때 발생하는 이벤트입니다.
__주의:__ 이 기능은 Windows에서만 작동합니다.
### Event: 'drop-files'
### Event: 'drop-files' _OS X_
* `event`
* `files` Array - 드롭된 파일의 경로
트레이 아이콘에 파일이 드롭되면 발생하는 이벤트입니다.
__주의:__ 이 기능은 OS X에서만 작동합니다.
## Methods
### Tray.destroy()
`Tray` 모듈은 다음과 같은 메서드를 가지고 있습니다:
**참고:** 몇가지 메서드는 특정한 플랫폼에서만 작동합니다.
### `Tray.destroy()`
트레이 아이콘을 즉시 삭제시킵니다.
### Tray.setImage(image)
### `Tray.setImage(image)`
* `image` [NativeImage](native-image.md)
`image`를 사용하여 트레이 아이콘의 이미지를 설정합니다.
### Tray.setPressedImage(image)
### `Tray.setPressedImage(image)` _OS X_
* `image` [NativeImage](native-image.md)
`image`를 사용하여 트레이 아이콘이 눌렸을 때의 이미지를 설정합니다.
__주의:__ 이 기능은 OS X에서만 작동합니다.
### Tray.setToolTip(toolTip)
### `Tray.setToolTip(toolTip)`
* `toolTip` String
트레이 아이콘의 툴팁 텍스트를 설정합니다.
### Tray.setTitle(title)
### `Tray.setTitle(title)` _OS X_
* `title` String
상태바에서 트레이 아이콘 옆에 표시되는 제목 텍스트를 설정합니다.
__주의:__ 이 기능은 OS X에서만 작동합니다.
### Tray.setHighlightMode(highlight)
### `Tray.setHighlightMode(highlight)` _OS X_
* `highlight` Boolean
트레이 아이콘을 클릭했을 때 하이라이트 될지 설정합니다.
__주의:__ 이 기능은 OS X에서만 작동합니다.
### Tray.displayBalloon(options)
### `Tray.displayBalloon(options)` _Windows_
* `options` Object
* `icon` [NativeImage](native-image.md)
@ -169,19 +163,15 @@ __주의:__ 이 기능은 OS X에서만 작동합니다.
트레이에 알림풍선을 생성합니다.
__주의:__ 이 기능은 Windows에서만 작동합니다.
### `Tray.popContextMenu([position])` _OS X_ _Windows_
### Tray.popContextMenu([position])
* `position` Object - 팝 메뉴 위치
* `position` Object (optional) - 팝업 메뉴 위치
* `x` Integer
* `y` Integer
`position`은 Windows에서만 사용할 수 있으며 기본값은 (0, 0)입니다.
__주의:__ 이 기능은 Windows 와 OS X에서만 작동합니다.
### Tray.setContextMenu(menu)
### `Tray.setContextMenu(menu)`
* `menu` Menu

View file

@ -9,7 +9,7 @@
* Clang 3.4 또는 최신 버전
* GTK+ 와 libnotify의 개발용 헤더
Ubuntu를 사용하고 있다면 다음 커맨드로 설치하면 합니다:
Ubuntu를 사용하고 있다면 다음과 같이 라이브러리를 설치해야 합니다:
```bash
$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \
@ -18,7 +18,15 @@ $ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \
libxss1 libnss3-dev gcc-multilib g++-multilib
```
다른 배포판의 경우 yum과 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다. 패키지의 이름은 대부분 비슷할 것입니다.
Fedora를 사용하고 있다면 다음과 같이 라이브러리를 설치해야 합니다:
```bash
$ sudo yum install clang dbus-devel gtk2-devel libnotify-devel libgnome-keyring-devel \
xorg-x11-server-utils libcap-devel cups-devel libXtst-devel \
alsa-lib-devel libXrandr-devel GConf2-devel nss-devel
```
다른 배포판의 경우 pacman 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다. 패키지의 이름은 대부분 위 예시와 비슷할 것입니다.
또는 소스코드를 내려받아 직접 빌드하는 방법도 있습니다.
## 가상머신을 사용하여 빌드 하는 경우

View file

@ -24,7 +24,7 @@ var app = require('app');
app.addRecentDocument('/Users/USERNAME/Desktop/work.type');
```
그리고 [app.clearRecentDocuments](clearrecentdocuments) API로 최근 문서 리스트를 비울 수 있습니다:
그리고 [app.clearRecentDocuments][clearrecentdocuments] API로 최근 문서 리스트를 비울 수 있습니다:
```javascript
app.clearRecentDocuments();

View file

@ -7,12 +7,8 @@
> ChromeDriver는 Chromium의 WebDriver wire 프로토콜 스텐드얼론 서버 구현입니다.
> Chromium 과 WebDriver 팀 멤버에 의해 개발되었습니다.
Electron의 [releases](https://github.com/atom/electron/releases) 페이지에서 `chromedriver` 릴리즈 압축파일을 찾을 수 있습니다.
`chromedriver`의 Electron 배포판과 upstream과의 차이는 없습니다.
`chromedriver`와 Electron을 함께 사용하려면 몇가지 설정이 필요합니다.
또한 releases에는 `chromedriver`를 포함하여 주 버전만 업데이트 됩니다. (예시: `vX.X.0` releases)
왜냐하면 `chromedriver`는 Electron 자체에서 자주 업데이트하지 않기 때문입니다.
Electron과 `chromedriver`를 같이 사옹하려면 드라이버에서 Electron을 찾을 수 있도록 해야 하고
Electron은 Chrome 브라우저와 비슷하다는 점을 기억해야 합니다.
## WebDriverJs 설정하기