NEW:AMS supports ams filament backup
Change-Id: I0bc84f52bcd88dbbc1b9614b15474433c748cc14
This commit is contained in:
parent
f596a822e2
commit
00e1c50947
17 changed files with 585 additions and 38 deletions
|
@ -26,21 +26,22 @@
|
|||
"ftp_folder" : "sdcard/",
|
||||
"printer_thumbnail_image": "printer_thumbnail_p1p"
|
||||
},
|
||||
{
|
||||
"display_name": "Bambu Lab X1",
|
||||
"func": {
|
||||
"FUNC_EXTRUSION_CALI": false,
|
||||
"FUNC_LOCAL_TUNNEL": false
|
||||
},
|
||||
"camera_resolution":["720p","1080p"],
|
||||
"model_id": "BL-P002",
|
||||
"printer_type": "3DPrinter-X1",
|
||||
"printer_thumbnail_image": "printer_thumbnail"
|
||||
{
|
||||
"display_name": "Bambu Lab X1",
|
||||
"func": {
|
||||
"FUNC_EXTRUSION_CALI": true,
|
||||
"FUNC_LOCAL_TUNNEL": false
|
||||
},
|
||||
"camera_resolution": [ "720p", "1080p" ],
|
||||
"model_id": "BL-P002",
|
||||
"printer_type": "3DPrinter-X1",
|
||||
"printer_thumbnail_image": "printer_thumbnail"
|
||||
},
|
||||
|
||||
{
|
||||
"display_name": "Bambu Lab X1 Carbon",
|
||||
"func": {
|
||||
"FUNC_EXTRUSION_CALI": false,
|
||||
"FUNC_EXTRUSION_CALI": true,
|
||||
"FUNC_LOCAL_TUNNEL": false
|
||||
},
|
||||
"model_id": "BL-P001",
|
||||
|
|
5
resources/images/automatic_material_renewal.svg
Normal file
5
resources/images/automatic_material_renewal.svg
Normal file
|
@ -0,0 +1,5 @@
|
|||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M3.01408 12.9725C2.51708 12.4755 2.10241 11.9146 1.77795 11.3056C1.54229 10.8633 1.83193 10.3344 2.31189 10.277L2.3985 10.2719L3.88612 10.2719C4.27445 10.2719 4.58925 10.5867 4.58925 10.975C4.58925 11.1406 4.532 11.2928 4.43621 11.413L4.06445 11.9376L4.62695 12.5001C6.83366 14.2175 9.93507 14.0064 11.9634 11.9781C12.8323 11.1091 13.3576 10.0266 13.5391 8.89953L13.5491 8.83172L13.5676 8.67485C13.6064 8.29176 13.929 8.00026 14.3141 8.00026C14.6821 8.00026 14.9805 8.29862 14.9805 8.66667L14.9779 8.72492L14.964 8.86406C14.9615 8.88538 14.959 8.90576 14.9565 8.9252C14.7612 10.4053 14.095 11.8352 12.9578 12.9725C10.2119 15.7183 5.75996 15.7183 3.01408 12.9725Z" fill="#00AE42"/>
|
||||
<path d="M12.9928 3.02786C13.4898 3.52487 13.9045 4.08571 14.2289 4.69469C14.4646 5.13702 14.175 5.66592 13.695 5.72332L13.6084 5.72844L11.927 5.76616C11.5387 5.76616 11.2239 5.45136 11.2239 5.06303C11.2239 4.89744 11.2812 4.74521 11.377 4.62506L11.9395 4.06256L11.4705 3.55584C9.26381 1.83844 6.07183 1.9939 4.0435 4.02223C3.17082 4.89491 2.64483 5.983 2.46553 7.11534L2.44469 7.27231C2.44144 7.30131 2.4383 7.33173 2.43527 7.36357C2.4009 7.72445 2.09782 8.00006 1.73531 8.00006L1.69285 8.00006C1.32492 8.00006 1.02665 7.70179 1.02665 7.33386L1.02917 7.27584L1.05203 7.06323C1.24928 5.58734 1.91493 4.16206 3.04913 3.02786C5.79501 0.28199 10.2469 0.28199 12.9928 3.02786Z" fill="#00AE42"/>
|
||||
<path d="M8.49859 4.5L11 10.5H9.69859L9.15775 9.13115H6.7493L6.22535 10.5H5L7.42535 4.5H8.49859ZM8.76056 8.11475L7.93239 6.0082L7.12958 8.11475H8.76056Z" fill="#00AE42"/>
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
3
resources/images/replace_arrow_down.svg
Normal file
3
resources/images/replace_arrow_down.svg
Normal file
|
@ -0,0 +1,3 @@
|
|||
<svg width="6" height="5" viewBox="0 0 6 5" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6 0.5L3 4.5L0 0.5L6 0.5Z" fill="white"/>
|
||||
</svg>
|
After Width: | Height: | Size: 150 B |
3
resources/images/replace_arrow_left.svg
Normal file
3
resources/images/replace_arrow_left.svg
Normal file
|
@ -0,0 +1,3 @@
|
|||
<svg width="5" height="6" viewBox="0 0 5 6" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M4.5 6L0.5 3L4.5 0L4.5 6Z" fill="white"/>
|
||||
</svg>
|
After Width: | Height: | Size: 150 B |
3
resources/images/replace_arrow_right.svg
Normal file
3
resources/images/replace_arrow_right.svg
Normal file
|
@ -0,0 +1,3 @@
|
|||
<svg width="5" height="6" viewBox="0 0 5 6" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0.5 0L4.5 3L0.5 6V0Z" fill="white"/>
|
||||
</svg>
|
After Width: | Height: | Size: 146 B |
|
@ -1107,4 +1107,382 @@ void MappingContainer::doRender(wxDC& dc)
|
|||
dc.DrawBitmap(ams_mapping_item_container, 0, 0);
|
||||
}
|
||||
|
||||
AmsReplaceMaterialDialog::AmsReplaceMaterialDialog(wxWindow* parent)
|
||||
: DPIDialog(parent, wxID_ANY, _L("Filaments replace"), wxDefaultPosition, wxDefaultSize, wxSYSTEM_MENU | wxCAPTION | wxCLOSE_BOX)
|
||||
{
|
||||
SetBackgroundColour(*wxWHITE);
|
||||
create();
|
||||
wxGetApp().UpdateDlgDarkUI(this);
|
||||
}
|
||||
|
||||
void AmsReplaceMaterialDialog::create()
|
||||
{
|
||||
SetSize(wxSize(FromDIP(376), -1));
|
||||
SetMinSize(wxSize(FromDIP(376), -1));
|
||||
SetMaxSize(wxSize(FromDIP(376), -1));
|
||||
|
||||
// set icon for dialog
|
||||
std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str();
|
||||
SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO));
|
||||
SetSizeHints(wxDefaultSize, wxDefaultSize);
|
||||
|
||||
m_main_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
auto m_top_line = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
||||
m_top_line->SetBackgroundColour(wxColour(166, 169, 170));
|
||||
m_main_sizer->Add(m_top_line, 0, wxEXPAND, 0);
|
||||
|
||||
|
||||
auto m_button_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
StateColor btn_bg_white(std::pair<wxColour, int>(AMS_CONTROL_DISABLE_COLOUR, StateColor::Disabled),
|
||||
std::pair<wxColour, int>(AMS_CONTROL_DISABLE_COLOUR, StateColor::Pressed),
|
||||
std::pair<wxColour, int>(AMS_CONTROL_DEF_BLOCK_BK_COLOUR, StateColor::Hovered),
|
||||
std::pair<wxColour, int>(AMS_CONTROL_WHITE_COLOUR, StateColor::Normal));
|
||||
|
||||
StateColor btn_bd_white(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
|
||||
std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
|
||||
|
||||
StateColor btn_text_white(std::pair<wxColour, int>(wxColour(255, 255, 254), StateColor::Disabled),
|
||||
std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
|
||||
|
||||
auto m_button_close = new Button(this, _L("Close"));
|
||||
m_button_close->SetCornerRadius(FromDIP(11));
|
||||
m_button_close->SetBackgroundColor(btn_bg_white);
|
||||
m_button_close->SetBorderColor(btn_bd_white);
|
||||
m_button_close->SetTextColor(btn_text_white);
|
||||
m_button_close->SetFont(Label::Body_13);
|
||||
m_button_close->SetMinSize(wxSize(FromDIP(42), FromDIP(24)));
|
||||
m_button_close->Bind(wxEVT_BUTTON, [this](auto& e) {
|
||||
EndModal(wxCLOSE);
|
||||
});
|
||||
|
||||
m_button_sizer->Add( 0, 0, 1, wxEXPAND, 0 );
|
||||
m_button_sizer->Add(m_button_close, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
|
||||
m_groups_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_main_sizer->Add(0,0,0, wxTOP, FromDIP(12));
|
||||
m_main_sizer->Add(m_groups_sizer,0,wxEXPAND|wxLEFT|wxRIGHT, FromDIP(16));
|
||||
m_main_sizer->Add(0,0,0, wxTOP, FromDIP(20));
|
||||
m_main_sizer->Add(m_button_sizer,0,wxEXPAND|wxLEFT|wxRIGHT, FromDIP(16));
|
||||
m_main_sizer->Add(0,0,0, wxTOP, FromDIP(20));
|
||||
|
||||
|
||||
CenterOnParent();
|
||||
SetSizer(m_main_sizer);
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
|
||||
std::vector<bool> AmsReplaceMaterialDialog::GetStatus(unsigned int status)
|
||||
{
|
||||
std::vector<bool> listStatus;
|
||||
bool current = false;
|
||||
for (int i = 0; i < 16; i++) {
|
||||
if (status & (1 << i)) {
|
||||
current = true;
|
||||
}
|
||||
else {
|
||||
current = false;
|
||||
}
|
||||
listStatus.push_back(current);
|
||||
}
|
||||
return listStatus;
|
||||
}
|
||||
|
||||
void AmsReplaceMaterialDialog::update_machine_obj(MachineObject* obj)
|
||||
{
|
||||
if (obj) {m_obj = obj;}
|
||||
else {return;}
|
||||
|
||||
AmsTray* tray_list[4*4];
|
||||
for (auto i = 0; i < 4*4; i++) {
|
||||
tray_list[i] = nullptr;
|
||||
}
|
||||
|
||||
try {
|
||||
for (auto ams_info : obj->amsList) {
|
||||
int ams_id_int = atoi(ams_info.first.c_str()) * 4;
|
||||
|
||||
for (auto tray_info : ams_info.second->trayList) {
|
||||
int tray_id_int = atoi(tray_info.first.c_str());
|
||||
tray_id_int = ams_id_int + tray_id_int;
|
||||
tray_list[tray_id_int] = tray_info.second;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (...) {}
|
||||
|
||||
//creat group
|
||||
int group_index = 1;
|
||||
for (int filam : m_obj->filam_bak) {
|
||||
auto status_list = GetStatus(filam);
|
||||
|
||||
wxColour group_color;
|
||||
std::string group_material;
|
||||
|
||||
//get color & material
|
||||
for (auto i = 0; i < status_list.size(); i++) {
|
||||
if (status_list[i] && tray_list[i] != nullptr) {
|
||||
group_color = AmsTray::decode_color(tray_list[i]->color);
|
||||
group_material = tray_list[i]->get_display_filament_type();
|
||||
}
|
||||
}
|
||||
|
||||
m_groups_sizer->Add(create_split_line(wxString::Format("%s%d", _L("Group"), group_index), group_color, group_material, status_list), 0, wxEXPAND, 0);
|
||||
m_groups_sizer->Add(0, 0, 0, wxTOP, FromDIP(12));
|
||||
group_index++;
|
||||
}
|
||||
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
|
||||
wxWindow* AmsReplaceMaterialDialog::create_split_line(wxString gname, wxColour col, wxString material, std::vector<bool> status_list)
|
||||
{
|
||||
wxColour background_color = wxColour(0xF4F4F4);
|
||||
|
||||
if (abs(col.Red() - background_color.Red()) <= 5 &&
|
||||
abs(col.Green() - background_color.Green()) <= 5 &&
|
||||
abs(col.Blue() - background_color.Blue()) <= 5) {
|
||||
background_color = wxColour(0xE6E6E6);
|
||||
}
|
||||
|
||||
auto m_panel_group = new StaticBox(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
|
||||
m_panel_group->SetCornerRadius(FromDIP(4));
|
||||
m_panel_group->SetBackgroundColor(StateColor(std::pair<wxColour, int>(background_color, StateColor::Normal)));
|
||||
|
||||
m_panel_group->SetSize(wxSize(FromDIP(344), -1));
|
||||
m_panel_group->SetMinSize(wxSize(FromDIP(344), -1));
|
||||
m_panel_group->SetMaxSize(wxSize(FromDIP(344), -1));
|
||||
|
||||
wxBoxSizer* group_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
//group title
|
||||
wxBoxSizer* title_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto group_name = new Label(m_panel_group, gname);
|
||||
group_name->SetFont(::Label::Head_12);
|
||||
|
||||
Button* material_info = new Button(m_panel_group, material);
|
||||
material_info->SetFont(Label::Head_12);
|
||||
material_info->SetCornerRadius(FromDIP(2));
|
||||
material_info->SetBorderColor(background_color);
|
||||
|
||||
if (col.GetLuminance() < 0.5)
|
||||
material_info->SetTextColor(*wxWHITE);
|
||||
else
|
||||
material_info->SetTextColor(0x6B6B6B);
|
||||
|
||||
material_info->SetMinSize(wxSize(-1, FromDIP(24)));
|
||||
material_info->SetBackgroundColor(col);
|
||||
|
||||
|
||||
title_sizer->Add(group_name, 0, wxALIGN_CENTER, 0);
|
||||
title_sizer->Add(0, 0, 0, wxLEFT, FromDIP(10));
|
||||
title_sizer->Add(material_info, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
|
||||
//group item
|
||||
wxGridSizer* grid_Sizer = new wxGridSizer(0, 8, 0, 0);
|
||||
|
||||
for (int i = 0; i < status_list.size(); i++) {
|
||||
if (status_list[i]) {
|
||||
AmsRMItem* amsitem = new AmsRMItem(m_panel_group, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
amsitem->set_color(col);
|
||||
|
||||
//set current tray
|
||||
if (!m_obj->m_tray_now.empty() && m_obj->m_tray_now == std::to_string(i)) {
|
||||
amsitem->set_focus(true);
|
||||
}
|
||||
|
||||
amsitem->set_type(RMTYPE_NORMAL);
|
||||
amsitem->set_index(wxGetApp().transition_tridid(i).ToStdString());
|
||||
amsitem->SetBackgroundColour(background_color);
|
||||
grid_Sizer->Add(amsitem, 0, wxALIGN_CENTER | wxTOP | wxBottom, FromDIP(10));
|
||||
}
|
||||
}
|
||||
|
||||
//add the first tray
|
||||
for (int i = 0; i < status_list.size(); i++) {
|
||||
if (status_list[i]) {
|
||||
AmsRMItem* amsitem = new AmsRMItem(m_panel_group, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
amsitem->set_color(col);
|
||||
amsitem->set_type(RMTYPE_VIRTUAL);
|
||||
amsitem->set_index(wxGetApp().transition_tridid(i).ToStdString());
|
||||
amsitem->SetBackgroundColour(background_color);
|
||||
grid_Sizer->Add(amsitem, 0, wxALIGN_CENTER | wxTOP | wxBottom, FromDIP(10));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
group_sizer->Add(0, 0, 0, wxTOP, FromDIP(10));
|
||||
group_sizer->Add(title_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(12));
|
||||
group_sizer->Add(grid_Sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(12));
|
||||
group_sizer->Add(0, 0, 0, wxTOP, FromDIP(10));
|
||||
|
||||
m_panel_group->SetSizer(group_sizer);
|
||||
m_panel_group->Layout();
|
||||
group_sizer->Fit(m_panel_group);
|
||||
return m_panel_group;
|
||||
}
|
||||
|
||||
void AmsReplaceMaterialDialog::paintEvent(wxPaintEvent& evt)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
dc.SetPen(wxColour(0xAC, 0xAC, 0xAC));
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawRoundedRectangle(0, 0, GetSize().x, GetSize().y, 0);
|
||||
}
|
||||
|
||||
void AmsReplaceMaterialDialog::on_dpi_changed(const wxRect& suggested_rect)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
AmsRMItem::AmsRMItem(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size)
|
||||
{
|
||||
wxWindow::Create(parent, id, pos, size);
|
||||
|
||||
SetSize(wxSize(FromDIP(42), FromDIP(32)));
|
||||
SetMinSize(wxSize(FromDIP(42), FromDIP(32)));
|
||||
SetMaxSize(wxSize(FromDIP(42), FromDIP(32)));
|
||||
|
||||
SetBackgroundColour(*wxWHITE);
|
||||
|
||||
Bind(wxEVT_PAINT, &AmsRMItem::paintEvent, this);
|
||||
}
|
||||
|
||||
void AmsRMItem::paintEvent(wxPaintEvent& evt)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
render(dc);
|
||||
}
|
||||
|
||||
void AmsRMItem::render(wxDC& dc)
|
||||
{
|
||||
#ifdef __WXMSW__
|
||||
wxSize size = GetSize();
|
||||
wxMemoryDC memdc;
|
||||
wxBitmap bmp(size.x, size.y);
|
||||
memdc.SelectObject(bmp);
|
||||
memdc.Blit({ 0, 0 }, size, &dc, { 0, 0 });
|
||||
|
||||
{
|
||||
wxGCDC dc2(memdc);
|
||||
doRender(dc2);
|
||||
}
|
||||
|
||||
memdc.SelectObject(wxNullBitmap);
|
||||
dc.DrawBitmap(bmp, 0, 0);
|
||||
#else
|
||||
doRender(dc);
|
||||
#endif
|
||||
}
|
||||
|
||||
void AmsRMItem::doRender(wxDC& dc)
|
||||
{
|
||||
wxSize size = GetSize();
|
||||
|
||||
if (m_type == RMTYPE_NORMAL) {
|
||||
dc.SetPen(wxPen(m_color, 2));
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
}
|
||||
else {
|
||||
dc.SetPen(wxPen(m_color, 2, wxSHORT_DASH));
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
}
|
||||
|
||||
//top bottom line
|
||||
dc.DrawLine(FromDIP(0), FromDIP(4), size.x - FromDIP(5), FromDIP(4));
|
||||
dc.DrawLine(FromDIP(0), size.y - FromDIP(4), size.x - FromDIP(5), size.y - FromDIP(4));
|
||||
|
||||
//left right line
|
||||
dc.DrawLine(FromDIP(1), FromDIP(4), FromDIP(1), FromDIP(11));
|
||||
dc.DrawLine(FromDIP(1), FromDIP(22), FromDIP(1), size.y - FromDIP(4));
|
||||
|
||||
dc.DrawLine(size.x - FromDIP(5), FromDIP(4), size.x - FromDIP(5), FromDIP(11));
|
||||
dc.DrawLine(size.x - FromDIP(5), FromDIP(22), size.x - FromDIP(5), size.y - FromDIP(4));
|
||||
|
||||
//delta
|
||||
dc.DrawLine(FromDIP(0), FromDIP(11), FromDIP(5), size.y / 2);
|
||||
dc.DrawLine(FromDIP(0), FromDIP(22), FromDIP(5), size.y / 2);
|
||||
|
||||
dc.DrawLine(size.x - FromDIP(5), FromDIP(11), size.x - FromDIP(1), size.y / 2);
|
||||
dc.DrawLine(size.x - FromDIP(5), FromDIP(22), size.x - FromDIP(1), size.y / 2);
|
||||
|
||||
|
||||
if (m_focus) {
|
||||
dc.SetPen(wxPen(wxColour(0x00AE42), 2));
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
dc.DrawLine(FromDIP(0), FromDIP(1), size.x - FromDIP(5), FromDIP(1));
|
||||
dc.DrawLine(FromDIP(0), size.y - FromDIP(1), size.x - FromDIP(5), size.y - FromDIP(1));
|
||||
}
|
||||
|
||||
if (m_selected) {
|
||||
}
|
||||
|
||||
auto tsize = dc.GetMultiLineTextExtent(m_index);
|
||||
auto tpot = wxPoint((size.x - tsize.x) / 2 - FromDIP(2), (size.y - tsize.y) / 2 + FromDIP(2));
|
||||
dc.SetTextForeground(wxColour(0x6B6B6B));
|
||||
dc.SetFont(::Label::Head_12);
|
||||
dc.DrawText(m_index, tpot);
|
||||
}
|
||||
|
||||
AmsRMArrow::AmsRMArrow(wxWindow* parent)
|
||||
{
|
||||
|
||||
wxWindow::Create(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
SetBackgroundColour(*wxWHITE);
|
||||
Bind(wxEVT_PAINT, &AmsRMArrow::paintEvent, this);
|
||||
|
||||
m_bitmap_left = ScalableBitmap(this, "replace_arrow_left", 7);
|
||||
m_bitmap_right = ScalableBitmap(this, "replace_arrow_right", 7);
|
||||
m_bitmap_down = ScalableBitmap(this, "replace_arrow_down", 7);
|
||||
|
||||
|
||||
SetSize(wxSize(FromDIP(16), FromDIP(32)));
|
||||
SetMinSize(wxSize(FromDIP(16), FromDIP(32)));
|
||||
SetMaxSize(wxSize(FromDIP(16), FromDIP(32)));
|
||||
}
|
||||
|
||||
void AmsRMArrow::paintEvent(wxPaintEvent& evt)
|
||||
{
|
||||
wxPaintDC dc(this);
|
||||
render(dc);
|
||||
}
|
||||
|
||||
void AmsRMArrow::render(wxDC& dc)
|
||||
{
|
||||
#ifdef __WXMSW__
|
||||
wxSize size = GetSize();
|
||||
wxMemoryDC memdc;
|
||||
wxBitmap bmp(size.x, size.y);
|
||||
memdc.SelectObject(bmp);
|
||||
memdc.Blit({ 0, 0 }, size, &dc, { 0, 0 });
|
||||
|
||||
{
|
||||
wxGCDC dc2(memdc);
|
||||
doRender(dc2);
|
||||
}
|
||||
|
||||
memdc.SelectObject(wxNullBitmap);
|
||||
dc.DrawBitmap(bmp, 0, 0);
|
||||
#else
|
||||
doRender(dc);
|
||||
#endif
|
||||
}
|
||||
|
||||
void AmsRMArrow::doRender(wxDC& dc)
|
||||
{
|
||||
wxSize size = GetSize();
|
||||
|
||||
dc.SetPen(wxPen(wxColour(0, 174, 66)));
|
||||
dc.SetBrush(*wxTRANSPARENT_BRUSH);
|
||||
|
||||
|
||||
dc.SetPen(wxPen(wxColour(0xACACAC)));
|
||||
dc.SetBrush(wxBrush(wxColour(0xACACAC)));
|
||||
dc.DrawCircle(size.x / 2, size.y / 2, FromDIP(7));
|
||||
}
|
||||
|
||||
}} // namespace Slic3r::GUI
|
||||
|
|
|
@ -239,6 +239,75 @@ public:
|
|||
};
|
||||
|
||||
|
||||
class AmsReplaceMaterialDialog : public DPIDialog
|
||||
{
|
||||
public:
|
||||
AmsReplaceMaterialDialog(wxWindow* parent);
|
||||
~AmsReplaceMaterialDialog() {};
|
||||
|
||||
public:
|
||||
wxWindow* create_split_line(wxString gname, wxColour col, wxString material, std::vector<bool> status_list);
|
||||
void create();
|
||||
void update_machine_obj(MachineObject* obj);
|
||||
void on_left_down(wxMouseEvent& evt);
|
||||
void paintEvent(wxPaintEvent& evt);
|
||||
void on_dpi_changed(const wxRect &suggested_rect) override;
|
||||
std::vector<bool> GetStatus(unsigned int status);
|
||||
|
||||
public:
|
||||
wxBoxSizer* m_main_sizer{nullptr};
|
||||
wxBoxSizer* m_groups_sizer{nullptr};
|
||||
|
||||
MachineObject* m_obj{nullptr};
|
||||
};
|
||||
|
||||
|
||||
enum RMTYPE {
|
||||
RMTYPE_NORMAL = 0,
|
||||
RMTYPE_VIRTUAL = 1,
|
||||
};
|
||||
|
||||
class AmsRMItem : public wxWindow
|
||||
{
|
||||
public:
|
||||
AmsRMItem(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize);
|
||||
~AmsRMItem() {};
|
||||
|
||||
public:
|
||||
void set_color(wxColour col) {m_color = col;};
|
||||
void set_type(RMTYPE type) {m_type = type;};
|
||||
void set_index(std::string index) {m_index = index;};
|
||||
void set_focus(bool focus) {m_focus = focus;};
|
||||
|
||||
void paintEvent(wxPaintEvent& evt);
|
||||
void render(wxDC& dc);
|
||||
void doRender(wxDC& dc);
|
||||
|
||||
private:
|
||||
RMTYPE m_type;
|
||||
wxColour m_color;
|
||||
std::string m_index;
|
||||
bool m_focus = false;
|
||||
bool m_selected = false;
|
||||
};
|
||||
|
||||
class AmsRMArrow : public wxWindow
|
||||
{
|
||||
public:
|
||||
AmsRMArrow(wxWindow* parent);
|
||||
~AmsRMArrow() {};
|
||||
|
||||
public:
|
||||
void paintEvent(wxPaintEvent& evt);
|
||||
void render(wxDC& dc);
|
||||
void doRender(wxDC& dc);
|
||||
|
||||
private:
|
||||
ScalableBitmap m_bitmap_left;
|
||||
ScalableBitmap m_bitmap_right;
|
||||
ScalableBitmap m_bitmap_down;
|
||||
};
|
||||
|
||||
wxDECLARE_EVENT(EVT_SET_FINISH_MAPPING, wxCommandEvent);
|
||||
|
||||
}} // namespace Slic3r::GUI
|
||||
|
|
|
@ -2673,6 +2673,21 @@ int MachineObject::parse_json(std::string payload)
|
|||
;
|
||||
}
|
||||
|
||||
/*get filam_bak*/
|
||||
try {
|
||||
if (jj.contains("filam_bak")) {
|
||||
filam_bak.clear();
|
||||
if (jj["filam_bak"].is_array()) {
|
||||
for (auto it = jj["filam_bak"].begin(); it != jj["filam_bak"].end(); it++) {
|
||||
filam_bak.push_back(it.value().get<int>());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (...) {
|
||||
;
|
||||
}
|
||||
|
||||
/* get fimware type */
|
||||
try {
|
||||
if (jj.contains("lifecycle")) {
|
||||
|
|
|
@ -433,6 +433,8 @@ public:
|
|||
std::string get_printer_thumbnail_img_str();
|
||||
std::string product_name; // set by iot service, get /user/print
|
||||
|
||||
std::vector<int> filam_bak;
|
||||
|
||||
std::string bind_user_name;
|
||||
std::string bind_user_id;
|
||||
std::string bind_state; /* free | occupied */
|
||||
|
|
|
@ -1197,8 +1197,28 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
|||
|
||||
m_sizer_prepare->Add(hyperlink_sizer, 0, wxALIGN_CENTER | wxALL, 5);
|
||||
|
||||
auto m_sizer_backup = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto m_ams_backup_tip = new Label(m_panel_prepare, _L("Ams filament backup"));
|
||||
m_ams_backup_tip->SetFont(::Label::Head_12);
|
||||
m_ams_backup_tip->SetForegroundColour(wxColour(0x00AE42));
|
||||
m_ams_backup_tip->SetBackgroundColour(*wxWHITE);
|
||||
auto img_ams_backup = new wxStaticBitmap(m_panel_prepare, wxID_ANY, create_scaled_bitmap("automatic_material_renewal", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0);
|
||||
img_ams_backup->SetBackgroundColour(*wxWHITE);
|
||||
|
||||
m_sizer_backup->Add(0, 0, 1, wxEXPAND, 0);
|
||||
m_sizer_backup->Add(img_ams_backup, 0, wxALL, FromDIP(3));
|
||||
m_sizer_backup->Add(m_ams_backup_tip, 0, wxTOP, FromDIP(5));
|
||||
|
||||
m_ams_backup_tip->Bind(wxEVT_ENTER_WINDOW, [this, img_amsmapping_tip](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
img_ams_backup->Bind(wxEVT_ENTER_WINDOW, [this, img_amsmapping_tip](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
|
||||
m_ams_backup_tip->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
img_ams_backup->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
m_ams_backup_tip->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {popup_filament_backup();});
|
||||
img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {popup_filament_backup();});
|
||||
|
||||
|
||||
m_sizer_pcont->Add(0, 0, 1, wxEXPAND, 0);
|
||||
m_button_ensure = new Button(m_panel_prepare, _L("Send"));
|
||||
m_button_ensure->SetBackgroundColor(btn_bg_enable);
|
||||
m_button_ensure->SetBorderColor(btn_bg_enable);
|
||||
|
@ -1206,9 +1226,13 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
|||
m_button_ensure->SetSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE);
|
||||
m_button_ensure->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE);
|
||||
m_button_ensure->SetCornerRadius(FromDIP(12));
|
||||
|
||||
m_button_ensure->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_ok_btn, this);
|
||||
|
||||
m_sizer_pcont->Add(m_sizer_backup, 0, wxEXPAND | wxBOTTOM, FromDIP(10));
|
||||
m_sizer_pcont->Add(0, 0, 1, wxEXPAND, 0);
|
||||
m_sizer_pcont->Add(m_button_ensure, 0, wxEXPAND | wxBOTTOM, FromDIP(10));
|
||||
|
||||
|
||||
m_sizer_prepare->Add(m_sizer_pcont, 0, wxEXPAND, 0);
|
||||
m_panel_prepare->SetSizer(m_sizer_prepare);
|
||||
m_panel_prepare->Layout();
|
||||
|
@ -1335,6 +1359,17 @@ void SelectMachineDialog::check_fcous_state(wxWindow* window)
|
|||
}
|
||||
}
|
||||
|
||||
void SelectMachineDialog::popup_filament_backup()
|
||||
{
|
||||
DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager();
|
||||
if (!dev) return;
|
||||
if (dev->get_selected_machine() && dev->get_selected_machine()->filam_bak.size() > 0) {
|
||||
AmsReplaceMaterialDialog* m_replace_material_popup = new AmsReplaceMaterialDialog(this);
|
||||
m_replace_material_popup->update_machine_obj(dev->get_selected_machine());
|
||||
m_replace_material_popup->ShowModal();
|
||||
}
|
||||
}
|
||||
|
||||
wxWindow *SelectMachineDialog::create_ams_checkbox(wxString title, wxWindow *parent, wxString tooltip)
|
||||
{
|
||||
auto checkbox = new wxWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
|
|
|
@ -365,7 +365,8 @@ public:
|
|||
|
||||
void check_focus(wxWindow* window);
|
||||
void check_fcous_state(wxWindow* window);
|
||||
wxWindow *create_ams_checkbox(wxString title, wxWindow *parent, wxString tooltip);
|
||||
void popup_filament_backup();
|
||||
wxWindow* create_ams_checkbox(wxString title, wxWindow* parent, wxString tooltip);
|
||||
wxWindow* create_item_checkbox(wxString title, wxWindow* parent, wxString tooltip, std::string param);
|
||||
void update_select_layout(MachineObject *obj);
|
||||
void prepare_mode();
|
||||
|
|
|
@ -1266,6 +1266,7 @@ StatusPanel::StatusPanel(wxWindow *parent, wxWindowID id, const wxPoint &pos, co
|
|||
Bind(EVT_AMS_EXTRUSION_CALI, &StatusPanel::on_filament_extrusion_cali, this);
|
||||
Bind(EVT_AMS_LOAD, &StatusPanel::on_ams_load, this);
|
||||
Bind(EVT_AMS_UNLOAD, &StatusPanel::on_ams_unload, this);
|
||||
Bind(EVT_AMS_FILAMENT_BACKUP, &StatusPanel::on_ams_filament_backup, this);
|
||||
Bind(EVT_AMS_SETTINGS, &StatusPanel::on_ams_setting_click, this);
|
||||
Bind(EVT_AMS_REFRESH_RFID, &StatusPanel::on_ams_refresh_rfid, this);
|
||||
Bind(EVT_AMS_ON_SELECTED, &StatusPanel::on_ams_selected, this);
|
||||
|
@ -2651,6 +2652,15 @@ void StatusPanel::on_ams_unload(SimpleEvent &event)
|
|||
if (obj) { obj->command_ams_switch(255); }
|
||||
}
|
||||
|
||||
void StatusPanel::on_ams_filament_backup(SimpleEvent& event)
|
||||
{
|
||||
if (obj && obj->filam_bak.size() > 0) {
|
||||
AmsReplaceMaterialDialog* m_replace_material_popup = new AmsReplaceMaterialDialog(this);
|
||||
m_replace_material_popup->update_machine_obj(obj);
|
||||
m_replace_material_popup->ShowModal();
|
||||
}
|
||||
}
|
||||
|
||||
void StatusPanel::on_ams_setting_click(SimpleEvent &event)
|
||||
{
|
||||
if (!m_ams_setting_dlg) m_ams_setting_dlg = new AMSSetting((wxWindow *) this, wxID_ANY);
|
||||
|
|
|
@ -277,6 +277,7 @@ protected:
|
|||
SecondaryCheckDialog* con_load_dlg = nullptr;
|
||||
SecondaryCheckDialog* ctrl_e_hint_dlg = nullptr;
|
||||
SecondaryCheckDialog* sdcard_hint_dlg = nullptr;
|
||||
|
||||
FanControlPopup* m_fan_control_popup{nullptr};
|
||||
|
||||
ExtrusionCalibration *m_extrusion_cali_dlg{nullptr};
|
||||
|
@ -340,7 +341,8 @@ protected:
|
|||
void on_ams_load(SimpleEvent &event);
|
||||
void on_ams_load_curr();
|
||||
void on_ams_unload(SimpleEvent &event);
|
||||
void on_ams_setting_click(SimpleEvent &event);
|
||||
void on_ams_filament_backup(SimpleEvent& event);
|
||||
void on_ams_setting_click(SimpleEvent& event);
|
||||
void on_filament_edit(wxCommandEvent &event);
|
||||
void on_ext_spool_edit(wxCommandEvent &event);
|
||||
void on_filament_extrusion_cali(wxCommandEvent &event);
|
||||
|
|
|
@ -19,6 +19,7 @@ wxDEFINE_EVENT(EVT_AMS_EXTRUSION_CALI, wxCommandEvent);
|
|||
wxDEFINE_EVENT(EVT_AMS_LOAD, SimpleEvent);
|
||||
wxDEFINE_EVENT(EVT_AMS_UNLOAD, SimpleEvent);
|
||||
wxDEFINE_EVENT(EVT_AMS_SETTINGS, SimpleEvent);
|
||||
wxDEFINE_EVENT(EVT_AMS_FILAMENT_BACKUP, SimpleEvent);
|
||||
wxDEFINE_EVENT(EVT_AMS_REFRESH_RFID, wxCommandEvent);
|
||||
wxDEFINE_EVENT(EVT_AMS_ON_SELECTED, wxCommandEvent);
|
||||
wxDEFINE_EVENT(EVT_AMS_ON_FILAMENT_EDIT, wxCommandEvent);
|
||||
|
@ -1769,14 +1770,16 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
|||
wxBoxSizer *m_sizer_bottom = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxBoxSizer *m_sizer_left = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
//ams tip
|
||||
m_sizer_ams_tips = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto m_ams_tip = new wxStaticText(m_amswin, wxID_ANY, _L("AMS"));
|
||||
auto m_ams_tip = new Label(m_amswin, _L("AMS"));
|
||||
m_ams_tip->SetFont(::Label::Body_12);
|
||||
m_ams_tip->SetBackgroundColour(*wxWHITE);
|
||||
auto img_amsmapping_tip = new wxStaticBitmap(m_amswin, wxID_ANY, create_scaled_bitmap("enable_ams", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0);
|
||||
img_amsmapping_tip->SetBackgroundColour(*wxWHITE);
|
||||
m_sizer_ams_tips->Add(m_ams_tip, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_ams_tips->Add(img_amsmapping_tip, 0, wxALL, FromDIP(2));
|
||||
|
||||
m_sizer_ams_tips->Add(m_ams_tip, 0, wxTOP, FromDIP(5));
|
||||
m_sizer_ams_tips->Add(img_amsmapping_tip, 0, wxALL, FromDIP(3));
|
||||
|
||||
img_amsmapping_tip->Bind(wxEVT_ENTER_WINDOW, [this, img_amsmapping_tip](auto& e) {
|
||||
wxPoint img_pos = img_amsmapping_tip->ClientToScreen(wxPoint(0, 0));
|
||||
|
@ -1785,12 +1788,34 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
|||
m_ams_introduce_popup.Position(popup_pos, wxSize(0, 0));
|
||||
m_ams_introduce_popup.Popup();
|
||||
});
|
||||
|
||||
img_amsmapping_tip->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) {
|
||||
img_amsmapping_tip->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {
|
||||
m_ams_introduce_popup.Dismiss();
|
||||
});
|
||||
|
||||
|
||||
//backup tips
|
||||
auto m_ams_backup_tip = new Label(m_amswin, _L("Ams filament backup"));
|
||||
m_ams_backup_tip->SetFont(::Label::Head_12);
|
||||
m_ams_backup_tip->SetForegroundColour(wxColour(0x00AE42));
|
||||
m_ams_backup_tip->SetBackgroundColour(*wxWHITE);
|
||||
auto img_ams_backup = new wxStaticBitmap(m_amswin, wxID_ANY, create_scaled_bitmap("automatic_material_renewal", this, 16), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0);
|
||||
img_ams_backup->SetBackgroundColour(*wxWHITE);
|
||||
|
||||
m_sizer_ams_tips->Add( 0, 0, 1, wxEXPAND, 0 );
|
||||
m_sizer_ams_tips->Add(img_ams_backup, 0, wxALL, FromDIP(3));
|
||||
m_sizer_ams_tips->Add(m_ams_backup_tip, 0, wxTOP, FromDIP(5));
|
||||
|
||||
m_ams_backup_tip->Bind(wxEVT_ENTER_WINDOW, [this, img_amsmapping_tip](auto& e) {SetCursor(wxCURSOR_HAND);});
|
||||
img_ams_backup->Bind(wxEVT_ENTER_WINDOW, [this, img_amsmapping_tip](auto& e) {SetCursor(wxCURSOR_HAND);});
|
||||
|
||||
m_ams_backup_tip->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW);});
|
||||
img_ams_backup->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW);});
|
||||
|
||||
m_ams_backup_tip->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {post_event(SimpleEvent(EVT_AMS_FILAMENT_BACKUP));});
|
||||
img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {post_event(SimpleEvent(EVT_AMS_FILAMENT_BACKUP));});
|
||||
|
||||
|
||||
//ams cans
|
||||
m_panel_can = new StaticBox(m_amswin, wxID_ANY, wxDefaultPosition, AMS_CANS_SIZE, wxBORDER_NONE);
|
||||
m_panel_can->SetMinSize(AMS_CANS_SIZE);
|
||||
m_panel_can->SetCornerRadius(FromDIP(10));
|
||||
|
@ -1825,20 +1850,6 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
|||
m_none_ams_panel->SetSizer(sizer_ams_panel_h);
|
||||
m_none_ams_panel->Layout();
|
||||
|
||||
/*wxBoxSizer *sizer_ams_panel = new wxBoxSizer(wxHORIZONTAL);
|
||||
AMSinfo none_ams = AMSinfo{ "0", std::vector<Caninfo>{Caninfo{"0", wxEmptyString, *wxWHITE, AMSCanType::AMS_CAN_TYPE_EMPTY}} };
|
||||
auto amscans = new AmsCans(m_none_ams_panel, wxID_ANY, none_ams);
|
||||
sizer_ams_panel->Add(amscans, 0, wxALL, 0);
|
||||
sizer_ams_panel->Add(0, 0, 0, wxLEFT, 20);
|
||||
auto m_tip_none_ams = new wxStaticText(m_none_ams_panel, wxID_ANY, _L("Click the pencil icon to edit the filament."), wxDefaultPosition, wxDefaultSize, 0);
|
||||
m_tip_none_ams->Wrap(150);
|
||||
m_tip_none_ams->SetFont(::Label::Body_13);
|
||||
m_tip_none_ams->SetForegroundColour(AMS_CONTROL_GRAY500);
|
||||
m_tip_none_ams->SetMinSize({150, -1});
|
||||
sizer_ams_panel->Add(m_tip_none_ams, 0, wxALIGN_CENTER, 0);
|
||||
m_none_ams_panel->SetSizer(sizer_ams_panel);
|
||||
m_none_ams_panel->Layout();*/
|
||||
|
||||
m_simplebook_ams->AddPage(m_simplebook_cans, wxEmptyString, true);
|
||||
m_simplebook_ams->AddPage(m_none_ams_panel, wxEmptyString, false);
|
||||
|
||||
|
@ -1846,7 +1857,7 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
|||
m_panel_can->Layout();
|
||||
m_sizer_cans->Fit(m_panel_can);
|
||||
|
||||
m_sizer_left->Add(m_sizer_ams_tips, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_left->Add(m_sizer_ams_tips, 0, wxEXPAND, 0);
|
||||
m_sizer_left->Add(m_panel_can, 1, wxEXPAND, 0);
|
||||
|
||||
wxBoxSizer *m_sizer_left_bottom = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
@ -1888,6 +1899,9 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
|||
|
||||
m_button_area = new wxWindow(m_amswin, wxID_ANY);
|
||||
m_button_area->SetBackgroundColour(m_amswin->GetBackgroundColour());
|
||||
|
||||
|
||||
wxBoxSizer *m_sizer_button = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer *m_sizer_button_area = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
m_button_extrusion_cali = new Button(m_button_area, _L("Cali"));
|
||||
|
@ -1914,7 +1928,9 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
|||
m_sizer_button_area->Add(m_button_extruder_back, 0, wxLEFT, FromDIP(6));
|
||||
m_sizer_button_area->Add(m_button_extruder_feed, 0, wxLEFT, FromDIP(6));
|
||||
|
||||
m_button_area->SetSizer(m_sizer_button_area);
|
||||
m_sizer_button->Add(m_sizer_button_area, 0, 1, wxEXPAND, 0);
|
||||
|
||||
m_button_area->SetSizer(m_sizer_button);
|
||||
m_button_area->Layout();
|
||||
m_button_area->Fit();
|
||||
|
||||
|
@ -2002,8 +2018,8 @@ AMSControl::AMSControl(wxWindow *parent, wxWindowID id, const wxPoint &pos, cons
|
|||
m_ams_introduce_popup.Dismiss();
|
||||
});
|
||||
|
||||
m_sizer_vams_tips->Add(m_vams_tip, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_vams_tips->Add(img_vams_tip, 0, wxALL, FromDIP(2));
|
||||
m_sizer_vams_tips->Add(m_vams_tip, 0, wxTOP, FromDIP(5));
|
||||
m_sizer_vams_tips->Add(img_vams_tip, 0, wxALL, FromDIP(3));
|
||||
|
||||
m_vams_extra_road = new AMSVirtualRoad(m_amswin, wxID_ANY);
|
||||
m_vams_extra_road->SetMinSize(wxSize(m_panel_virtual->GetSize().x + FromDIP(16), -1));
|
||||
|
|
|
@ -627,6 +627,7 @@ wxDECLARE_EVENT(EVT_AMS_EXTRUSION_CALI, wxCommandEvent);
|
|||
wxDECLARE_EVENT(EVT_AMS_LOAD, SimpleEvent);
|
||||
wxDECLARE_EVENT(EVT_AMS_UNLOAD, SimpleEvent);
|
||||
wxDECLARE_EVENT(EVT_AMS_SETTINGS, SimpleEvent);
|
||||
wxDECLARE_EVENT(EVT_AMS_FILAMENT_BACKUP, SimpleEvent);
|
||||
wxDECLARE_EVENT(EVT_AMS_REFRESH_RFID, wxCommandEvent);
|
||||
wxDECLARE_EVENT(EVT_AMS_ON_SELECTED, wxCommandEvent);
|
||||
wxDECLARE_EVENT(EVT_AMS_ON_FILAMENT_EDIT, wxCommandEvent);
|
||||
|
|
|
@ -29,6 +29,7 @@ wxFont Label::Head_15;
|
|||
wxFont Label::Head_14;
|
||||
wxFont Label::Head_13;
|
||||
wxFont Label::Head_12;
|
||||
wxFont Label::Head_11;
|
||||
wxFont Label::Head_10;
|
||||
|
||||
wxFont Label::Body_16;
|
||||
|
@ -62,6 +63,7 @@ void Label::initSysFont()
|
|||
Head_14 = Label::sysFont(14, true);
|
||||
Head_13 = Label::sysFont(13, true);
|
||||
Head_12 = Label::sysFont(12, true);
|
||||
Head_11 = Label::sysFont(11, true);
|
||||
Head_10 = Label::sysFont(10, true);
|
||||
|
||||
Body_16 = Label::sysFont(16, false);
|
||||
|
|
|
@ -33,6 +33,7 @@ public:
|
|||
static wxFont Head_14;
|
||||
static wxFont Head_13;
|
||||
static wxFont Head_12;
|
||||
static wxFont Head_11;
|
||||
static wxFont Head_10;
|
||||
|
||||
static wxFont Body_16;
|
||||
|
|
Loading…
Reference in a new issue