diff --git a/web/src/components/IdeEditor/IdeEditor.js b/web/src/components/IdeEditor/IdeEditor.js index 914562a..cd56f34 100644 --- a/web/src/components/IdeEditor/IdeEditor.js +++ b/web/src/components/IdeEditor/IdeEditor.js @@ -8,13 +8,30 @@ const IdeEditor = () => { function handleCodeChange(value, _event) { dispatch({ type: 'updateCode', payload: value }) } + function handleSaveHotkey(event) { + //ctrl|meta + s is very intuitive for most devs + const { key, ctrlKey, metaKey } = event + if (key === 's' && (ctrlKey || metaKey)) { + event.preventDefault() + dispatch({ + type: 'render', + payload: { + code: state.code, + camera: state.settings.camera, + }, + }) + } + } return ( - +
+ +
) } diff --git a/web/src/components/IdeToolbarNew/IdeToolbarNew.js b/web/src/components/IdeToolbarNew/IdeToolbarNew.js index fa0f7d6..9b5ba42 100644 --- a/web/src/components/IdeToolbarNew/IdeToolbarNew.js +++ b/web/src/components/IdeToolbarNew/IdeToolbarNew.js @@ -10,7 +10,13 @@ const IdeToolbarNew = () => { dispatch({ type: 'setIdeType', payload: { message: ide } }) } function handleRender() { - dispatch({ type: 'render', payload: { code: state.code } }) + dispatch({ + type: 'render', + payload: { + code: state.code, + camera: state.settings.camera, + }, + }) } return ( diff --git a/web/src/components/IdeViewer/IdeViewer.js b/web/src/components/IdeViewer/IdeViewer.js index 93a6000..d8a27e5 100644 --- a/web/src/components/IdeViewer/IdeViewer.js +++ b/web/src/components/IdeViewer/IdeViewer.js @@ -146,11 +146,6 @@ const IdeViewer = () => { backgroundColor: openSCADDeepOceanThemeBackground, }} > - {state.isLoading && ( -
-
-
- )} {image && (
{
)} + {state.isLoading && ( +
+
+
+ )}
{ ideType: 'openScad', consoleMessages: [{ type: 'message', message: 'Initialising OpenSCAD' }], code: donutInitCode, + settings: {}, objectData: { type: 'stl', data: 'some binary', @@ -76,6 +77,11 @@ export const useIdeState = () => { ...state, isLoading: true, } + case 'setSettings': + return { + ...state, + settings: payload, + } default: return state } @@ -103,6 +109,7 @@ export const useIdeState = () => { }) } }) + dispatch({ type: 'setSettings', payload: { camera: payload.camera } }) dispatch({ type: 'setLoading' }) break