Display Buttons¶
Display buttons don't run actions — they organize and structure your menus visually.
LABEL¶
A non-interactive text line. Use it as a section header to group buttons visually.
Example: A Simple Menu with tools organized under labels:
─── Modeling ───
[ Loop Cut ] [ Extrude ] [ Bevel ]
─── Selection ───
[ Select All ] [ Invert ] [ Box Select ]
SECTION¶
A collapsible group. Add a SECTION button, then put other buttons inside it. The user can click the section header to expand or collapse it.
Use it when:¶
- You have many buttons and want to keep the menu compact by default
- You want to group related tools under a named header that can be hidden
In Preview — Edit Mode:¶
Click the section header to toggle open/close while editing.
DRAWER¶
A sliding panel that appears when the mouse hovers over the drawer button. Buttons inside the drawer are hidden until the user hovers — keeping the main menu clean.
Setup¶
| Field | Options |
|---|---|
| Direction | RIGHT, LEFT, TOP, BOTTOM, SIDE_RIGHT, SIDE_LEFT |
| Items Per Row | 0 = children in a single line (default). N > 0 wraps children into rows of N — useful for large drawers of icon buttons. |
| Items From | Where the children come from: Static, Asset Folder, Modifiers or Python (see below). |
Add child buttons inside the DRAWER button. They appear in the sliding panel.
Items From — filling a drawer automatically¶
| Items From | What fills the drawer |
|---|---|
| Static | the buttons you added by hand |
| Asset Folder | one button per asset file found in a folder, its thumbnail as icon, a click importing it. Set the Asset Kind (Models, Textures, HDRIs, Materials) so the click does the right thing, and use Asset Trigger Variants to run something after each import |
| Modifiers | one sub-drawer per modifier on the active object, holding its parameters, its viewport and render toggles, and its actions. Nothing to write |
| Python | the buttons a build() function returns, so the drawer is assembled from the scene |
Two settings apply to the generated drawers:
- Children Layout — direction, side flow, flow and items per row for the sub-panels a generator returns, without editing the script. A field left on Keep uses the generator's own value.
- Rebuild When — an expression saying when the drawer is worth rebuilding. It is what keeps a generated drawer live in a menu that stays on screen; without one the drawer keeps what it had when it opened. A generator declaring
PM_SIGNATUREsupplies the expression itself, so a Modifiers drawer follows the active object with the field left empty.
Use it when:¶
- You want secondary options accessible but not taking up space
- You have a logical "parent → children" relationship (e.g. "Import" → list of formats)
Tip
Drawers support all widget types — sliders, color pickers, enum lists — not just operator buttons.
Icon-only children
Leave a child button's Label empty and set an Icon — it renders as an icon-only square. Combine with Items Per Row to build a compact icon grid inside a drawer.
Drawers in drawers
You can nest a DRAWER inside another DRAWER for deeper hierarchies.
SEPARATOR¶
Adds a visual gap between buttons. Use it to create breathing room inside a dense menu without adding a full LABEL or SECTION.
Its Style block chooses what is drawn in that gap: Space, Full line, Centered line, Dotted or Double dotted, with adjustable thickness, length and color. Line styles keep the background continuous, so a strip of glued buttons stays one block with a rule across it.
A separator used as a drawer item has the same Style block, and opens a real gap that cuts the panel background in two.