fix(branding): KX-Logo in allen UI-Dialogen korrekt anzeigen

- Splash: SVG durch direktes PNG-Laden ersetzt (nanosvg rendert kein
  eingebettetes Raster-PNG)
- About-Dialog: Logo auf 125px skaliert statt unkontrolliert 192px
- TroubleshootDialog, UpdateDialogs, ReleaseNote, MsgDialog:
  OrcaSlicer.svg → OrcaSlicer_192px.png (bereits KX-Logo)
This commit is contained in:
thysson2701
2026-06-30 10:05:07 +02:00
parent 392741b6ac
commit b200a85a20
6 changed files with 76 additions and 110 deletions

View File

@@ -229,9 +229,16 @@ AboutDialog::AboutDialog()
bool is_dark = wxGetApp().app_config->get("dark_color_mode") == "1";
// logo — load KX fork logo as PNG (SVG path via nanosvg cannot render embedded raster images)
m_logo_bitmap = ScalableBitmap(this, Slic3r::var("OrcaSlicer_192px.png"), wxBITMAP_TYPE_PNG);
m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp(), wxDefaultPosition, wxSize(125, 125), 0);
// logo — load KX fork logo as PNG scaled to fill the 125px header panel
{
wxImage img;
img.LoadFile(Slic3r::var("OrcaSlicer_192px.png"), wxBITMAP_TYPE_PNG);
if (img.IsOk())
img = img.Scale(FromDIP(125), FromDIP(125), wxIMAGE_QUALITY_HIGH);
m_logo_bitmap = ScalableBitmap(this, Slic3r::var("OrcaSlicer_192px.png"), wxBITMAP_TYPE_PNG);
m_logo = new wxStaticBitmap(this, wxID_ANY, img.IsOk() ? wxBitmap(img) : m_logo_bitmap.bmp(),
wxDefaultPosition, wxSize(FromDIP(125), FromDIP(125)), 0);
}
m_logo->SetSizer(vesizer);
panel_versizer->Add(m_logo, 1, wxALL | wxEXPAND, 0);

View File

@@ -308,8 +308,12 @@ public:
m_fg_color = StateColor::darkModeColorFor(wxColour("#6B6A6A"));
bool dark_mode = m_fg_color != wxColour("#6B6A6A");
wxSize sz = m_window->GetClientSize();
BitmapCache bmp_cache;
m_logo_bmp = *bmp_cache.load_svg(dark_mode ? "splash_logo_dark" : "splash_logo", sz.GetWidth(), sz.GetHeight());
// KX: load PNG directly — nanosvg cannot render embedded raster images in SVGs
wxImage img;
img.LoadFile(Slic3r::var("OrcaSlicer_192px.png"), wxBITMAP_TYPE_PNG);
if (img.IsOk())
img = img.Scale(sz.GetWidth(), sz.GetHeight(), wxIMAGE_QUALITY_HIGH);
m_logo_bmp = img.IsOk() ? wxBitmap(img) : wxBitmap();
m_window->Bind(wxEVT_PAINT, &SplashScreen::OnPaint, this);
m_window->Refresh();

View File

@@ -146,12 +146,6 @@ void MsgDialog::SetButtonLabel(wxWindowID btn_id, const wxString& label, bool se
}
}
void MsgDialog::SetButtonStyle(wxWindowID btn_id, ButtonStyle style, ButtonType type)
{
if (Button* btn = get_button(btn_id))
btn->SetStyle(style, type);
}
Button* MsgDialog::add_button(wxWindowID btn_id, bool set_focus /*= false*/, const wxString& label/* = wxString()*/)
{
Button* btn = new Button(this, label, "", 0, 0, btn_id);
@@ -221,7 +215,7 @@ void MsgDialog::apply_style(long style)
logo->SetBitmap( create_scaled_bitmap(style & wxAPPLY ? "completed" :
style & wxICON_WARNING ? "exclamation" : // ORCA "exclamation" used for dialogs "obj_warning" used for 16x16 areas
style & wxICON_INFORMATION ? "info" :
style & wxICON_QUESTION ? "question" : "OrcaSlicer_128px.png", this, 64, style & wxICON_ERROR));
style & wxICON_QUESTION ? "question" : "OrcaSlicer_192px", this, 64, style & wxICON_ERROR));
}
void MsgDialog::finalize()

View File

@@ -5,6 +5,7 @@
#include "libslic3r/Thread.hpp"
#include "GUI.hpp"
#include "GUI_App.hpp"
#include "GUI_Utils.hpp"
#include "GUI_Preview.hpp"
#include "MainFrame.hpp"
#include "format.hpp"
@@ -59,7 +60,7 @@ ReleaseNoteDialog::ReleaseNoteDialog(Plater *plater /*= nullptr*/)
m_sizer_body->Add(0, 0, 0, wxLEFT, FromDIP(38));
auto sm = create_scaled_bitmap("OrcaSlicer", nullptr, 70);
auto sm = create_scaled_bitmap("OrcaSlicer_192px", nullptr, 70);
auto brand = new wxStaticBitmap(this, wxID_ANY, sm, wxDefaultPosition, wxSize(FromDIP(70), FromDIP(70)));
m_sizer_body->Add(brand, 0, wxALL, 0);
@@ -126,7 +127,7 @@ UpdatePluginDialog::UpdatePluginDialog(wxWindow* parent /*= nullptr*/)
auto sm = create_scaled_bitmap("OrcaSlicer", nullptr, 55);
auto sm = create_scaled_bitmap("OrcaSlicer_192px", nullptr, 55);
auto brand = new wxStaticBitmap(this, wxID_ANY, sm, wxDefaultPosition, wxSize(FromDIP(55), FromDIP(55)));
wxBoxSizer* m_sizer_right = new wxBoxSizer(wxVERTICAL);
@@ -243,24 +244,25 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1));
m_line_top->SetBackgroundColour(wxColour(166, 169, 170));
wxBoxSizer *m_sizer_top = new wxBoxSizer(wxHORIZONTAL);
wxBoxSizer *m_sizer_desc = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *m_sizer_body = new wxBoxSizer(wxHORIZONTAL);
auto sm = create_scaled_bitmap("OrcaSlicer", nullptr, 70);
m_brand = new wxStaticBitmap(this, wxID_ANY, sm, wxDefaultPosition, wxSize(FromDIP(70), FromDIP(70)));
wxBoxSizer *m_sizer_right = new wxBoxSizer(wxVERTICAL);
auto sm = create_scaled_bitmap("OrcaSlicer_192px", nullptr, 64);
m_brand = new wxStaticBitmap(this, wxID_ANY, sm, wxDefaultPosition, FromDIP(wxSize(64, 64)));
m_text_up_info = new Label(this, Label::Head_14, wxEmptyString, LB_AUTO_WRAP);
m_text_up_info->SetForegroundColour(wxColour(0x26, 0x2E, 0x30));
m_simplebook_release_note = new wxSimplebook(this);
m_simplebook_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430)));
m_simplebook_release_note->SetMinSize(wxSize(FromDIP(560), FromDIP(430)));
// Store builds get updates from the Microsoft Store: wxID_YES opens the Store
// product page there (see the EVT_SLIC3R_VERSION_ONLINE handler) instead of GitHub.
auto github_link = new HyperLink(this, is_running_in_msix() ? _L("Check on Microsoft Store") : _L("Check on GitHub"), "", LB_AUTO_WRAP);
github_link->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
EndModal(wxID_YES);
});
m_simplebook_release_note = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxSIMPLE_BORDER);
//m_simplebook_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430)));
m_simplebook_release_note->SetMinSize(FromDIP(wxSize(640,420)));
m_simplebook_release_note->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8));
m_scrollwindows_release_note = new wxScrolledWindow(m_simplebook_release_note, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(560), FromDIP(430)), wxVSCROLL);
@@ -269,8 +271,9 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
//webview
m_vebview_release_note = CreateTipView(m_simplebook_release_note);
m_vebview_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430)));
m_vebview_release_note->SetMinSize(wxSize(FromDIP(560), FromDIP(430)));
m_vebview_release_note->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8));
//m_vebview_release_note->SetSize(wxSize(FromDIP(560), FromDIP(430)));
//m_vebview_release_note->SetMinSize(wxSize(FromDIP(560), FromDIP(430)));
//m_vebview_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430)));
if (wxGetApp().app_config->get_bool("developer_mode"))
m_vebview_release_note->EnableAccessToDevTools();
@@ -300,11 +303,9 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
m_simplebook_release_note->AddPage(m_scrollwindows_release_note, wxEmptyString, false);
m_simplebook_release_note->AddPage(m_vebview_release_note, wxEmptyString, false);
auto sizer_button = new wxBoxSizer(wxHORIZONTAL);
m_button_download = new Button(this, _L("Download"));
m_button_download = new Button(this, is_running_in_msix() ? _L("Open Microsoft Store") : _L("Download"));
m_button_download->SetStyle(ButtonStyle::Confirm, ButtonType::Choice);
m_button_download->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
@@ -327,10 +328,7 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
});
auto stable_only_label = new Label(this, _L("Check for stable updates only"));
stable_only_label->SetFont(Label::Body_13);
stable_only_label->SetForegroundColour(wxColour(38, 46, 48));
stable_only_label->SetFont(Label::Body_12);
m_stable_only_label = stable_only_label;
m_button_cancel = new Button(this, _L("Cancel"));
m_button_cancel->SetStyle(ButtonStyle::Regular, ButtonType::Choice);
@@ -339,25 +337,27 @@ UpdateVersionDialog::UpdateVersionDialog(wxWindow *parent)
EndModal(wxID_NO);
});
m_sizer_main->Add(m_line_top, 0, wxEXPAND | wxBOTTOM, 0);
//sizer_button->Add(m_remind_choice, 0, wxALL | wxEXPAND, FromDIP(5));
sizer_button->Add(m_cb_stable_only , 0, wxALIGN_CENTER);
sizer_button->Add(stable_only_label , 0, wxALIGN_CENTER | wxLEFT, FromDIP(5));
sizer_button->AddStretchSpacer();
sizer_button->Add(stable_only_label, 0, wxALIGN_CENTER | wxLEFT, FromDIP(7));
sizer_button->Add(m_cb_stable_only, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5));
sizer_button->Add(m_button_download, 0, wxALL, FromDIP(5));
sizer_button->Add(m_button_skip_version, 0, wxALL, FromDIP(5));
sizer_button->Add(m_button_cancel, 0, wxALL, FromDIP(5));
sizer_button->Add(m_button_download , 0, wxLEFT, FromDIP(10));
sizer_button->Add(m_button_skip_version, 0, wxLEFT, FromDIP(10));
sizer_button->Add(m_button_cancel , 0, wxLEFT, FromDIP(10));
m_sizer_right->Add(m_text_up_info, 0, wxEXPAND | wxBOTTOM | wxTOP, FromDIP(15));
m_sizer_right->Add(m_simplebook_release_note, 1, wxEXPAND | wxRIGHT, 0);
m_sizer_right->Add(sizer_button, 0, wxEXPAND | wxRIGHT, FromDIP(20));
m_sizer_desc->AddStretchSpacer();
m_sizer_desc->Add(m_text_up_info, 0, wxEXPAND | wxBOTTOM, FromDIP(5));
m_sizer_desc->Add(github_link);
m_sizer_desc->AddStretchSpacer();
m_sizer_body->Add(m_brand, 0, wxTOP|wxRIGHT|wxLEFT, FromDIP(15));
m_sizer_body->Add(0, 0, 0, wxRIGHT, 0);
m_sizer_body->Add(m_sizer_right, 1, wxBOTTOM | wxEXPAND, FromDIP(8));
m_sizer_main->Add(m_sizer_body, 1, wxEXPAND, 0);
m_sizer_main->Add(0, 0, 0, wxBOTTOM, 10);
m_sizer_top->Add(m_brand , 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(15));
m_sizer_top->Add(m_sizer_desc, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
m_sizer_main->Add(m_line_top , 0, wxEXPAND);
m_sizer_main->Add(m_sizer_top , 0, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(15));
m_sizer_main->Add(m_simplebook_release_note, 1, wxEXPAND | wxTOP | wxLEFT | wxRIGHT, FromDIP(15));
m_sizer_main->Add(sizer_button , 0, wxEXPAND | wxALL , FromDIP(15));
SetSizer(m_sizer_main);
Layout();
@@ -480,15 +480,20 @@ void UpdateVersionDialog::update_version_info(wxString release_note, wxString ve
// m_vebview_release_note->LoadURL(from_u8(url_line));
// }
// else {
m_button_download->SetLabel(_L("Download"));
m_simplebook_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430)));
//m_simplebook_release_note->SetMaxSize(wxSize(FromDIP(560), FromDIP(430)));
m_simplebook_release_note->SetSelection(1);
m_text_up_info->SetLabel(wxString::Format(_L("Click to download new version in default browser: %s"), version));
if (is_running_in_msix())
m_text_up_info->SetLabel(wxString::Format(_L("New version available: %s. Please update OrcaSlicer from the Microsoft Store."), version));
else
m_text_up_info->SetLabel(wxString::Format(_L("Click to download new version in default browser: %s"), version));
auto data_buf_in = release_note.utf8_str();
auto bg_color = StateColor::darkModeColorFor(*wxWHITE).GetAsString();
auto fg_color = StateColor::darkModeColorFor(*wxBLACK).GetAsString();
html_source = (boost::format("<html><head><style>body { color: %1%; background-color: %2%; font-family: sans-serif; } a { color: #1E90FF }</style></head><body>")
% fg_color % bg_color).str();
auto bg_color = StateColor::darkModeColorFor(wxColour("#FFFFFF")).GetAsString();
auto fg_color = StateColor::darkModeColorFor(wxColour("#262E30")).GetAsString();
auto style = "body {color:" + fg_color + "; background-color:" + bg_color + "; font-family:sans-serif}"
+ "a {color: #009688}" // matches hyperlink colors
+ "img {max-width:100%; height:auto}" // fixes overflowing images
+ "ul {padding-inline-start: 20px}"; // reduce left padding on list items
html_source = (boost::format("<html><head><style>%1%</style></head><body>") % style).str();
md_html(data_buf_in.data(), data_buf_in.length(), [](const MD_CHAR* text, MD_SIZE size, void* userdata) {
std::string* out_buf = (std::string*)userdata;
out_buf->append(text, size);
@@ -505,56 +510,6 @@ void UpdateVersionDialog::update_version_info(wxString release_note, wxString ve
Fit();
}
void UpdateVersionDialog::update_version_info_simple(wxString current_version, wxString available_version)
{
m_text_up_info->Hide();
m_button_download->SetLabel(_L("Open Downloads"));
m_cb_stable_only->Hide();
m_stable_only_label->Hide();
m_simplebook_release_note->SetSelection(0);
const wxSize compact_note_size(FromDIP(360), FromDIP(110));
m_simplebook_release_note->SetSize(compact_note_size);
m_simplebook_release_note->SetMinSize(compact_note_size);
m_simplebook_release_note->SetMaxSize(compact_note_size);
m_scrollwindows_release_note->SetSize(compact_note_size);
m_scrollwindows_release_note->SetMinSize(compact_note_size);
m_scrollwindows_release_note->SetMaxSize(compact_note_size);
auto content_sizer = new wxBoxSizer(wxVERTICAL);
auto versions = new wxFlexGridSizer(2, 0, FromDIP(14));
versions->AddGrowableCol(1);
auto current_label = new Label(m_scrollwindows_release_note, _L("Current version:"));
current_label->SetFont(Label::Body_13);
current_label->SetForegroundColour(wxColour(38, 46, 48));
auto current_value = new Label(m_scrollwindows_release_note, current_version);
current_value->SetFont(Label::Body_13);
current_value->SetForegroundColour(wxColour(38, 46, 48));
auto available_label = new Label(m_scrollwindows_release_note, _L("Available version:"));
available_label->SetFont(Label::Body_13);
available_label->SetForegroundColour(wxColour(38, 46, 48));
auto available_value = new Label(m_scrollwindows_release_note, available_version);
available_value->SetFont(Label::Body_13);
available_value->SetForegroundColour(wxColour(38, 46, 48));
versions->Add(current_label, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
versions->Add(current_value, 1, wxEXPAND);
versions->Add(available_label, 0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL);
versions->Add(available_value, 1, wxEXPAND);
content_sizer->Add(versions, 0, wxALL | wxEXPAND, FromDIP(24));
m_scrollwindows_release_note->SetSizer(content_sizer);
m_scrollwindows_release_note->Layout();
wxGetApp().UpdateDlgDarkUI(this);
SetMinSize(wxDefaultSize);
SetMaxSize(wxDefaultSize);
Layout();
Fit();
SetMinSize(GetSize());
Centre(wxBOTH);
}
SecondaryCheckDialog::SecondaryCheckDialog(wxWindow* parent, wxWindowID id, const wxString& title, enum VisibleButtons btn_style, const wxPoint& pos, const wxSize& size, long style, bool not_show_again_check) // ORCA VisibleButtons instead ButtonStyle
:DPIFrame(parent, id, title, pos, size, style)
{

View File

@@ -127,8 +127,14 @@ TroubleshootDialog::TroubleshootDialog()
// LEFT SIZER //////////////////////
// HEADER
m_logo = ScalableBitmap(this, is_dark ? "OrcaSlicer_horizontal_dark" : "OrcaSlicer_horizontal_light", 64);
m_header_logo = new wxStaticBitmap(this, wxID_ANY, m_logo.bmp());
// KX: load PNG directly — horizontal SVGs contain nanosvg-incompatible embedded raster
{
wxImage img;
img.LoadFile(Slic3r::var("OrcaSlicer_64.png"), wxBITMAP_TYPE_PNG);
if (img.IsOk()) img = img.Scale(FromDIP(64), FromDIP(64), wxIMAGE_QUALITY_HIGH);
m_logo = ScalableBitmap(this, "OrcaSlicer_64.png", 64);
m_header_logo = new wxStaticBitmap(this, wxID_ANY, img.IsOk() ? wxBitmap(img) : m_logo.bmp());
}
auto logo_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, FromDIP(2)));
logo_line->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#009687")));
auto version = new Label(this, wxString(SoftFever_VERSION), wxALIGN_CENTRE_HORIZONTAL);

View File

@@ -111,7 +111,7 @@ MsgUpdateConfig::MsgUpdateConfig(const std::vector<Update> &updates, bool force_
m_sizer_body->Add(0, 0, 0, wxLEFT, FromDIP(38));
auto sm = create_scaled_bitmap("OrcaSlicer", nullptr, 70);
auto sm = create_scaled_bitmap("OrcaSlicer_192px", nullptr, 70);
auto brand = new wxStaticBitmap(this, wxID_ANY, sm, wxDefaultPosition, wxSize(FromDIP(70), FromDIP(70)));
m_sizer_body->Add(brand, 0, wxALL, 0);