Unify Tool UI Footer #249

Open
opened 2026-04-05 16:19:18 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @Xipit on 3/19/2026

Description

While using OrcaSlicer i noticed that there are a few inconsistencies in the UI of the tools, such as where warnings are placed, where buttons are placed or how the footer looks like.
I was also missing Buttons to close the UI in the footer, which the Cut Tool UI already has.

Knowing all this, i decided to standardize the footer of all tools with the goal of making them easier to use.
Part of this is consistently applying UI conventions, such as the bottom-right-aligned "Confirm or Cancel" buttons.

The detailed structure is documented in GLGizmoUtils

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
    - [Confirm] buttons should use the orca_button_style to differentiate them from other buttons
    - Multiple warnings can show, but should only have one ImGui::Separator above
    - If no warnings is shown, dont render the ImGui::Separator

P.S: These changes were originally in #12656 and #12741, but i decided to break up the changes into more reviewable chunks.

Summary

  • Adds "Done" (or "Cancel") Buttons.
  • Standardize Reset buttons (e.g. "Erase all painting") to "Reset" buttons (with previous label as tooltip).
  • Only enable Reset buttons if changes have been made.
  • Adds new Reset button to Text tool.
  • Moves Gap fill "Apply" buttons underneath "Gap Area" Slider (was previously in footer).
  • Standardize warning positions.
  • Standardize ImGui::Separator() usage.

Screenshots

Before After
image image
image image
image image
image image
image image imageimage
image image
image image
image image
image image
image image
image image
image image
image image
*Originally created by @Xipit on 3/19/2026* # Description While using OrcaSlicer i noticed that there are a few inconsistencies in the UI of the tools, such as where warnings are placed, where buttons are placed or how the footer looks like. I was also missing Buttons to close the UI in the footer, which the Cut Tool UI already has. Knowing all this, i decided to standardize the footer of all tools with the goal of making them easier to use. Part of this is consistently applying UI conventions, such as the bottom-right-aligned "Confirm or Cancel" buttons. The detailed structure is documented in `GLGizmoUtils` 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 - [Confirm] buttons should use the orca_button_style to differentiate them from other buttons - Multiple warnings can show, but should only have one ImGui::Separator above - If no warnings is shown, dont render the ImGui::Separator P.S: These changes were originally in #12656 and #12741, but i decided to break up the changes into more reviewable chunks. ## Summary - Adds "Done" (or "Cancel") Buttons. - Standardize Reset buttons (e.g. "Erase all painting") to "Reset" buttons (with previous label as tooltip). - Only enable Reset buttons if changes have been made. - Adds new Reset button to Text tool. - Moves Gap fill "Apply" buttons underneath "Gap Area" Slider (was previously in footer). - Standardize warning positions. - Standardize `ImGui::Separator()` usage. # Screenshots | 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="340" height="350" alt="image" src="https://github.com/user-attachments/assets/d3b2341a-bdf9-4e73-8a81-1b341fc8f0ac" /> | | <img width="327" height="311" alt="image" src="https://github.com/user-attachments/assets/4ef9d040-30ed-47dd-b934-c1e133189a9c" /> | <img width="314" height="321" alt="image" src="https://github.com/user-attachments/assets/9bd38b8f-01d9-4dc1-a449-23ed8ba24263" /> | | <img width="324" height="275" alt="image" src="https://github.com/user-attachments/assets/0f1e8190-cf2b-4fbd-9cbe-3219ee284d34" /> | <img width="348" height="366" alt="image" src="https://github.com/user-attachments/assets/f6b92880-fe20-4389-a86b-35ed7a112f19" /> | | <img width="334" height="465" alt="image" src="https://github.com/user-attachments/assets/037bc62f-f114-4550-aef5-5ec0bd2d6903" /> | <img width="324" height="490" alt="image" src="https://github.com/user-attachments/assets/725dce5d-3d5d-4fce-9899-ab6999f598be" /> | | <img width="477" height="387" alt="image" src="https://github.com/user-attachments/assets/af01faed-6a0b-4340-8b2f-170f8c55725c" /> | <img width="469" height="490" alt="image" src="https://github.com/user-attachments/assets/a0d7b867-955e-4d2a-a7f9-7e3be0642fff" /> | | <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="367" height="444" alt="image" src="https://github.com/user-attachments/assets/f576d07e-5fda-48b7-bcef-b955b0ff8509" /> |
MrUnknownDE added the UI/UXUI/UXUI/UX labels 2026-04-05 16:19:18 +02:00
Sign in to join this conversation.
No Label UI/UX UI/UX UI/UX
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/OrcaSlicer#249