Skip to content

Add Multi-Drive Control to ConfigureGUI - #213

Merged
rocco8773 merged 240 commits into
mainfrom
multi_control
Sep 10, 2026
Merged

rocco8773 merged 240 commits into
mainfrom
multi_control

Conversation

@rocco8773

@rocco8773 rocco8773 commented Jul 28, 2026 •

Copy link
Copy Markdown
Member

This PR adds to the ConfigureGUI the ability to control / move multiply motion groups at a time.

The ConfigureGUI has a stack widget region that switches between configuration / control modes. So far, this stack only had two switchable widgets: (1) RunWidget which is the default widget that show up when first launched and has a summary of the whole configuration and (2) MGWidget which is the configuration widget for building / configuration a MotionGroup. This PR adds a third widget MultiControl to this stack that is launch-able from RunWidget and will allow the user to control all existing motion group.


RunWidget now has a "Control All" below the motion group list box that will launch the MultiControl widget.

image

The MultiControl widget will allow the user to control every fully configured motion group. MultiControl will NOT allow the user to edit the motion group configuration. To edit a motion group configuration one has to return to the RunWidget and select "Configure`.

  • There is enough space to cleanly display controls for 4x motion groups. When there are more than 4 motion groups, the control area will become scroll-able.
  • The is a "park" button for 2D drives, and will disappear for any other drive type. The park position defaults to [40, 0] cm.
image

A user can still view a motion group configuration by clicking the details button. In a future PR the "Configure" button will be enabled to allow the user to switch directly to a MGWidget instance for the associated motion group.

image
  • RunWidget
    • Added mg_control_btn button to the interface.
    • mg_control_btn is placed below the normal controls that are under the motion group list box.
    • Launching of MultiControl is not done in RunWidget but is done by ConfigureGUI
  • ConfigureGUI
    • Updated @Slot _switch_stack to accept a string Literal ("run", "configure", and "control") so switching between RunWidget, MGWidget, and MultiControl can be specifically request. If no argument is given, then it "run" (aka RunWidget) will be assumed as the target widget.
    • Created _spawn_control_widget for instantiating MultiControl.
    • Created @Slot _motion_group_multi_control and connected it to RunWidget.mg_control_btn.clicked to control instantiation of MultiControl and stack switch to MultiControl.
    • Created helper method _connect_signals_control_widget (used by _spawn_control_widget) to better centralized signal connection of MultiControl.
    • Update closeEvent to explicitly close MultiControl (if instantiated).
  • Created sub-module bapsf_motion.gui.configure.multi_control
    • Define the MultiControl widget.
    • In addition to MultiControl the following "helper" widgets are defined:
      • MGDetailsOverlay : This is the overlay that displays the TOML configuration for the requested motion group.
      • MGControlAxis : This is the widget that defines the individual axis controls for a given axis of a given motion group. This is leveraged by MGControl.
      • MGControl : This the the widget that defines the whole control interface for a given motion group.

Items created but should be moved to bapsf_qt

  • Created a vertical label QVerticalLabel to bapsf_motion.gui.widgets. This will generate a 90deg rotated QLabel

rocco8773 added 26 commits July 24, 2026 13:51
# Conflicts:
#	bapsf_motion/gui/configure/configure_.py
@rocco8773
rocco8773 enabled auto-merge (squash) September 10, 2026 21:39
@rocco8773
rocco8773 disabled auto-merge September 10, 2026 21:39
@rocco8773
rocco8773 merged commit 43decb0 into main Sep 10, 2026
17 checks passed
@github-project-automation github-project-automation Bot moved this from Tasks to Done in BaPSF Motion Sep 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

1 participant