mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-09-18 22:42:37 +00:00
Design sidebar: align with Prepare's visual language
The two tabs used different idioms for the same concepts, which reads as two different apps: Design was 264 px against Prepare's ~467 (the canvas edge jumped on every tab switch), used bare micro-labels where Prepare uses icon + Head_14 card headers with a rule, hung its row actions on a loose strip under the tree instead of in the section header, and drew raw OS-default wxButtons next to Prepare's Orca-styled ones. - Width now tracks Prepare's sidebar at runtime (sync_sidebar_width() reads the live width on tab activation) rather than being hardcoded, so the two cannot drift apart if Orca changes its sidebar. - "Feature tree" and "Bodies" use the card_header() helper the panel already had (icon + Label::Head_14) plus a wxStaticLine, exactly as the tool cards do. - The six row actions moved into the Feature tree header, Prepare-style, at header weight (24 px) instead of 36 px control weight. - Buttons are Orca Buttons (ButtonType::Expanded, full width); Commit to Plate gets ButtonStyle::Confirm as the tab's primary action. - Margins/spacing come from SidebarProps (ContentMargin/TitlebarMargin/ ElementSpacing) instead of hardcoded 12/6/4. Verified on :10: sidebars are the same width and share the header idiom. Still to do: label-left/control-right rows inside the tool dialogs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BVzKmX6Y1aEteit1HTXG4Q
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
b9e927876d
commit
7d2a63ffcb
@@ -20,6 +20,8 @@ class wxSpinCtrlDouble;
|
||||
class wxTreeCtrl;
|
||||
class wxImageList;
|
||||
class wxStaticText;
|
||||
class wxStaticLine;
|
||||
class Button; // Orca-styled button (Widgets/Button.hpp)
|
||||
class wxSizer;
|
||||
class wxButton;
|
||||
class wxPanel;
|
||||
@@ -427,6 +429,10 @@ private:
|
||||
wxTreeCtrl* m_tree{nullptr};
|
||||
wxTreeCtrl* m_parts{nullptr}; // Bodies list under the feature tree
|
||||
wxStaticText* m_parts_label{nullptr}; // its "Bodies" caption (hidden when empty)
|
||||
wxBoxSizer* m_parts_hdr{nullptr}; // Bodies card header (icon + title)
|
||||
wxStaticLine* m_parts_rule{nullptr}; // rule under that header
|
||||
wxBoxSizer* m_hdr_tree_row{nullptr}; // Feature tree header: title + row actions
|
||||
wxStaticText* m_hdr_tree{nullptr}; // its title label
|
||||
wxImageList* m_tree_images{nullptr};
|
||||
std::vector<wxTreeItemId> m_tree_items;
|
||||
// Parts list: tree rows for each body (parallel to m_doc.bodies). Selecting one
|
||||
@@ -442,7 +448,7 @@ private:
|
||||
bool m_section_on{false};
|
||||
double m_section_cut_z{0.0};
|
||||
bool m_section_upper{false}; // false = keep lower half, true = upper
|
||||
wxButton* m_section_flip_btn{nullptr}; // enabled only while the section is on
|
||||
Button* m_section_flip_btn{nullptr}; // enabled only while the section is on
|
||||
void toggle_section_view(); // Section View button / X: on <-> off
|
||||
void flip_section_view(); // Flip button / F: opposite half
|
||||
void update_section_flip_btn(); // enable the Flip button iff the section is on
|
||||
@@ -464,6 +470,7 @@ private:
|
||||
int tree_selection() const; // selected feature row, or wxNOT_FOUND
|
||||
int tree_body_selection() const; // selected Parts-list body index, or -1
|
||||
void refresh_parts(); // rebuild the Bodies list under the feature tree
|
||||
void sync_sidebar_width(); // keep the panel as wide as Prepare's sidebar
|
||||
void set_tree_selection(int row);
|
||||
static int tree_icon_for(CadFeatureType t);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user