Skip to content

Commit

Permalink
Improve OS menu (signalapp#1563)
Browse files Browse the repository at this point in the history
* Remove reload options, new file/help menus, tools/log at bottom

* Further menus refactor: install handlers at template creation

* WIP: Further tune menus, add custom about window

* New About window, new help menu items, menu labels now i18n

* Default device name on registration is now computer hostname

The OS of the device makes sense for those of us testing across a lot of
different OSes. And maybe for a user with just one desktop device. But
most users with multiple desktop devices are using the same OS for both.

* About window: Only show window when content is ready

* Fix typo in app/menu.js
  • Loading branch information
scottnonnenberg authored Oct 13, 2017
1 parent 61a2a1a commit 75cece3
Show file tree
Hide file tree
Showing 7 changed files with 288 additions and 103 deletions.
32 changes: 32 additions & 0 deletions _locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,38 @@
"message": "Submit debug log",
"description": "Menu item and header text for debug log modal, title case."
},
"debugLog": {
"message": "Debug Log",
"description": "View menu item to open the debug log, capitalized"
},
"goToReleaseNotes": {
"message": "Go to release notes",
"description": ""
},
"goToForums": {
"message": "Go to forums",
"description": "Item under the Help menu, takes you to the forums"
},
"goToSupportPage": {
"message": "Go to support page",
"description": "Item under the Help menu, takes you to the support page"
},
"fileABug": {
"message": "File a bug",
"description": "Item under the Help menu, takes you to GitHub new issue form"
},
"aboutSignalDesktop": {
"message": "About Signal Desktop",
"description": "Item under the Help menu, which opens a small about window"
},
"speech": {
"message": "Speech",
"description": "Item under the Edit menu, with 'start/stop speaking' items below it"
},
"show": {
"message": "Show",
"description": "Command under Window menu, to show the window"
},
"searchForPeopleOrGroups": {
"message": "Search...",
"description": "Placeholder text in the search input"
Expand Down
39 changes: 39 additions & 0 deletions about.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<html>
<head>
<link href="stylesheets/manifest.css" rel="stylesheet" type="text/css" />
<style>

body {
text-align: center;
background-color: #2090EA;
color: white;
font-size: 14px;
}

img {
margin-top: 2em;
margin-bottom: 1em;
}

a {
color: white;
}

</style>
</head>
<body>

<img src='images/icon_250.png'>

<div>
<script>
document.write('v', window.config.version);
</script>
</div>
<div>
<a href="https://signal.org">signal.org</a>
</div>

</body>

</html>
171 changes: 112 additions & 59 deletions app/menu.js
Original file line number Diff line number Diff line change
@@ -1,159 +1,212 @@
const {Menu} = require('electron')
function createTemplate(options, messages) {
const showDebugLog = options.showDebugLog;
const showAbout = options.showAbout;
const openReleaseNotes = options.openReleaseNotes;
const openNewBugForm = options.openNewBugForm;
const openSupportPage = options.openSupportPage;
const openForums = options.openForums;

const template = [
let template = [{
label: 'File',
submenu: [
{
role: 'quit',
},
]
},
{
label: 'Edit',
submenu: [
{
role: 'undo'
role: 'undo',
},
{
role: 'redo'
role: 'redo',
},
{
type: 'separator'
type: 'separator',
},
{
role: 'cut'
role: 'cut',
},
{
role: 'copy'
role: 'copy',
},
{
role: 'paste'
role: 'paste',
},
{
role: 'pasteandmatchstyle'
role: 'pasteandmatchstyle',
},
{
role: 'delete'
role: 'delete',
},
{
role: 'selectall'
role: 'selectall',
}
]
},
{
label: 'View',
submenu: [
{
label: 'Debug Log'
role: 'resetzoom',
},
{
type: 'separator'
role: 'zoomin',
},
{
role: 'reload'
role: 'zoomout',
},
{
role: 'forcereload'
type: 'separator',
},
{
role: 'toggledevtools'
role: 'togglefullscreen',
},
{
type: 'separator'
type: 'separator',
},
{
role: 'resetzoom'
label: messages.debugLog.message,
click: showDebugLog,
},
{
role: 'zoomin'
type: 'separator',
},
{
role: 'zoomout'
role: 'toggledevtools',
},
]
},
{
role: 'window',
submenu: [
{
type: 'separator'
role: 'minimize',
},
{
role: 'togglefullscreen'
}
]
},
{
role: 'window',
role: 'help',
submenu: [
{
role: 'minimize'
label: messages.goToReleaseNotes.message,
click: openReleaseNotes,
},
{
role: 'close'
}
type: 'separator',
},
{
label: messages.goToForums.message,
click: openForums,
},
{
label: messages.goToSupportPage.message,
click: openSupportPage,
},
{
label: messages.fileABug.message,
click: openNewBugForm,
},
{
type: 'separator',
},
{
label: messages.aboutSignalDesktop.message,
click: showAbout,
},
]
}];

if (process.platform === 'darwin') {
return updateForMac(template, messages, options);
}
]

if (process.platform === 'darwin') {
return template;
}

function updateForMac(template, messages, options) {
const showWindow = options.showWindow;
const showAbout = options.showAbout;

// Remove About item and separator from Help menu, since it's on the first menu
template[4].submenu.pop();
template[4].submenu.pop();

// Replace File menu
template.shift();
template.unshift({
submenu: [
{
role: 'about'
label: messages.aboutSignalDesktop.message,
click: showAbout,
},
{
type: 'separator'
type: 'separator',
},
{
role: 'hide'
role: 'hide',
},
{
role: 'hideothers'
role: 'hideothers',
},
{
role: 'unhide'
role: 'unhide',
},
{
type: 'separator'
type: 'separator',
},
{
role: 'quit'
}
role: 'quit',
},
]
})
// Edit menu.
});

// Add to Edit menu
template[1].submenu.push(
{
type: 'separator'
},
{
label: 'Speech',
label: messages.speech.message,
submenu: [
{
role: 'startspeaking'
role: 'startspeaking',
},
{
role: 'stopspeaking'
}
role: 'stopspeaking',
},
]
}
)
// Window menu.
);

// Add to Window menu
template[3].submenu = [
{
label: 'Close',
accelerator: 'CmdOrCtrl+W',
role: 'close'
role: 'close',
},
{
label: 'Minimize',
accelerator: 'CmdOrCtrl+M',
role: 'minimize'
role: 'minimize',
},
{
label: 'Zoom',
role: 'zoom'
role: 'zoom',
},
{
label: 'Show',
label: messages.show.message,
click: showWindow,
},
{
type: 'separator'
type: 'separator',
},
{
label: 'Bring All to Front',
role: 'front'
}
]
role: 'front',
},
];

return template;
}

module.exports = template;
module.exports = createTemplate;
1 change: 0 additions & 1 deletion js/views/inbox_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,6 @@
welcomeToSignal : i18n('welcomeToSignal'),
selectAContact : i18n('selectAContact'),
searchForPeopleOrGroups : i18n('searchForPeopleOrGroups'),
submitDebugLog : i18n('submitDebugLog'),
settings : i18n('settings'),
restartSignal : i18n('restartSignal'),
},
Expand Down
8 changes: 1 addition & 7 deletions js/views/install_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,7 @@

var deviceName = textsecure.storage.user.getDeviceName();
if (!deviceName) {
if (navigator.userAgent.match('Mac OS')) {
deviceName = 'Mac';
} else if (navigator.userAgent.match('Linux')) {
deviceName = 'Linux';
} else if (navigator.userAgent.match('Windows')) {
deviceName = 'Windows';
}
deviceName = window.config.hostname;
}

this.$('#device-name').val(deviceName);
Expand Down
Loading

0 comments on commit 75cece3

Please sign in to comment.