From b3bb8604c4865d474df3593be68da4373b1b3fce Mon Sep 17 00:00:00 2001 From: yw4z Date: Fri, 15 May 2026 20:12:30 +0300 Subject: [PATCH] UI fixes / improvements (#12513) * bbl device selector search box * align file and more menus with its button * fix multiline inputbox border color on windows * fix multiline inputbox border color on windows * preferences: use content width on combobox dropdowns * about: match version text size on macOS * msg dialog improvements * fix canvas menu overlapping with sliced plates toolbar * bbl bind dialog button placement * bbl color picker * Update StepMeshDialog.cpp * drop file dialog * drop dialog revert fonts * revert windows multiline border * Update StepMeshDialog.cpp * update * Flushing Volumes: match style of combobox * fix hyperlink color on canvas notifications * fix possible issues with shared profiles notification --- resources/web/data/text.js | 82 ++++++++++++------------- resources/web/flush/WipingDialog.html | 45 +++----------- resources/web/model/index.html | 2 +- resources/web/model/model.css | 1 + src/slic3r/GUI/AboutDialog.cpp | 7 +-- src/slic3r/GUI/BBLTopbar.cpp | 6 +- src/slic3r/GUI/BindDialog.cpp | 1 + src/slic3r/GUI/FilamentPickerDialog.cpp | 22 ++----- src/slic3r/GUI/GLCanvas3D.cpp | 3 + src/slic3r/GUI/MsgDialog.cpp | 23 +++++-- src/slic3r/GUI/MsgDialog.hpp | 2 +- src/slic3r/GUI/NotificationManager.cpp | 37 ++++++----- src/slic3r/GUI/NotificationManager.hpp | 1 + src/slic3r/GUI/Plater.cpp | 69 ++++----------------- src/slic3r/GUI/Preferences.cpp | 4 ++ src/slic3r/GUI/SelectMachinePop.cpp | 4 +- src/slic3r/GUI/StepMeshDialog.cpp | 55 +++++++++++------ 17 files changed, 164 insertions(+), 200 deletions(-) diff --git a/resources/web/data/text.js b/resources/web/data/text.js index 77062dc00a..285b5c1a31 100644 --- a/resources/web/data/text.js +++ b/resources/web/data/text.js @@ -17,11 +17,11 @@ var LangText = { t15: "Printer", t16: "Filament type", t17: "Vendor", - t18: "error", + t18: "Error", t19: "At least one filament must be selected.", t20: "Do you want to use default filament ?", - t21: "yes", - t22: "no", + t21: "Yes", + t22: "No", t23: "Release note", t24: "Get Started", t25: "Finish", @@ -35,7 +35,7 @@ var LangText = { t33: "Open Project", t34: "hotspot", t35: "Recently opened", - t36: "ok", + t36: "OK", t37: "At least one printer must be selected.", t38: "Cancel", t39: "Confirm", @@ -107,7 +107,7 @@ var LangText = { t113: "You may change your choice in preference anytime.", t126: "Loading……", orca1: "Edit Project Info", - orca2: "no model information", + orca2: "No model information", orca3: "Stealth Mode", orca4: "This stops the transmission of data to Bambu's cloud services. Users who don't use BBL machines or use LAN mode only can safely turn on this function.", orca5: "Enable Stealth Mode.", @@ -131,7 +131,7 @@ var LangText = { t15: "Impressora", t16: "Tipus de filament", t17: "Proveïdor", - t18: "error", + t18: "Error", t19: "S'ha de seleccionar almenys un filament.", t20: "Vols utilitzar el filament per defecte?", t21: "sí", @@ -149,7 +149,7 @@ var LangText = { t33: "Obrir Projecte", t34: "hotspot", t35: "Obert recentment", - t36: "d'acord", + t36: "D'acord", t37: "S'ha de seleccionar almenys una impressora.", t38: "Cancel·lar", t39: "Confirmar", @@ -220,7 +220,7 @@ var LangText = { t112: "Unir-se al Programa", t113: "Pots canviar la teva elecció en les preferències en qualsevol moment.", orca1: "Editar Informació del Projecte", - orca2: "no hi ha informació del model", + orca2: "No hi ha informació del model", orca6: "Bambu Cloud", }, es_ES: { @@ -241,11 +241,11 @@ var LangText = { t15: "Impresora", t16: "Tipo de filamento", t17: "Fabricante", - t18: "error", + t18: "Error", t19: "Al menos se debe seleccionar un filamento.", t20: "¿Desea usar el filamento por defecto?", - t21: "sí", - t22: "no", + t21: "Sí", + t22: "No", t23: "Notas de la versión", t24: "Comenzar", t25: "Finalizar", @@ -259,7 +259,7 @@ var LangText = { t33: "Abrir proyecto", t34: "punto de acceso", t35: "Abiertos recientemente", - t36: "ok", + t36: "OK", t37: "Al menos se debe seleccionar una impresora.", t38: "Cancelar", t39: "Confirmar", @@ -355,11 +355,11 @@ var LangText = { t15: "Stampante", t16: "Tipo di filamento", t17: "Produttore", - t18: "errore", + t18: "Errore", t19: "È necessario selezionare almeno un filamento.", t20: "Vuoi utilizzare il filamento predefinito?", - t21: "sì", - t22: "no", + t21: "Sì", + t22: "No", t23: "Note di rilascio", t24: "Inizia", t25: "Fine", @@ -373,7 +373,7 @@ var LangText = { t33: "Apri progetto", t34: "hotspot", t35: "Aperti di recente", - t36: "ok", + t36: "OK", t37: "È necessario selezionare almeno una stampante.", t38: "Annulla", t39: "Conferma", @@ -444,7 +444,7 @@ var LangText = { t112: "Unisciti al programma", t113: "Puoi modificare la tua scelta in 'Preferenze' in qualsiasi momento.", orca1: "Modifica informazioni progetto", - orca2: "nessuna informazione sul modello", + orca2: "Nessuna informazione sul modello", orca3: "Modalità invisibile", orca4: "Con questa modalità, la trasmissione dei dati ai servizi cloud di Bambu sarà interrotta. Gli utenti che non utilizzano macchine BBL o che usano solo la modalità LAN possono attivare questa funzione in modo sicuro.", orca5: "Abilita la modalità invisibile.", @@ -551,7 +551,7 @@ var LangText = { t106: "Profilbeschreibung", t126: "Laden……", orca1: "Edit Project Info", - orca2: "no model information", + orca2: "No model information", orca6: "Bambu Cloud", }, cs_CZ: { @@ -655,7 +655,7 @@ var LangText = { t106: "Popis profilu", t126: "Načtení probíhá……", orca1: "Edit Project Info", - orca2: "no model information", + orca2: "No model information", orca6: "Bambu Cloud", }, fr_FR: { @@ -676,11 +676,11 @@ var LangText = { t15: "Imprimante", t16: "Type de filament", t17: "Fournisseur", - t18: "erreur", + t18: "Erreur", t19: "Au moins un filament doit être sélectionné.", t20: "Voulez-vous utiliser le filament par défaut ?", - t21: "oui", - t22: "non", + t21: "Oui", + t22: "Non", t23: "Note de version", t24: "Commencer", t25: "Terminer", @@ -694,7 +694,7 @@ var LangText = { t33: "Ouvrir un Projet", t34: "hotspot", t35: "Récemment ouvert", - t36: "ok", + t36: "OK", t37: "Au moins une imprimante doit être sélectionnée.", t38: "Annuler", t39: "Confirmer", @@ -762,7 +762,7 @@ var LangText = { t111: "Créer un nouveau filament", t126: "Chargement en cours……", orca1: "Modifier les informations du projet", - orca2: "pas d'information sur le modèle", + orca2: "Pas d'information sur le modèle", wk1: "Démarrage rapide", wk2: "Cet article présente l'utilisation la plus basique de Orca Slicer. Il guide les utilisateurs pour configurer le logiciel, créer des projets et effectuer la première tâche d'impression étape par étape.", wk3: "Workflow basé sur des projets", @@ -1032,11 +1032,11 @@ var LangText = { t15: "Принтер", t16: "Тип материала", t17: "Производитель", - t18: "ошибка", + t18: "Oшибка", t19: "Должна быть выбрана хотя бы одна пластиковая нить.", t20: "Выбрать пластиковые нити по умолчанию?", - t21: "да", - t22: "нет", + t21: "Да", + t22: "Нет", t23: "Информация о версии", t24: "Начать", t25: "Закончить", @@ -1218,7 +1218,7 @@ var LangText = { t94: "장치를 보려면 프린터 연결을 설정하세요.", t126: "로딩 중……", orca1: "Edit Project Info", - orca2: "no model information", + orca2: "No model information", orca6: "Bambu Cloud", }, tr_TR: { @@ -1257,7 +1257,7 @@ var LangText = { t33: "Projeyi Aç", t34: "Erişim noktası", t35: "Yakın zamanda açıldı", - t36: "Ok", + t36: "OK", t37: "En az bir yazıcı seçilmelidir.", t38: "İptal Et", t39: "Onayla", @@ -1329,7 +1329,7 @@ var LangText = { t113: "Tercihinizi istediğiniz zaman değiştirebilirsiniz.", t126: "Yükleme devam ediyor……", orca1: "Proje Bilgilerini Düzenle", - orca2: "model bilgisi yok", + orca2: "Model bilgisi yok", orca3: "Gizli Mod", orca4: "Bu, Bambu'nun bulut hizmetlerine veri iletimini durdurur. BBL makinelerini kullanmayan veya yalnızca LAN modunu kullanan kullanıcılar bu işlevi güvenle açabilir.", orca5: "Gizli Modu etkinleştirin.", @@ -1353,11 +1353,11 @@ var LangText = { t15: "Drukarka", t16: "Typ filamentu", t17: "Dostawca", - t18: "błąd", + t18: "Błąd", t19: "Przynajmniej jeden filament musi być wybrany.", t20: "Czy chcesz użyć domyślnego filamentu?", - t21: "tak", - t22: "nie", + t21: "Tak", + t22: "Nie", t23: "Informacje o wydaniu", t24: "Rozpocznij", t25: "Zakończ", @@ -1371,7 +1371,7 @@ var LangText = { t33: "Otwórz Projekt", t34: "hotspot", t35: "Ostatnio otwarte", - t36: "ok", + t36: "OK", t37: "Przynajmniej jedna drukarka musi być wybrana.", t38: "Anuluj", t39: "Potwierdź", @@ -1443,7 +1443,7 @@ var LangText = { t113: "Możesz zmienić swój wybór w preferencjach w dowolnym momencie.", t126: "Ładowanie trwa……", orca1: "Edytuj informacje o projekcie", - orca2: "brak informacji o modelu", + orca2: "Brak informacji o modelu", orca3: "Tryb «Niewidzialny»", orca4: "To wyłączy przesyłanie danych do usług chmurowych Bambu. Użytkownicy, którzy nie korzystają z maszyn BBL lub używają tylko trybu LAN, mogą bez obaw włączyć tę opcję.", orca5: "Włącz tryb «Niewidzialny»", @@ -1485,7 +1485,7 @@ var LangText = { t33: "Abrir Projeto", t34: "hotspot", t35: "Aberto Recentemente", - t36: "Ok", + t36: "OK", t37: "Pelo menos uma impressora deve ser selecionada.", t38: "Cancelar", t39: "Confirmar", @@ -1581,11 +1581,11 @@ var LangText = { t15: "Spausdintuvas", t16: "Gijos tipas", t17: "Gamintojas", - t18: "klaida", + t18: "Klaida", t19: "Turi būti pasirinkta bent viena gija.", t20: "Ar norite naudoti numatytąją giją?", - t21: "taip", - t22: "ne", + t21: "Taip", + t22: "Ne", t23: "Išleidimo pastabos", t24: "Pradėti", t25: "Pabaigti", @@ -1599,7 +1599,7 @@ var LangText = { t33: "Atverti projektą", t34: "Prieigos taškas", t35: "Neseniai atidaryti", - t36: "gerai", + t36: "Gerai", t37: "Turi būti pasirinktas bent vienas spausdintuvas.", t38: "Atšaukti", t39: "Patvirtinti", @@ -1670,7 +1670,7 @@ var LangText = { t112: "Prisijungti prie programos", t113: "Savo pasirinkimą galite bet kada pakeisti.", orca1: "Redaguoti projekto informaciją", - orca2: "nėra informacijos apie modelį", + orca2: "Nėra informacijos apie modelį", orca3: "Slaptas režimas", orca4: "Tai sustabdo duomenų perdavimą į Bambu debesijos paslaugas. Vartotojai, kurie nenaudoja BBL mašinų arba naudoja tik LAN režimą, gali drąsiai įjungti šią funkciją.", orca5: "Įjungti slaptą režimą.", diff --git a/resources/web/flush/WipingDialog.html b/resources/web/flush/WipingDialog.html index 1995391fb9..1e0e9e1eea 100644 --- a/resources/web/flush/WipingDialog.html +++ b/resources/web/flush/WipingDialog.html @@ -148,29 +148,6 @@ display: inline-block; } - select { - padding: 6px 9px; - border: 1px solid #dbdbdb; - border-radius: 3px; - font-size: 12px; - cursor: pointer; - appearance: auto; - background-color: white; - color: black; - } - - select option { - background-color: white; - color: black; - } - - select:hover, - select:focus { - outline: none; - border-color: #26A69A; - background-color: #edfaf2; - } - .button-container { display: flex; justify-content: center; @@ -243,11 +220,6 @@ position: sticky; z-index: 11; } - body.dark-mode select { - background-color: #2d2d31; - color: white; - border-color: #4c4c55; - } body.dark-mode .warning-text { color: #f44336; @@ -281,13 +253,16 @@ > Re-Calculate - +
+
+ +
diff --git a/resources/web/model/index.html b/resources/web/model/index.html index 70070d0460..72feda0f5f 100644 --- a/resources/web/model/index.html +++ b/resources/web/model/index.html @@ -26,7 +26,7 @@
-
no model information
+
No model information
Edit Project Info
diff --git a/resources/web/model/model.css b/resources/web/model/model.css index 46c9903b9d..ca85165c95 100644 --- a/resources/web/model/model.css +++ b/resources/web/model/model.css @@ -380,4 +380,5 @@ body #AddModelInfoBtn { margin-top: 20px; + margin-right:0; } \ No newline at end of file diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp index 83368b0d2a..51373890af 100644 --- a/src/slic3r/GUI/AboutDialog.cpp +++ b/src/slic3r/GUI/AboutDialog.cpp @@ -248,12 +248,7 @@ AboutDialog::AboutDialog() wxStaticText* credits_string = new wxStaticText(this, wxID_ANY, wxString::Format("Build %s", std::string(GIT_COMMIT_HASH)), wxDefaultPosition, wxDefaultSize); credits_string->SetFont(_build_string_font); wxFont version_font = GetFont(); - #ifdef __WXMSW__ - version_font.SetPointSize(version_font.GetPointSize()-1); - #else - version_font.SetPointSize(11); - #endif - version_font.SetPointSize(20); + version_font = version_font.Scaled(1.85f); // SetPointSize(20) not works on macOS because it uses a 72 PPI reference version->SetFont(version_font); version->SetForegroundColour(wxColour("#949494")); credits_string->SetForegroundColour(wxColour("#949494")); diff --git a/src/slic3r/GUI/BBLTopbar.cpp b/src/slic3r/GUI/BBLTopbar.cpp index cd25556317..9b1c6ab97d 100644 --- a/src/slic3r/GUI/BBLTopbar.cpp +++ b/src/slic3r/GUI/BBLTopbar.cpp @@ -653,7 +653,8 @@ void BBLTopbar::OnFileToolItem(wxAuiToolBarEvent& evt) tb->SetToolSticky(evt.GetId(), true); if (!m_skip_popup_file_menu) { - GetParent()->PopupMenu(m_file_menu, wxPoint(FromDIP(1), this->GetSize().GetHeight() - 2)); + auto rec = this->GetToolRect(ID_TOP_FILE_MENU); + GetParent()->PopupMenu(m_file_menu, wxPoint(rec.GetLeft(), this->GetSize().GetHeight() - 2)); } else { m_skip_popup_file_menu = false; @@ -670,7 +671,8 @@ void BBLTopbar::OnDropdownToolItem(wxAuiToolBarEvent& evt) tb->SetToolSticky(evt.GetId(), true); if (!m_skip_popup_dropdown_menu) { - GetParent()->PopupMenu(&m_top_menu, wxPoint(FromDIP(1), this->GetSize().GetHeight() - 2)); + auto rec = this->GetToolRect(ID_TOP_DROPDOWN_MENU); + GetParent()->PopupMenu(&m_top_menu, wxPoint(rec.GetLeft(), this->GetSize().GetHeight() - 2)); } else { m_skip_popup_dropdown_menu = false; diff --git a/src/slic3r/GUI/BindDialog.cpp b/src/slic3r/GUI/BindDialog.cpp index 1d3f3d964f..02f94e1baa 100644 --- a/src/slic3r/GUI/BindDialog.cpp +++ b/src/slic3r/GUI/BindDialog.cpp @@ -151,6 +151,7 @@ PingCodeBindDialog::PingCodeBindDialog(Plater* plater /*= nullptr*/) sizer_request->Add(0, 0, 0, wxTOP, FromDIP(5)); sizer_request->Add(ping_code_input, 0, wxLEFT, FromDIP(10)); sizer_request->Add(0, 0, 0, wxTOP, FromDIP(10)); + sizer_request->AddStretchSpacer(); sizer_request->Add(m_sizer_button, 0, wxALIGN_RIGHT | wxRIGHT | wxBOTTOM, ButtonProps::ChoiceButtonGap()); request_bind_panel->SetSizer(sizer_request); request_bind_panel->Layout(); diff --git a/src/slic3r/GUI/FilamentPickerDialog.cpp b/src/slic3r/GUI/FilamentPickerDialog.cpp index b8edc4b7c8..a57e93eea0 100644 --- a/src/slic3r/GUI/FilamentPickerDialog.cpp +++ b/src/slic3r/GUI/FilamentPickerDialog.cpp @@ -73,7 +73,7 @@ FilamentPickerDialog::FilamentPickerDialog(wxWindow *parent, const wxString& fil wxString color_name = m_color_query->GetFilaColorName(fila_id, fila_color); m_cur_color_name = new wxString(color_name); - wxBoxSizer *container_sizer = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer *container_sizer = new wxBoxSizer(wxVERTICAL); wxBoxSizer *main_sizer = new wxBoxSizer(wxVERTICAL); // Preview panel (always present) @@ -94,16 +94,16 @@ FilamentPickerDialog::FilamentPickerDialog(wxWindow *parent, const wxString& fil // "More colours" button (always present) CreateMoreInfoButton(); - main_sizer->Add(m_more_btn, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(8)); - main_sizer->AddSpacer(FromDIP(8)); + main_sizer->Add(m_more_btn, 0, wxEXPAND | wxTOP, FromDIP(8)); + //main_sizer->AddSpacer(FromDIP(8)); // OK / Cancel buttons auto dlg_btns = new DialogButtons(this, {"OK", "Cancel"}); m_ok_btn = dlg_btns->GetOK(); m_cancel_btn = dlg_btns->GetCANCEL(); - main_sizer->Add(dlg_btns, 0, wxEXPAND); - container_sizer->Add(main_sizer, 1, wxEXPAND | wxALL, FromDIP(16)); + container_sizer->Add(main_sizer, 1, wxEXPAND | wxALL, FromDIP(10)); + container_sizer->Add(dlg_btns, 0, wxEXPAND); SetSizer(container_sizer); Layout(); @@ -533,17 +533,7 @@ void FilamentPickerDialog::UpdateButtonStates(wxBitmapButton* selected_btn) void FilamentPickerDialog::CreateMoreInfoButton() { m_more_btn = new Button(this, "+ " + _L("More Colors")); - m_more_btn->SetMinSize(wxSize(-1, FromDIP(36))); - - StateColor btn_bg( - std::pair(wxColour(238, 238, 238), StateColor::Hovered), - std::pair(wxColour(248, 248, 248), StateColor::Normal) - ); - - - m_more_btn->SetBackgroundColor(btn_bg); - m_more_btn->SetBorderStyle(wxPENSTYLE_SHORT_DASH); - m_more_btn->SetCornerRadius(FromDIP(0)); + m_more_btn->SetStyle(ButtonStyle::Regular, ButtonType::Expanded); } wxColourData FilamentPickerDialog::GetSingleColorData() diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index ba4f06e8f2..d50fa8ed97 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -8179,6 +8179,9 @@ void GLCanvas3D::_render_imgui_select_plate_toolbar() if (wxGetApp().show_3d_navigator()) { window_height_max -= (128 * f_scale + 5); } + else { // ORCA spacing for canvas menu + window_height_max -= (96 * f_scale + 5); + } // ORCA simplify and correct window size and margin calculations and get values from style ImGuiWrapper& imgui = *wxGetApp().imgui(); diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp index 049a6b00f2..724e54c2f7 100644 --- a/src/slic3r/GUI/MsgDialog.cpp +++ b/src/slic3r/GUI/MsgDialog.cpp @@ -58,7 +58,7 @@ MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &he main_sizer->Add(topsizer, 1, wxEXPAND); m_dsa_sizer = new wxBoxSizer(wxHORIZONTAL); - btn_sizer->Add(0, 0, 0, wxLEFT, FromDIP(120)); + btn_sizer->Add(0, 0, 0, wxLEFT, FromDIP(LOGO_SPACING + 64 + LOGO_GAP)); btn_sizer->Add(m_dsa_sizer, 0, wxEXPAND); btn_sizer->AddStretchSpacer(); main_sizer->Add(btn_sizer, 0, wxBOTTOM | wxRIGHT | wxEXPAND | wxTOP, FromDIP(10)); @@ -76,7 +76,7 @@ MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &he void MsgDialog::show_dsa_button(wxString const &title) { m_checkbox_dsa = new CheckBox(this); - m_dsa_sizer->Add(m_checkbox_dsa, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + m_dsa_sizer->Add(m_checkbox_dsa, 0, wxALIGN_CENTER); m_checkbox_dsa->Bind(wxEVT_TOGGLEBUTTON, [this](wxCommandEvent& e) { auto event = wxCommandEvent(EVT_CHECKBOX_CHANGE); event.SetInt(m_checkbox_dsa->GetValue()?1:0); @@ -86,7 +86,17 @@ void MsgDialog::show_dsa_button(wxString const &title) }); auto m_text_dsa = new wxStaticText(this, wxID_ANY, title.IsEmpty() ? _L("Don't show again") : title, wxDefaultPosition, wxDefaultSize, 0); + auto on_toggle = [this]() { + m_checkbox_dsa->SetValue(!m_checkbox_dsa->GetValue()); + wxCommandEvent ev(wxEVT_TOGGLEBUTTON, m_checkbox_dsa->GetId()); + ev.SetEventObject(m_checkbox_dsa); + m_checkbox_dsa->GetEventHandler()->ProcessEvent(ev); + }; + m_text_dsa->Bind(wxEVT_LEFT_DOWN, [on_toggle](wxMouseEvent& e) {if(!e.LeftDClick()) on_toggle();}); + m_text_dsa->Bind(wxEVT_LEFT_DCLICK, [on_toggle](wxMouseEvent& e) {on_toggle();}); + m_dsa_sizer->Add(m_text_dsa, 0, wxALL | wxALIGN_CENTER, FromDIP(2)); + m_dsa_sizer->AddSpacer(FromDIP(10)); // spacing after checkbox m_text_dsa->SetFont(::Label::Body_13); m_text_dsa->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#323A3D"))); btn_sizer->Layout(); @@ -169,7 +179,7 @@ Button* MsgDialog::add_button(wxWindowID btn_id, bool set_focus /*= false*/, con if (set_focus) btn->SetFocus(); - btn_sizer->Add(btn, 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(ButtonProps::ChoiceButtonGap())); + btn_sizer->Add(btn, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(ButtonProps::ChoiceButtonGap())); btn->Bind(wxEVT_BUTTON, [this, btn_id](wxCommandEvent&) { EndModal(btn_id); }); MsgButton *mb = new MsgButton; @@ -289,7 +299,8 @@ static void add_msg_content(wxWindow *parent, } else { wxClientDC dc(parent); - wxSize msg_sz = dc.GetMultiLineTextExtent(msg); + dc.SetFont(font); // ORCA without this it calculates bigger size + wxSize msg_sz = dc.GetMultiLineTextExtent(msg) + parent->FromDIP(wxSize(10,5)); // added extra spacing to prevent wrapping page_size = wxSize(std::min(msg_sz.GetX(), info_width), std::min(msg_sz.GetY(), info_width)); // Extra line breaks in message dialog @@ -355,7 +366,7 @@ ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &temp_msg, bool monosp add_msg_content(this, content_sizer, msg, monospaced_font); // Use a small bitmap with monospaced font, as the error text will not be wrapped. - logo->SetBitmap(create_scaled_bitmap("OrcaSlicer_192px_grayscale.png", this, monospaced_font ? 48 : /*1*/84)); + logo->SetBitmap(create_scaled_bitmap("OrcaSlicer_192px_grayscale.png", this, monospaced_font ? 48 : /*1*/64)); SetMaxSize(MSG_DLG_MAX_SIZE); @@ -563,7 +574,7 @@ Newer3mfVersionDialog::Newer3mfVersionDialog(wxWindow *parent, const Semver *fil main_sizer->Add(0, 0, 0, wxTOP, FromDIP(5)); wxBoxSizer * content_sizer = new wxBoxSizer(wxHORIZONTAL); - wxStaticBitmap *info_bitmap = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("info", nullptr, 60), wxDefaultPosition, wxSize(FromDIP(70), FromDIP(70)), 0); + wxStaticBitmap *info_bitmap = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("info", nullptr, 64), wxDefaultPosition, wxSize(FromDIP(70), FromDIP(70)), 0); wxBoxSizer * msg_sizer = get_msg_sizer(); content_sizer->Add(info_bitmap, 0, wxEXPAND | wxALL, FromDIP(5)); content_sizer->Add(msg_sizer, 0, wxEXPAND | wxALL, FromDIP(5)); diff --git a/src/slic3r/GUI/MsgDialog.hpp b/src/slic3r/GUI/MsgDialog.hpp index bb3abde75c..a385fbaa13 100644 --- a/src/slic3r/GUI/MsgDialog.hpp +++ b/src/slic3r/GUI/MsgDialog.hpp @@ -71,7 +71,7 @@ struct MsgDialog : DPIDialog protected: enum { BORDER = 20, - LOGO_SPACING = 35, + LOGO_SPACING = 25, LOGO_GAP = 20, CONTENT_WIDTH = 242, CONTENT_MAX_HEIGHT = 60,//TO diff --git a/src/slic3r/GUI/NotificationManager.cpp b/src/slic3r/GUI/NotificationManager.cpp index 9875ae553b..81e28fec1a 100644 --- a/src/slic3r/GUI/NotificationManager.cpp +++ b/src/slic3r/GUI/NotificationManager.cpp @@ -239,6 +239,8 @@ void NotificationManager::PopNotification::use_bbl_theme() m_WindowBkgColor = m_is_dark ? ImVec4(45 / 255.f, 45 / 255.f, 49 / 255.f, 1.f) : ImVec4(1, 1, 1, 1); m_TextColor = m_is_dark ? ImVec4(224 / 255.f, 224 / 255.f, 224 / 255.f, 1.f) : ImVec4(.2f, .2f, .2f, 1.0f); m_HyperTextColor = m_is_dark ? ImVec4(0, 0.588, 0.533, 1) : ImVec4(0, 0.588, 0.533, 1); + m_HyperTextColorHover = m_is_dark ? ImVec4(38.f / 255.f, 166.f / 255.f, 154.f / 255.f, 1) : ImVec4(0.f, 129.f / 255.f, 114.f / 255.f, 1); //#26A69A / #008172; + m_is_dark ? push_style_color(ImGuiCol_Border, {62 / 255.f, 62 / 255.f, 69 / 255.f, 1.f}, true, m_current_fade_opacity) : push_style_color(ImGuiCol_Border, m_CurrentColor, true, m_current_fade_opacity); push_style_color(ImGuiCol_WindowBg, m_WindowBkgColor, true, m_current_fade_opacity); push_style_color(ImGuiCol_Text, m_TextColor, true, m_current_fade_opacity); @@ -759,11 +761,17 @@ void NotificationManager::PopNotification::render_hypertext(ImGuiWrapper& imgui, HyperColor = ImVec4(135.f / 255.f, 43 / 255.f, 43 / 255.f, 1); if (ImGui::IsItemHovered(ImGuiHoveredFlags_RectOnly)) { - HyperColor.y += 0.1f; - if (m_data.level == NotificationLevel::SeriousWarningNotificationLevel || m_data.level == NotificationLevel::SeriousWarningNotificationLevel) - HyperColor.x += 0.2f; + if (m_data.level == NotificationLevel::SeriousWarningNotificationLevel){ + HyperColor.y += 0.1f; + HyperColor.x += 0.2f; + } + else if(m_data.level == NotificationLevel::ErrorNotificationLevel){ + HyperColor.y += 0.1f; + } + else { + HyperColor = m_HyperTextColorHover; + } } - //text push_style_color(ImGuiCol_Text, HyperColor, m_state == EState::FadingOut, m_current_fade_opacity); @@ -2255,8 +2263,9 @@ void NotificationManager::push_import_finished_notification(const std::string& p void NotificationManager::SharedProfilesNotification::init() { PopNotification::init(); - // Add one extra line for the hyperlink row ("Browse shared profiles" + "Don't show again") - m_lines_count++; + // Add two extra lines for the hyperlink row ("Browse shared profiles" + "Don't show again") + // and 1 more additional line for adding spacing between them to make it easier to click + m_lines_count = m_lines_count + 2; // ORCA } void NotificationManager::SharedProfilesNotification::render_text(ImGuiWrapper& imgui, @@ -2283,18 +2292,18 @@ void NotificationManager::SharedProfilesNotification::render_text(ImGuiWrapper& } // Render "Browse shared profiles" hyperlink on the next line - float hyper_y = starting_y + m_endlines.size() * shift_y; + float hyper_y = starting_y + m_endlines.size() * shift_y - m_line_height / 2.f; render_hypertext(imgui, x_offset, hyper_y, m_hypertext); // Render "Don't show again" hyperlink after the browse link { - float dont_show_x = x_offset + ImGui::CalcTextSize((m_hypertext + " ").c_str()).x; + float dont_show_y = hyper_y + ImGui::CalcTextSize((m_hypertext + " ").c_str()).y + m_line_height / 2.f; std::string dont_show_text = _u8L("Don't show again"); ImVec2 part_size = ImGui::CalcTextSize(dont_show_text.c_str()); // Invisible button - ImGui::SetCursorPosX(dont_show_x - 4); - ImGui::SetCursorPosY(hyper_y - 5); + ImGui::SetCursorPosX(x_offset); // ORCA render on new line to prevent long translations from being cut off + ImGui::SetCursorPosY(dont_show_y); ImGui::PushStyleColor(ImGuiCol_Button, ImVec4(.0f, .0f, .0f, .0f)); ImGui::PushStyleColor(ImGuiCol_ButtonHovered, ImVec4(.0f, .0f, .0f, .0f)); ImGui::PushStyleColor(ImGuiCol_ButtonActive, ImVec4(.0f, .0f, .0f, .0f)); @@ -2308,12 +2317,12 @@ void NotificationManager::SharedProfilesNotification::render_text(ImGuiWrapper& // Hover color ImVec4 color = m_HyperTextColor; if (ImGui::IsItemHovered(ImGuiHoveredFlags_RectOnly)) - color.y += 0.1f; + color = m_HyperTextColorHover; // Text push_style_color(ImGuiCol_Text, color, m_state == EState::FadingOut, m_current_fade_opacity); - ImGui::SetCursorPosX(dont_show_x); - ImGui::SetCursorPosY(hyper_y); + ImGui::SetCursorPosX(x_offset); + ImGui::SetCursorPosY(dont_show_y); imgui.text(dont_show_text.c_str()); ImGui::PopStyleColor(); @@ -2354,7 +2363,7 @@ void NotificationManager::SharedProfilesNotification::render_hypertext(ImGuiWrap // Hover color ImVec4 HyperColor = m_HyperTextColor; if (ImGui::IsItemHovered(ImGuiHoveredFlags_RectOnly)) - HyperColor.y += 0.1f; + HyperColor = m_HyperTextColorHover; // Text push_style_color(ImGuiCol_Text, HyperColor, m_state == EState::FadingOut, m_current_fade_opacity); diff --git a/src/slic3r/GUI/NotificationManager.hpp b/src/slic3r/GUI/NotificationManager.hpp index 6ad066d46d..5e8f4f7e95 100644 --- a/src/slic3r/GUI/NotificationManager.hpp +++ b/src/slic3r/GUI/NotificationManager.hpp @@ -543,6 +543,7 @@ private: ImVec4 m_TextColor; ImVec4 m_HyperTextColor; + ImVec4 m_HyperTextColorHover; ImVec4 m_ErrorColor; ImVec4 m_WarnColor; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 7328e24d60..be952e7200 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -13941,7 +13941,6 @@ public: wxPanel * m_top_line; wxStaticText *m_fname_title; wxStaticText *m_fname_f; - wxStaticText *m_fname_s; StaticBox * m_panel_select; void on_select_ok(wxCommandEvent &event); @@ -13951,7 +13950,6 @@ public: void set_action(int index) { m_action = index; } wxBoxSizer *create_remember_checkbox(wxString title, wxWindow* parent, wxString tooltip); - wxBoxSizer *create_item_radiobox(wxString title, wxWindow *parent, int select_id, int groupid); protected: void on_dpi_changed(const wxRect &suggested_rect) override; @@ -13969,10 +13967,6 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) // def setting SetBackgroundColour(m_def_color); - // icon - std::string icon_path = (boost::format("%1%/images/OrcaSlicerTitle.ico") % resources_dir()).str(); - SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); - wxBoxSizer *m_sizer_main = new wxBoxSizer(wxVERTICAL); m_top_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL); @@ -13980,37 +13974,23 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) m_sizer_main->Add(m_top_line, 0, wxEXPAND, 0); - m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, 20); - - wxBoxSizer *m_sizer_name = new wxBoxSizer(wxVERTICAL); - wxBoxSizer *m_sizer_fline = new wxBoxSizer(wxHORIZONTAL); + m_sizer_main->AddSpacer(FromDIP(15)); + // ORCA use file name on new line to create room for longer names m_fname_title = new wxStaticText(this, wxID_ANY, _L("Please select an action"), wxDefaultPosition, wxDefaultSize, 0); - m_fname_title->Wrap(-1); m_fname_title->SetFont(::Label::Body_14); - m_fname_title->SetForegroundColour(wxColour(107, 107, 107)); - m_fname_title->SetBackgroundColour(wxColour(255, 255, 255)); + m_fname_title->SetForegroundColour(wxColour("#363636")); - m_sizer_fline->Add(m_fname_title, 0, wxALL, 0); - m_sizer_fline->Add(0, 0, 0, wxEXPAND | wxLEFT, 5); - - m_fname_f = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); + m_fname_f = new wxStaticText(this, wxID_ANY, filename); m_fname_f->SetFont(::Label::Head_14); - m_fname_f->Wrap(-1); - m_fname_f->SetForegroundColour(wxColour(38, 46, 48)); + m_fname_f->SetMaxSize(wxSize(FromDIP(300),-1)); + m_fname_f->Wrap(FromDIP(300)); + m_fname_f->SetForegroundColour(wxColour("#363636")); - m_sizer_fline->Add(m_fname_f, 1, wxALL, 0); - - m_sizer_name->Add(m_sizer_fline, 1, wxEXPAND, 0); - - m_fname_s = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0); - m_fname_s->SetFont(::Label::Head_14); - m_fname_s->Wrap(-1); - m_fname_s->SetForegroundColour(wxColour(38, 46, 48)); - - m_sizer_name->Add(m_fname_s, 1, wxALL, 0); - - m_sizer_main->Add(m_sizer_name, 1, wxEXPAND | wxLEFT | wxRIGHT, 20); + m_sizer_main->Add(m_fname_title, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); + m_sizer_main->AddSpacer(FromDIP(10)); + m_sizer_main->Add(m_fname_f , 1, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); + m_sizer_main->AddSpacer(FromDIP(10)); auto radio_group = new RadioGroup(this, { _L("Open as project"), // 0 @@ -14022,9 +14002,9 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) set_action(radio_group->GetSelection() + 1); }); - m_sizer_main->Add(radio_group, 0, wxEXPAND | wxLEFT | wxRIGHT, 20); + m_sizer_main->Add(radio_group, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20)); - m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, 10); + m_sizer_main->AddSpacer(FromDIP(10)); // wxBoxSizer *m_sizer_bottom = new wxBoxSizer(wxHORIZONTAL); // Orca: hide the "Don't show again" checkbox, people keeps accidentally checked this then forgot @@ -14048,29 +14028,6 @@ ProjectDropDialog::ProjectDropDialog(const std::string &filename) Fit(); Centre(wxBOTH); - - auto limit_width = m_fname_f->GetSize().GetWidth() - 2; - auto current_width = 0; - auto cut_index = 0; - auto fstring = wxString(""); - auto bstring = wxString(""); - - //auto file_name = from_u8(filename.c_str()); - auto file_name = wxString(filename); - for (int x = 0; x < file_name.length(); x++) { - current_width += m_fname_s->GetTextExtent(file_name[x]).GetWidth(); - cut_index = x; - - if (current_width > limit_width) { - bstring += file_name[x]; - } else { - fstring += file_name[x]; - } - } - - m_fname_f->SetLabel(fstring); - m_fname_s->SetLabel(bstring); - wxGetApp().UpdateDlgDarkUI(this); } diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp index 0578fd7e51..bf1c69a7c0 100644 --- a/src/slic3r/GUI/Preferences.cpp +++ b/src/slic3r/GUI/Preferences.cpp @@ -69,6 +69,7 @@ std::tuple PreferencesDialog::create_item_combobox_base( auto combobox = new ::ComboBox(m_parent, wxID_ANY, wxEmptyString, wxDefaultPosition, DESIGN_LARGE_COMBOBOX_SIZE, 0, nullptr, wxCB_READONLY); combobox->SetFont(::Label::Body_14); combobox->GetDropDown().SetFont(::Label::Body_14); + combobox->GetDropDown().SetUseContentWidth(true); std::vector::iterator iter; for (iter = vlist.begin(); iter != vlist.end(); iter++) { @@ -190,6 +191,7 @@ wxBoxSizer *PreferencesDialog::create_item_language_combobox(wxString title, wxS auto combobox = new ::ComboBox(m_parent, wxID_ANY, wxEmptyString, wxDefaultPosition, DESIGN_LARGE_COMBOBOX_SIZE, 0, nullptr, wxCB_READONLY); combobox->SetFont(::Label::Body_14); combobox->GetDropDown().SetFont(::Label::Body_14); + combobox->GetDropDown().SetUseContentWidth(true); auto language = app_config->get(param); m_current_language_selected = -1; std::vector::iterator iter; @@ -354,6 +356,7 @@ wxBoxSizer *PreferencesDialog::create_item_region_combobox(wxString title, wxStr auto combobox = new ::ComboBox(m_parent, wxID_ANY, wxEmptyString, wxDefaultPosition, DESIGN_LARGE_COMBOBOX_SIZE, 0, nullptr, wxCB_READONLY); combobox->SetFont(::Label::Body_14); combobox->GetDropDown().SetFont(::Label::Body_14); + combobox->GetDropDown().SetUseContentWidth(true); m_sizer_combox->Add(combobox, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5)); std::vector::iterator iter; @@ -433,6 +436,7 @@ wxBoxSizer *PreferencesDialog::create_item_loglevel_combobox(wxString title, wxS auto combobox = new ::ComboBox(m_parent, wxID_ANY, wxEmptyString, wxDefaultPosition, DESIGN_COMBOBOX_SIZE, 0, nullptr, wxCB_READONLY); combobox->SetFont(::Label::Body_14); combobox->GetDropDown().SetFont(::Label::Body_14); + combobox->GetDropDown().SetUseContentWidth(true); std::vector::iterator iter; for (iter = vlist.begin(); iter != vlist.end(); iter++) { combobox->Append(*iter); } diff --git a/src/slic3r/GUI/SelectMachinePop.cpp b/src/slic3r/GUI/SelectMachinePop.cpp index 8d5a286b71..5f38637b8b 100644 --- a/src/slic3r/GUI/SelectMachinePop.cpp +++ b/src/slic3r/GUI/SelectMachinePop.cpp @@ -335,12 +335,12 @@ SelectMachinePopup::SelectMachinePopup(wxWindow *parent) #if defined(__WINDOWS__) m_sizer_search_bar = new wxBoxSizer(wxVERTICAL); - m_search_bar = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0 ); + m_search_bar = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxNO_BORDER ); m_search_bar->SetDescriptiveText(_L("Search")); m_search_bar->ShowSearchButton( true ); m_search_bar->ShowCancelButton( false ); m_sizer_search_bar->Add( m_search_bar, 1, wxALL| wxEXPAND, 1 ); - m_sizer_main->Add(m_sizer_search_bar, 0, wxALL | wxEXPAND, FromDIP(2)); + m_sizer_main->Add(m_sizer_search_bar, 0, wxTOP | wxRIGHT | wxLEFT | wxEXPAND, FromDIP(1)); m_search_bar->Bind( wxEVT_COMMAND_TEXT_UPDATED, &SelectMachinePopup::update_machine_list, this ); #endif auto own_title = create_title_panel(_L("My Device")); diff --git a/src/slic3r/GUI/StepMeshDialog.cpp b/src/slic3r/GUI/StepMeshDialog.cpp index c7634b1f06..17768504a1 100644 --- a/src/slic3r/GUI/StepMeshDialog.cpp +++ b/src/slic3r/GUI/StepMeshDialog.cpp @@ -11,6 +11,7 @@ #include "Widgets/Button.hpp" #include "Widgets/TextInput.hpp" #include "Widgets/DialogButtons.hpp" +#include "Widgets/RoundedRectangle.hpp" #include using namespace Slic3r; @@ -19,9 +20,9 @@ using namespace Slic3r::GUI; static int _scale(const int val) { return val * Slic3r::GUI::wxGetApp().em_unit() / 10; } static int _ITEM_WIDTH() { return _scale(30); } #define MIN_DIALOG_WIDTH FromDIP(400) -#define SLIDER_WIDTH FromDIP(200) +#define SLIDER_WIDTH FromDIP(220) #define SLIDER_HEIGHT FromDIP(25) -#define TEXT_CTRL_WIDTH FromDIP(70) +#define TEXT_CTRL_WIDTH FromDIP(100) #define BUTTON_SIZE wxSize(FromDIP(58), FromDIP(24)) #define BUTTON_BORDER FromDIP(int(400 - 58 * 2) / 8) #define SLIDER_SCALE(val) ((val) / 0.001) @@ -29,7 +30,7 @@ static int _ITEM_WIDTH() { return _scale(30); } #define SLIDER_SCALE_10(val) ((val) / 0.01) #define SLIDER_UNSCALE_10(val) ((val) * 0.01) #define LEFT_RIGHT_PADING FromDIP(20) -#define FONT_COLOR wxColour("#6B6B6B") +#define FONT_COLOR wxColour("#262E30") wxDEFINE_EVENT(wxEVT_THREAD_DONE, wxCommandEvent); @@ -85,9 +86,9 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line SetBackgroundColour(*wxWHITE); wxBoxSizer* bSizer = new wxBoxSizer(wxVERTICAL); - bSizer->SetMinSize(wxSize(MIN_DIALOG_WIDTH, -1)); + //bSizer->SetMinSize(wxSize(MIN_DIALOG_WIDTH, -1)); - auto image_bitmap = create_scaled_bitmap("step_mesh_info", this, FromDIP(120)); + //auto image_bitmap = create_scaled_bitmap("step_mesh_info", this, FromDIP(120)); // wxPanel* overlay_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, image_bitmap.GetSize(), wxTAB_TRAVERSAL); // overlay_panel->SetBackgroundStyle(wxBG_STYLE_PAINT); @@ -114,23 +115,31 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line // bSizer->Add(overlay_panel, 0, wxALIGN_CENTER | wxALL, 10); + auto tip_frame = new RoundedRectangle(this, StateColor::darkModeColorFor(wxColour("#F1F1F1")), wxDefaultPosition, wxSize(-1,-1), 6, 0); + wxBoxSizer* tips_sizer = new wxBoxSizer(wxVERTICAL); - wxStaticText* info = new wxStaticText(this, wxID_ANY, _L("Smaller linear and angular deflections result in higher-quality transformations but increase the processing time.")); - info->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR)); + wxStaticText* info = new wxStaticText(tip_frame, wxID_ANY, _L("Smaller linear and angular deflections result in higher-quality transformations but increase the processing time.")); + info->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636"))); + info->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#F1F1F1"))); + info->SetFont(::Label::Body_14); + info->Wrap(FromDIP(450)); // ORCA standardized HyperLink - HyperLink *tips = new HyperLink(this, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/import_export#step"); - tips->SetFont(::Label::Body_12); - - info->Wrap(FromDIP(400)); - tips_sizer->Add(info, 0, wxALIGN_LEFT); - tips_sizer->Add(tips, 0, wxALIGN_LEFT); - bSizer->Add(tips_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, LEFT_RIGHT_PADING); + HyperLink *tips = new HyperLink(tip_frame, _L("Wiki Guide"), "https://www.orcaslicer.com/wiki/import_export#step"); + tips->SetBackgroundColour(StateColor::darkModeColorFor(wxColour("#F1F1F1"))); + + tips_sizer->Add(info, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, FromDIP(10)); + tips_sizer->Add(tips, 0, wxALL, FromDIP(10)); + + tip_frame->SetSizer(tips_sizer); + tip_frame->Layout(); + bSizer->Add(tip_frame, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, LEFT_RIGHT_PADING); wxBoxSizer* linear_sizer = new wxBoxSizer(wxHORIZONTAL); //linear_sizer->SetMinSize(wxSize(MIN_DIALOG_WIDTH, -1)); wxStaticText* linear_title = new wxStaticText(this, wxID_ANY, _L("Linear Deflection") + ": "); + linear_title->SetFont(::Label::Body_14); linear_title->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR)); linear_sizer->Add(linear_title, 0, wxALIGN_LEFT); linear_sizer->AddStretchSpacer(1); @@ -142,7 +151,7 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line linear_sizer->Add(linear_slider, 0, wxALIGN_RIGHT | wxLEFT, FromDIP(5)); auto linear_input = new ::TextInput(this, m_linear_last, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(TEXT_CTRL_WIDTH, -1), wxTE_CENTER); - linear_input->GetTextCtrl()->SetFont(Label::Body_12); + linear_input->GetTextCtrl()->SetFont(Label::Body_14); linear_input->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); linear_sizer->Add(linear_input, 0, wxALIGN_RIGHT | wxLEFT, FromDIP(5)); linear_input->Bind(wxEVT_KILL_FOCUS, ([this, linear_input](wxFocusEvent& e) { @@ -179,11 +188,13 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line e.Skip(); })); - bSizer->Add(linear_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, LEFT_RIGHT_PADING); + bSizer->Add(linear_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, LEFT_RIGHT_PADING); + bSizer->AddSpacer(FromDIP(5)); wxBoxSizer* angle_sizer = new wxBoxSizer(wxHORIZONTAL); wxStaticText* angle_title = new wxStaticText(this, wxID_ANY, _L("Angle Deflection") + ": "); + angle_title->SetFont(::Label::Body_14); angle_title->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR)); angle_sizer->Add(angle_title, 0, wxALIGN_LEFT); angle_sizer->AddStretchSpacer(1); @@ -195,7 +206,7 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line angle_sizer->Add(angle_slider, 0, wxALIGN_RIGHT | wxLEFT, FromDIP(5)); auto angle_input = new ::TextInput(this, m_angle_last, wxEmptyString, wxEmptyString, wxDefaultPosition, wxSize(TEXT_CTRL_WIDTH, -1), wxTE_CENTER); - angle_input->GetTextCtrl()->SetFont(Label::Body_12); + angle_input->GetTextCtrl()->SetFont(Label::Body_14); angle_input->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); angle_sizer->Add(angle_input, 0, wxALIGN_RIGHT | wxLEFT, FromDIP(5)); angle_input->Bind(wxEVT_KILL_FOCUS, ([this, angle_input](wxFocusEvent& e) { @@ -233,28 +244,32 @@ StepMeshDialog::StepMeshDialog(wxWindow* parent, Slic3r::Step& file, double line e.Skip(); })); - bSizer->Add(angle_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, LEFT_RIGHT_PADING); + bSizer->Add(angle_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, LEFT_RIGHT_PADING); wxBoxSizer* check_sizer = new wxBoxSizer(wxHORIZONTAL); m_split_compound_checkbox = new wxCheckBox(this, wxID_ANY, _L("Split compound and compsolid into multiple objects"), wxDefaultPosition, wxDefaultSize, 0); + m_split_compound_checkbox->SetFont(::Label::Body_14); m_split_compound_checkbox->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR)); m_split_compound_checkbox->SetValue(wxGetApp().app_config->get_bool("is_split_compound")); check_sizer->Add(m_split_compound_checkbox, 0, wxALIGN_LEFT); - bSizer->Add(check_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, LEFT_RIGHT_PADING); + bSizer->Add(check_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, LEFT_RIGHT_PADING); wxBoxSizer* mesh_face_number_sizer = new wxBoxSizer(wxHORIZONTAL); wxStaticText *mesh_face_number_title = new wxStaticText(this, wxID_ANY, _L("Number of triangular facets") + ": "); + mesh_face_number_title->SetFont(::Label::Body_14); mesh_face_number_title->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR)); mesh_face_number_text = new wxStaticText(this, wxID_ANY, "0"); + mesh_face_number_text->SetFont(::Label::Body_14); mesh_face_number_text->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR)); mesh_face_number_text->SetMinSize(wxSize(FromDIP(150), -1)); mesh_face_number_sizer->Add(mesh_face_number_title, 0, wxALIGN_LEFT); mesh_face_number_sizer->Add(mesh_face_number_text, 0, wxALIGN_LEFT); - bSizer->Add(mesh_face_number_sizer, 1, wxEXPAND | wxLEFT | wxRIGHT, LEFT_RIGHT_PADING); + bSizer->Add(mesh_face_number_sizer, 0, wxEXPAND | wxALL, LEFT_RIGHT_PADING); wxBoxSizer* bSizer_button = new wxBoxSizer(wxHORIZONTAL); bSizer_button->SetMinSize(wxSize(FromDIP(100), -1)); m_checkbox = new wxCheckBox(this, wxID_ANY, _L("Don't show again"), wxDefaultPosition, wxDefaultSize, 0); + m_checkbox->SetFont(::Label::Body_14); m_checkbox->SetForegroundColour(StateColor::darkModeColorFor(FONT_COLOR)); bSizer_button->Add(m_checkbox, 0, wxALIGN_LEFT | wxLEFT | wxALIGN_CENTER_VERTICAL, LEFT_RIGHT_PADING); bSizer_button->AddStretchSpacer(1);