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