Unify and Improve Tool UI/UX #350

Closed
opened 2026-04-05 16:20:10 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @Xipit on 3/11/2026

Description

Built's on #12656

Currently the Dialog UI of the tools (Move, Cut, etc.) varies a lot, which negatively impacts the UX.
Unifying those will help all users by reducing the cognitive load when parsing the UI.

The new Structure is as follows (also in GLGizmoUtils.cpp):

GizmoUI Footer Structure:

~ Content ~
----------------------------------------
[Button1] [Button2]
----------------------------------------
[?] [Reset]           [Confirm] [Cancel]
----------------------------------------
~ Warnings ~


Additional details:
    - [Confirm], [Cancel], [Done], ... are buttons that close the Tool Dialog
    - [Reset], [Button1], ... are buttons that do not!
    - Non-consequential buttons like [Cancel] and [Done] are always the right-most buttons
    - Multiple warnings can show, but should only have one ImGui::Separator above
    - If no warnings is shown, dont render the ImGui::Separator

This also means that there now is a "Done" button in every Dialog Window, which provides an intuitive way of closing it.
The Dialog Windows are structured top-to-bottom and having to click the Toolbar Icon at the top breaks that flow.

Features:

  • adds "Done" (or "Cancel") Button to all tools
  • unify all Reset buttons to "Reset" button (with previous label as tooltip)
  • only enable Reset buttons if changes have been made
  • adds new Reset button to Text tool
  • matches Footer structure for all tools
  • reorders most UI Elements in Text tool to achieve a more intuitive hierarchy and structure
  • reorders some UI Elements in painting tools to maintain visual hierarchy and structure
  • adds an additional shortcut description to Text and Cut tool ("Drag: ....")

Bugfixes:

  • fixes pressing "T" or the icon not closing Text Window
  • match Brim Ears Slider Size to that of other sliders
  • consistent wording in shortcuts (e.g. "Left mouse button" instead of "Left click")

Screenshots/Recordings/Graphs

Before After
image image
image image
image image
image image
image image imageimage
image image
image image
image image
image image
imageimage imageimage
image image
image image
image image

Closing thoughts

I know that this PR potentially disrupts muscle memory of long time users.
It also adds extra space and buttons to a few windows, which can be considered bloat by some.

But i honestly believe that this is very much necessary to improve the overall User Experience of all users.

I am open to feedback on my approach and i hope I've communicated my thoughts well enough.

P.S. i havent touched the boolean cut UI, because i am planning to port BambuStudios over.

*Originally created by @Xipit on 3/11/2026* # Description Built's on #12656 Currently the Dialog UI of the tools (Move, Cut, etc.) varies a lot, which negatively impacts the UX. Unifying those will help all users by reducing the cognitive load when parsing the UI. The new Structure is as follows (also in `GLGizmoUtils.cpp`): GizmoUI Footer Structure: ~ Content ~ ---------------------------------------- [Button1] [Button2] ---------------------------------------- [?] [Reset] [Confirm] [Cancel] ---------------------------------------- ~ Warnings ~ Additional details: - [Confirm], [Cancel], [Done], ... are buttons that close the Tool Dialog - [Reset], [Button1], ... are buttons that do not! - Non-consequential buttons like [Cancel] and [Done] are always the right-most buttons - Multiple warnings can show, but should only have one ImGui::Separator above - If no warnings is shown, dont render the ImGui::Separator This also means that there now is a "Done" button in every Dialog Window, which provides an intuitive way of closing it. The Dialog Windows are structured top-to-bottom and having to click the Toolbar Icon at the top breaks that flow. Features: - adds "Done" (or "Cancel") Button to all tools - unify all Reset buttons to "Reset" button (with previous label as tooltip) - only enable Reset buttons if changes have been made - adds new Reset button to Text tool - matches Footer structure for all tools - reorders most UI Elements in Text tool to achieve a more intuitive hierarchy and structure - reorders some UI Elements in painting tools to maintain visual hierarchy and structure - adds an additional shortcut description to Text and Cut tool ("Drag: ....") Bugfixes: - fixes pressing "T" or the icon not closing Text Window - match Brim Ears Slider Size to that of other sliders - consistent wording in shortcuts (e.g. "Left mouse button" instead of "Left click") # Screenshots/Recordings/Graphs | Before | After | | ------------- | ------------- | | <img width="392" height="229" alt="image" src="https://github.com/user-attachments/assets/a567e344-8cc3-4d4a-9a90-83ee3171e93a" /> | <img width="382" height="216" alt="image" src="https://github.com/user-attachments/assets/646a403d-dc19-4ac2-9672-5e7aa6f9bd89" /> | | <img width="438" height="180" alt="image" src="https://github.com/user-attachments/assets/4a51e4df-b4e0-4bf4-9f86-ba16fca6f4c4" /> | <img width="421" height="178" alt="image" src="https://github.com/user-attachments/assets/9b679abd-5ab8-44fa-a92d-85f86a7d94af" /> | | <img width="422" height="195" alt="image" src="https://github.com/user-attachments/assets/ed34978c-4b1c-4fdb-b8ec-4a4ce0ae647d" /> | <img width="410" height="206" alt="image" src="https://github.com/user-attachments/assets/16b25904-881b-41f0-badb-2789d8e08039" /> | | <img width="456" height="235" alt="image" src="https://github.com/user-attachments/assets/7131c3df-d9d6-45a9-8707-c52c96b41653" /> | <img width="446" height="237" alt="image" src="https://github.com/user-attachments/assets/60cf1153-e37d-4022-9f4f-c347f4f406a8" /> | | <img width="369" height="392" alt="image" src="https://github.com/user-attachments/assets/aebafbd6-e92e-4833-9fee-aa14f6bffa4b" /> <img width="392" height="350" alt="image" src="https://github.com/user-attachments/assets/b6f16c8e-50ed-44ee-8ae3-1430f8521a61" /> | <img width="357" height="393" alt="image" src="https://github.com/user-attachments/assets/41b7ed6e-a833-4488-8f75-dc9bc166a0d8" /><img width="375" height="342" alt="image" src="https://github.com/user-attachments/assets/49d8e074-f817-48cf-bcc2-9a4441774450" /> | | <img width="350" height="344" alt="image" src="https://github.com/user-attachments/assets/3c72ef37-ae4b-46c5-80eb-b8c0932b0eb6" /> | <img width="343" height="354" alt="image" src="https://github.com/user-attachments/assets/1d83d264-75e3-4cf7-82ac-34f6c11814cc" /> | | <img width="327" height="311" alt="image" src="https://github.com/user-attachments/assets/4ef9d040-30ed-47dd-b934-c1e133189a9c" /> | <img width="313" height="294" alt="image" src="https://github.com/user-attachments/assets/22351af0-2d42-48e8-910f-61192fd8c6ba" /> | | <img width="324" height="275" alt="image" src="https://github.com/user-attachments/assets/0f1e8190-cf2b-4fbd-9cbe-3219ee284d34" /> | <img width="342" height="345" alt="image" src="https://github.com/user-attachments/assets/5f715a93-4e76-4508-919c-400e47648ee0" /> | | <img width="334" height="465" alt="image" src="https://github.com/user-attachments/assets/037bc62f-f114-4550-aef5-5ec0bd2d6903" /> | <img width="319" height="451" alt="image" src="https://github.com/user-attachments/assets/8422ba24-40a2-45ae-9412-61d47fa64b09" /> | | <img width="477" height="387" alt="image" src="https://github.com/user-attachments/assets/af01faed-6a0b-4340-8b2f-170f8c55725c" /><img width="450" height="810" alt="image" src="https://github.com/user-attachments/assets/abd82bd2-6074-45df-b6c5-01d5b5536cec" /> | <img width="453" height="457" alt="image" src="https://github.com/user-attachments/assets/71b6b9c1-ab94-4a60-bd5b-0766abd30c9b" /><img width="459" height="772" alt="image" src="https://github.com/user-attachments/assets/a126f005-5c6b-4ce7-95a8-39db1a8b64ca" /> | | <img width="336" height="367" alt="image" src="https://github.com/user-attachments/assets/22950106-93ea-46e8-9d48-97957c854fbb" /> | <img width="313" height="359" alt="image" src="https://github.com/user-attachments/assets/c3ecdd53-2f13-4d19-b4cd-0a51d724ba48" /> | | <img width="332" height="349" alt="image" src="https://github.com/user-attachments/assets/bcd97eb1-d3f4-4c43-b9dd-cd025653bc33" /> | <img width="314" height="346" alt="image" src="https://github.com/user-attachments/assets/c30c80b9-bd9e-40c8-bbbd-09624b1443ca" /> | | <img width="377" height="388" alt="image" src="https://github.com/user-attachments/assets/5042ecee-9c22-4d4a-bc43-7c19684df3c2" /> | <img width="366" height="420" alt="image" src="https://github.com/user-attachments/assets/3aa475dc-fe9f-46b8-b4db-8976c557abc3" /> | # Closing thoughts I know that this PR potentially disrupts muscle memory of long time users. It also adds extra space and buttons to a few windows, which can be considered bloat by some. But i honestly believe that this is very much necessary to improve the overall User Experience of all users. I am open to feedback on my approach and i hope I've communicated my thoughts well enough. P.S. i havent touched the boolean cut UI, because i am planning to port BambuStudios over.
MrUnknownDE added the UI/UXUI/UXUI/UXUI/UXUI/UX labels 2026-04-05 16:20:10 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#350