Merge pull request #2690 from preco21/master
Fix mistranslation, update as upstream
This commit is contained in:
commit
c56b78f0fa
17 changed files with 387 additions and 268 deletions
|
@ -17,7 +17,7 @@
|
||||||
## API 레퍼런스
|
## API 레퍼런스
|
||||||
|
|
||||||
* [개요](api/synopsis.md)
|
* [개요](api/synopsis.md)
|
||||||
* [프로세스 객체](api/process.md)
|
* [process](api/process.md)
|
||||||
* [크롬 Command-Line 스위치 지원](api/chrome-command-line-switches.md)
|
* [크롬 Command-Line 스위치 지원](api/chrome-command-line-switches.md)
|
||||||
|
|
||||||
커스텀 DOM elements:
|
커스텀 DOM elements:
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# global-shortcut
|
# global-shortcut
|
||||||
|
|
||||||
`global-shortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을 제공합니다.
|
`global-shortcut` 모듈은 운영체제의 전역 키보드 단축키를 등록/해제 하는 방법을 제공합니다.
|
||||||
이 모듈을 사용하여 사용자가 다양한 단축키 작업을 할 수 있도록 단축키를 정의 할 수 있습니다.
|
이 모듈을 사용하여 사용자가 다양한 작업을 편하게 할 수 있도록 단축키를 정의 할 수 있습니다.
|
||||||
|
|
||||||
**참고:** 등록된 단축키는 어플리케이션이 백그라운드로 작동(창이 포커스 되지 않음) 할 때도 계속해서 작동합니다.
|
**참고:** 등록된 단축키는 어플리케이션이 백그라운드로 작동(창이 포커스 되지 않음) 할 때도 계속해서 작동합니다.
|
||||||
이 모듈은 `app` 모듈의 `ready` 이벤트 이전에 사용할 수 없습니다.
|
이 모듈은 `app` 모듈의 `ready` 이벤트 이전에 사용할 수 없습니다.
|
||||||
|
|
|
@ -1,12 +1,18 @@
|
||||||
# menu-item
|
# MenuItem
|
||||||
|
|
||||||
|
`menu-item` 모듈은 어플리케이션 또는 컨텐츠 [`menu`](menu.md)에 아이템을 추가할 수 있도록 관련 클래스를 제공합니다.
|
||||||
|
|
||||||
|
[`menu`](menu.md)에서 예제를 확인할 수 있습니다.
|
||||||
|
|
||||||
## Class: MenuItem
|
## Class: MenuItem
|
||||||
|
|
||||||
|
`MenuItem` 인스턴스 객체에서 사용할 수 있는 메서드입니다:
|
||||||
|
|
||||||
### new MenuItem(options)
|
### new MenuItem(options)
|
||||||
|
|
||||||
* `options` Object
|
* `options` Object
|
||||||
* `click` Function - 메뉴 아이템이 클릭될 때 호출되는 콜백 함수
|
* `click` Function - 메뉴 아이템이 클릭될 때 `click(menuItem, browserWindow)` 형태로 호출 되는 콜백 함수
|
||||||
* `selector` String - First Responder가 클릭될 때 호출 되는 선택자 (OS X 전용)
|
* `role` String - 메뉴 아이템의 액션을 정의합니다. 이 속성을 지정하면 `click` 속성이 무시됩니다.
|
||||||
* `type` String - `MenuItem`의 타입 `normal`, `separator`, `submenu`, `checkbox` 또는 `radio` 사용가능
|
* `type` String - `MenuItem`의 타입 `normal`, `separator`, `submenu`, `checkbox` 또는 `radio` 사용가능
|
||||||
* `label` String
|
* `label` String
|
||||||
* `sublabel` String
|
* `sublabel` String
|
||||||
|
@ -18,3 +24,29 @@
|
||||||
* `submenu` Menu - 보조메뉴를 설정합니다. `type`이 `submenu`일 경우 반드시 설정해야합니다. 일반 메뉴 아이템일 경우 생략할 수 있습니다.
|
* `submenu` Menu - 보조메뉴를 설정합니다. `type`이 `submenu`일 경우 반드시 설정해야합니다. 일반 메뉴 아이템일 경우 생략할 수 있습니다.
|
||||||
* `id` String - 현재 메뉴 아이템에 대해 유일키를 지정합니다. 이 키는 이후 `position` 옵션에서 사용할 수 있습니다.
|
* `id` String - 현재 메뉴 아이템에 대해 유일키를 지정합니다. 이 키는 이후 `position` 옵션에서 사용할 수 있습니다.
|
||||||
* `position` String - 미리 지정한 `id`를 이용하여 메뉴 아이템의 위치를 세밀하게 조정합니다.
|
* `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
|
||||||
|
|
|
@ -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) 모듈을 활용하여 동적으로 메뉴를 생성하는 예제입니다.
|
다음 예제는 웹 페이지 내에서 [remote](remote.md) 모듈을 활용하여 동적으로 메뉴를 생성하는 예제입니다.
|
||||||
|
그리고 유저가 페이지에서 오른쪽 클릭을 할 때마다 마우스 위치에 팝업 형태로 메뉴를 표시합니다:
|
||||||
이 예제에서 만들어진 메뉴는 유저가 페이지에서 오른쪽 클릭을 할 때 마우스 위치에 팝업 형태로 표시됩니다:
|
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<!-- index.html -->
|
<!-- index.html -->
|
||||||
|
@ -26,69 +27,22 @@ window.addEventListener('contextmenu', function (e) {
|
||||||
</script>
|
</script>
|
||||||
```
|
```
|
||||||
|
|
||||||
다음 예제는 template API를 활용하여 어플리케이션 메뉴를 만드는 간단한 예제입니다:
|
또 하나의 예를 들자면 다음 예제는 랜더러 프로세스에서 template API를 사용하여 어플리케이션 메뉴를 만듭니다:
|
||||||
|
|
||||||
**Windows 와 Linux 유저 주의:** 각 메뉴 아이템의 `selector` 멤버는 Mac 운영체제 전용입니다. [Accelerator 옵션](accelerator.md)
|
```javascript
|
||||||
|
|
||||||
```html
|
|
||||||
<!-- index.html -->
|
|
||||||
<script>
|
|
||||||
var remote = require('remote');
|
|
||||||
var Menu = remote.require('menu');
|
|
||||||
var template = [
|
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',
|
label: 'Edit',
|
||||||
submenu: [
|
submenu: [
|
||||||
{
|
{
|
||||||
label: 'Undo',
|
label: 'Undo',
|
||||||
accelerator: 'CmdOrCtrl+Z',
|
accelerator: 'CmdOrCtrl+Z',
|
||||||
selector: 'undo:'
|
role: 'undo'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Redo',
|
label: 'Redo',
|
||||||
accelerator: 'Shift+CmdOrCtrl+Z',
|
accelerator: 'Shift+CmdOrCtrl+Z',
|
||||||
selector: 'redo:'
|
role: 'redo'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'separator'
|
type: 'separator'
|
||||||
|
@ -96,23 +50,23 @@ var template = [
|
||||||
{
|
{
|
||||||
label: 'Cut',
|
label: 'Cut',
|
||||||
accelerator: 'CmdOrCtrl+X',
|
accelerator: 'CmdOrCtrl+X',
|
||||||
selector: 'cut:'
|
role: 'cut'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Copy',
|
label: 'Copy',
|
||||||
accelerator: 'CmdOrCtrl+C',
|
accelerator: 'CmdOrCtrl+C',
|
||||||
selector: 'copy:'
|
role: 'copy'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Paste',
|
label: 'Paste',
|
||||||
accelerator: 'CmdOrCtrl+V',
|
accelerator: 'CmdOrCtrl+V',
|
||||||
selector: 'paste:'
|
role: 'paste'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Select All',
|
label: 'Select All',
|
||||||
accelerator: 'CmdOrCtrl+A',
|
accelerator: 'CmdOrCtrl+A',
|
||||||
selector: 'selectAll:'
|
role: 'selectall'
|
||||||
}
|
},
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -121,62 +75,144 @@ var template = [
|
||||||
{
|
{
|
||||||
label: 'Reload',
|
label: 'Reload',
|
||||||
accelerator: 'CmdOrCtrl+R',
|
accelerator: 'CmdOrCtrl+R',
|
||||||
click: function() { remote.getCurrentWindow().reload(); }
|
click: function(item, focusedWindow) {
|
||||||
|
if (focusedWindow)
|
||||||
|
focusedWindow.reload();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Toggle DevTools',
|
label: 'Toggle Full Screen',
|
||||||
accelerator: 'Alt+CmdOrCtrl+I',
|
accelerator: (function() {
|
||||||
click: function() { remote.getCurrentWindow().toggleDevTools(); }
|
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',
|
label: 'Window',
|
||||||
|
role: 'window',
|
||||||
submenu: [
|
submenu: [
|
||||||
{
|
{
|
||||||
label: 'Minimize',
|
label: 'Minimize',
|
||||||
accelerator: 'CmdOrCtrl+M',
|
accelerator: 'CmdOrCtrl+M',
|
||||||
selector: 'performMiniaturize:'
|
role: 'minimize'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Close',
|
label: 'Close',
|
||||||
accelerator: 'CmdOrCtrl+W',
|
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'
|
type: 'separator'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: 'Bring All to Front',
|
label: 'Services',
|
||||||
selector: 'arrangeInFront:'
|
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(); }
|
||||||
|
},
|
||||||
]
|
]
|
||||||
},
|
});
|
||||||
{
|
// Window menu.
|
||||||
label: 'Help',
|
template[3].submenu.push(
|
||||||
submenu: []
|
{
|
||||||
}
|
type: 'separator'
|
||||||
];
|
},
|
||||||
|
{
|
||||||
|
label: 'Bring All to Front',
|
||||||
|
role: 'front'
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
menu = Menu.buildFromTemplate(template);
|
menu = Menu.buildFromTemplate(template);
|
||||||
|
|
||||||
Menu.setApplicationMenu(menu);
|
Menu.setApplicationMenu(menu);
|
||||||
</script>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Class: Menu
|
## Class: Menu
|
||||||
|
|
||||||
### new Menu()
|
### `new Menu()`
|
||||||
|
|
||||||
새로운 메뉴를 생성합니다.
|
새로운 메뉴를 생성합니다.
|
||||||
|
|
||||||
### Class Method: Menu.setApplicationMenu(menu)
|
### Methods
|
||||||
|
|
||||||
|
`menu` 클래스는 다음과 같은 메서드를 가지고 있습니다:
|
||||||
|
|
||||||
|
### `Menu.setApplicationMenu(menu)`
|
||||||
|
|
||||||
* `menu` 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
|
* `action` String
|
||||||
|
|
||||||
|
@ -185,7 +221,7 @@ Menu.setApplicationMenu(menu);
|
||||||
|
|
||||||
**참고:** 이 메서드는 OS X에서만 사용할 수 있습니다.
|
**참고:** 이 메서드는 OS X에서만 사용할 수 있습니다.
|
||||||
|
|
||||||
### Class Method: Menu.buildFromTemplate(template)
|
### `Menu.buildFromTemplate(template)`
|
||||||
|
|
||||||
* `template` Array
|
* `template` Array
|
||||||
|
|
||||||
|
@ -193,57 +229,58 @@ Menu.setApplicationMenu(menu);
|
||||||
|
|
||||||
또한 `template`에는 다른 속성도 추가할 수 있으며 메뉴가 만들어질 때 해당 메뉴 아이템의 프로퍼티로 변환됩니다.
|
또한 `template`에는 다른 속성도 추가할 수 있으며 메뉴가 만들어질 때 해당 메뉴 아이템의 프로퍼티로 변환됩니다.
|
||||||
|
|
||||||
### Menu.popup(browserWindow, [x, y])
|
### `Menu.popup(browserWindow[, x, y])`
|
||||||
|
|
||||||
* `browserWindow` BrowserWindow
|
* `browserWindow` BrowserWindow
|
||||||
* `x` Number
|
* `x` Number (optional)
|
||||||
* `y` Number
|
* `y` Number (만약 `x`를 지정했을 경우 `y`도 필수로 지정해야 합니다)
|
||||||
|
|
||||||
메뉴를 `browserWindow` 안에서 팝업으로 표시합니다.
|
메뉴를 `browserWindow` 내부 팝업으로 표시합니다.
|
||||||
옵션으로 메뉴를 표시할 `(x,y)` 좌표를 임의로 지정할 수 있습니다. 따로 지정하지 않은 경우 마우스 커서 위치에 표시됩니다.
|
옵션으로 메뉴를 표시할 `(x,y)` 좌표를 지정할 수 있습니다.
|
||||||
|
따로 좌표를 지정하지 않은 경우 마우스 커서 위치에 표시됩니다.
|
||||||
|
|
||||||
### Menu.append(menuItem)
|
### `Menu.append(menuItem)`
|
||||||
|
|
||||||
* `menuItem` MenuItem
|
* `menuItem` MenuItem
|
||||||
|
|
||||||
메뉴의 리스트 끝에 `menuItem`을 삽입합니다.
|
메뉴의 리스트 끝에 `menuItem`을 삽입합니다.
|
||||||
|
|
||||||
### Menu.insert(pos, menuItem)
|
### `Menu.insert(pos, menuItem)`
|
||||||
|
|
||||||
* `pos` Integer
|
* `pos` Integer
|
||||||
* `menuItem` MenuItem
|
* `menuItem` MenuItem
|
||||||
|
|
||||||
`pos` 위치에 `menuItem`을 삽입합니다.
|
`pos` 위치에 `menuItem`을 삽입합니다.
|
||||||
|
|
||||||
### Menu.items
|
### `Menu.items()`
|
||||||
|
|
||||||
메뉴가 가지고 있는 메뉴 아이템들의 배열입니다.
|
메뉴가 가지고 있는 메뉴 아이템들의 배열입니다.
|
||||||
|
|
||||||
## OS X 어플리케이션 메뉴에 대해 알아 둬야 할 것들
|
## OS X 어플리케이션 메뉴에 대해 알아 둬야 할 것들
|
||||||
|
|
||||||
OS X에선 Windows, Linux와 달리 완전히 다른 어플리케이션 메뉴 스타일을 가지고 있습니다.
|
OS X에선 Windows, Linux와 달리 완전히 다른 어플리케이션 메뉴 스타일을 가지고 있습니다.
|
||||||
어플리케이션을 네이티브처럼 작동할 수 있도록 하기 위해선 다음의 몇 가지 유의 사항을 숙지해야 합니다.
|
그래서 어플리케이션을 네이티브처럼 작동할 수 있도록 하기 위해 다음 몇 가지 유의 사항을 숙지해야 합니다.
|
||||||
|
|
||||||
### 기본 메뉴
|
### 기본 메뉴
|
||||||
|
|
||||||
OS X엔 `Services`나 `Windows`와 같은 많은 시스템 지정 기본 메뉴가 있습니다.
|
OS X엔 `Services`나 `Windows`와 같은 많은 시스템 지정 기본 메뉴가 있습니다.
|
||||||
기본 메뉴를 만들려면 다음 중 하나를 메뉴의 라벨로 지정하기만 하면 됩니다.
|
기본 메뉴를 만들려면 반드시 다음 리스트 중 한 가지를 선택하여 메뉴의 `role`로 지정해야 합니다.
|
||||||
그러면 Electron이 자동으로 인식하여 해당 메뉴를 기본 메뉴로 만듭니다:
|
그러면 Electron이 자동으로 인식하여 해당 메뉴를 기본 메뉴로 만듭니다:
|
||||||
|
|
||||||
* `Window`
|
* `window`
|
||||||
* `Help`
|
* `help`
|
||||||
* `Services`
|
* `services`
|
||||||
|
|
||||||
### 기본 메뉴 아이템 동작
|
### 메뉴 아이템 기본 동작
|
||||||
|
|
||||||
OS X는 몇몇의 메뉴 아이템에 대해 `About xxx`, `Hide xxx`, `Hide Others`와 같은 기본 동작을 제공하고 있습니다. (`selector`라고 불립니다)
|
OS X는 몇가지 메뉴 아이템에 대해 `About xxx`, `Hide xxx`, `Hide Others`와 같은 기본 동작을 제공하고 있습니다.
|
||||||
메뉴 아이템의 기본 동작을 지정하려면 메뉴 아이템의 `selector` 속성을 사용하면 됩니다.
|
메뉴 아이템의 기본 동작을 지정하려면 반드시 메뉴 아이템의 `role` 속성을 지정해야 합니다.
|
||||||
|
|
||||||
### 메인 메뉴의 이름
|
### 메인 메뉴의 이름
|
||||||
|
|
||||||
OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번째 라벨은 언제나 어플리케이션의 이름이 됩니다.
|
OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번째 라벨은 언제나 어플리케이션의 이름이 됩니다.
|
||||||
어플리케이션 이름을 변경하려면 앱 번들내의 `Info.plist` 파일을 수정해야합니다.
|
어플리케이션 이름을 변경하려면 앱 번들내의 `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의 논리 그룹에 맞춰서 각 그룹의 항목 뒤에 삽입합니다. (그룹은 분리자 아이템에 의해 만들어집니다)
|
* `endof` - 이 아이템을 id의 논리 그룹에 맞춰서 각 그룹의 항목 뒤에 삽입합니다. (그룹은 분리자 아이템에 의해 만들어집니다)
|
||||||
만약 참조된 아이템의 분리자 그룹이 존재하지 않을 경우 지정된 id로 새로운 분리자 그룹을 만든 후 해당 그룹의 뒤에 삽입됩니다.
|
만약 참조된 아이템의 분리자 그룹이 존재하지 않을 경우 지정된 id로 새로운 분리자 그룹을 만든 후 해당 그룹의 뒤에 삽입됩니다.
|
||||||
|
|
||||||
위치를 지정한 아이템의 뒤에 위치가 지정되지 않은 아이템이 있을 경우 해당 아이템의 위치가 지정되기 전까지 이전에 위치가 지정된 아이템의 위치 지정을 따릅니다.
|
위치를 지정한 아이템의 뒤에 위치가 지정되지 않은 아이템이 있을 경우 각 아이템의 위치가 지정되기 전까지 모든 아이템이 위치가 지정된 아이템의 뒤에 삽입됩니다.
|
||||||
이에 따라 위치를 이동하고 싶은 특정 그룹의 아이템들이 있을 경우 해당 그룹의 맨 첫번째 메뉴 아이템의 위치만을 지정하면 됩니다.
|
이에 따라 위치를 이동하고 싶은 특정 그룹의 아이템들이 있을 경우 해당 그룹의 맨 첫번째 메뉴 아이템의 위치만을 지정하면 됩니다.
|
||||||
|
|
||||||
### 예제
|
### 예제
|
||||||
|
@ -309,3 +346,5 @@ OS X에선 지정한 어플리케이션 메뉴에 상관없이 메뉴의 첫번
|
||||||
- 2
|
- 2
|
||||||
- 3
|
- 3
|
||||||
```
|
```
|
||||||
|
|
||||||
|
[AboutInformationPropertyListFiles]: https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
# NativeImage
|
# NativeImage
|
||||||
|
|
||||||
Electron은 파일 경로나 `NativeImage` 인스턴스를 전달하여 사용하는 이미지 API를 가지고 있습니다. `null`을 전달할 경우 빈 이미지가 사용됩니다.
|
Electron은 파일 경로 또는 `NativeImage` 인스턴스를 통해 이미지를 사용할 수 있는 API를 가지고 있습니다.
|
||||||
|
`null`을 전달할 경우 빈 이미지가 생성됩니다.
|
||||||
|
|
||||||
예를 들어 트레이 메뉴를 만들거나 윈도우의 아이콘을 설정할 때 다음과 같이 `문자열`인 파일 경로를 전달할 수 있습니다:
|
예를 들어 트레이 메뉴를 만들거나 윈도우의 아이콘을 설정할 때 다음과 같이 파일 경로를 전달하여 이미지를 사용할 수 있습니다:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var appIcon = new Tray('/Users/somebody/images/icon.png');
|
var appIcon = new Tray('/Users/somebody/images/icon.png');
|
||||||
var window = new BrowserWindow({icon: '/Users/somebody/images/window.png'});
|
var window = new BrowserWindow({icon: '/Users/somebody/images/window.png'});
|
||||||
```
|
```
|
||||||
|
|
||||||
또는 클립보드로부터 이미지를 읽어올 수 있습니다:
|
이 예제는 클립보드로부터 가져온 `NativeImage`로 트레이 메뉴를 생성합니다:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var clipboard = require('clipboard');
|
var clipboard = require('clipboard');
|
||||||
|
@ -19,7 +20,8 @@ var appIcon = new Tray(image);
|
||||||
|
|
||||||
## 지원하는 포맷
|
## 지원하는 포맷
|
||||||
|
|
||||||
현재 `PNG` 와 `JPEG` 포맷을 지원하고 있습니다. 손실 없는 이미지 압축과 투명도 지원을 위해 `PNG` 사용을 권장합니다.
|
현재 `PNG` 와 `JPEG` 이미지 포맷을 지원하고 있습니다.
|
||||||
|
손실 없는 이미지 압축과 투명도 지원을 위해 `PNG` 사용을 권장합니다.
|
||||||
|
|
||||||
그리고 Windows에서는 `ICO` 포맷도 사용할 수 있습니다.
|
그리고 Windows에서는 `ICO` 포맷도 사용할 수 있습니다.
|
||||||
|
|
||||||
|
@ -27,9 +29,9 @@ var appIcon = new Tray(image);
|
||||||
|
|
||||||
플랫폼이 high-DPI를 지원하는 경우 `@2x`와 같이 이미지의 파일명 뒤에 접미사를 추가하여 고해상도 이미지로 지정할 수 있습니다.
|
플랫폼이 high-DPI를 지원하는 경우 `@2x`와 같이 이미지의 파일명 뒤에 접미사를 추가하여 고해상도 이미지로 지정할 수 있습니다.
|
||||||
|
|
||||||
예를 들어 `icon.png` 라는 기본 해상도의 이미지를 기준으로 크기를 두 배로 늘린 이미지를 `icon@2x.png`와 같이 이름을 지정하면 고해상도 이미지로 처리됩니다.
|
예를 들어 `icon.png` 라는 기본 해상도의 이미지를 기준으로 크기를 두 배로 늘린 이미지를 `icon@2x.png` 처럼 지정하면 고해상도 이미지로 처리됩니다.
|
||||||
|
|
||||||
서로 다른 해상도(DPI)의 이미지를 지원하고 싶다면 다중 해상도의 이미지를 접미사를 붙여 한 폴더에 넣으면 됩니다. 이 이미지를 사용(로드)할 땐 접미사를 붙이지 않습니다:
|
서로 다른 해상도(DPI)의 이미지를 같이 지원하고 싶다면 다중 해상도의 이미지를 접미사를 붙여 한 폴더에 같이 넣으면 됩니다. 이 이미지를 사용(로드)할 땐 따로 접미사를 붙이지 않습니다:
|
||||||
|
|
||||||
```text
|
```text
|
||||||
images/
|
images/
|
||||||
|
@ -64,69 +66,79 @@ var appIcon = new Tray('/Users/somebody/images/icon.png');
|
||||||
|
|
||||||
가장 일반적으로 템플릿 이미지는 밝고 어두운 테마 색상으로 변경할 수 있는 메뉴 바 아이콘 등에 사용되고 있습니다.
|
가장 일반적으로 템플릿 이미지는 밝고 어두운 테마 색상으로 변경할 수 있는 메뉴 바 아이콘 등에 사용되고 있습니다.
|
||||||
|
|
||||||
템플릿 이미지는 Mac 운영체제만 지원합니다.
|
**참고:** 템플릿 이미지는 OS X 운영체제만 지원합니다.
|
||||||
|
|
||||||
템플릿 이미지를 지정하려면 다음 예제와 같이 파일명에 `Template` 문자열을 추가해야 합니다:
|
템플릿 이미지를 지정하려면 다음 예제와 같이 파일명에 `Template` 문자열을 추가해야 합니다:
|
||||||
|
|
||||||
* `xxxTemplate.png`
|
* `xxxTemplate.png`
|
||||||
* `xxxTemplate@2x.png`
|
* `xxxTemplate@2x.png`
|
||||||
|
|
||||||
## nativeImage.createEmpty()
|
## Methods
|
||||||
|
|
||||||
|
`NativeImage` 클래스는 다음과 같은 메서드를 가지고 있습니다:
|
||||||
|
|
||||||
|
### `NativeImage.createEmpty()`
|
||||||
|
|
||||||
빈 `NativeImage` 인스턴스를 만듭니다.
|
빈 `NativeImage` 인스턴스를 만듭니다.
|
||||||
|
|
||||||
## nativeImage.createFromPath(path)
|
### `NativeImage.createFromPath(path)`
|
||||||
|
|
||||||
* `path` String
|
* `path` String
|
||||||
|
|
||||||
`path`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다.
|
`path`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다.
|
||||||
|
|
||||||
## nativeImage.createFromBuffer(buffer[, scaleFactor])
|
### `NativeImage.createFromBuffer(buffer[, scaleFactor])`
|
||||||
|
|
||||||
* `buffer` [Buffer][buffer]
|
* `buffer` [Buffer][buffer]
|
||||||
* `scaleFactor` Double
|
* `scaleFactor` Double (optional)
|
||||||
|
|
||||||
`buffer`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다. `scaleFactor`는 1.0이 기본입니다.
|
`buffer`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다. `scaleFactor`는 1.0이 기본입니다.
|
||||||
|
|
||||||
## nativeImage.createFromDataUrl(dataUrl)
|
### `NativeImage.createFromDataUrl(dataUrl)`
|
||||||
|
|
||||||
* `dataUrl` String
|
* `dataUrl` String
|
||||||
|
|
||||||
`dataUrl`로부터 이미지를 로드하여 새로운 `NativeImage` 인스턴스를 만듭니다.
|
`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]로 반환합니다.
|
`PNG` 이미지를 인코딩한 데이터를 [Buffer][buffer]로 반환합니다.
|
||||||
|
|
||||||
### NativeImage.toJpeg(quality)
|
### `image.toJpeg(quality)`
|
||||||
|
|
||||||
* `quality` Integer (0 - 100 사이의 값)
|
* `quality` Integer 0 - 100 사이의 값 (**required**)
|
||||||
|
|
||||||
`JPEG` 이미지를 인코딩한 데이터를 [Buffer][buffer]로 반환합니다.
|
`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
|
* `option` Boolean
|
||||||
|
|
||||||
해당 이미지를 템플릿 이미지로 설정합니다.
|
해당 이미지를 템플릿 이미지로 설정합니다.
|
||||||
|
|
||||||
### NativeImage.isTemplateImage()
|
### `image.isTemplateImage()`
|
||||||
|
|
||||||
이미지가 템플릿 이미지인지 확인합니다.
|
이미지가 템플릿 이미지인지 확인합니다.
|
||||||
|
|
||||||
|
|
|
@ -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 어뎁터 충전기를 사용하기 시작할 때 발생하는 이벤트입니다.
|
시스템이 AC 어뎁터 충전기를 사용하기 시작할 때 발생하는 이벤트입니다.
|
||||||
|
|
||||||
## Event: on-battery
|
## Event: `on-battery`
|
||||||
|
|
||||||
시스템이 배터리를 사용하기 시작할 때 발생하는 이벤트입니다.
|
시스템이 배터리를 사용하기 시작할 때 발생하는 이벤트입니다.
|
||||||
|
|
|
@ -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.stop(id);
|
||||||
```
|
```
|
||||||
|
|
||||||
## powerSaveBlocker.start(type)
|
## Methods
|
||||||
|
|
||||||
|
`powerSaveBlocker` 모듈은 다음과 같은 메서드를 가지고 있습니다:
|
||||||
|
|
||||||
|
### `powerSaveBlocker.start(type)`
|
||||||
|
|
||||||
* `type` String - Power save blocker 종류
|
* `type` String - Power save blocker 종류
|
||||||
* `prevent-app-suspension` - 저전력 모드 등으로 인한 어플리케이션 작동 중단을 방지합니다.
|
* `prevent-app-suspension` - 저전력 모드 등으로 인한 어플리케이션 작동 중단을 방지합니다.
|
||||||
시스템을 항시 활성화 상태로 만듭니다, 하지만 화면은 자동으로 꺼질 수 있습니다. 사용 예시: 파일 다운로드, 음악 재생 등.
|
시스템을 항시 활성화 상태로 만듭니다. 하지만 화면은 자동으로 꺼질 수 있습니다. 사용 예시: 파일 다운로드, 음악 재생 등.
|
||||||
* `prevent-display-sleep`- 슬립 모드 등으로 인한 어플리케이션의 작동 중단을 방지합니다.
|
* `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 호출이 있었다 치면
|
예를 들어 A-요청이 `prevent-app-suspension` 모드를 사용하고 B-요청이 `prevent-display-sleep`를 사용하는 API 호출이 있었다 치면
|
||||||
`prevent-display-sleep` 모드를 사용하는 B의 작동이 중단(stop)되기 전까지 작동하다 B가 중단되면 `prevent-app-suspension` 모드를 사용하는 A가 작동하기 시작합니다.
|
`prevent-display-sleep` 모드를 사용하는 B의 작동이 중단(stop)되기 전까지 작동하다 B가 중단되면 `prevent-app-suspension` 모드를 사용하는 A가 작동하기 시작합니다.
|
||||||
|
|
||||||
## powerSaveBlocker.stop(id)
|
### `powerSaveBlocker.stop(id)`
|
||||||
|
|
||||||
* `id` Integer - `powerSaveBlocker.start`로 부터 반환되는 power save blocker 식별 ID.
|
* `id` Integer - `powerSaveBlocker.start`로 부터 반환되는 power save blocker 식별 ID.
|
||||||
|
|
||||||
설정한 power save blocker를 중지합니다.
|
설정한 power save blocker를 중지합니다.
|
||||||
|
|
||||||
## powerSaveBlocker.isStarted(id)
|
### `powerSaveBlocker.isStarted(id)`
|
||||||
|
|
||||||
* `id` Integer - `powerSaveBlocker.start`로 부터 반환되는 power save blocker 식별 ID.
|
* `id` Integer - `powerSaveBlocker.start`로 부터 반환되는 power save blocker 식별 ID.
|
||||||
|
|
||||||
해당하는 id의 `powerSaveBlocker`가 실행중인지 확인합니다.
|
지정한 id의 `powerSaveBlocker`가 실행 중인지 확인합니다.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# 프로세스 객체
|
# process
|
||||||
|
|
||||||
Electron의 `process` 객체는 기존의 node와는 달리 약간의 차이점이 있습니다:
|
Electron의 `process` 객체는 기존의 node와는 달리 약간의 차이점이 있습니다:
|
||||||
|
|
||||||
|
@ -7,11 +7,15 @@ Electron의 `process` 객체는 기존의 node와는 달리 약간의 차이점
|
||||||
* `process.versions['chrome']` String - Chromium의 버전.
|
* `process.versions['chrome']` String - Chromium의 버전.
|
||||||
* `process.resourcesPath` String - JavaScript 소스코드의 경로.
|
* `process.resourcesPath` String - JavaScript 소스코드의 경로.
|
||||||
|
|
||||||
## process.hang
|
## Methods
|
||||||
|
|
||||||
|
`process` 객체는 다음과 같은 메서드를 가지고 있습니다:
|
||||||
|
|
||||||
|
### `process.hang()`
|
||||||
|
|
||||||
현재 프로세스의 주 스레드를 중단시킵니다.
|
현재 프로세스의 주 스레드를 중단시킵니다.
|
||||||
|
|
||||||
## process.setFdLimit(maxDescriptors) _OS X_ _Linux_
|
### `process.setFdLimit(maxDescriptors)` _OS X_ _Linux_
|
||||||
|
|
||||||
* `maxDescriptors` Integer
|
* `maxDescriptors` Integer
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
`protocol` 모듈은 이미 있는 프로토콜의 동작을 가로채거나 새로운 프로토콜을 만들 수 있는 기능을 제공합니다.
|
`protocol` 모듈은 이미 있는 프로토콜의 동작을 가로채거나 새로운 프로토콜을 만들 수 있는 기능을 제공합니다.
|
||||||
|
|
||||||
다음 예제는 `file://` 프로토콜과 같은 일을 하는 커스텀 프로토콜을 설정합니다:
|
다음 예제는 `file://` 프로토콜과 비슷한 일을 하는 커스텀 프로토콜을 설정합니다:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var app = require('app');
|
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 - 표준 스킴으로 등록할 커스텀 스킴 리스트
|
* `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:`을 포함합니다.
|
이 형식은 `file:`과 `filesystem:`을 포함합니다.
|
||||||
|
|
||||||
## protocol.registerFileProtocol(scheme, handler[, completion])
|
### `protocol.registerFileProtocol(scheme, handler[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
`scheme`에 파일을 응답으로 보내는 프로토콜을 등록합니다.
|
`scheme`에 파일을 응답으로 보내는 프로토콜을 등록합니다.
|
||||||
`handler`는 `request`가 `scheme`와 함께 생성될 때 `handler(request, callback)` 형식으로 호출됩니다.
|
`handler`는 `scheme`와 함께 `request`가 생성될 때 `handler(request, callback)` 형식으로 호출됩니다.
|
||||||
`completion`은 `scheme`가 성공적으로 등록되었을 때 `completion(null)` 형식으로 호출되고
|
`completion` 콜백은 `scheme`가 성공적으로 등록되었을 때 `completion(null)` 형식으로 호출되고
|
||||||
등록에 실패했을 땐 `completion(error)` 형식으로 에러 내용을 담아 호출됩니다.
|
등록에 실패했을 땐 `completion(error)` 형식으로 에러 내용을 담아 호출됩니다.
|
||||||
|
|
||||||
`request`를 처리할 때 반드시 파일 경로 또는 `path` 속성을 포함하는 객체를 인자에 포함하여 `callback`을 호출해야 합니다.
|
`request`를 처리할 때 반드시 파일 경로 또는 `path` 속성을 포함하는 객체를 인자에 포함하여 `callback`을 호출해야 합니다.
|
||||||
|
@ -45,16 +49,16 @@ app.on('ready', function() {
|
||||||
|
|
||||||
만약 `callback`이 아무 인자도 없이 호출되거나 숫자나 `error` 프로퍼티를 가진 객체가 인자로 전달될 경우
|
만약 `callback`이 아무 인자도 없이 호출되거나 숫자나 `error` 프로퍼티를 가진 객체가 인자로 전달될 경우
|
||||||
`request`는 지정한 `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.registerStandardSchemes`을 사용하여 표준 스킴으로 처리되도록 할 수 있습니다.
|
||||||
|
|
||||||
## protocol.registerBufferProtocol(scheme, handler[, completion])
|
### `protocol.registerBufferProtocol(scheme, handler[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
`scheme`에 `Buffer`를 응답으로 보내는 프로토콜을 등록합니다.
|
`scheme`에 `Buffer`를 응답으로 보내는 프로토콜을 등록합니다.
|
||||||
반드시 `Buffer` 또는 `data`, `mimeType`, `chart` 속성을 포함한 객체 중 하나를 인자에 포함하여 `callback`을 호출해야 합니다.
|
반드시 `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
|
* `scheme` String
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
`scheme`에 `문자열`를 응답으로 보내는 프로토콜을 등록합니다.
|
`scheme`에 `문자열`을 응답으로 보내는 프로토콜을 등록합니다.
|
||||||
반드시 `문자열` 또는 `data`, `mimeType`, `chart` 속성을 포함한 객체 중 하나를 인자에 포함하여 `callback`을 호출해야 합니다.
|
반드시 `문자열` 또는 `data`, `mimeType`, `chart` 속성을 포함한 객체 중 하나를 인자에 포함하여 `callback`을 호출해야 합니다.
|
||||||
|
|
||||||
## protocol.registerHttpProtocol(scheme, handler[, completion])
|
### `protocol.registerHttpProtocol(scheme, handler[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
|
|
||||||
`scheme`에 HTTP 요청을 응답으로 보내는 프로토콜을 등록합니다.
|
`scheme`에 HTTP 요청을 응답으로 보내는 프로토콜을 등록합니다.
|
||||||
반드시 `url`, `method`, `referer`, `session` 속성을 포함하는 객체를 인자에 포함하여 `callback`을 호출해야 합니다.
|
반드시 `url`, `method`, `referer`, `session` 속성을 포함하는 객체를 인자에 포함하여 `callback`을 호출해야 합니다.
|
||||||
|
|
||||||
기본적으로 HTTP 요청은 현재 세션을 재사용합니다. 만약 서로 다른 세션에 요청을 보내고 싶으면 `session`을 `null`로 지정해야 합니다.
|
기본적으로 HTTP 요청은 현재 세션을 재사용합니다. 만약 서로 다른 세션에 요청을 보내고 싶으면 `session`을 `null`로 지정해야 합니다.
|
||||||
|
|
||||||
## protocol.unregisterProtocol(scheme[, completion])
|
### `protocol.unregisterProtocol(scheme[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
`scheme`의 커스텀 프로토콜 등록을 해제합니다.
|
`scheme`의 커스텀 프로토콜 등록을 해제합니다.
|
||||||
|
|
||||||
## protocol.isProtocolHandled(scheme, callback)
|
### `protocol.isProtocolHandled(scheme, callback)`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `callback` Function
|
* `callback` Function
|
||||||
|
|
||||||
`scheme`에 동작(handler)이 등록되어 있는지 여부를 확인합니다. `callback`으로 결과(boolean)가 반환됩니다.
|
`scheme`에 동작(handler)이 등록되어 있는지 여부를 확인합니다. `callback`으로 결과(boolean)가 반환됩니다.
|
||||||
|
|
||||||
## protocol.interceptFileProtocol(scheme, handler[, completion])
|
### `protocol.interceptFileProtocol(scheme, handler[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
`scheme` 프로토콜을 가로채고 `handler`를 파일 전송에 대한 새로운 동작으로 사용합니다.
|
`scheme` 프로토콜을 가로채고 `handler`를 파일 전송에 대한 새로운 동작으로 사용합니다.
|
||||||
|
|
||||||
## protocol.interceptStringProtocol(scheme, handler[, completion])
|
### `protocol.interceptStringProtocol(scheme, handler[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
`scheme` 프로토콜을 가로채고 `handler`를 문자열 전송에 대한 새로운 동작으로 사용합니다.
|
`scheme` 프로토콜을 가로채고 `handler`를 문자열 전송에 대한 새로운 동작으로 사용합니다.
|
||||||
|
|
||||||
## protocol.interceptBufferProtocol(scheme, handler[, completion])
|
### `protocol.interceptBufferProtocol(scheme, handler[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
`scheme` 프로토콜을 가로채고 `handler`를 `Buffer` 전송에 대한 새로운 동작으로 사용합니다.
|
`scheme` 프로토콜을 가로채고 `handler`를 `Buffer` 전송에 대한 새로운 동작으로 사용합니다.
|
||||||
|
|
||||||
## protocol.interceptHttpProtocol(scheme, handler[, completion])
|
### `protocol.interceptHttpProtocol(scheme, handler[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `handler` Function
|
* `handler` Function
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
`scheme` 프로토콜을 가로채고 `handler`를 HTTP 프로토콜의 요청에 대한 새로운 동작으로 사용합니다.
|
`scheme` 프로토콜을 가로채고 `handler`를 HTTP 프로토콜의 요청에 대한 새로운 동작으로 사용합니다.
|
||||||
|
|
||||||
## protocol.uninterceptProtocol(scheme[, completion])
|
### `protocol.uninterceptProtocol(scheme[, completion])`
|
||||||
|
|
||||||
* `scheme` String
|
* `scheme` String
|
||||||
* `completion` Function
|
* `completion` Function (optional)
|
||||||
|
|
||||||
가로챈 `scheme`를 삭제하고 기본 핸들러로 복구합니다.
|
가로챈 `scheme`를 삭제하고 기본 핸들러로 복구합니다.
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# remote
|
# remote
|
||||||
|
|
||||||
`remote` 모듈은 메인 프로세스와 랜더러 프로세스 사이에 inter-process 통신을 간단하게 추상화 한 모듈입니다.
|
`remote` 모듈은 메인 프로세스와 랜더러 프로세스(웹 페이지) 사이의 inter-process (IPC) 통신을 간단하게 추상화 한 모듈입니다.
|
||||||
|
|
||||||
Electron의 랜더러 프로세스에선 GUI와 관련 없는 모듈만 사용할 수 있습니다.
|
Electron의 랜더러 프로세스에선 GUI와 관련 없는 모듈만 사용할 수 있습니다.
|
||||||
기본적으로 랜더러 프로세스에서 메인 프로세스의 API를 사용하려면 inter-process 통신을 사용해야 합니다.
|
기본적으로 랜더러 프로세스에서 메인 프로세스의 API를 사용하려면 메인 프로세스와 inter-process 통신을 해야 합니다.
|
||||||
하지만 `remote` 모듈을 사용하면 따로 inter-process 통신을 사용하지 않고 직접 명시적으로 사용할 수 있습니다.
|
하지만 `remote` 모듈을 사용하면 따로 inter-process 통신을 하지 않고 직접 명시적으로 모듈을 사용할 수 있습니다.
|
||||||
Java의 [RMI](http://en.wikipedia.org/wiki/Java_remote_method_invocation)와 개념이 비슷합니다.
|
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
|
```javascript
|
||||||
var remote = require('remote');
|
var remote = require('remote');
|
||||||
var BrowserWindow = remote.require('browser-window');
|
var BrowserWindow = remote.require('browser-window');
|
||||||
|
|
||||||
var win = new BrowserWindow({ width: 800, height: 600 });
|
var win = new BrowserWindow({ width: 800, height: 600 });
|
||||||
win.loadUrl('https://github.com');
|
win.loadUrl('https://github.com');
|
||||||
```
|
```
|
||||||
|
|
||||||
**참고:** 반대로 하려면(메인 프로세스에서 랜더러 프로세스에 접근) [webContents.executeJavascript](browser-window.md#webcontents-executejavascript-code) API를 사용하면 됩니다.
|
**참고:** 반대로 메인 프로세스에서 랜더러 프로세스에 접근 하려면 [webContents.executeJavascript](browser-window.md#webcontents-executejavascript-code) 메서드를 사용하면 됩니다.
|
||||||
|
|
||||||
## Remote 객체
|
## Remote 객체
|
||||||
|
|
||||||
|
@ -26,7 +27,7 @@ Remote 모듈의 메서드를 호출하거나, 객체에 접근하거나, 생성
|
||||||
위의 예제에서 사용한 두 `BrowserWindow`와 `win`은 remote 객체입니다. 그리고 `new BrowserWindow`이 생성하는 `BrowserWindow` 객체는 랜더러 프로세스에서 생성되지 않습니다.
|
위의 예제에서 사용한 두 `BrowserWindow`와 `win`은 remote 객체입니다. 그리고 `new BrowserWindow`이 생성하는 `BrowserWindow` 객체는 랜더러 프로세스에서 생성되지 않습니다.
|
||||||
대신에 이 `BrowserWindow` 객체는 메인 프로세스에서 생성되며 랜더러 프로세스에 `win` 객체와 같이 이에 대응하는 remote 객체를 반환합니다.
|
대신에 이 `BrowserWindow` 객체는 메인 프로세스에서 생성되며 랜더러 프로세스에 `win` 객체와 같이 이에 대응하는 remote 객체를 반환합니다.
|
||||||
|
|
||||||
## Remote 객체의 일생
|
## Remote 객체의 생명 주기
|
||||||
|
|
||||||
Electron은 랜더러 프로세스의 remote 객체가 살아있는 한(다시 말해서 GC(garbage collection)가 일어나지 않습니다) 대응하는 메인 프로세스의 객체는 릴리즈되지 않습니다.
|
Electron은 랜더러 프로세스의 remote 객체가 살아있는 한(다시 말해서 GC(garbage collection)가 일어나지 않습니다) 대응하는 메인 프로세스의 객체는 릴리즈되지 않습니다.
|
||||||
Remote 객체가 GC 되려면 대응하는 메인 프로세스 내부 객체의 참조가 해제되어야만 합니다.
|
Remote 객체가 GC 되려면 대응하는 메인 프로세스 내부 객체의 참조가 해제되어야만 합니다.
|
||||||
|
@ -54,10 +55,12 @@ exports.withRendererCallback = function(mapper) {
|
||||||
|
|
||||||
exports.withLocalCallback = function() {
|
exports.withLocalCallback = function() {
|
||||||
return exports.mapNumbers(function(x) {
|
return exports.mapNumbers(function(x) {
|
||||||
return x + 1;
|
return x + 1;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```javascript
|
||||||
// 랜더러 프로세스
|
// 랜더러 프로세스
|
||||||
var mapNumbers = require("remote").require("mapNumbers");
|
var mapNumbers = require("remote").require("mapNumbers");
|
||||||
|
|
||||||
|
@ -80,6 +83,7 @@ console.log(withRendererCb, withLocalCb) // [true, true, true], [2, 3, 4]
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var remote = require('remote');
|
var remote = require('remote');
|
||||||
|
|
||||||
remote.getCurrentWindow().on('close', function() {
|
remote.getCurrentWindow().on('close', function() {
|
||||||
// blabla...
|
// blabla...
|
||||||
});
|
});
|
||||||
|
@ -94,26 +98,30 @@ remote.getCurrentWindow().on('close', function() {
|
||||||
이러한 문제를 피하려면 랜더러 프로세스에서 메인 프로세스로 넘긴 함수의 참조를 사용 후 확실하게 제거해야 합니다.
|
이러한 문제를 피하려면 랜더러 프로세스에서 메인 프로세스로 넘긴 함수의 참조를 사용 후 확실하게 제거해야 합니다.
|
||||||
작업 후 이벤트 콜백을 포함하여 책임 있게 함수의 참조를 제거하거나 메인 프로세스에서 랜더러 프로세스가 종료될 때 내부적으로 함수 참조를 제거하도록 설계해야 합니다.
|
작업 후 이벤트 콜백을 포함하여 책임 있게 함수의 참조를 제거하거나 메인 프로세스에서 랜더러 프로세스가 종료될 때 내부적으로 함수 참조를 제거하도록 설계해야 합니다.
|
||||||
|
|
||||||
## remote.require(module)
|
## Methods
|
||||||
|
|
||||||
|
`remote` 모듈은 다음과 같은 메서드를 가지고 있습니다:
|
||||||
|
|
||||||
|
### `remote.require(module)`
|
||||||
|
|
||||||
* `module` String
|
* `module` String
|
||||||
|
|
||||||
메인 프로세스의 `require(module)` API를 실행한 후 결과 객체를 반환합니다.
|
메인 프로세스의 `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` String
|
||||||
|
|
||||||
메인 프로세스의 전역 변수(`name`)를 가져옵니다. (예시: `global[name]`)
|
메인 프로세스의 전역 변수(`name`)를 가져옵니다. (예시: `global[name]`)
|
||||||
|
|
||||||
## remote.process
|
### `remote.process`
|
||||||
|
|
||||||
메인 프로세스의 `process` 객체를 반환합니다. `remote.getGlobal('process')`와 같습니다. 하지만 캐시 됩니다.
|
메인 프로세스의 `process` 객체를 반환합니다. `remote.getGlobal('process')`와 같습니다. 하지만 캐시 됩니다.
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
`screen`은 [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)를 상속 받았습니다.
|
`screen`은 [EventEmitter](http://nodejs.org/api/events.html#events_class_events_eventemitter)를 상속 받았습니다.
|
||||||
|
|
||||||
한가지 주의할 점은 랜더러 / DevTools에선 이 모듈의 이름인 `screen`은 이미 DOM 속성에 `window.screen`로 존재 하므로 `screen = require('screen')`를
|
**참고:** 랜더러 / DevTools에선 이미 DOM 속성이 `window.screen`을 가지고 있으므로 `screen = require('screen')` 형식으로 모듈을 사용할 수 없습니다.
|
||||||
사용할 수 없습니다. 밑의 예제와 같이 `atomScreen`등의 이름으로 변수 이름을 대체하여 사용해야 합니다.
|
밑의 예제와 같이 `atomScreen` 같은 이름으로 모듈 이름을 대체하여 사용해야 합니다.
|
||||||
|
|
||||||
다음 예제는 화면 전체를 채우는 윈도우 창을 생성합니다:
|
다음 예제는 화면 전체를 채우는 윈도우 창을 생성합니다:
|
||||||
|
|
||||||
|
@ -51,43 +51,57 @@ app.on('ready', function() {
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
## Event: display-added
|
## Events
|
||||||
|
|
||||||
|
`screen` 모듈은 다음과 같은 이벤트를 가지고 있습니다:
|
||||||
|
|
||||||
|
### Event: 'display-added'
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
* `event` Event
|
* `event` Event
|
||||||
* `newDisplay` Object
|
* `newDisplay` Object
|
||||||
|
|
||||||
새로운 디스플레이가 추가되면 발생하는 이벤트입니다.
|
새로운 디스플레이가 추가되면 발생하는 이벤트입니다.
|
||||||
|
|
||||||
## Event: display-removed
|
### Event: 'display-removed'
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
* `event` Event
|
* `event` Event
|
||||||
* `oldDisplay` Object
|
* `oldDisplay` Object
|
||||||
|
|
||||||
기존의 디스플레이가 제거되면 발생하는 이벤트입니다.
|
기존의 디스플레이가 제거되면 발생하는 이벤트입니다.
|
||||||
|
|
||||||
## Event: display-metrics-changed
|
### Event: 'display-metrics-changed'
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
|
||||||
* `event` Event
|
* `event` Event
|
||||||
* `display` Object
|
* `display` Object
|
||||||
* `changedMetrics` Array
|
* `changedMetrics` Array
|
||||||
|
|
||||||
`display`의 하나 또는 다수의 매트릭스가 변경될 때 발생하는 이벤트입니다.
|
`display`에서 하나 또는 다수의 매트릭스가 변경될 때 발생하는 이벤트입니다.
|
||||||
`changedMetrics`는 변경에 대한 정보를 담은 문자열의 배열입니다.
|
`changedMetrics`는 변경에 대한 정보를 담은 문자열의 배열입니다.
|
||||||
`bounds`, `workArea`, `scaleFactor`, `rotation`등이 변경될 수 있습니다.
|
`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
|
* `point` Object
|
||||||
* `x` Integer
|
* `x` Integer
|
||||||
|
@ -95,7 +109,7 @@ app.on('ready', function() {
|
||||||
|
|
||||||
지정한 좌표에 가까운 디스플레이를 반환합니다.
|
지정한 좌표에 가까운 디스플레이를 반환합니다.
|
||||||
|
|
||||||
## screen.getDisplayMatching(rect)
|
### `screen.getDisplayMatching(rect)`
|
||||||
|
|
||||||
* `rect` Object
|
* `rect` Object
|
||||||
* `x` Integer
|
* `x` Integer
|
||||||
|
|
|
@ -1,34 +1,39 @@
|
||||||
# shell
|
# shell
|
||||||
|
|
||||||
`shell` 모듈은 데스크톱 환경 통합에 관련하여 제공되는 모듈입니다.
|
`shell` 모듈은 데스크톱 환경 통합에 관련한 유틸리티를 제공하는 모듈입니다.
|
||||||
|
|
||||||
다음 예제는 기본 브라우저로 설정된 URL을 엽니다:
|
다음 예제는 설정된 URL을 유저의 기본 브라우저로 엽니다:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var shell = require('shell');
|
var shell = require('shell');
|
||||||
shell.openExternal('https://github.com');
|
shell.openExternal('https://github.com');
|
||||||
```
|
```
|
||||||
|
|
||||||
## shell.showItemInFolder(fullPath)
|
## Methods
|
||||||
|
|
||||||
|
`shell` 모듈은 다음과 같은 메서드를 가지고 있습니다:
|
||||||
|
|
||||||
|
### `shell.showItemInFolder(fullPath)`
|
||||||
|
|
||||||
* `fullPath` String
|
* `fullPath` String
|
||||||
|
|
||||||
지정한 파일을 탐색기에서 보여줍니다. 가능한 경우 탐색기 내에서 파일을 선택합니다.
|
지정한 파일을 탐색기에서 보여줍니다. 가능한 경우 탐색기 내에서 파일을 선택합니다.
|
||||||
|
|
||||||
## shell.openItem(fullPath)
|
### `shell.openItem(fullPath)`
|
||||||
|
|
||||||
* `fullPath` String
|
* `fullPath` String
|
||||||
|
|
||||||
지정한 파일을 데스크톱 기본 프로그램으로 엽니다.
|
지정한 파일을 데스크톱 기본 프로그램으로 엽니다.
|
||||||
|
|
||||||
## shell.openExternal(url)
|
### `shell.openExternal(url)`
|
||||||
|
|
||||||
* `url` String
|
* `url` String
|
||||||
|
|
||||||
제공된 외부 프로토콜 URL을 기반으로 데스크톱의 기본 프로그램으로 엽니다. (예를 들어 mailto: URL은 해당 URL을 기본 메일 에이전트로 엽니다.)
|
제공된 외부 프로토콜 URL을 기반으로 데스크톱의 기본 프로그램으로 엽니다. (예를 들어 mailto: URL은 유저의 기본 이메일 에이전트로 URL을 엽니다.)
|
||||||
|
|
||||||
역주: 폴더는 'file:\\\\C:\\'와 같이 지정하여 열 수 있습니다. (`\\`로 경로를 표현한 이유는 Escape 문자열을 참고하세요.)
|
역주: 폴더는 'file:\\\\C:\\'와 같이 지정하여 열 수 있습니다. (`\\`로 경로를 표현한 이유는 Escape 문자열을 참고하세요.)
|
||||||
|
|
||||||
## shell.moveItemToTrash(fullPath)
|
### `shell.moveItemToTrash(fullPath)`
|
||||||
|
|
||||||
* `fullPath` String
|
* `fullPath` String
|
||||||
|
|
||||||
|
@ -36,6 +41,6 @@ Move the given file to trash and returns boolean status for the operation.
|
||||||
|
|
||||||
지정한 파일을 휴지통으로 이동합니다. 작업의 성공여부를 boolean 형으로 리턴합니다.
|
지정한 파일을 휴지통으로 이동합니다. 작업의 성공여부를 boolean 형으로 리턴합니다.
|
||||||
|
|
||||||
## shell.beep()
|
### `shell.beep()`
|
||||||
|
|
||||||
비프음을 재생합니다.
|
비프음을 재생합니다.
|
||||||
|
|
|
@ -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 모듈을 제공합니다.
|
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
|
```javascript
|
||||||
var app = require('app');
|
var app = require('app');
|
||||||
|
@ -22,7 +23,7 @@ app.on('ready', function() {
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
웹 페이지 역시 예외적인 node module을 사용할 수 있다는 점을 제외하면 일반 웹 페이지와 다를게 없습니다:
|
랜더러 프로세스도 예외적인 node module들을 사용할 수 있다는 점을 제외하면 일반 웹 페이지와 크게 다를게 없습니다:
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Tray
|
# Tray
|
||||||
|
|
||||||
`Tray`는 OS의 알림영역에 아이콘을 표시합니다. 보통 컨텍스트 메뉴(context menu)를 같이 사용합니다.
|
`Tray`는 OS의 알림 영역에 아이콘을 표시합니다. 보통 컨텍스트 메뉴(context menu)를 같이 사용합니다.
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
var app = require('app');
|
var app = require('app');
|
||||||
|
@ -29,19 +29,25 @@ __플랫폼별 한계:__
|
||||||
* 앱 알림 표시기는 컨텍스트 메뉴를 가지고 있을 때만 보입니다.
|
* 앱 알림 표시기는 컨텍스트 메뉴를 가지고 있을 때만 보입니다.
|
||||||
* Linux에서 앱 알림 표시기가 사용될 경우, `clicked` 이벤트는 무시됩니다.
|
* Linux에서 앱 알림 표시기가 사용될 경우, `clicked` 이벤트는 무시됩니다.
|
||||||
|
|
||||||
이러한 이유로 만약 Tray API가 모든 플랫폼에서 똑같이 작동하게 하고 싶다면, 설계시 `clicked` 이벤트에 의존하지 말아야합니다.
|
이러한 이유로 Tray API가 모든 플랫폼에서 똑같이 작동하게 하고 싶다면 `clicked` 이벤트에 의존해선 안됩니다.
|
||||||
그리고 언제나 컨텍스트 메뉴를 포함해서 사용해야 합니다.
|
그리고 언제나 컨텍스트 메뉴를 포함해야 합니다.
|
||||||
|
|
||||||
## Class: Tray
|
## Class: Tray
|
||||||
|
|
||||||
`Tray`는 [EventEmitter][event-emitter]를 상속 받았습니다.
|
`Tray`는 [EventEmitter][event-emitter]를 상속 받았습니다.
|
||||||
|
|
||||||
### new Tray(image)
|
### `new Tray(image)`
|
||||||
|
|
||||||
* `image` [NativeImage](native-image.md)
|
* `image` [NativeImage](native-image.md)
|
||||||
|
|
||||||
전달된 `image`를 이용하여 트레이 아이콘을 만듭니다.
|
전달된 `image`를 이용하여 트레이 아이콘을 만듭니다.
|
||||||
|
|
||||||
|
## Events
|
||||||
|
|
||||||
|
`Tray` 모듈은 다음과 같은 이벤트를 가지고 있습니다:
|
||||||
|
|
||||||
|
**참고:** 몇가지 이벤트는 특정한 플랫폼에서만 작동합니다.
|
||||||
|
|
||||||
### Event: 'clicked'
|
### Event: 'clicked'
|
||||||
|
|
||||||
* `event` Event
|
* `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
|
* `event` Event
|
||||||
* `altKey` Boolean
|
* `altKey` Boolean
|
||||||
|
@ -74,9 +80,7 @@ __주의:__ `bounds`는 OS X 와 Windows 7 이후 버전에서만 작동합니
|
||||||
|
|
||||||
트레이 아이콘을 오른쪽 클릭될 때 호출 됩니다.
|
트레이 아이콘을 오른쪽 클릭될 때 호출 됩니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 OS X 와 Windows 운영체제에서만 작동합니다.
|
### Event: 'double-clicked' _OS X_ _Windows_
|
||||||
|
|
||||||
### Event: 'double-clicked'
|
|
||||||
|
|
||||||
* `event` Event
|
* `event` Event
|
||||||
* `altKey` Boolean
|
* `altKey` Boolean
|
||||||
|
@ -91,76 +95,66 @@ __주의:__ 이 기능은 OS X 와 Windows 운영체제에서만 작동합니다
|
||||||
|
|
||||||
트레이 아이콘이 더블 클릭될 때 발생하는 이벤트입니다.
|
트레이 아이콘이 더블 클릭될 때 발생하는 이벤트입니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 OS X 와 Windows 운영체제에서만 작동합니다.
|
### Event: 'balloon-show' _Windows_
|
||||||
|
|
||||||
### Event: 'balloon-show'
|
|
||||||
|
|
||||||
알림풍선이 보여질 때 발생하는 이벤트입니다.
|
알림풍선이 보여질 때 발생하는 이벤트입니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 Windows에서만 작동합니다.
|
### Event: 'balloon-clicked' _Windows_
|
||||||
|
|
||||||
### Event: 'balloon-clicked'
|
|
||||||
|
|
||||||
알림풍선이 클릭될 때 발생하는 이벤트입니다.
|
알림풍선이 클릭될 때 발생하는 이벤트입니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 Windows에서만 작동합니다.
|
### Event: 'balloon-closed' _Windows_
|
||||||
|
|
||||||
### Event: 'balloon-closed'
|
|
||||||
|
|
||||||
알림풍선이 시간이 지나 사라지거나 유저가 클릭하여 닫을 때 발생하는 이벤트입니다.
|
알림풍선이 시간이 지나 사라지거나 유저가 클릭하여 닫을 때 발생하는 이벤트입니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 Windows에서만 작동합니다.
|
### Event: 'drop-files' _OS X_
|
||||||
|
|
||||||
### Event: 'drop-files'
|
|
||||||
|
|
||||||
* `event`
|
* `event`
|
||||||
* `files` Array - 드롭된 파일의 경로
|
* `files` Array - 드롭된 파일의 경로
|
||||||
|
|
||||||
트레이 아이콘에 파일이 드롭되면 발생하는 이벤트입니다.
|
트레이 아이콘에 파일이 드롭되면 발생하는 이벤트입니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 OS X에서만 작동합니다.
|
## Methods
|
||||||
|
|
||||||
### Tray.destroy()
|
`Tray` 모듈은 다음과 같은 메서드를 가지고 있습니다:
|
||||||
|
|
||||||
|
**참고:** 몇가지 메서드는 특정한 플랫폼에서만 작동합니다.
|
||||||
|
|
||||||
|
### `Tray.destroy()`
|
||||||
|
|
||||||
트레이 아이콘을 즉시 삭제시킵니다.
|
트레이 아이콘을 즉시 삭제시킵니다.
|
||||||
|
|
||||||
### Tray.setImage(image)
|
### `Tray.setImage(image)`
|
||||||
|
|
||||||
* `image` [NativeImage](native-image.md)
|
* `image` [NativeImage](native-image.md)
|
||||||
|
|
||||||
`image`를 사용하여 트레이 아이콘의 이미지를 설정합니다.
|
`image`를 사용하여 트레이 아이콘의 이미지를 설정합니다.
|
||||||
|
|
||||||
### Tray.setPressedImage(image)
|
### `Tray.setPressedImage(image)` _OS X_
|
||||||
|
|
||||||
* `image` [NativeImage](native-image.md)
|
* `image` [NativeImage](native-image.md)
|
||||||
|
|
||||||
`image`를 사용하여 트레이 아이콘이 눌렸을 때의 이미지를 설정합니다.
|
`image`를 사용하여 트레이 아이콘이 눌렸을 때의 이미지를 설정합니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 OS X에서만 작동합니다.
|
### `Tray.setToolTip(toolTip)`
|
||||||
|
|
||||||
### Tray.setToolTip(toolTip)
|
|
||||||
|
|
||||||
* `toolTip` String
|
* `toolTip` String
|
||||||
|
|
||||||
트레이 아이콘의 툴팁 텍스트를 설정합니다.
|
트레이 아이콘의 툴팁 텍스트를 설정합니다.
|
||||||
|
|
||||||
### Tray.setTitle(title)
|
### `Tray.setTitle(title)` _OS X_
|
||||||
|
|
||||||
* `title` String
|
* `title` String
|
||||||
|
|
||||||
상태바에서 트레이 아이콘 옆에 표시되는 제목 텍스트를 설정합니다.
|
상태바에서 트레이 아이콘 옆에 표시되는 제목 텍스트를 설정합니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 OS X에서만 작동합니다.
|
### `Tray.setHighlightMode(highlight)` _OS X_
|
||||||
|
|
||||||
### Tray.setHighlightMode(highlight)
|
|
||||||
|
|
||||||
* `highlight` Boolean
|
* `highlight` Boolean
|
||||||
|
|
||||||
트레이 아이콘을 클릭했을 때 하이라이트 될지 설정합니다.
|
트레이 아이콘을 클릭했을 때 하이라이트 될지 설정합니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 OS X에서만 작동합니다.
|
### `Tray.displayBalloon(options)` _Windows_
|
||||||
|
|
||||||
### Tray.displayBalloon(options)
|
|
||||||
|
|
||||||
* `options` Object
|
* `options` Object
|
||||||
* `icon` [NativeImage](native-image.md)
|
* `icon` [NativeImage](native-image.md)
|
||||||
|
@ -169,19 +163,15 @@ __주의:__ 이 기능은 OS X에서만 작동합니다.
|
||||||
|
|
||||||
트레이에 알림풍선을 생성합니다.
|
트레이에 알림풍선을 생성합니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 Windows에서만 작동합니다.
|
### `Tray.popContextMenu([position])` _OS X_ _Windows_
|
||||||
|
|
||||||
### Tray.popContextMenu([position])
|
* `position` Object (optional) - 팝업 메뉴 위치
|
||||||
|
|
||||||
* `position` Object - 팝 메뉴 위치
|
|
||||||
* `x` Integer
|
* `x` Integer
|
||||||
* `y` Integer
|
* `y` Integer
|
||||||
|
|
||||||
`position`은 Windows에서만 사용할 수 있으며 기본값은 (0, 0)입니다.
|
`position`은 Windows에서만 사용할 수 있으며 기본값은 (0, 0)입니다.
|
||||||
|
|
||||||
__주의:__ 이 기능은 Windows 와 OS X에서만 작동합니다.
|
### `Tray.setContextMenu(menu)`
|
||||||
|
|
||||||
### Tray.setContextMenu(menu)
|
|
||||||
|
|
||||||
* `menu` Menu
|
* `menu` Menu
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
* Clang 3.4 또는 최신 버전
|
* Clang 3.4 또는 최신 버전
|
||||||
* GTK+ 와 libnotify의 개발용 헤더
|
* GTK+ 와 libnotify의 개발용 헤더
|
||||||
|
|
||||||
Ubuntu를 사용하고 있다면 다음 커맨드로 설치하면 합니다:
|
Ubuntu를 사용하고 있다면 다음과 같이 라이브러리를 설치해야 합니다:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ sudo apt-get install build-essential clang libdbus-1-dev libgtk2.0-dev \
|
$ 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
|
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 같은 패키지 매니저를 통해 패키지를 설치 할 수 있습니다. 패키지의 이름은 대부분 위 예시와 비슷할 것입니다.
|
||||||
또는 소스코드를 내려받아 직접 빌드하는 방법도 있습니다.
|
또는 소스코드를 내려받아 직접 빌드하는 방법도 있습니다.
|
||||||
|
|
||||||
## 가상머신을 사용하여 빌드 하는 경우
|
## 가상머신을 사용하여 빌드 하는 경우
|
||||||
|
|
|
@ -24,7 +24,7 @@ var app = require('app');
|
||||||
app.addRecentDocument('/Users/USERNAME/Desktop/work.type');
|
app.addRecentDocument('/Users/USERNAME/Desktop/work.type');
|
||||||
```
|
```
|
||||||
|
|
||||||
그리고 [app.clearRecentDocuments](clearrecentdocuments) API로 최근 문서 리스트를 비울 수 있습니다:
|
그리고 [app.clearRecentDocuments][clearrecentdocuments] API로 최근 문서 리스트를 비울 수 있습니다:
|
||||||
|
|
||||||
```javascript
|
```javascript
|
||||||
app.clearRecentDocuments();
|
app.clearRecentDocuments();
|
||||||
|
|
|
@ -7,12 +7,8 @@
|
||||||
> ChromeDriver는 Chromium의 WebDriver wire 프로토콜 스텐드얼론 서버 구현입니다.
|
> ChromeDriver는 Chromium의 WebDriver wire 프로토콜 스텐드얼론 서버 구현입니다.
|
||||||
> Chromium 과 WebDriver 팀 멤버에 의해 개발되었습니다.
|
> Chromium 과 WebDriver 팀 멤버에 의해 개발되었습니다.
|
||||||
|
|
||||||
Electron의 [releases](https://github.com/atom/electron/releases) 페이지에서 `chromedriver` 릴리즈 압축파일을 찾을 수 있습니다.
|
Electron과 `chromedriver`를 같이 사옹하려면 드라이버에서 Electron을 찾을 수 있도록 해야 하고
|
||||||
`chromedriver`의 Electron 배포판과 upstream과의 차이는 없습니다.
|
Electron은 Chrome 브라우저와 비슷하다는 점을 기억해야 합니다.
|
||||||
`chromedriver`와 Electron을 함께 사용하려면 몇가지 설정이 필요합니다.
|
|
||||||
|
|
||||||
또한 releases에는 `chromedriver`를 포함하여 주 버전만 업데이트 됩니다. (예시: `vX.X.0` releases)
|
|
||||||
왜냐하면 `chromedriver`는 Electron 자체에서 자주 업데이트하지 않기 때문입니다.
|
|
||||||
|
|
||||||
## WebDriverJs 설정하기
|
## WebDriverJs 설정하기
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue