mirror of https://github.com/docker/docs.git
Fix save / poweroff preference, menu availability
This commit is contained in:
parent
26f2d4c113
commit
fafc9d0793
|
@ -45,7 +45,7 @@ app.on('ready', function() {
|
|||
mainWindow.loadUrl(path.normalize('file://' + path.join(__dirname, '..', 'build/index.html')));
|
||||
app.on('will-quit', function () {
|
||||
if (saveVMOnQuit) {
|
||||
exec('/usr/bin/VBoxManage controlvm dev savestate', function () {});
|
||||
exec('/usr/bin/VBoxManage controlvm dev poweroff', function () {});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -173,12 +173,13 @@ gulp.task('release', function () {
|
|||
});
|
||||
|
||||
gulp.task('default', ['download', 'copy', 'js', 'images', 'styles'], function () {
|
||||
livereload.listen();
|
||||
gulp.watch('src/**/*.js', ['js']);
|
||||
gulp.watch('index.html', ['copy']);
|
||||
gulp.watch('styles/**/*.less', ['styles']);
|
||||
gulp.watch('images/**', ['images']);
|
||||
|
||||
livereload.listen();
|
||||
|
||||
var env = process.env;
|
||||
env.NODE_ENV = 'development';
|
||||
gulp.src('').pipe(shell(['./cache/Atom.app/Contents/MacOS/Atom .'], {
|
||||
|
|
|
@ -112,7 +112,7 @@ var Containers = React.createClass({
|
|||
},
|
||||
handleMouseEnterDockerTerminal: function () {
|
||||
this.setState({
|
||||
currentButtonLabel: 'Open terminal to use Docker CLI.'
|
||||
currentButtonLabel: 'Open Docker-Ready Mac Terminal.'
|
||||
});
|
||||
},
|
||||
handleMouseLeaveDockerTerminal: function () {
|
||||
|
@ -122,7 +122,7 @@ var Containers = React.createClass({
|
|||
},
|
||||
handleMouseEnterReportIssue: function () {
|
||||
this.setState({
|
||||
currentButtonLabel: 'Report issues or suggest feedbacks.'
|
||||
currentButtonLabel: 'Report an Issue'
|
||||
});
|
||||
},
|
||||
handleMouseLeaveReportIssue: function () {
|
||||
|
@ -132,7 +132,7 @@ var Containers = React.createClass({
|
|||
},
|
||||
handleMouseEnterPreferences: function () {
|
||||
this.setState({
|
||||
currentButtonLabel: 'Change app preferences.'
|
||||
currentButtonLabel: 'Change app Preferences.'
|
||||
});
|
||||
},
|
||||
handleMouseLeavePreferences: function () {
|
||||
|
|
28
src/Main.js
28
src/Main.js
|
@ -1,14 +1,4 @@
|
|||
var remote = require('remote');
|
||||
if (localStorage.getItem('settings.width') && localStorage.getItem('settings.height')) {
|
||||
remote.getCurrentWindow().setSize(parseInt(localStorage.getItem('settings.width')), parseInt(localStorage.getItem('settings.height')));
|
||||
remote.getCurrentWindow().center();
|
||||
}
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
localStorage.setItem('settings.width', window.outerWidth);
|
||||
localStorage.setItem('settings.height', window.outerHeight);
|
||||
});
|
||||
|
||||
require.main.paths.splice(0, 0, process.env.NODE_PATH);
|
||||
var app = remote.require('app');
|
||||
var React = require('react');
|
||||
|
@ -20,11 +10,20 @@ var machine = require('./DockerMachine');
|
|||
var ContainerStore = require('./ContainerStore');
|
||||
var SetupStore = require('./SetupStore');
|
||||
var metrics = require('./Metrics');
|
||||
|
||||
var MenuTemplate = require('./MenuTemplate');
|
||||
var template = require('./MenuTemplate');
|
||||
var Menu = remote.require('menu');
|
||||
var menu = Menu.buildFromTemplate(MenuTemplate);
|
||||
Menu.setApplicationMenu(menu);
|
||||
|
||||
if (localStorage.getItem('settings.width') && localStorage.getItem('settings.height')) {
|
||||
remote.getCurrentWindow().setSize(parseInt(localStorage.getItem('settings.width')), parseInt(localStorage.getItem('settings.height')));
|
||||
remote.getCurrentWindow().center();
|
||||
}
|
||||
|
||||
window.addEventListener('resize', function () {
|
||||
localStorage.setItem('settings.width', window.outerWidth);
|
||||
localStorage.setItem('settings.height', window.outerHeight);
|
||||
});
|
||||
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(template()));
|
||||
|
||||
var settingsjson;
|
||||
try {
|
||||
|
@ -84,6 +83,7 @@ setInterval(function () {
|
|||
router.run(Handler => React.render(<Handler/>, document.body));
|
||||
SetupStore.run().then(machine.info).then(machine => {
|
||||
docker.setup(machine.url, machine.name);
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(template()));
|
||||
ContainerStore.init(function (err) {
|
||||
if (err) { console.log(err); }
|
||||
router.transitionTo('containers');
|
||||
|
|
|
@ -4,170 +4,174 @@ var router = require('./Router');
|
|||
var util = require('./Util');
|
||||
var metrics = require('./Metrics');
|
||||
var machine = require('./DockerMachine');
|
||||
var docker = require('./Docker');
|
||||
|
||||
// main.js
|
||||
var MenuTemplate = [
|
||||
{
|
||||
label: 'Kitematic',
|
||||
submenu: [
|
||||
{
|
||||
label: 'About Kitematic',
|
||||
selector: 'orderFrontStandardAboutPanel:'
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Preferences',
|
||||
accelerator: 'Command+,',
|
||||
click: function () {
|
||||
metrics.track('Opened Preferences', {
|
||||
from: 'menu'
|
||||
});
|
||||
router.transitionTo('preferences');
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Services',
|
||||
submenu: []
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Hide Kitematic',
|
||||
accelerator: 'Command+H',
|
||||
selector: 'hide:'
|
||||
},
|
||||
{
|
||||
label: 'Hide Others',
|
||||
accelerator: 'Command+Shift+H',
|
||||
selector: 'hideOtherApplications:'
|
||||
},
|
||||
{
|
||||
label: 'Show All',
|
||||
selector: 'unhideAllApplications:'
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Quit',
|
||||
accelerator: 'Command+Q',
|
||||
click: function() {
|
||||
app.quit();
|
||||
}
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'File',
|
||||
submenu: [
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Open Docker Terminal',
|
||||
accelerator: 'Command+Shift+T',
|
||||
click: function() {
|
||||
metrics.track('Opened Docker Terminal', {
|
||||
from: 'menu'
|
||||
});
|
||||
machine.dockerTerminal();
|
||||
}
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'Edit',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Undo',
|
||||
accelerator: 'Command+Z',
|
||||
selector: 'undo:'
|
||||
},
|
||||
{
|
||||
label: 'Redo',
|
||||
accelerator: 'Shift+Command+Z',
|
||||
selector: 'redo:'
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Cut',
|
||||
accelerator: 'Command+X',
|
||||
selector: 'cut:'
|
||||
},
|
||||
{
|
||||
label: 'Copy',
|
||||
accelerator: 'Command+C',
|
||||
selector: 'copy:'
|
||||
},
|
||||
{
|
||||
label: 'Paste',
|
||||
accelerator: 'Command+V',
|
||||
selector: 'paste:'
|
||||
},
|
||||
{
|
||||
label: 'Select All',
|
||||
accelerator: 'Command+A',
|
||||
selector: 'selectAll:'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'View',
|
||||
submenu: [
|
||||
var MenuTemplate = function () {
|
||||
return [
|
||||
{
|
||||
label: 'Toggle DevTools',
|
||||
accelerator: 'Alt+Command+I',
|
||||
click: function() { remote.getCurrentWindow().toggleDevTools(); }
|
||||
label: 'Kitematic',
|
||||
submenu: [
|
||||
{
|
||||
label: 'About Kitematic',
|
||||
selector: 'orderFrontStandardAboutPanel:'
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Preferences',
|
||||
accelerator: 'Command+,',
|
||||
enabled: !!docker.host(),
|
||||
click: function () {
|
||||
metrics.track('Opened Preferences', {
|
||||
from: 'menu'
|
||||
});
|
||||
router.transitionTo('preferences');
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Services',
|
||||
submenu: []
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Hide Kitematic',
|
||||
accelerator: 'Command+H',
|
||||
selector: 'hide:'
|
||||
},
|
||||
{
|
||||
label: 'Hide Others',
|
||||
accelerator: 'Command+Shift+H',
|
||||
selector: 'hideOtherApplications:'
|
||||
},
|
||||
{
|
||||
label: 'Show All',
|
||||
selector: 'unhideAllApplications:'
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Quit',
|
||||
accelerator: 'Command+Q',
|
||||
click: function() {
|
||||
app.quit();
|
||||
}
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'Window',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Minimize',
|
||||
accelerator: 'Command+M',
|
||||
selector: 'performMiniaturize:'
|
||||
},
|
||||
{
|
||||
label: 'Close',
|
||||
accelerator: 'Command+W',
|
||||
click: function () {
|
||||
remote.getCurrentWindow().hide();
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Bring All to Front',
|
||||
selector: 'arrangeInFront:'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'Help',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Report an Issue...',
|
||||
click: function () {
|
||||
metrics.track('Opened Issue Reporter', {
|
||||
from: 'menu'
|
||||
});
|
||||
util.exec(['open', 'https://github.com/kitematic/kitematic/issues/new']);
|
||||
}
|
||||
label: 'File',
|
||||
submenu: [
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Open Docker Terminal',
|
||||
accelerator: 'Command+Shift+T',
|
||||
enabled: !!docker.host(),
|
||||
click: function() {
|
||||
metrics.track('Opened Docker Terminal', {
|
||||
from: 'menu'
|
||||
});
|
||||
machine.dockerTerminal();
|
||||
}
|
||||
},
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
];
|
||||
|
||||
{
|
||||
label: 'Edit',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Undo',
|
||||
accelerator: 'Command+Z',
|
||||
selector: 'undo:'
|
||||
},
|
||||
{
|
||||
label: 'Redo',
|
||||
accelerator: 'Shift+Command+Z',
|
||||
selector: 'redo:'
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Cut',
|
||||
accelerator: 'Command+X',
|
||||
selector: 'cut:'
|
||||
},
|
||||
{
|
||||
label: 'Copy',
|
||||
accelerator: 'Command+C',
|
||||
selector: 'copy:'
|
||||
},
|
||||
{
|
||||
label: 'Paste',
|
||||
accelerator: 'Command+V',
|
||||
selector: 'paste:'
|
||||
},
|
||||
{
|
||||
label: 'Select All',
|
||||
accelerator: 'Command+A',
|
||||
selector: 'selectAll:'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'View',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Toggle DevTools',
|
||||
accelerator: 'Alt+Command+I',
|
||||
click: function() { remote.getCurrentWindow().toggleDevTools(); }
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'Window',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Minimize',
|
||||
accelerator: 'Command+M',
|
||||
selector: 'performMiniaturize:'
|
||||
},
|
||||
{
|
||||
label: 'Close',
|
||||
accelerator: 'Command+W',
|
||||
click: function () {
|
||||
remote.getCurrentWindow().hide();
|
||||
}
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Bring All to Front',
|
||||
selector: 'arrangeInFront:'
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
label: 'Help',
|
||||
submenu: [
|
||||
{
|
||||
label: 'Report an Issue...',
|
||||
click: function () {
|
||||
metrics.track('Opened Issue Reporter', {
|
||||
from: 'menu'
|
||||
});
|
||||
util.exec(['open', 'https://github.com/kitematic/kitematic/issues/new']);
|
||||
}
|
||||
},
|
||||
]
|
||||
},
|
||||
];
|
||||
};
|
||||
|
||||
module.exports = MenuTemplate;
|
||||
|
|
|
@ -3,7 +3,7 @@ var ipc = require('ipc');
|
|||
var metrics = require('./Metrics');
|
||||
var Router = require('react-router');
|
||||
|
||||
if (localStorage.getItem('settings.saveVMOnQuit') === 'true') {
|
||||
if (localStorage.getItem('settings.closeVMOnQuit') === 'true') {
|
||||
ipc.send('vm', true);
|
||||
} else {
|
||||
ipc.send('vm', false);
|
||||
|
@ -13,7 +13,7 @@ var Preferences = React.createClass({
|
|||
mixins: [Router.Navigation],
|
||||
getInitialState: function () {
|
||||
return {
|
||||
saveVMOnQuit: localStorage.getItem('settings.saveVMOnQuit') === 'true',
|
||||
closeVMOnQuit: localStorage.getItem('settings.closeVMOnQuit') === 'true',
|
||||
metricsEnabled: metrics.enabled()
|
||||
};
|
||||
},
|
||||
|
@ -21,14 +21,15 @@ var Preferences = React.createClass({
|
|||
this.goBack();
|
||||
metrics.track('Went Back From Preferences');
|
||||
},
|
||||
handleChangeSaveVMOnQuit: function (e) {
|
||||
handleChangeCloseVMOnQuit: function (e) {
|
||||
var checked = e.target.checked;
|
||||
this.setState({
|
||||
saveVMOnQuit: checked
|
||||
closeVMOnQuit: checked
|
||||
});
|
||||
localStorage.setItem('settings.closeVMOnQuit', checked);
|
||||
ipc.send('vm', checked);
|
||||
metrics.track('Toggled Save VM On Quit', {
|
||||
save: checked
|
||||
metrics.track('Toggled Close VM On Quit', {
|
||||
close: checked
|
||||
});
|
||||
},
|
||||
handleChangeMetricsEnabled: function (e) {
|
||||
|
@ -49,10 +50,10 @@ var Preferences = React.createClass({
|
|||
<div className="title">VM Settings</div>
|
||||
<div className="option">
|
||||
<div className="option-name">
|
||||
Save Linux VM state on closing Kitematic
|
||||
Shut Down Linux VM on closing Kitematic
|
||||
</div>
|
||||
<div className="option-value">
|
||||
<input type="checkbox" checked={this.state.saveVMOnQuit} onChange={this.handleChangeSaveVMOnQuit}/>
|
||||
<input type="checkbox" checked={this.state.closeVMOnQuit} onChange={this.handleChangeCloseVMOnQuit}/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="title">App Settings</div>
|
||||
|
|
Loading…
Reference in New Issue