FIX: fail to translate in filamnet group pop up

1. Initilize the sentences in construct function
2. Fix some ui bugs

jira:NONE

Signed-off-by: xun.zhang <xun.zhang@bambulab.com>
Change-Id: I991df343932bb60d5ba86f41f641661f2159da47
This commit is contained in:
xun.zhang 2024-12-24 10:50:53 +08:00 committed by lane.wei
parent cd23329267
commit 05383187e0
10 changed files with 113 additions and 61 deletions

View File

@ -174,4 +174,5 @@ src/slic3r/GUI/MultiMachineManagerPage.cpp
src/slic3r/GUI/MultiTaskManagerPage.cpp
src/slic3r/GUI/MultiMachine.cpp
src/slic3r/GUI/FilamentMapDialog.cpp
src/slic3r/GUI/FilamentGroupPopup.cpp
src/slic3r/GUI/FilamentGroupPopup.cpp
src/slic3r/GUI/FilamentMapPanel.cpp

View File

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="8" cy="8" r="7.5" fill="#F2F2F2" stroke="#DBDBDB"/>
</svg>

After

Width:  |  Height:  |  Size: 167 B

View File

@ -2,7 +2,6 @@
#include "CapsuleButton.hpp"
#include "wx/graphics.h"
#include "Widgets/Label.hpp"
#include "wx/dcgraph.h"
namespace Slic3r { namespace GUI {
CapsuleButton::CapsuleButton(wxWindow *parent, wxWindowID id, const wxString &label, bool selected) : wxPanel(parent, id)
@ -61,10 +60,11 @@ void CapsuleButton::OnPaint(wxPaintEvent &event)
gc->DrawRoundedRectangle(0, 0, rect.width, rect.height, 0);
wxColour bg_color = m_selected ? wxColour("#EBF9F0") : wxColour("#FFFFFF");
wxColour border_color = m_hovered || m_selected ? wxColour("#00AE42") : wxColour("#CECECE");
int cornerRadius = 5;
bg_color = StateColor::darkModeColorFor(bg_color);
border_color = StateColor::darkModeColorFor(border_color);
gc->SetBrush(wxBrush(bg_color));
gc->SetPen(wxPen(border_color, 2));
gc->DrawRoundedRectangle(1, 1, rect.width - 2, rect.height - 2, cornerRadius);
gc->DrawRoundedRectangle(1, 1, rect.width - 2, rect.height - 2, 5);
delete gc;
}
}
@ -99,8 +99,8 @@ void CapsuleButton::OnLeaveWindow(wxMouseEvent &event)
void CapsuleButton::UpdateStatus()
{
const wxColour selected_color = wxColour("#EBF9F0");
const wxColour normal_color = wxColour("#FFFFFF");
wxColour selected_color = StateColor::darkModeColorFor(wxColour("#EBF9F0"));
wxColour normal_color = StateColor::darkModeColorFor(wxColour("#FFFFFF"));
std::string icon_name = m_selected ? "capsule_tag_on" : "capsule_tag_off";
auto bmp = create_scaled_bitmap(icon_name, nullptr, FromDIP(16));

View File

@ -1,8 +1,8 @@
#ifndef CAPSULE_BUTTON_HPP
#define CAPSULE_BUTTON_HPP
#include "GUI.hpp"
#include "wxExtensions.hpp"
#include "Widgets/Label.hpp"
namespace Slic3r { namespace GUI {
class CapsuleButton : public wxPanel

View File

@ -181,7 +181,7 @@ DragDropPanel::DragDropPanel(wxWindow *parent, const wxString &label, bool is_au
m_sizer->Add(title_panel, 0, wxEXPAND);
m_sizer->AddSpacer(20);
m_grid_item_sizer = new wxGridSizer(0, 6, FromDIP(5),FromDIP(5)); // row = 0, col = 3, 10 10 is space
m_grid_item_sizer = new wxGridSizer(0, 6, FromDIP(4),FromDIP(4)); // row = 0, col = 3, 10 10 is space
m_sizer->Add(m_grid_item_sizer, 1, wxEXPAND);
// set droptarget
@ -197,7 +197,7 @@ void DragDropPanel::AddColorBlock(const wxColour &color, int filament_id, bool u
{
ColorPanel *panel = new ColorPanel(this, color, filament_id);
panel->SetMinSize(wxSize(FromDIP(32), FromDIP(40)));
m_grid_item_sizer->Add(panel, 0, wxALIGN_CENTER);
m_grid_item_sizer->Add(panel, 0);
m_filament_blocks.push_back(panel);
if (update_ui) {
m_filament_blocks.front()->Refresh(); // FIX BUG: STUDIO-8467

View File

@ -2,35 +2,17 @@
#include "FilamentMapDialog.hpp"
#include "GUI_App.hpp"
#include "MsgDialog.hpp"
#include "I18N.hpp"
#include "wx/dcgraph.h"
#include "I18N.hpp"
namespace Slic3r { namespace GUI {
static const wxString AutoForFlushLabel = _L("Filament-Saving Mode");
static const wxString AutoForMatchLabel = _L("Convenient Mode");
static const wxString ManualLabel = _L("Manual Mode");
static const wxString AutoForFlushDesp = _L("(Arrange after slicing)");
static const wxString AutoForMatchDesp = _L("(Arrange before slicing)");
static const wxString ManualDesp = "";
static const wxString MachineSyncTip = _L("(Please sync printer)");
static const wxString AutoForFlushDetail = _L("Disregrad the filaments in AMS. Optimize filament usage "
"by calculating the best allocation for the left and right "
"nozzles. Arrange the filaments according on the printer according to "
"the slicing results.");
static const wxString AutoForMatchDetail = _L("Based on the current filaments in the AMS, allocate the "
"filaments to the left and right nozzles.");
static const wxString ManualDetail = _L("Mannully allocate the filaments for the left and right nozzles.");
static const wxColour LabelEnableColor = wxColour("#262E30");
static const wxColour LabelDisableColor = wxColour("#6B6B6B");
static const wxColour LabelDisableColor = wxColour("#ACACAC");
static const wxColour GreyColor = wxColour("#6B6B6B");
static const wxColour GreenColor = wxColour("#00AE42");
static const wxColour BackGroundColor = wxColour("#FFFFFF");
static bool is_multi_extruder()
{
const auto &preset_bundle = wxGetApp().preset_bundle;
@ -85,6 +67,23 @@ bool is_pop_up_required()
FilamentGroupPopup::FilamentGroupPopup(wxWindow *parent) : PopupWindow(parent, wxBORDER_NONE | wxPU_CONTAINS_CONTROLS)
{
const wxString AutoForFlushLabel = _L("Filament-Saving Mode");
const wxString AutoForMatchLabel = _L("Convenient Mode");
const wxString ManualLabel = _L("Manual Mode");
const wxString AutoForFlushDetail = _L("Disregrad the filaments in AMS. Optimize filament usage "
"by calculating the best arrangement for the left and right "
"nozzles. Arrange the filaments on the printer based on "
"the slicing results.");
const wxString AutoForMatchDetail = _L("Based on the current filaments in the AMS, arrange the "
"filaments to the left and right nozzles.");
const wxString ManualDetail = _L("Mannully arrange the filaments for the left and right nozzles.");
const wxString AutoForFlushDesp = _L("(Arrange after slicing)");
const wxString ManualDesp = "";
const wxString AutoForMatchDesp = _L("(Arrange before slicing)");
const wxString MachineSyncTip = _L("(Please sync printer)");
wxBoxSizer *top_sizer = new wxBoxSizer(wxVERTICAL);
const int horizontal_margin = FromDIP(16);
const int vertical_margin = FromDIP(15);
@ -189,6 +188,7 @@ FilamentGroupPopup::FilamentGroupPopup(wxWindow *parent) : PopupWindow(parent, w
GUI::wxGetApp().UpdateDarkUIWin(this);
Bind(wxEVT_PAINT, &FilamentGroupPopup::OnPaint, this);
Bind(wxEVT_TIMER, &FilamentGroupPopup::OnTimer, this);
Bind(wxEVT_ENTER_WINDOW, &FilamentGroupPopup::OnEnterWindow, this);
Bind(wxEVT_LEAVE_WINDOW, &FilamentGroupPopup::OnLeaveWindow, this);
@ -222,17 +222,24 @@ void FilamentGroupPopup::DrawRoundedCorner(int radius)
void FilamentGroupPopup::Init()
{
const wxString AutoForMatchDesp = _L("(Arrange before slicing)");
const wxString MachineSyncTip = _L("(Please sync printer)");
auto disabled_bmp = create_scaled_bitmap("map_mode_disabled", nullptr, 16);
auto unchecked_bmp = create_scaled_bitmap("map_mode_off", nullptr, 16);
radio_btns[ButtonType::btForMatch]->Enable(m_connected);
if (m_connected)
button_labels[ButtonType::btForMatch]->SetForegroundColour(LabelEnableColor);
else
button_labels[ButtonType::btForMatch]->SetForegroundColour(LabelDisableColor);
if (m_connected) {
button_labels[ButtonType::btForMatch]->SetForegroundColour(LabelEnableColor);
button_desps[ButtonType::btForMatch]->SetForegroundColour(LabelEnableColor);
detail_infos[ButtonType::btForMatch]->SetForegroundColour(GreyColor);
radio_btns[ButtonType::btForMatch]->SetBitmap(unchecked_bmp);
button_desps[ButtonType::btForMatch]->SetLabel(AutoForMatchDesp);
}
else {
button_labels[ButtonType::btForMatch]->SetForegroundColour(LabelDisableColor);
button_desps[ButtonType::btForMatch]->SetForegroundColour(LabelDisableColor);
detail_infos[ButtonType::btForMatch]->SetForegroundColour(LabelDisableColor);
radio_btns[ButtonType::btForMatch]->SetBitmap(disabled_bmp);
button_desps[ButtonType::btForMatch]->SetLabel(MachineSyncTip);
}
@ -258,7 +265,6 @@ void FilamentGroupPopup::tryPopup(bool connect_status)
if (canPopup()) {
m_connected = connect_status;
DrawRoundedCorner(16);
Init();
ResetTimer();
PopupWindow::Popup();
@ -267,6 +273,11 @@ void FilamentGroupPopup::tryPopup(bool connect_status)
void FilamentGroupPopup::tryClose() { StartTimer(); }
void FilamentGroupPopup::OnPaint(wxPaintEvent&)
{
DrawRoundedCorner(16);
}
void FilamentGroupPopup::StartTimer() { m_timer->StartOnce(300); }
void FilamentGroupPopup::ResetTimer()
@ -276,6 +287,8 @@ void FilamentGroupPopup::ResetTimer()
void FilamentGroupPopup::OnRadioBtn(int idx)
{
if (mode_list.at(idx) == FilamentMapMode::fmmAutoForMatch && !m_connected)
return;
m_mode = mode_list.at(idx);
set_prefered_map_mode(m_mode);
@ -290,7 +303,7 @@ void FilamentGroupPopup::OnRemindBtn(wxCommandEvent &event)
set_pop_up_remind_flag(!is_checked);
if (is_checked) {
MessageDialog dialog(nullptr, _L("No further pop up.You can go to \"Preferences\" to reopen the pop up."), _L("Tips"), wxICON_INFORMATION | wxOK);
MessageDialog dialog(nullptr, _L("No further pop-up will appear. You can reopen it in 'Preferences'"), _L("Tips"), wxICON_INFORMATION | wxOK);
dialog.ShowModal();
Dismiss();
}
@ -311,8 +324,9 @@ void FilamentGroupPopup::UpdateButtonStatus(int hover_idx)
{
auto checked_bmp = create_scaled_bitmap("map_mode_on", nullptr, 16);
auto unchecked_bmp = create_scaled_bitmap("map_mode_off", nullptr, 16);
auto checked_hover_bmp = create_scaled_bitmap("map_mode_on_hovered", nullptr);
auto unchecked_hover_bmp = create_scaled_bitmap("map_mode_off_hovered", nullptr);
auto checked_hover_bmp = create_scaled_bitmap("map_mode_on_hovered", nullptr, 16);
auto unchecked_hover_bmp = create_scaled_bitmap("map_mode_off_hovered", nullptr, 16);
for (int i = 0; i < ButtonType::btCount; ++i) {
if (ButtonType::btForMatch == i && !m_connected) {
@ -339,8 +353,9 @@ void FilamentGroupPopup::UpdateButtonStatus(int hover_idx)
remind_checkbox->Enable(false);
else
remind_checkbox->Enable(true);
Fit();
Layout();
Fit();
}
}} // namespace Slic3r::GUI

View File

@ -1,9 +1,6 @@
#ifndef FILAMENT_GROUP_HOVER_HPP
#define FILAMENT_GROUP_HOVER_HPP
#include <wx/graphics.h>
#include <wx/hyperlink.h>
#include "wxExtensions.hpp"
#include "Widgets/PopupWindow.hpp"
#include "Widgets/CheckBox.hpp"
#include "Widgets/Label.hpp"
@ -23,6 +20,7 @@ public:
FilamentMapMode GetSelectedMode() const { return m_mode; }
private:
void OnPaint(wxPaintEvent&event);
void StartTimer();
void ResetTimer();

View File

@ -9,6 +9,34 @@
namespace Slic3r { namespace GUI {
static const StateColor btn_bg_green(
std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
);
static const StateColor btn_bd_green(
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)
);
static const StateColor btn_text_green(
std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Normal)
);
static const StateColor btn_bg_white(
std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed),
std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Normal)
);
static const StateColor btn_bd_white(
std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Normal)
);
static const StateColor btn_text_white(
std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Normal)
);
FilamentMapDialog::FilamentMapDialog(wxWindow *parent,
const std::vector<std::string> &filament_color,
const std::vector<int> &filament_map,
@ -21,8 +49,8 @@ FilamentMapDialog::FilamentMapDialog(wxWindow *parent,
{
SetBackgroundColour(*wxWHITE);
SetMinSize(wxSize(FromDIP(550), -1));
SetMaxSize(wxSize(FromDIP(550), -1));
SetMinSize(wxSize(FromDIP(580), -1));
SetMaxSize(wxSize(FromDIP(580), -1));
if (mode < fmmManual)
m_page_type = PageType::ptAuto;
@ -70,8 +98,18 @@ FilamentMapDialog::FilamentMapDialog(wxWindow *parent,
wxBoxSizer *button_sizer = new wxBoxSizer(wxHORIZONTAL);
m_ok_btn = new Button(this, _L("OK"));
m_cancel_btn = new Button(this, _L("Cancel"));
m_ok_btn->SetCornerRadius(FromDIP(12));
m_cancel_btn->SetCornerRadius(FromDIP(12));
m_ok_btn->SetFont(Label::Body_12);
m_cancel_btn->SetFont(Label::Body_12);
m_ok_btn->SetBackgroundColor(btn_bg_green);
m_ok_btn->SetBorderColor(btn_bd_green);
m_ok_btn->SetTextColor(btn_text_green);
m_cancel_btn->SetBackgroundColor(btn_bg_white);
m_cancel_btn->SetBorderColor(btn_bd_white);
m_cancel_btn->SetTextColor(btn_text_white);
button_sizer->Add(m_ok_btn, 0, wxALL, FromDIP(8));
button_sizer->Add(m_cancel_btn, 0, wxALL, FromDIP(8));
main_sizer->Add(button_sizer, 0, wxALIGN_RIGHT | wxALL, FromDIP(15));

View File

@ -1,13 +1,8 @@
#ifndef slic3r_FilamentMapDialog_hpp_
#define slic3r_FilamentMapDialog_hpp_
#include "GUI.hpp"
#include "FilamentMapPanel.hpp"
#include <wx/simplebook.h>
#include <wx/dialog.h>
#include <wx/timer.h>
#include <vector>
#include "SelectMachine.hpp"
#include "CapsuleButton.hpp"
class SwitchButton;

View File

@ -42,8 +42,8 @@ FilamentMapManualPanel::FilamentMapManualPanel(wxWindow *p
top_sizer->Add(drag_sizer, 0, wxALIGN_CENTER|wxEXPAND);
m_tips = new Label(this, _L("Tips: You can drag the filaments to change which extruder they are assigned to.\n"
"But your filament arrangement may not be the most filament-efficient."));
m_tips = new Label(this, _L("Tips: You can drag the filaments to reassign them to different nozzles.\n"
"But your filament arrangement may not be the most efficient for filament usage."));
m_tips->SetFont(Label::Body_14);
m_tips->SetForegroundColour(wxColour("#6B6B6B"));
top_sizer->AddSpacer(FromDIP(8));
@ -165,18 +165,20 @@ void FilamentMapBtnPanel::OnPaint(wxPaintEvent &event)
gc->DrawRoundedRectangle(0, 0, rect.width, rect.height, 0);
wxColour bg_color = m_selected ? wxColour("#EBF9F0") : wxColour("#FFFFFF");
wxColour border_color = m_hover || m_selected ? wxColour("#00AE42") : wxColour("#CECECE");
int cornerRadius = 8;
bg_color = StateColor::darkModeColorFor(bg_color);
border_color = StateColor::darkModeColorFor(border_color);
gc->SetBrush(wxBrush(bg_color));
gc->SetPen(wxPen(border_color, 2));
gc->DrawRoundedRectangle(1, 1, rect.width - 2, rect.height - 2, cornerRadius);
gc->DrawRoundedRectangle(1, 1, rect.width - 2, rect.height - 2, 8);
delete gc;
}
}
void FilamentMapBtnPanel::UpdateStatus()
{
const wxColour selected_color = wxColour("#EBF9F0");
const wxColour normal_color = wxColour("#FFFFFF");
const wxColour selected_color = StateColor::darkModeColorFor(wxColour("#EBF9F0"));
const wxColour normal_color = StateColor::darkModeColorFor(wxColour("#FFFFFF"));
if (m_selected) {
m_btn->SetBackgroundColour(selected_color);
m_label->SetBackgroundColour(selected_color);
@ -235,13 +237,13 @@ void GUI::FilamentMapBtnPanel::Show()
FilamentMapAutoPanel::FilamentMapAutoPanel(wxWindow *parent, FilamentMapMode mode) : wxPanel(parent)
{
static const wxString AutoForFlushDetail = _L("Disregrad the filaments in AMS. Optimize filament usage "
"by calculating the best allocation for the left and right "
"nozzles. Arrange the filaments according on the printer according to "
"by calculating the best arrangement for the left and right "
"nozzles. Arrange the filaments on the printer based on "
"the slicing results.");
static const wxString AutoForMatchDetail = _L("Based on the current filaments in the AMS, allocate the "
static const wxString AutoForMatchDetail = _L("Based on the current filaments in the AMS, arrange the "
"filaments to the left and right nozzles.");
auto sizer = new wxBoxSizer(wxHORIZONTAL);
m_flush_panel = new FilamentMapBtnPanel(this, _L("Material-Saving Mode"), AutoForFlushDetail, "flush_mode_panel_icon");
m_flush_panel = new FilamentMapBtnPanel(this, _L("Filament-Saving Mode"), AutoForFlushDetail, "flush_mode_panel_icon");
m_match_panel = new FilamentMapBtnPanel(this, _L("Convenient Mode"), AutoForMatchDetail,"match_mode_panel_icon");
sizer->AddStretchSpacer();
@ -296,7 +298,7 @@ FilamentMapDefaultPanel::FilamentMapDefaultPanel(wxWindow *parent) : wxPanel(par
{
auto sizer = new wxBoxSizer(wxHORIZONTAL);
m_label = new Label(this, _L("The material allocation for the current disk follows the global settings."));
m_label = new Label(this, _L("The filament arrangement for current plate follows the global settings."));
m_label->SetFont(Label::Body_14);
m_label->SetBackgroundColour(*wxWHITE);