mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-20 03:43:52 +00:00
FIX: Correct the label alignment problem on MacOS
- Adjust the color of the dividing line to be darker in dark mode. jira: STUDIO-12982, STUDIO-12935 Change-Id: Icda8dd10dbcc470e55c8760716f5545fb784f194 (cherry picked from commit 60aa221033134dfba19830f71cd307db91119ed6)
This commit is contained in:
@@ -192,50 +192,84 @@ wxBoxSizer* FilamentPickerDialog::CreatePreviewPanel(const FilamentColor& fila_c
|
|||||||
{
|
{
|
||||||
wxBoxSizer *preview_sizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *preview_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
// Bitmap preview box UI
|
// Create color preview bitmap
|
||||||
m_color_demo = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap,
|
CreateColorBitmap(fila_color);
|
||||||
wxDefaultPosition, COLOR_DEMO_SIZE, 0);
|
|
||||||
|
|
||||||
preview_sizer->Add(m_color_demo, 0, wxALIGN_CENTER_VERTICAL, 0);
|
preview_sizer->Add(m_color_demo, 0, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
preview_sizer->AddSpacer(FromDIP(12));
|
preview_sizer->AddSpacer(FromDIP(12));
|
||||||
|
|
||||||
|
// Create info labels section
|
||||||
|
wxBoxSizer *label_sizer = CreateInfoSection();
|
||||||
|
SetupLabelsContent(fila_color, fila_type);
|
||||||
|
preview_sizer->Add(label_sizer, 1, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
|
|
||||||
// Basic info box UI
|
return preview_sizer;
|
||||||
wxBoxSizer *label_sizer = new wxBoxSizer(wxVERTICAL);
|
}
|
||||||
wxStaticBox *basic_info_box = new wxStaticBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition);
|
|
||||||
wxStaticBoxSizer *basic_info_sizer = new wxStaticBoxSizer(basic_info_box, wxHORIZONTAL);
|
|
||||||
basic_info_sizer->SetMinSize(wxSize(-1, -1)); // Set minimal margins
|
|
||||||
// Color name
|
|
||||||
m_label_preview_color = new wxStaticText(this, wxID_ANY, _L("Custom Color"));
|
|
||||||
wxFont cfont = m_label_preview_color->GetFont();
|
|
||||||
cfont.SetWeight(wxFONTWEIGHT_BOLD);
|
|
||||||
cfont.SetPointSize(FromDIP(8));
|
|
||||||
m_label_preview_color->SetFont(cfont);
|
|
||||||
// Color index
|
|
||||||
m_label_preview_idx = new wxStaticText(this, wxID_ANY, _L(""));
|
|
||||||
m_label_preview_idx->SetFont(cfont);
|
|
||||||
// Filament type
|
|
||||||
m_label_preview_type = new wxStaticText(this, wxID_ANY, _L(""));
|
|
||||||
m_label_preview_type->SetForegroundColour(wxColour(128, 128, 128));
|
|
||||||
|
|
||||||
// Add labels to sizer
|
void FilamentPickerDialog::CreateColorBitmap(const FilamentColor &fila_color)
|
||||||
basic_info_sizer->Add(m_label_preview_color, 0, wxALIGN_CENTER_VERTICAL, 0);
|
{
|
||||||
basic_info_sizer->AddSpacer(FromDIP(8));
|
m_color_demo = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, COLOR_DEMO_SIZE, 0);
|
||||||
basic_info_sizer->Add(m_label_preview_idx, 0, wxALIGN_CENTER_VERTICAL, 0);
|
|
||||||
|
|
||||||
label_sizer->Add(basic_info_sizer, 0, wxTOP, FromDIP(-6));
|
// Generate bitmap content
|
||||||
label_sizer->AddSpacer(FromDIP(2));
|
|
||||||
label_sizer->Add(m_label_preview_type, 0, wxEXPAND | wxLEFT, FromDIP(6));
|
|
||||||
|
|
||||||
preview_sizer->Add(label_sizer, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL, 0);
|
|
||||||
|
|
||||||
// Bitmap preview content
|
|
||||||
std::vector<wxColour> wx_colors(fila_color.m_colors.begin(), fila_color.m_colors.end());
|
std::vector<wxColour> wx_colors(fila_color.m_colors.begin(), fila_color.m_colors.end());
|
||||||
wxBitmap init_bmp = create_filament_bitmap(wx_colors, COLOR_DEMO_SIZE,
|
wxBitmap init_bmp = create_filament_bitmap(wx_colors, COLOR_DEMO_SIZE,
|
||||||
fila_color.m_color_type == FilamentColor::ColorType::GRADIENT_CLR);
|
fila_color.m_color_type == FilamentColor::ColorType::GRADIENT_CLR);
|
||||||
m_color_demo->SetBitmap(init_bmp);
|
m_color_demo->SetBitmap(init_bmp);
|
||||||
|
}
|
||||||
|
|
||||||
// Basic info content
|
wxBoxSizer* FilamentPickerDialog::CreateInfoSection()
|
||||||
|
{
|
||||||
|
wxBoxSizer *main_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
|
||||||
|
// Create the container box
|
||||||
|
wxStaticBox *info_box = new wxStaticBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition);
|
||||||
|
info_box->SetSize(wxSize(FromDIP(240), FromDIP(24)));
|
||||||
|
info_box->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE));
|
||||||
|
wxStaticBoxSizer *box_sizer = new wxStaticBoxSizer(info_box, wxHORIZONTAL);
|
||||||
|
|
||||||
|
// Create labels
|
||||||
|
m_label_preview_color = new wxStaticText(this, wxID_ANY, _L("Custom Color"));
|
||||||
|
m_label_preview_idx = new wxStaticText(this, wxID_ANY, _L(""));
|
||||||
|
m_label_preview_type = new wxStaticText(this, wxID_ANY, _L(""));
|
||||||
|
|
||||||
|
// Setup fonts
|
||||||
|
wxFont bold_font = m_label_preview_color->GetFont();
|
||||||
|
bold_font.SetWeight(wxFONTWEIGHT_BOLD);
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
bold_font.SetPointSize(FromDIP(9));
|
||||||
|
#endif
|
||||||
|
m_label_preview_color->SetFont(bold_font);
|
||||||
|
m_label_preview_idx->SetFont(bold_font);
|
||||||
|
|
||||||
|
m_label_preview_type->SetForegroundColour(wxColour(128, 128, 128));
|
||||||
|
m_label_preview_type->SetSize(wxSize(FromDIP(240), FromDIP(16)));
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
wxFont type_font = m_label_preview_type->GetFont();
|
||||||
|
type_font.SetPointSize(FromDIP(8));
|
||||||
|
m_label_preview_type->SetFont(type_font);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Layout with platform-specific spacing
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
int spacer = FromDIP(2), vPadding = FromDIP(0), gap1 = FromDIP(-6), gap2 = FromDIP(4);
|
||||||
|
#else
|
||||||
|
int spacer = FromDIP(0), vPadding = FromDIP(-1), gap1 = FromDIP(0), gap2 = FromDIP(2);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
box_sizer->AddSpacer(spacer);
|
||||||
|
box_sizer->Add(m_label_preview_color, 0, wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM, vPadding);
|
||||||
|
box_sizer->AddSpacer(FromDIP(2));
|
||||||
|
box_sizer->Add(m_label_preview_idx, 0, wxALIGN_CENTER_VERTICAL | wxTOP | wxBOTTOM, vPadding);
|
||||||
|
box_sizer->AddSpacer(spacer);
|
||||||
|
|
||||||
|
main_sizer->Add(box_sizer, 0, wxALIGN_CENTER_VERTICAL | wxTOP, gap1);
|
||||||
|
main_sizer->AddSpacer(gap2);
|
||||||
|
main_sizer->Add(m_label_preview_type, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(6));
|
||||||
|
|
||||||
|
return main_sizer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FilamentPickerDialog::SetupLabelsContent(const FilamentColor &fila_color, const std::string &fila_type)
|
||||||
|
{
|
||||||
m_label_preview_type->SetLabel(fila_type);
|
m_label_preview_type->SetLabel(fila_type);
|
||||||
if (m_cur_color_name && !m_cur_color_name->IsEmpty()) {
|
if (m_cur_color_name && !m_cur_color_name->IsEmpty()) {
|
||||||
m_label_preview_color->SetLabel(*m_cur_color_name);
|
m_label_preview_color->SetLabel(*m_cur_color_name);
|
||||||
@@ -249,15 +283,13 @@ wxBoxSizer* FilamentPickerDialog::CreatePreviewPanel(const FilamentColor& fila_c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return preview_sizer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxBoxSizer* FilamentPickerDialog::CreateSeparatorLine()
|
wxBoxSizer* FilamentPickerDialog::CreateSeparatorLine()
|
||||||
{
|
{
|
||||||
wxBoxSizer *line_sizer = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *line_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
wxPanel* separator_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, FromDIP(1)));
|
wxPanel* separator_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, FromDIP(1)));
|
||||||
separator_line->SetBackgroundColour(wxColour(220, 220, 220));
|
separator_line->SetBackgroundColour(wxColour(238,238,238));
|
||||||
wxStaticText* line_text = new wxStaticText(this, wxID_ANY, _L("Official Filament"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL);
|
wxStaticText* line_text = new wxStaticText(this, wxID_ANY, _L("Official Filament"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL);
|
||||||
line_text->SetForegroundColour(wxColour(128, 128, 128));
|
line_text->SetForegroundColour(wxColour(128, 128, 128));
|
||||||
line_sizer->Add(line_text, 0, wxEXPAND, 0);
|
line_sizer->Add(line_text, 0, wxEXPAND, 0);
|
||||||
|
|||||||
@@ -49,6 +49,11 @@ private:
|
|||||||
wxBoxSizer* CreateButtonPanel();
|
wxBoxSizer* CreateButtonPanel();
|
||||||
void BindEvents();
|
void BindEvents();
|
||||||
|
|
||||||
|
// Preview panel helper methods
|
||||||
|
void CreateColorBitmap(const FilamentColor& fila_color);
|
||||||
|
wxBoxSizer* CreateInfoSection();
|
||||||
|
void SetupLabelsContent(const FilamentColor& fila_color, const std::string& fila_type);
|
||||||
|
|
||||||
// UI update methods
|
// UI update methods
|
||||||
void UpdatePreview(const FilamentColorCode& filament);
|
void UpdatePreview(const FilamentColorCode& filament);
|
||||||
void UpdateButtonStates(wxBitmapButton* selected_btn);
|
void UpdateButtonStates(wxBitmapButton* selected_btn);
|
||||||
|
|||||||
Reference in New Issue
Block a user