Execution Tool Bar
The transport controls for the run. In the web application they sit atop the Execution Page's primary editor panel, shown for the Execution root and every node under it, and this sole instance registers the F5–F8 shortcuts.
Layout
Execution Tool BarStatus Text FieldStart Button(F5; Resume once the run is paused)Pause Button(F6)Run-One-Line Button(F7 — one NC line)Run-One-Step Button(F8 — one machining step)Stop ButtonReset Button
In the web application the status text moved out of the tool bar and onto the Execution tree item, which carries the run-state badge. The two single-advance buttons there share one skip_next icon and are separated by a letter drawn into the button's corner — L for the line button, S for the step button — rather than by colour; the tool-tips carry the key names.
Behavior
- The webservice watches LocalProjectService events to track PacePlayer status changes.
- In the webservice,
ExecutionStatusServicesubscribes to those events and broadcasts status changes over SignalR throughExecutionStatusHub. - The frequently used buttons carry hotkeys: Start / Resume, Pause, Run One Line and Run One Step. The app's tool-tips are the only place those key bindings are written down.
- The background color of the
Status Text Fieldfollows the status:- Warning style — Running
- Secondary style — Paused, No Project
- Success style — Finished, Ready
The action of Reset Button is async, so the UI stays responsive while the session unwinds; the button shows a busy state for the duration, and the flag behind it is shared with the keyboard path so the two agree.
Enable Rules
Every button is disabled unless a project is loaded and the page has finished initializing its rendering connection — the web transport reads that readiness from the Execution page, so a dropped canvas connection greys the whole bar with a project still open. On top of that gate each button follows the status:
| Button | Enabled for status |
|---|---|
Start / Resume |
Ready, Paused |
Pause |
Running |
Run-One-Line, Run-One-Step |
Ready, Paused |
Stop |
Running, Paused, Finished |
Reset |
any, while no reset is in flight |
Neither single-advance button is enabled while the run is Running — stepping is a Ready-or-Paused operation, so a moving run has to be paused before it can be stepped.
The F5–F8 handler applies the same predicates before acting, and declines in two more cases: when the event target is an input, a textarea or a contenteditable element, and when the hosting page is deactivated. The second matters because the shell keep-alives the routed pages, so leaving the Execution route deactivates rather than unmounts this component; without the detach, F5 elsewhere in the app would drive the transport instead of reloading the browser. Every declined key falls through to the browser.
Tip
Use icons rather than text on the tool-bar buttons. Run One Line and Run One Step share an icon, so they need a second mark to tell them apart — this bar draws an L and an S in the button corner. The default colour is enough for the rest.
Source Code Path
See HiNC App Anatomy for git repository links.
HiNC-2025-webservice (Quasar CLI SPA):
wwwroot-src/src/components/execution/ExecutionToolBar.vue— the buttons. All state and handlers come from the shareduseExecutionTransportcomposable, so the component is pure markup.Execution/ExecutionController.cs—POST /api/Execution/start | pause | resume | run-line | run-step | stop | reset, andGET /api/Execution/status.Execution/ExecutionStatusHub.cs+Execution/ExecutionStatusService.cs— the status broadcast.
SignalR Implementation (Web Service Only)
ExecutionStatusHub is mapped at /executionStatusHub and answers GetExecutionStatus(). ExecutionStatusService watches the PacePlayer events — IsRunningChangedEvent, IsLockedChangedEvent, IsFinishedChangedEvent and ResetedEvent — and broadcasts each change, so every connected client sees the same run state without polling.
See Also
- Execution Page — the page these controls drive
- Starting and Stepping — the task these controls serve, with the enable rules read as a procedure