mirror of
https://github.com/Toastconcern/FrameStudio.git
synced 2026-10-28 23:03:21 +01:00
studio: finish UI polish pass and document themes + nav gizmo
Viewport shading toolbar: a thin divider now separates the world-layer overlay toggle from the Wireframe/Solid/Material shading buttons, so the two groups read as distinct sets of controls rather than a run of icons. Properties tab column: the open tab gets a blue accent bar on its left edge, and the tab icons are theme-aware (the active and hovered icons use the theme's text colour, the rest its muted colour) instead of hardcoded greys that washed out on light themes. README and the Studio guide now cover the navigation gizmo (drag to orbit, click an axis to snap to that view) and the Window > Theme palette. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
97cc91c222
commit
a0804df866
3 files changed
+19
-6
No files matched your search
+12
-5
@@ -4907,10 +4907,12 @@ struct Studio {
|
||||
const ImVec2 p = ImGui::GetCursorScreenPos();
|
||||
if (ImGui::InvisibleButton("##tab", ImVec2(side, side))) inspectorTab = t.tab;
|
||||
const bool on = inspectorTab == t.tab, hot = ImGui::IsItemHovered();
|
||||
if (on) dl->AddRectFilled(ImVec2(p.x - 3 * scale, p.y), ImVec2(p.x + side + (colW - side) * 0.5f + 1, p.y + side), col(kPanel), 5 * scale,
|
||||
ImDrawFlags_RoundCornersLeft);
|
||||
else if (hot) dl->AddRectFilled(p, ImVec2(p.x + side, p.y + side), col(kWidget), 5 * scale);
|
||||
drawToolIcon(dl, t.icon, ImVec2(p.x + side * 0.5f, p.y + side * 0.5f), side * 0.6f, col(on ? 0xffffff : 0xb0b0b0));
|
||||
if (on) {
|
||||
dl->AddRectFilled(ImVec2(p.x - 3 * scale, p.y), ImVec2(p.x + side + (colW - side) * 0.5f + 1, p.y + side), col(kPanel), 5 * scale,
|
||||
ImDrawFlags_RoundCornersLeft);
|
||||
dl->AddRectFilled(ImVec2(p.x - 3 * scale, p.y + 3 * scale), ImVec2(p.x - 3 * scale + 2.5f * scale, p.y + side - 3 * scale), col(kBlue), 1); // accent: which tab is open
|
||||
} else if (hot) dl->AddRectFilled(p, ImVec2(p.x + side, p.y + side), col(kWidget), 5 * scale);
|
||||
drawToolIcon(dl, t.icon, ImVec2(p.x + side * 0.5f, p.y + side * 0.5f), side * 0.6f, col(on ? kText : hot ? kText : kDim));
|
||||
if (hot) ImGui::SetTooltip("%s", t.tip);
|
||||
ImGui::PopID();
|
||||
ImGui::SetCursorPosX((colW - side) * 0.5f);
|
||||
@@ -6777,7 +6779,12 @@ struct Studio {
|
||||
if (ImGui::MenuItem("The Home's Meshes", nullptr, showMeshes)) { showMeshes = !showMeshes; refreshVisibility(); }
|
||||
ImGui::EndPopup();
|
||||
}
|
||||
ImGui::SameLine(0, 8 * scale);
|
||||
{ // a divider: the overlay toggle is one thing, the shading modes another
|
||||
ImGui::SameLine(0, 7 * scale);
|
||||
const ImVec2 p = ImGui::GetCursorScreenPos();
|
||||
ImGui::GetWindowDrawList()->AddLine(ImVec2(p.x, p.y + 4 * scale), ImVec2(p.x, p.y + fh - 4 * scale), col(kLine));
|
||||
ImGui::SameLine(0, 7 * scale);
|
||||
}
|
||||
// Blender's shading spheres: wire, solid, material
|
||||
auto sphere = [&](ImDrawList* d, ImVec2 c, float r, int kind) {
|
||||
if (kind == 0) {
|
||||
|
||||
Reference in new issue
Block a user