Merge pull request #39 from ochafik/sounds
Global F5/F6 bindings + familiar sound on F6
This commit is contained in:
commit
dc8261a2fb
5 changed files with 25 additions and 5 deletions
BIN
public/complete.wav
Normal file
BIN
public/complete.wav
Normal file
Binary file not shown.
|
|
@ -101,6 +101,10 @@
|
||||||
</style>
|
</style>
|
||||||
<style>.github-fork-ribbon:before { background-color: #333; }</style>
|
<style>.github-fork-ribbon:before { background-color: #333; }</style>
|
||||||
|
|
||||||
|
<audio id="complete-sound">
|
||||||
|
<source src="complete.wav" type="audio/wav" />
|
||||||
|
Your browser does not support the audio element.
|
||||||
|
</audio>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<a target="_blank" class="github-fork-ribbon"
|
<a target="_blank" class="github-fork-ribbon"
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,22 @@ export function App({initialState, statePersister, fs}: {initialState: State, st
|
||||||
const model = new Model(fs, state, setState, statePersister);
|
const model = new Model(fs, state, setState, statePersister);
|
||||||
useEffect(() => model.init());
|
useEffect(() => model.init());
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
const handleKeyDown = (event: KeyboardEvent) => {
|
||||||
|
if (event.key === 'F5') {
|
||||||
|
event.preventDefault();
|
||||||
|
model.render({isPreview: true, now: true})
|
||||||
|
} else if (event.key === 'F6') {
|
||||||
|
event.preventDefault();
|
||||||
|
model.render({isPreview: false, now: true})
|
||||||
|
}
|
||||||
|
};
|
||||||
|
window.addEventListener('keydown', handleKeyDown);
|
||||||
|
return () => {
|
||||||
|
window.removeEventListener('keydown', handleKeyDown);
|
||||||
|
};
|
||||||
|
}, []);
|
||||||
|
|
||||||
const zIndexOfPanelsDependingOnFocus = {
|
const zIndexOfPanelsDependingOnFocus = {
|
||||||
editor: {
|
editor: {
|
||||||
editor: 3,
|
editor: 3,
|
||||||
|
|
|
||||||
|
|
@ -50,16 +50,11 @@ export default function EditorPanel({className, style}: {className?: string, sty
|
||||||
editor.addAction({
|
editor.addAction({
|
||||||
id: "openscad-render",
|
id: "openscad-render",
|
||||||
label: "Render OpenSCAD",
|
label: "Render OpenSCAD",
|
||||||
keybindings: [
|
|
||||||
monaco.KeyMod.CtrlCmd | monaco.KeyCode.Enter,
|
|
||||||
monaco.KeyCode.F6,
|
|
||||||
],
|
|
||||||
run: () => model.render({isPreview: false, now: true})
|
run: () => model.render({isPreview: false, now: true})
|
||||||
});
|
});
|
||||||
editor.addAction({
|
editor.addAction({
|
||||||
id: "openscad-preview",
|
id: "openscad-preview",
|
||||||
label: "Preview OpenSCAD",
|
label: "Preview OpenSCAD",
|
||||||
keybindings: [monaco.KeyCode.F5],
|
|
||||||
run: () => model.render({isPreview: true, now: true})
|
run: () => model.render({isPreview: true, now: true})
|
||||||
});
|
});
|
||||||
setEditor(editor)
|
setEditor(editor)
|
||||||
|
|
|
||||||
|
|
@ -178,6 +178,11 @@ export class Model {
|
||||||
formattedElapsedMillis: formatMillis(output.elapsedMillis),
|
formattedElapsedMillis: formatMillis(output.elapsedMillis),
|
||||||
formattedStlFileSize: formatBytes(output.stlFile.size),
|
formattedStlFileSize: formatBytes(output.stlFile.size),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (!isPreview) {
|
||||||
|
const audio = document.getElementById('complete-sound') as HTMLAudioElement;
|
||||||
|
audio?.play();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}})
|
}})
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue