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'