Skip to content

Commit e53ea7c

Browse files
committed
,
1 parent 9b22c8d commit e53ea7c

4 files changed

Lines changed: 106 additions & 7 deletions

File tree

elle-app/elle-electron/preload.d.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ declare interface api {
33
receive: (channel: any, func: any) => void
44
}
55

6+
declare interface Tool {
7+
id: number
8+
offset: number
9+
description: string
10+
}
11+
612
declare interface settings {
7-
get: () => Promise<{ diameterMode: boolean; defaultMetricOnStartup: boolean; selectedThreadingTab: number; selectedTurningTab: number; selectedPitchTab: number[]; pitchX: number; pitchZ: number }>
8-
save: (settings: { diameterMode: boolean; defaultMetricOnStartup: boolean; selectedThreadingTab: number; selectedTurningTab: number; selectedPitchTab: number[]; pitchX: number; pitchZ: number }) => Promise<boolean>
13+
get: () => Promise<{ diameterMode: boolean; defaultMetricOnStartup: boolean; selectedThreadingTab: number; selectedTurningTab: number; selectedPitchTab: number[]; pitchX: number; pitchZ: number; tools?: Tool[]; currentToolIndex?: number; currentToolOffset?: number }>
14+
save: (settings: { diameterMode: boolean; defaultMetricOnStartup: boolean; selectedThreadingTab: number; selectedTurningTab: number; selectedPitchTab: number[]; pitchX: number; pitchZ: number; tools?: Tool[]; currentToolIndex?: number; currentToolOffset?: number }) => Promise<boolean>
915
}

elle-app/elle-frontend/src/App.vue

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ import Dialog from 'primevue/dialog'
77
import Numpad from './components/Numpad.vue'
88
import DRODisplay from './components/DRODisplay.vue'
99
import OperationPreview from './components/OperationPreview.vue'
10+
import ToolTable from './components/ToolTable.vue'
1011
import { useHAL } from './composables/useHAL'
1112
import {
1213
useCannedCycles,
1314
ThreadingEntryType,
1415
TurningEntryType
1516
} from './composables/useCannedCycles'
1617
import { useSettings } from './composables/useSettings'
18+
import { useToolTable } from './composables/useToolTable'
1719
1820
enum EntryType {
1921
xPosition = 1,
@@ -65,7 +67,10 @@ const {
6567
xstepperactive,
6668
zstepperactive,
6769
currentToolIndex,
68-
updateHALOut
70+
currentToolOffset,
71+
updateHALOut,
72+
loadCurrentTool,
73+
saveCurrentTool
6974
} = useHAL()
7075
7176
const {
@@ -179,6 +184,9 @@ const xpitchangle = ref(0)
179184
// Get settings from composable
180185
const { metric, diameterMode, defaultMetricOnStartup, selectedThreadingTab, selectedTurningTab, selectedPitchTab, pitchX, pitchZ, isQuitting, loadSettings } = useSettings()
181186
187+
// Get tool table functions
188+
const { loadTools } = useToolTable()
189+
182190
const cursorpos = ref(0)
183191
184192
enum FeedMode {
@@ -214,6 +222,19 @@ const showBackplot = ref(false)
214222
const currentOperation = ref<any>(null)
215223
const pendingOperationExecution = ref<(() => void) | null>(null)
216224
225+
// Tool Table state
226+
const showToolTable = ref(false)
227+
228+
const openToolTable = () => {
229+
showToolTable.value = true
230+
}
231+
232+
const onToolSelected = (toolId: number, offset: number) => {
233+
currentToolIndex.value = toolId
234+
currentToolOffset.value = offset
235+
showToolTable.value = false
236+
}
237+
217238
const menuItems = ref([
218239
{ separator: true },
219240
{
@@ -795,6 +816,11 @@ watch(selectedMenu, () => {
795816
scheduleHALOut()
796817
})
797818
819+
// Auto-save current tool when it changes
820+
watch([currentToolIndex, currentToolOffset], () => {
821+
saveCurrentTool()
822+
})
823+
798824
const PitchPresetSelector = defineAsyncComponent(
799825
() => import('./components/PitchPresetSelector.vue')
800826
)
@@ -1080,6 +1106,12 @@ onMounted(async () => {
10801106
// Load settings first
10811107
await loadSettings()
10821108
1109+
// Load tool table
1110+
await loadTools()
1111+
1112+
// Load current tool
1113+
await loadCurrentTool()
1114+
10831115
// Initialize pitch values from settings
10841116
if (pitchX.value > 0) {
10851117
xpitch.value = pitchX.value
@@ -1213,6 +1245,7 @@ onUnmounted(() => {
12131245
@pitch-clicked="pitchClicked"
12141246
@metric-clicked="metricClicked"
12151247
@other-clicked="otherClicked"
1248+
@tool-clicked="openToolTable"
12161249
/>
12171250
<div class="divider-vertical"></div>
12181251
<Numpad class="" @num-pad-clicked="numPadClicked" />
@@ -1438,6 +1471,7 @@ onUnmounted(() => {
14381471
@pitch-clicked="pitchClicked"
14391472
@metric-clicked="threadMetricClicked"
14401473
@other-clicked="otherClicked"
1474+
@tool-clicked="openToolTable"
14411475
/>
14421476
<div class="divider-vertical"></div>
14431477
<Numpad class="" @num-pad-clicked="numPadClicked" />
@@ -2459,6 +2493,14 @@ onUnmounted(() => {
24592493
</div>
24602494
</div>
24612495
</div>
2496+
2497+
<!-- Tool Table Modal -->
2498+
<ToolTable
2499+
:visible="showToolTable"
2500+
@update:visible="showToolTable = $event"
2501+
:current-tool-id="currentToolIndex"
2502+
@tool-selected="onToolSelected"
2503+
/>
24622504
</template>
24632505

24642506
<style scoped>

elle-app/elle-frontend/src/components/DRODisplay.vue

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ const emit = defineEmits([
66
'zeroClicked',
77
'pitchClicked',
88
'otherClicked',
9-
'metricClicked'
9+
'metricClicked',
10+
'toolClicked'
1011
])
1112
1213
enum NumberEntry {
@@ -197,7 +198,7 @@ const rpmsUnitFormatted = computed(() => `rpm${ ' '.repeat(3)}`)
197198
198199
const toolFormatted = computed(() => {
199200
const toolNum = props.toolIndex.toString().padStart(2, '0')
200-
return `🧰${toolNum}`
201+
return `🧰 ${toolNum}`
201202
})
202203
203204
const xposClicked = () => {
@@ -248,6 +249,10 @@ const unitClicked = () => {
248249
emit('metricClicked')
249250
}
250251
252+
const toolClicked = () => {
253+
emit('toolClicked')
254+
}
255+
251256
const xposLabel = computed(() => {
252257
const prefix = props.diameterMode ? '' : ' '
253258
return props.entryActive == NumberEntry.xpos
@@ -357,7 +362,13 @@ const zpitchLabel = computed(() => props.entryActive == NumberEntry.zpitch
357362
>
358363
mm↔in
359364
</button>
360-
<div class="inline ml-3">{{ toolFormatted }}</div>
365+
<button
366+
class="dro-font-display-button align-content-center ml-3"
367+
style="width: 6em; padding: 0.75rem"
368+
@click="toolClicked"
369+
>
370+
{{ toolFormatted }}
371+
</button>
361372
<br />
362373
<div style="position: absolute; top: 0.71em">
363374
<span style="color: #ff0000">{{ xposCursorFormatted }}</span>
@@ -400,4 +411,5 @@ const zpitchLabel = computed(() => props.entryActive == NumberEntry.zpitch
400411
font-size: 0.6em;
401412
text-align: center;
402413
}
414+
403415
</style>

elle-app/elle-frontend/src/composables/useHAL.ts

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,43 @@ export function useHAL() {
387387
scheduleHALOut()
388388
}
389389

390+
const loadCurrentTool = async () => {
391+
const userAgent = navigator.userAgent.toLowerCase()
392+
if (userAgent.indexOf(' electron/') > -1) {
393+
try {
394+
if (window.settings && window.settings.get) {
395+
const settings = await window.settings.get()
396+
if (settings.currentToolIndex !== undefined) {
397+
currentToolIndex.value = settings.currentToolIndex
398+
}
399+
if (settings.currentToolOffset !== undefined) {
400+
currentToolOffset.value = settings.currentToolOffset
401+
}
402+
}
403+
} catch (error) {
404+
console.error('Failed to load current tool:', error)
405+
}
406+
}
407+
}
408+
409+
const saveCurrentTool = async () => {
410+
const userAgent = navigator.userAgent.toLowerCase()
411+
if (userAgent.indexOf(' electron/') > -1) {
412+
try {
413+
if (window.settings && window.settings.get && window.settings.save) {
414+
const currentSettings = await window.settings.get()
415+
await window.settings.save({
416+
...currentSettings,
417+
currentToolIndex: currentToolIndex.value,
418+
currentToolOffset: currentToolOffset.value
419+
})
420+
}
421+
} catch (error) {
422+
console.error('Failed to save current tool:', error)
423+
}
424+
}
425+
}
426+
390427
return {
391428
xpos,
392429
zpos,
@@ -423,6 +460,8 @@ export function useHAL() {
423460
scheduleButtonUp,
424461
getAxisOffset,
425462
setAxisValue,
426-
updateHALOut
463+
updateHALOut,
464+
loadCurrentTool,
465+
saveCurrentTool
427466
}
428467
}

0 commit comments

Comments
 (0)