Skip to content

Commit d4dd74e

Browse files
committed
Merge branch 'master' into fix-paste-code
2 parents fdb54b5 + 3f77cb2 commit d4dd74e

File tree

18 files changed

+218
-135
lines changed

18 files changed

+218
-135
lines changed

browser/components/CodeEditor.js

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,16 @@ export default class CodeEditor extends React.Component {
7373
this.scrollToLineHandeler = this.scrollToLine.bind(this)
7474

7575
this.formatTable = () => this.handleFormatTable()
76-
this.contextMenuHandler = function (editor, event) {
77-
const menu = buildEditorContextMenu(editor, event)
78-
if (menu != null) {
79-
setTimeout(() => menu.popup(remote.getCurrentWindow()), 30)
76+
77+
if (props.switchPreview !== 'RIGHTCLICK') {
78+
this.contextMenuHandler = function (editor, event) {
79+
const menu = buildEditorContextMenu(editor, event)
80+
if (menu != null) {
81+
setTimeout(() => menu.popup(remote.getCurrentWindow()), 30)
82+
}
8083
}
8184
}
85+
8286
this.editorActivityHandler = () => this.handleEditorActivity()
8387

8488
this.turndownService = new TurndownService()
@@ -258,7 +262,9 @@ export default class CodeEditor extends React.Component {
258262
this.editor.on('blur', this.blurHandler)
259263
this.editor.on('change', this.changeHandler)
260264
this.editor.on('paste', this.pasteHandler)
261-
this.editor.on('contextmenu', this.contextMenuHandler)
265+
if (this.props.switchPreview !== 'RIGHTCLICK') {
266+
this.editor.on('contextmenu', this.contextMenuHandler)
267+
}
262268
eventEmitter.on('top:search', this.searchHandler)
263269

264270
eventEmitter.emit('code:init')

browser/components/MarkdownEditor.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,7 @@ class MarkdownEditor extends React.Component {
280280
spellCheck={config.editor.spellcheck}
281281
enableSmartPaste={config.editor.enableSmartPaste}
282282
hotkey={config.hotkey}
283+
switchPreview={config.editor.switchPreview}
283284
/>
284285
<MarkdownPreview styleName={this.state.status === 'PREVIEW'
285286
? 'preview'

browser/components/MarkdownPreview.js

Lines changed: 3 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -291,26 +291,7 @@ export default class MarkdownPreview extends React.Component {
291291
}
292292

293293
handleSaveAsMd () {
294-
this.exportAsDocument('md', (noteContent, exportTasks) => {
295-
let result = noteContent
296-
if (this.props && this.props.storagePath && this.props.noteKey) {
297-
const attachmentsAbsolutePaths = attachmentManagement.getAbsolutePathsOfAttachmentsInContent(
298-
noteContent,
299-
this.props.storagePath
300-
)
301-
attachmentsAbsolutePaths.forEach(attachment => {
302-
exportTasks.push({
303-
src: attachment,
304-
dst: attachmentManagement.DESTINATION_FOLDER
305-
})
306-
})
307-
result = attachmentManagement.removeStorageAndNoteReferences(
308-
noteContent,
309-
this.props.noteKey
310-
)
311-
}
312-
return result
313-
})
294+
this.exportAsDocument('md')
314295
}
315296

316297
handleSaveAsHtml () {
@@ -339,11 +320,6 @@ export default class MarkdownPreview extends React.Component {
339320
)
340321
let body = this.markdown.render(noteContent)
341322
const files = [this.GetCodeThemeLink(codeBlockTheme), ...CSS_FILES]
342-
const attachmentsAbsolutePaths = attachmentManagement.getAbsolutePathsOfAttachmentsInContent(
343-
noteContent,
344-
this.props.storagePath
345-
)
346-
347323
files.forEach(file => {
348324
if (global.process.platform === 'win32') {
349325
file = file.replace('file:///', '')
@@ -355,16 +331,6 @@ export default class MarkdownPreview extends React.Component {
355331
dst: 'css'
356332
})
357333
})
358-
attachmentsAbsolutePaths.forEach(attachment => {
359-
exportTasks.push({
360-
src: attachment,
361-
dst: attachmentManagement.DESTINATION_FOLDER
362-
})
363-
})
364-
body = attachmentManagement.removeStorageAndNoteReferences(
365-
body,
366-
this.props.noteKey
367-
)
368334

369335
let styles = ''
370336
files.forEach(file => {
@@ -397,8 +363,9 @@ export default class MarkdownPreview extends React.Component {
397363
if (filename) {
398364
const content = this.props.value
399365
const storage = this.props.storagePath
366+
const nodeKey = this.props.noteKey
400367

401-
exportNote(storage, content, filename, contentFormatter)
368+
exportNote(nodeKey, storage, content, filename, contentFormatter)
402369
.then(res => {
403370
dialog.showMessageBox(remote.getCurrentWindow(), {
404371
type: 'info',

browser/components/MarkdownSplitEditor.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ class MarkdownSplitEditor extends React.Component {
174174
spellCheck={config.editor.spellcheck}
175175
enableSmartPaste={config.editor.enableSmartPaste}
176176
hotkey={config.hotkey}
177+
switchPreview={config.editor.switchPreview}
177178
/>
178179
<div styleName='slider' style={{left: this.state.codeEditorWidthInPercent + '%'}} onMouseDown={e => this.handleMouseDown(e)} >
179180
<div styleName='slider-hitbox' />

browser/main/Detail/InfoPanel.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,22 +70,22 @@ class InfoPanel extends React.Component {
7070
<hr />
7171

7272
<div id='export-wrap'>
73-
<button styleName='export--enable' onClick={(e) => exportAsMd(e)}>
73+
<button styleName='export--enable' onClick={(e) => exportAsMd(e, 'export-md')}>
7474
<i className='fa fa-file-code-o' />
7575
<p>{i18n.__('.md')}</p>
7676
</button>
7777

78-
<button styleName='export--enable' onClick={(e) => exportAsTxt(e)}>
78+
<button styleName='export--enable' onClick={(e) => exportAsTxt(e, 'export-txt')}>
7979
<i className='fa fa-file-text-o' />
8080
<p>{i18n.__('.txt')}</p>
8181
</button>
8282

83-
<button styleName='export--enable' onClick={(e) => exportAsHtml(e)}>
83+
<button styleName='export--enable' onClick={(e) => exportAsHtml(e, 'export-html')}>
8484
<i className='fa fa-html5' />
8585
<p>{i18n.__('.html')}</p>
8686
</button>
8787

88-
<button styleName='export--enable' onClick={(e) => print(e)}>
88+
<button styleName='export--enable' onClick={(e) => print(e, 'print')}>
8989
<i className='fa fa-print' />
9090
<p>{i18n.__('Print')}</p>
9191
</button>

browser/main/Detail/InfoPanelTrashed.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ const InfoPanelTrashed = ({
3131
</div>
3232

3333
<div id='export-wrap'>
34-
<button styleName='export--enable' onClick={(e) => exportAsMd(e)}>
34+
<button styleName='export--enable' onClick={(e) => exportAsMd(e, 'export-md')}>
3535
<i className='fa fa-file-code-o' />
3636
<p>.md</p>
3737
</button>
3838

39-
<button styleName='export--enable' onClick={(e) => exportAsTxt(e)}>
39+
<button styleName='export--enable' onClick={(e) => exportAsTxt(e, 'export-txt')}>
4040
<i className='fa fa-file-text-o' />
4141
<p>.txt</p>
4242
</button>
4343

44-
<button styleName='export--enable' onClick={(e) => exportAsHtml(e)}>
44+
<button styleName='export--enable' onClick={(e) => exportAsHtml(e, 'export-html')}>
4545
<i className='fa fa-html5' />
4646
<p>.html</p>
4747
</button>

browser/main/Detail/SnippetNoteDetail.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -645,11 +645,18 @@ class SnippetNoteDetail extends React.Component {
645645
if (infoPanel.style) infoPanel.style.display = infoPanel.style.display === 'none' ? 'inline' : 'none'
646646
}
647647

648-
showWarning () {
648+
showWarning (e, msg) {
649+
const warningMessage = (msg) => ({
650+
'export-txt': 'Text export',
651+
'export-md': 'Markdown export',
652+
'export-html': 'HTML export',
653+
'print': 'Print'
654+
})[msg]
655+
649656
dialog.showMessageBox(remote.getCurrentWindow(), {
650657
type: 'warning',
651658
message: i18n.__('Sorry!'),
652-
detail: i18n.__('md/text import is available only a markdown note.'),
659+
detail: i18n.__(warningMessage(msg) + ' is available only in markdown notes.'),
653660
buttons: [i18n.__('OK')]
654661
})
655662
}
@@ -802,7 +809,9 @@ class SnippetNoteDetail extends React.Component {
802809
createdAt={formatDate(note.createdAt)}
803810
exportAsMd={this.showWarning}
804811
exportAsTxt={this.showWarning}
812+
exportAsHtml={this.showWarning}
805813
type={note.type}
814+
print={this.showWarning}
806815
/>
807816
</div>
808817
</div>

browser/main/NoteList/index.js

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -64,13 +64,14 @@ class NoteList extends React.Component {
6464
this.focusHandler = () => {
6565
this.refs.list.focus()
6666
}
67-
this.alertIfSnippetHandler = () => {
68-
this.alertIfSnippet()
67+
this.alertIfSnippetHandler = (event, msg) => {
68+
this.alertIfSnippet(msg)
6969
}
7070
this.importFromFileHandler = this.importFromFile.bind(this)
7171
this.jumpNoteByHash = this.jumpNoteByHashHandler.bind(this)
7272
this.handleNoteListKeyUp = this.handleNoteListKeyUp.bind(this)
7373
this.getNoteKeyFromTargetIndex = this.getNoteKeyFromTargetIndex.bind(this)
74+
this.cloneNote = this.cloneNote.bind(this)
7475
this.deleteNote = this.deleteNote.bind(this)
7576
this.focusNote = this.focusNote.bind(this)
7677
this.pinToTop = this.pinToTop.bind(this)
@@ -96,6 +97,7 @@ class NoteList extends React.Component {
9697
this.refreshTimer = setInterval(() => this.forceUpdate(), 60 * 1000)
9798
ee.on('list:next', this.selectNextNoteHandler)
9899
ee.on('list:prior', this.selectPriorNoteHandler)
100+
ee.on('list:clone', this.cloneNote)
99101
ee.on('list:focus', this.focusHandler)
100102
ee.on('list:isMarkdownNote', this.alertIfSnippetHandler)
101103
ee.on('import:file', this.importFromFileHandler)
@@ -118,6 +120,7 @@ class NoteList extends React.Component {
118120

119121
ee.off('list:next', this.selectNextNoteHandler)
120122
ee.off('list:prior', this.selectPriorNoteHandler)
123+
ee.off('list:clone', this.cloneNote)
121124
ee.off('list:focus', this.focusHandler)
122125
ee.off('list:isMarkdownNote', this.alertIfSnippetHandler)
123126
ee.off('import:file', this.importFromFileHandler)
@@ -173,16 +176,15 @@ class NoteList extends React.Component {
173176
}
174177
}
175178

176-
focusNote (selectedNoteKeys, noteKey) {
179+
focusNote (selectedNoteKeys, noteKey, pathname) {
177180
const { router } = this.context
178-
const { location } = this.props
179181

180182
this.setState({
181183
selectedNoteKeys
182184
})
183185

184186
router.push({
185-
pathname: location.pathname,
187+
pathname,
186188
query: {
187189
key: noteKey
188190
}
@@ -201,6 +203,7 @@ class NoteList extends React.Component {
201203
}
202204
let { selectedNoteKeys } = this.state
203205
const { shiftKeyDown } = this.state
206+
const { location } = this.props
204207

205208
let targetIndex = this.getTargetIndex()
206209

@@ -217,7 +220,7 @@ class NoteList extends React.Component {
217220
selectedNoteKeys.push(priorNoteKey)
218221
}
219222

220-
this.focusNote(selectedNoteKeys, priorNoteKey)
223+
this.focusNote(selectedNoteKeys, priorNoteKey, location.pathname)
221224

222225
ee.emit('list:moved')
223226
}
@@ -228,6 +231,7 @@ class NoteList extends React.Component {
228231
}
229232
let { selectedNoteKeys } = this.state
230233
const { shiftKeyDown } = this.state
234+
const { location } = this.props
231235

232236
let targetIndex = this.getTargetIndex()
233237
const isTargetLastNote = targetIndex === this.notes.length - 1
@@ -250,7 +254,7 @@ class NoteList extends React.Component {
250254
selectedNoteKeys.push(nextNoteKey)
251255
}
252256

253-
this.focusNote(selectedNoteKeys, nextNoteKey)
257+
this.focusNote(selectedNoteKeys, nextNoteKey, location.pathname)
254258

255259
ee.emit('list:moved')
256260
}
@@ -262,7 +266,7 @@ class NoteList extends React.Component {
262266
}
263267

264268
const selectedNoteKeys = [noteHash]
265-
this.focusNote(selectedNoteKeys, noteHash)
269+
this.focusNote(selectedNoteKeys, noteHash, '/home')
266270

267271
ee.emit('list:moved')
268272
}
@@ -276,12 +280,6 @@ class NoteList extends React.Component {
276280
ee.emit('top:new-note')
277281
}
278282

279-
// D key
280-
if (e.keyCode === 68) {
281-
e.preventDefault()
282-
this.deleteNote()
283-
}
284-
285283
// E key
286284
if (e.keyCode === 69) {
287285
e.preventDefault()
@@ -494,14 +492,21 @@ class NoteList extends React.Component {
494492
})
495493
}
496494

497-
alertIfSnippet () {
495+
alertIfSnippet (msg) {
496+
const warningMessage = (msg) => ({
497+
'export-txt': 'Text export',
498+
'export-md': 'Markdown export',
499+
'export-html': 'HTML export',
500+
'print': 'Print'
501+
})[msg]
502+
498503
const targetIndex = this.getTargetIndex()
499504
if (this.notes[targetIndex].type === 'SNIPPET_NOTE') {
500505
dialog.showMessageBox(remote.getCurrentWindow(), {
501506
type: 'warning',
502507
message: i18n.__('Sorry!'),
503-
detail: i18n.__('md/text import is available only a markdown note.'),
504-
buttons: [i18n.__('OK'), i18n.__('Cancel')]
508+
detail: i18n.__(warningMessage(msg) + ' is available only in markdown notes.'),
509+
buttons: [i18n.__('OK')]
505510
})
506511
}
507512
}

0 commit comments

Comments
 (0)