From 77e2791637ac46bf7e69600e607f9567ceda521e Mon Sep 17 00:00:00 2001 From: vajonam <152501+vajonam@users.noreply.github.com> Date: Fri, 1 Dec 2023 10:29:56 -0700 Subject: [PATCH] feat: Adds toolhead circle style controls (#1248) Signed-off-by: vajonam <152501+vajonam@users.noreply.github.com> Co-authored-by: Pedro Lamas --- src/components/settings/ToolheadSettings.vue | 650 +++++----- src/components/widgets/toolhead/Toolhead.vue | 11 +- .../toolhead/ToolheadControlCircle.vue | 1043 +++++++++++++++++ src/locales/en.yaml | 2 + src/store/config/state.ts | 2 + src/store/config/types.ts | 4 +- 6 files changed, 1439 insertions(+), 273 deletions(-) create mode 100644 src/components/widgets/toolhead/ToolheadControlCircle.vue diff --git a/src/components/settings/ToolheadSettings.vue b/src/components/settings/ToolheadSettings.vue index 8aece56160..525e48f18b 100644 --- a/src/components/settings/ToolheadSettings.vue +++ b/src/components/settings/ToolheadSettings.vue @@ -156,6 +156,64 @@ + + a - b), - server: true - }) - } - - get toolheadControlStyle () { - return this.$store.state.config.uiSettings.general.toolheadControlStyle - } - - set toolheadControlStyle (value: ToolheadControlStyle) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.toolheadControlStyle', - value, - server: true - }) - } - - get availableToolheadControlStyles () { - return [ - { - value: 'cross', - text: this.$t('app.general.label.cross') - }, - { - value: 'bars', - text: this.$t('app.general.label.bars') - } - ] - } - - get toolheadMoveDistances () { - return this.$store.state.config.uiSettings.general.toolheadMoveDistances - } - - set toolheadMoveDistances (value: (number | string)[]) { - if (!this.toolheadMoveDistancesElement.validate(true)) { - return - } - - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.toolheadMoveDistances', - value: [...new Set(value.map(Number))].sort((a, b) => a - b), - server: true - }) - } - - get toolheadXYMoveDistances () { - return this.$store.state.config.uiSettings.general.toolheadXYMoveDistances - } - - set toolheadXYMoveDistances (value: (number | string)[]) { - if (!this.toolheadXYMoveDistancesElement.validate(true)) { - return - } - - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.toolheadXYMoveDistances', - value: [...new Set(value.map(Number))].sort((a, b) => a - b), - server: true - }) - } - - get toolheadZMoveDistances () { - return this.$store.state.config.uiSettings.general.toolheadZMoveDistances - } - - set toolheadZMoveDistances (value: (number | string)[]) { - if (!this.toolheadZMoveDistancesElement.validate(true)) { - return - } - - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.toolheadZMoveDistances', - value: [...new Set(value.map(Number))].sort((a, b) => a - b), - server: true - }) - } - - get useGcodeCoords () { - return this.$store.state.config.uiSettings.general.useGcodeCoords - } - - set useGcodeCoords (value: boolean) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.useGcodeCoords', - value, - server: true - }) - } - - get invertX () { - return this.$store.state.config.uiSettings.general.axis.x.inverted - } - - set invertX (value: boolean) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.axis.x.inverted', - value, - server: true - }) - } - - get invertY () { - return this.$store.state.config.uiSettings.general.axis.y.inverted - } - - set invertY (value: boolean) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.axis.y.inverted', - value, - server: true - }) - } - - get invertZ () { - return this.$store.state.config.uiSettings.general.axis.z.inverted - } - - set invertZ (value: boolean) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.axis.z.inverted', - value, - server: true - }) - } - - get printerSupportsForceMove () { - return this.$store.getters['printer/getPrinterSettings']('force_move.enable_force_move') ?? false - } - - get printerSupportsSpoolman () { - return this.$store.getters['spoolman/getSupported'] - } - - get showManualProbeDialogAutomatically () { - return this.$store.state.config.uiSettings.general.showManualProbeDialogAutomatically - } - - set showManualProbeDialogAutomatically (value: boolean) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.showManualProbeDialogAutomatically', - value, - server: true - }) - } - - get showBedScrewsAdjustDialogAutomatically () { - return this.$store.state.config.uiSettings.general.showBedScrewsAdjustDialogAutomatically - } - - set showBedScrewsAdjustDialogAutomatically (value: boolean) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.showBedScrewsAdjustDialogAutomatically', - value, - server: true - }) - } - - get showScrewsTiltAdjustDialogAutomatically () { - return this.$store.state.config.uiSettings.general.showScrewsTiltAdjustDialogAutomatically - } - - set showScrewsTiltAdjustDialogAutomatically (value: boolean) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.showScrewsTiltAdjustDialogAutomatically', - value, - server: true - }) - } - - get forceMoveToggleWarning () { - return this.$store.state.config.uiSettings.general.forceMoveToggleWarning - } - - set forceMoveToggleWarning (value: boolean) { - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general.forceMoveToggleWarning', - value, - server: true - }) - } - - handleReset () { - let value = defaultState().uiSettings.general - const current = this.$store.state.config.uiSettings.general - value = { - ...value, - instanceName: current.instanceName, - chartVisible: current.chartVisible, - hideTempWaits: current.hideTempWaits - } - this.$store.dispatch('config/saveByPath', { - path: 'uiSettings.general', - value, - server: true - }) - } + get defaultExtrudeSpeed () { + return this.$store.state.config.uiSettings.general.defaultExtrudeSpeed + } + + setDefaultExtrudeSpeed (value: string) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.defaultExtrudeSpeed', + value: +value, + server: true + }) + } + + get defaultExtrudeLength () { + return this.$store.state.config.uiSettings.general.defaultExtrudeLength + } + + setDefaultExtrudeLength (value: number) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.defaultExtrudeLength', + value: +value, + server: true + }) + } + + get defaultToolheadMoveLength () { + return this.$store.state.config.uiSettings.general.defaultToolheadMoveLength + } + + setDefaultToolheadMoveLength (value: number) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.defaultToolheadMoveLength', + value: +value, + server: true + }) + } + + get defaultToolheadXYSpeed () { + return this.$store.state.config.uiSettings.general.defaultToolheadXYSpeed + } + + setDefaultToolheadYXSpeed (value: number) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.defaultToolheadXYSpeed', + value: +value, + server: true + }) + } + + get defaultToolheadZSpeed () { + return this.$store.state.config.uiSettings.general.defaultToolheadZSpeed + } + + setDefaultToolheadZSpeed (value: number) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.defaultToolheadZSpeed', + value: +value, + server: true + }) + } + + get zAdjustValues () { + return this.$store.state.config.uiSettings.general.zAdjustDistances + } + + set zAdjustValues (value: (number | string)[]) { + if (!this.zAdjustValuesElement.validate(true)) { + return + } + + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.zAdjustDistances', + value: [...new Set(value.map(Number))].sort((a, b) => a - b), + server: true + }) + } + + get toolheadControlXYHomingEnabled () { + return this.$store.state.config.uiSettings.general.toolheadControlXYHomingEnabled + } + + set toolheadControlXYHomingEnabled (value: ToolheadControlStyle) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadControlXYHomingEnabled', + value, + server: true + }) + } + + get toolheadControlStyle () { + return this.$store.state.config.uiSettings.general.toolheadControlStyle + } + + set toolheadControlStyle (value: ToolheadControlStyle) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadControlStyle', + value, + server: true + }) + } + + get availableToolheadControlStyles () { + return [ + { + value: 'cross', + text: this.$t('app.general.label.cross') + }, + { + value: 'bars', + text: this.$t('app.general.label.bars') + }, + { + value: 'circle', + text: this.$t('app.general.label.circle') + } + ] + } + + get toolheadMoveDistances () { + return this.$store.state.config.uiSettings.general.toolheadMoveDistances + } + + set toolheadMoveDistances (value: (number | string)[]) { + if (!this.toolheadMoveDistancesElement.validate(true)) { + return + } + + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadMoveDistances', + value: [...new Set(value.map(Number))].sort((a, b) => a - b), + server: true + }) + } + + get toolheadXYMoveDistances () { + return this.$store.state.config.uiSettings.general.toolheadXYMoveDistances + } + + set toolheadXYMoveDistances (value: (number | string)[]) { + if (!this.toolheadXYMoveDistancesElement.validate(true)) { + return + } + + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadXYMoveDistances', + value: [...new Set(value.map(Number))].sort((a, b) => a - b), + server: true + }) + } + + get toolheadCircleXYMoveDistances () { + return this.$store.state.config.uiSettings.general.toolheadCircleXYMoveDistances + } + + set toolheadCircleXYMoveDistances (value: (number | string)[]) { + if (!this.toolheadCircleXYMoveDistancesElement.validate(true)) { + return + } + + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadCircleXYMoveDistances', + value: [...new Set(value.map(Number))].sort((a, b) => a - b), + server: true + }) + } + + get toolheadZMoveDistances () { + return this.$store.state.config.uiSettings.general.toolheadZMoveDistances + } + + set toolheadZMoveDistances (value: (number | string)[]) { + if (!this.toolheadZMoveDistancesElement.validate(true)) { + return + } + + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadZMoveDistances', + value: [...new Set(value.map(Number))].sort((a, b) => a - b), + server: true + }) + } + + get toolheadCircleZMoveDistances () { + return this.$store.state.config.uiSettings.general.toolheadCircleZMoveDistances + } + + set toolheadCircleZMoveDistances (value: (number | string)[]) { + if (!this.toolheadCircleZMoveDistancesElement.validate(true)) { + return + } + + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.toolheadCircleZMoveDistances', + value: [...new Set(value.map(Number))].sort((a, b) => a - b), + server: true + }) + } + + get useGcodeCoords () { + return this.$store.state.config.uiSettings.general.useGcodeCoords + } + + set useGcodeCoords (value: boolean) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.useGcodeCoords', + value, + server: true + }) + } + + get invertX () { + return this.$store.state.config.uiSettings.general.axis.x.inverted + } + + set invertX (value: boolean) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.axis.x.inverted', + value, + server: true + }) + } + + get invertY () { + return this.$store.state.config.uiSettings.general.axis.y.inverted + } + + set invertY (value: boolean) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.axis.y.inverted', + value, + server: true + }) + } + + get invertZ () { + return this.$store.state.config.uiSettings.general.axis.z.inverted + } + + set invertZ (value: boolean) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.axis.z.inverted', + value, + server: true + }) + } + + get printerSupportsForceMove () { + return this.$store.getters['printer/getPrinterSettings']('force_move.enable_force_move') ?? false + } + + get printerSupportsSpoolman () { + return this.$store.getters['spoolman/getSupported'] + } + + get showManualProbeDialogAutomatically () { + return this.$store.state.config.uiSettings.general.showManualProbeDialogAutomatically + } + + set showManualProbeDialogAutomatically (value: boolean) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.showManualProbeDialogAutomatically', + value, + server: true + }) + } + + get showBedScrewsAdjustDialogAutomatically () { + return this.$store.state.config.uiSettings.general.showBedScrewsAdjustDialogAutomatically + } + + set showBedScrewsAdjustDialogAutomatically (value: boolean) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.showBedScrewsAdjustDialogAutomatically', + value, + server: true + }) + } + + get showScrewsTiltAdjustDialogAutomatically () { + return this.$store.state.config.uiSettings.general.showScrewsTiltAdjustDialogAutomatically + } + + set showScrewsTiltAdjustDialogAutomatically (value: boolean) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.showScrewsTiltAdjustDialogAutomatically', + value, + server: true + }) + } + + get forceMoveToggleWarning () { + return this.$store.state.config.uiSettings.general.forceMoveToggleWarning + } + + set forceMoveToggleWarning (value: boolean) { + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general.forceMoveToggleWarning', + value, + server: true + }) + } + + handleReset () { + let value = defaultState().uiSettings.general + const current = this.$store.state.config.uiSettings.general + value = { + ...value, + instanceName: current.instanceName, + chartVisible: current.chartVisible, + hideTempWaits: current.hideTempWaits + } + this.$store.dispatch('config/saveByPath', { + path: 'uiSettings.general', + value, + server: true + }) + } } diff --git a/src/components/widgets/toolhead/Toolhead.vue b/src/components/widgets/toolhead/Toolhead.vue index a0e5fe6f70..16b105ea41 100644 --- a/src/components/widgets/toolhead/Toolhead.vue +++ b/src/components/widgets/toolhead/Toolhead.vue @@ -9,9 +9,12 @@ > - - - + + @@ -45,6 +48,7 @@ import StateMixin from '@/mixins/state' import ToolheadMixin from '@/mixins/toolhead' import ToolheadControlCross from './ToolheadControlCross.vue' import ToolheadControlBars from './ToolheadControlBars.vue' +import ToolheadControlCircle from './ToolheadControlCircle.vue' import ExtruderMoves from './ExtruderMoves.vue' import ExtruderSelection from './ExtruderSelection.vue' import ToolheadPosition from './ToolheadPosition.vue' @@ -60,6 +64,7 @@ import type { ToolheadControlStyle } from '@/store/config/types' components: { ToolheadControlCross, ToolheadControlBars, + ToolheadControlCircle, ExtruderMoves, ExtruderSelection, ToolheadPosition, diff --git a/src/components/widgets/toolhead/ToolheadControlCircle.vue b/src/components/widgets/toolhead/ToolheadControlCircle.vue new file mode 100644 index 0000000000..d83b275f55 --- /dev/null +++ b/src/components/widgets/toolhead/ToolheadControlCircle.vue @@ -0,0 +1,1043 @@ + + + + + diff --git a/src/locales/en.yaml b/src/locales/en.yaml index 71827365bb..46889e83c6 100644 --- a/src/locales/en.yaml +++ b/src/locales/en.yaml @@ -247,6 +247,7 @@ app: command: Command confirm: Confirm cross: Cross + circle: Circle current_password: Current password current_user: Current user default: Default @@ -536,6 +537,7 @@ app: enable: Enable enable_diagnostics: Enable diagnostics enable_notifications: Enable notifications + enable_xy_homing: Enable XY Homing expression: Expression extrusion_line_width: Extrusion Line Width flip_horizontal: Horizontal Flip diff --git a/src/store/config/state.ts b/src/store/config/state.ts index 78f6c43f59..7f2bb9efed 100644 --- a/src/store/config/state.ts +++ b/src/store/config/state.ts @@ -33,7 +33,9 @@ export const defaultState = (): ConfigState => { toolheadControlStyle: 'cross', toolheadMoveDistances: [0.1, 1, 10, 25, 50, 100], toolheadXYMoveDistances: [1, 10, 50], + toolheadCircleXYMoveDistances: [1, 10, 25, 50], toolheadZMoveDistances: [0.1, 1, 10], + toolheadCircleZMoveDistances: [0.1, 1, 10, 50], useGcodeCoords: false, zAdjustDistances: [0.005, 0.01, 0.025, 0.050], enableVersionNotifications: true, diff --git a/src/store/config/types.ts b/src/store/config/types.ts index d4944ee0fd..1fe196b29e 100644 --- a/src/store/config/types.ts +++ b/src/store/config/types.ts @@ -67,6 +67,8 @@ export interface GeneralConfig { toolheadMoveDistances: number[]; toolheadXYMoveDistances: number[]; toolheadZMoveDistances: number[]; + toolheadCircleXYMoveDistances: number[]; + toolheadCircleZMoveDistances: number[]; useGcodeCoords: boolean; zAdjustDistances: number[]; enableVersionNotifications: boolean; @@ -94,7 +96,7 @@ export interface GeneralConfig { thumbnailSize: number; } -export type ToolheadControlStyle = 'cross' | 'bars' +export type ToolheadControlStyle = 'cross' | 'bars' | 'circle' export type TextSortOrder = 'default' | 'numeric-prefix' | 'version'