mirror of
https://github.com/zadam/trilium.git
synced 2025-03-01 14:22:32 +01:00
cleanup note open custom
This commit is contained in:
parent
bd8429a0ba
commit
88a961180f
@ -54,13 +54,11 @@ export default class RootCommandExecutor extends Component {
|
|||||||
openService.openNoteExternally(noteId, mime);
|
openService.openNoteExternally(noteId, mime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
openNoteCustomCommand() {
|
openNoteCustomCommand() {
|
||||||
const noteId = appContext.tabManager.getActiveContextNoteId();
|
const noteId = appContext.tabManager.getActiveContextNoteId();
|
||||||
const mime = appContext.tabManager.getActiveContextNoteMime()
|
|
||||||
|
|
||||||
if (noteId) {
|
if (noteId) {
|
||||||
openService.openNoteCustom(noteId, mime);
|
openService.openNoteCustom(noteId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,61 +47,66 @@ async function openNoteExternally(noteId, mime) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function openNoteCustom(noteId, mime) {
|
async function openNoteCustom(noteId) {
|
||||||
if (utils.isElectron()) {
|
if (!utils.isElectron() || utils.isMac()) {
|
||||||
const resp = await server.post(`notes/${noteId}/save-to-tmp-dir`);
|
return;
|
||||||
const filePath = resp.tmpFilePath;
|
}
|
||||||
const { exec } = utils.dynamicRequire('child_process');
|
|
||||||
const platform = process.platform;
|
const resp = await server.post(`notes/${noteId}/save-to-tmp-dir`);
|
||||||
if (platform === 'linux') {
|
let filePath = resp.tmpFilePath;
|
||||||
const terminals = ['gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal', 'mate-terminal', 'rxvt', 'terminator', 'terminology'];
|
const {exec} = utils.dynamicRequire('child_process');
|
||||||
|
const platform = process.platform;
|
||||||
|
|
||||||
|
if (platform === 'linux') {
|
||||||
|
// we don't know which terminal is available, try in succession
|
||||||
|
const terminals = ['x-terminal-emulator', 'gnome-terminal', 'konsole', 'xterm', 'xfce4-terminal', 'mate-terminal', 'rxvt', 'terminator', 'terminology'];
|
||||||
const openFileWithTerminal = (terminal) => {
|
const openFileWithTerminal = (terminal) => {
|
||||||
const command = `${terminal} -e 'mimeopen -d "${filePath}"'`;
|
const command = `${terminal} -e 'mimeopen -d "${filePath}"'`;
|
||||||
console.log(`Open Note custom: ${command} `);
|
console.log(`Open Note custom: ${command} `);
|
||||||
exec(command, (error, stdout, stderr) => {
|
exec(command, (error, stdout, stderr) => {
|
||||||
if (error) {
|
if (error) {
|
||||||
console.error(`Open Note custom: Failed to open file with ${terminal}: ${error}`);
|
console.error(`Open Note custom: Failed to open file with ${terminal}: ${error}`);
|
||||||
searchTerminal(terminals.indexOf(terminal) + 1);
|
searchTerminal(terminals.indexOf(terminal) + 1);
|
||||||
} else {
|
} else {
|
||||||
console.log(`Open Note custom: File opened with ${terminal}. ${stdout}`);
|
console.log(`Open Note custom: File opened with ${terminal}: ${stdout}`);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
const searchTerminal = (index) => {
|
const searchTerminal = (index) => {
|
||||||
const terminal = terminals[index];
|
const terminal = terminals[index];
|
||||||
if (!terminal) {
|
if (!terminal) {
|
||||||
console.error('Open Note custom: No terminal found!');
|
console.error('Open Note custom: No terminal found!');
|
||||||
open(getFileUrl(noteId), { url: true });
|
open(getFileUrl(noteId), {url: true});
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
exec(`which ${terminal}`, (error, stdout, stderr) => {
|
|
||||||
if (stdout.trim()) {
|
|
||||||
openFileWithTerminal(terminal);
|
|
||||||
} else {
|
|
||||||
searchTerminal(index + 1);
|
|
||||||
}
|
}
|
||||||
});
|
exec(`which ${terminal}`, (error, stdout, stderr) => {
|
||||||
|
if (stdout.trim()) {
|
||||||
|
openFileWithTerminal(terminal);
|
||||||
|
} else {
|
||||||
|
searchTerminal(index + 1);
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
searchTerminal(0);
|
searchTerminal(0);
|
||||||
} else if (platform === 'win32') {
|
} else if (platform === 'win32') {
|
||||||
if (filePath.indexOf("/") !== -1) {
|
if (filePath.indexOf("/") !== -1) {
|
||||||
//Note that the path separator must be \ instead of /
|
// Note that the path separator must be \ instead of /
|
||||||
filePath = filePath.replace(/\//g, "\\");
|
filePath = filePath.replace(/\//g, "\\");
|
||||||
}
|
}
|
||||||
const command = `rundll32.exe shell32.dll,OpenAs_RunDLL ` + filePath;
|
const command = `rundll32.exe shell32.dll,OpenAs_RunDLL ` + filePath;
|
||||||
exec(command, (err, stdout, stderr) => {
|
exec(command, (err, stdout, stderr) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error("Open Note custom: ", err);
|
console.error("Open Note custom: ", err);
|
||||||
open(getFileUrl(noteId), { url: true });
|
open(getFileUrl(noteId), {url: true});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
console.log('Currently "Open Note custom" only supports linux and windows systems');
|
console.log('Currently "Open Note custom" only supports linux and windows systems');
|
||||||
open(getFileUrl(noteId), { url: true });
|
open(getFileUrl(noteId), {url: true});
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function downloadNoteRevision(noteId, noteRevisionId) {
|
function downloadNoteRevision(noteId, noteRevisionId) {
|
||||||
const url = getUrlForDownload(`api/notes/${noteId}/revisions/${noteRevisionId}/download`);
|
const url = getUrlForDownload(`api/notes/${noteId}/revisions/${noteRevisionId}/download`);
|
||||||
|
@ -29,7 +29,7 @@ const TPL = `
|
|||||||
<a data-trigger-command="findInText" class="dropdown-item find-in-text-button">Search in note <kbd data-command="findInText"></a>
|
<a data-trigger-command="findInText" class="dropdown-item find-in-text-button">Search in note <kbd data-command="findInText"></a>
|
||||||
<a data-trigger-command="showNoteSource" class="dropdown-item show-source-button"><kbd data-command="showNoteSource"></kbd> Note source</a>
|
<a data-trigger-command="showNoteSource" class="dropdown-item show-source-button"><kbd data-command="showNoteSource"></kbd> Note source</a>
|
||||||
<a data-trigger-command="openNoteExternally" class="dropdown-item open-note-externally-button"><kbd data-command="openNoteExternally"></kbd> Open note externally</a>
|
<a data-trigger-command="openNoteExternally" class="dropdown-item open-note-externally-button"><kbd data-command="openNoteExternally"></kbd> Open note externally</a>
|
||||||
<a data-trigger-command="openNoteCustom" class="dropdown-item open-note-custom-button"><kbd data-command="openNoteCustom"></kbd> Open note custom (beta)</a>
|
<a data-trigger-command="openNoteCustom" class="dropdown-item open-note-custom-button"><kbd data-command="openNoteCustom"></kbd> Open note custom</a>
|
||||||
<a class="dropdown-item import-files-button">Import files</a>
|
<a class="dropdown-item import-files-button">Import files</a>
|
||||||
<a class="dropdown-item export-note-button">Export note</a>
|
<a class="dropdown-item export-note-button">Export note</a>
|
||||||
<a class="dropdown-item delete-note-button">Delete note</a>
|
<a class="dropdown-item delete-note-button">Delete note</a>
|
||||||
@ -90,7 +90,7 @@ export default class NoteActionsWidget extends NoteContextAwareWidget {
|
|||||||
this.$renderNoteButton.toggle(note.type === 'render');
|
this.$renderNoteButton.toggle(note.type === 'render');
|
||||||
|
|
||||||
this.$openNoteExternallyButton.toggle(utils.isElectron());
|
this.$openNoteExternallyButton.toggle(utils.isElectron());
|
||||||
this.$openNoteCustomButton.toggle(utils.isElectron());
|
this.$openNoteCustomButton.toggle(utils.isElectron() && !utils.isMac()); // no implementation for Mac yet
|
||||||
}
|
}
|
||||||
|
|
||||||
toggleDisabled($el, enable) {
|
toggleDisabled($el, enable) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user