jdxi_editor.ui.widgets.editor.helper

Helpers to create HBox and VBoxes.

Layout and group helpers are provided by picoui.helpers; this module adds JD-Xi-specific helpers (filter buttons, icons, ADSR styling, etc.) and re-exports picoui helpers under the names used by the rest of the app.

Attributes

create_group

create_group_with_layout

create_group_from_definition

Functions

create_filter_button(→ PySide6.QtWidgets.QPushButton)

create filter button

create_icon_from_qta(→ PySide6.QtGui.QIcon)

create qta icon

create_button_with_icon(icon_name, icon, ...)

create button with icon

create_widget_with_layout(→ jdxi_editor.ui.common.QWidget)

create widget with given inner layout

create_icon_and_label(...)

create icon and label

create_checkbox_from_spec(→ PySide6.QtWidgets.QCheckBox)

create checkbox from spec

create_layout_with_inner_layout_and_widgets(...)

create vbox layout with horizontal layout and widgets below it

create_icon_label_with_pixmap(→ PySide6.QtWidgets.QLabel)

create icon label

create_icons_layout(→ PySide6.QtWidgets.QHBoxLayout)

Create icons layout

create_adsr_icon_pixmap(→ PySide6.QtGui.QPixmap)

Generate the ADSR waveform pixmap

create_adsr_icon_label(→ PySide6.QtWidgets.QLabel)

Generate the ADSR waveform icon (centered)

create_adsr_icon(→ PySide6.QtGui.QIcon)

create adsr icon

create_centered_adsr_icon_layout(...)

Create a centered ADSR icon layout (for consistent centering in envelope groups)

create_group_adsr_with_hlayout(...)

create ADSR Group with an hlayout (harmonized for Digital and Analog)

create_envelope_group(→ PySide6.QtWidgets.QGroupBox)

Create a standardized envelope group with icon and ADSR widget.

create_button_with_tooltip(→ PySide6.QtWidgets.QPushButton)

create button with tooltip

create_scrolled_area_with_layout(...)

create scrolled area with layout

create_form_layout_with_widgets(...)

create form layout with widgets

create_group_and_grid_layout(...)

A named group box with grid layout

create_group_with_form_layout(...)

Create a group box with form layout and add widgets in one call.

create_centered_layout_with_child(...)

create centered layout with a child layout

create_scroll_area(→ PySide6.QtWidgets.QScrollArea)

setup scroll area

create_scroll_container(...)

create scroll container

create_layout_with_child(→ PySide6.QtWidgets.QHBoxLayout)

create layout with child layout

transfer_layout_items(→ None)

Transfer all items from a source layout to a target layout.

create_group_with_widgets_in_hlayout(...)

create group with widgets

create_group_with_widgets(→ PySide6.QtWidgets.QGroupBox)

create group with widgets

set_button_style_and_dimensions(btn, dimensions, *[, ...])

Set button styling (Theme API) and dimensions. Used by Filter mode buttons etc.

create_icon_from_name(→ Any)

add_sublayout_to_layout(layout, sub_layouts)

add_widgets_to_layout(layout, widgets)

create_centered_layout(→ PySide6.QtWidgets.QHBoxLayout)

Hlayout to squish the slides of the widget together

create_centered_layout_with_widgets(...)

create centered layout with stretch either side to squish in widgets

Module Contents

jdxi_editor.ui.widgets.editor.helper.create_group[source]
jdxi_editor.ui.widgets.editor.helper.create_group_with_layout[source]
jdxi_editor.ui.widgets.editor.helper.create_group_from_definition[source]
jdxi_editor.ui.widgets.editor.helper.create_filter_button(icon_type: str, mode: jdxi_editor.midi.data.digital.filter.DigitalFilterMode) PySide6.QtWidgets.QPushButton[source]

create filter button

jdxi_editor.ui.widgets.editor.helper.create_icon_from_qta(icon_name: str) PySide6.QtGui.QIcon[source]

create qta icon

jdxi_editor.ui.widgets.editor.helper.create_button_with_icon(icon_name: str, icon: PySide6.QtGui.QIcon, button_dimensions: jdxi_editor.ui.style.dimensions.Dimensions, icon_dimensions: jdxi_editor.ui.style.dimensions.Dimensions)[source]

create button with icon

jdxi_editor.ui.widgets.editor.helper.create_widget_with_layout(inner_layout: PySide6.QtWidgets.QHBoxLayout) jdxi_editor.ui.common.QWidget[source]

create widget with given inner layout

jdxi_editor.ui.widgets.editor.helper.create_icon_and_label(label: str = '', icon: str = '') tuple[PySide6.QtWidgets.QHBoxLayout, PySide6.QtWidgets.QLabel][source]

create icon and label

jdxi_editor.ui.widgets.editor.helper.create_checkbox_from_spec(spec: picoui.specs.widgets.CheckBoxSpec) PySide6.QtWidgets.QCheckBox[source]

create checkbox from spec

jdxi_editor.ui.widgets.editor.helper.create_layout_with_inner_layout_and_widgets(inner_layout: PySide6.QtWidgets.QHBoxLayout | jdxi_editor.ui.common.QVBoxLayout | None = None, widgets: list = None, vertical: bool = True) jdxi_editor.ui.common.QVBoxLayout[source]

create vbox layout with horizontal layout and widgets below it

jdxi_editor.ui.widgets.editor.helper.create_icon_label_with_pixmap(pixmap: PySide6.QtGui.QPixmap) PySide6.QtWidgets.QLabel[source]

create icon label

jdxi_editor.ui.widgets.editor.helper.create_icons_layout() PySide6.QtWidgets.QHBoxLayout[source]

Create icons layout

jdxi_editor.ui.widgets.editor.helper.create_adsr_icon_pixmap() PySide6.QtGui.QPixmap[source]

Generate the ADSR waveform pixmap

jdxi_editor.ui.widgets.editor.helper.create_adsr_icon_label() PySide6.QtWidgets.QLabel[source]

Generate the ADSR waveform icon (centered)

jdxi_editor.ui.widgets.editor.helper.create_adsr_icon() PySide6.QtGui.QIcon[source]

create adsr icon

jdxi_editor.ui.widgets.editor.helper.create_centered_adsr_icon_layout() PySide6.QtWidgets.QHBoxLayout[source]

Create a centered ADSR icon layout (for consistent centering in envelope groups)

jdxi_editor.ui.widgets.editor.helper.create_group_adsr_with_hlayout(name: str, hlayout: PySide6.QtWidgets.QHBoxLayout, analog: bool = False) PySide6.QtWidgets.QGroupBox[source]

create ADSR Group with an hlayout (harmonized for Digital and Analog)

jdxi_editor.ui.widgets.editor.helper.create_envelope_group(name: str = 'Envelope', icon_layout: PySide6.QtWidgets.QHBoxLayout = None, adsr_widget: jdxi_editor.ui.common.QWidget = None, analog: bool = False) PySide6.QtWidgets.QGroupBox[source]

Create a standardized envelope group with icon and ADSR widget.

The icon is centered horizontally using stretches in an HBoxLayout, and the ADSR widget is placed below it in a VBoxLayout.

Parameters:
  • name – Group box title (default: “Envelope”)

  • icon_layout – Optional icon layout (if None, creates centered ADSR icon)

  • adsr_widget – ADSR widget to add below the icon

  • analog – Whether to apply analog styling

Returns:

QGroupBox with envelope layout

jdxi_editor.ui.widgets.editor.helper.create_button_with_tooltip(tooltip: str) PySide6.QtWidgets.QPushButton[source]

create button with tooltip

jdxi_editor.ui.widgets.editor.helper.create_scrolled_area_with_layout() tuple[PySide6.QtWidgets.QScrollArea, jdxi_editor.ui.common.QVBoxLayout][source]

create scrolled area with layout

jdxi_editor.ui.widgets.editor.helper.create_form_layout_with_widgets(widgets: list) PySide6.QtWidgets.QFormLayout[source]

create form layout with widgets

jdxi_editor.ui.widgets.editor.helper.create_group_and_grid_layout(group_name: str) tuple[PySide6.QtWidgets.QGroupBox, PySide6.QtWidgets.QGridLayout][source]

A named group box with grid layout

jdxi_editor.ui.widgets.editor.helper.create_group_with_form_layout(widgets: list, label: str = None) tuple[PySide6.QtWidgets.QGroupBox, PySide6.QtWidgets.QFormLayout][source]

Create a group box with form layout and add widgets in one call.

This combines create_group_with_layout() and create_form_layout_with_widgets() for convenience when creating form-based groups.

Parameters:
  • widgets – List of widgets to add as rows to the form layout

  • label – Optional name for the group box

Returns:

Tuple of (QGroupBox, QFormLayout)

jdxi_editor.ui.widgets.editor.helper.create_centered_layout_with_child(layout: PySide6.QtWidgets.QFormLayout | PySide6.QtWidgets.QHBoxLayout) PySide6.QtWidgets.QHBoxLayout[source]

create centered layout with a child layout

jdxi_editor.ui.widgets.editor.helper.create_scroll_area() PySide6.QtWidgets.QScrollArea[source]

setup scroll area

jdxi_editor.ui.widgets.editor.helper.create_scroll_container() tuple[jdxi_editor.ui.common.QWidget, jdxi_editor.ui.common.QVBoxLayout][source]

create scroll container

jdxi_editor.ui.widgets.editor.helper.create_layout_with_child(widget_layout: PySide6.QtWidgets.QHBoxLayout) PySide6.QtWidgets.QHBoxLayout[source]

create layout with child layout

jdxi_editor.ui.widgets.editor.helper.transfer_layout_items(source_layout: PySide6.QtWidgets.QLayout, target_layout: PySide6.QtWidgets.QHBoxLayout | jdxi_editor.ui.common.QVBoxLayout) None[source]

Transfer all items from a source layout to a target layout.

This is useful for avoiding “already has a parent” errors when reusing layouts. All widgets, spacer items, and nested layouts are transferred to the target.

Parameters:
  • source_layout – The layout to take items from

  • target_layout – The layout to add items to

jdxi_editor.ui.widgets.editor.helper.create_group_with_widgets_in_hlayout(label: str, widgets: list, vertical: bool = False) PySide6.QtWidgets.QGroupBox[source]

create group with widgets

jdxi_editor.ui.widgets.editor.helper.create_group_with_widgets(label: str, widgets: list, vertical: bool = False) PySide6.QtWidgets.QGroupBox[source]

create group with widgets

jdxi_editor.ui.widgets.editor.helper.set_button_style_and_dimensions(btn: PySide6.QtWidgets.QPushButton, dimensions: jdxi_editor.ui.style.dimensions.Dimensions, *, analog: bool = False)[source]

Set button styling (Theme API) and dimensions. Used by Filter mode buttons etc.

jdxi_editor.ui.widgets.editor.helper.create_icon_from_name(icon_name: str) Any[source]
jdxi_editor.ui.widgets.editor.helper.add_sublayout_to_layout(layout: jdxi_editor.ui.common.QVBoxLayout | PySide6.QtWidgets.QHBoxLayout, sub_layouts: list[PySide6.QtWidgets.QHBoxLayout | jdxi_editor.ui.common.QVBoxLayout])[source]
jdxi_editor.ui.widgets.editor.helper.add_widgets_to_layout(layout: jdxi_editor.ui.common.QVBoxLayout | PySide6.QtWidgets.QHBoxLayout, widgets: list[jdxi_editor.ui.common.QWidget | None])[source]
jdxi_editor.ui.widgets.editor.helper.create_centered_layout(spacing: int = None) PySide6.QtWidgets.QHBoxLayout[source]

Hlayout to squish the slides of the widget together

jdxi_editor.ui.widgets.editor.helper.create_centered_layout_with_widgets(widgets: list[jdxi_editor.ui.common.QWidget]) PySide6.QtWidgets.QHBoxLayout[source]

create centered layout with stretch either side to squish in widgets