mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-17 10:32:20 +00:00
NEW:support new mapping type
jira:[support new mapping] Change-Id: I88e5d3b6966d4ed1e8098d13fe9335fecf6e01c4 (cherry picked from commit c0932e16ff9fcae0e900c6e0cac9a5b496d0cc0e)
This commit is contained in:
@@ -286,19 +286,19 @@ void MaterialItem::doRender(wxDC &dc)
|
||||
AmsMapingPopup::AmsMapingPopup(wxWindow *parent)
|
||||
: PopupWindow(parent, wxBORDER_NONE)
|
||||
{
|
||||
SetSize(wxSize(FromDIP(252), -1));
|
||||
SetMinSize(wxSize(FromDIP(252), -1));
|
||||
SetMaxSize(wxSize(FromDIP(252), -1));
|
||||
Bind(wxEVT_PAINT, &AmsMapingPopup::paintEvent, this);
|
||||
|
||||
|
||||
#if __APPLE__
|
||||
Bind(wxEVT_LEFT_DOWN, &AmsMapingPopup::on_left_down, this);
|
||||
#endif
|
||||
|
||||
SetBackgroundColour(*wxWHITE);
|
||||
m_sizer_main = new wxBoxSizer(wxVERTICAL);
|
||||
//m_sizer_main->Add(0, 0, 1, wxEXPAND, 0);
|
||||
|
||||
m_sizer_main = new wxBoxSizer(wxVERTICAL);
|
||||
m_sizer_ams = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_sizer_ams_left = new wxBoxSizer(wxVERTICAL);
|
||||
m_sizer_ams_right = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
|
||||
auto title_panel = new wxPanel(this, wxID_ANY);
|
||||
title_panel->SetBackgroundColour(wxColour(0xF8, 0xF8, 0xF8));
|
||||
@@ -307,7 +307,6 @@ void MaterialItem::doRender(wxDC &dc)
|
||||
|
||||
|
||||
wxBoxSizer *title_sizer_h= new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
wxBoxSizer *title_sizer_v = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
auto title_text = new wxStaticText(title_panel, wxID_ANY, _L("AMS Slots"));
|
||||
@@ -319,19 +318,15 @@ void MaterialItem::doRender(wxDC &dc)
|
||||
title_panel->Layout();
|
||||
title_panel->Fit();
|
||||
|
||||
m_sizer_list = new wxBoxSizer(wxVERTICAL);
|
||||
for (auto i = 0; i < AMS_TOTAL_COUNT; i++) {
|
||||
auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL);
|
||||
/*auto ams_mapping_item_container = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("ams_mapping_container", this, 78), wxDefaultPosition,
|
||||
wxSize(FromDIP(230), FromDIP(78)), 0);*/
|
||||
auto ams_mapping_item_container = new MappingContainer(this);
|
||||
ams_mapping_item_container->SetSizer(sizer_mapping_list);
|
||||
ams_mapping_item_container->Layout();
|
||||
//ams_mapping_item_container->Hide();
|
||||
m_amsmapping_container_sizer_list.push_back(sizer_mapping_list);
|
||||
m_amsmapping_container_list.push_back(ams_mapping_item_container);
|
||||
m_sizer_list->Add(ams_mapping_item_container, 0, wxALIGN_CENTER_HORIZONTAL|wxTOP|wxBOTTOM, FromDIP(5));
|
||||
}
|
||||
auto left_ams_title_text = new wxStaticText(this, wxID_ANY, _L("Left Ams"));
|
||||
auto right_ams_title_text = new wxStaticText(this, wxID_ANY, _L("Right Ams"));
|
||||
|
||||
m_sizer_ams_left->Add(left_ams_title_text, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_ams_right->Add(right_ams_title_text, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
m_sizer_ams->Add(m_sizer_ams_left, 0, wxEXPAND | wxALL, FromDIP(0));
|
||||
m_sizer_ams->Add(m_sizer_ams_right, 0, wxEXPAND | wxALL, FromDIP(0));
|
||||
|
||||
|
||||
m_warning_text = new wxStaticText(this, wxID_ANY, wxEmptyString);
|
||||
m_warning_text->SetForegroundColour(wxColour(0xFF, 0x6F, 0x00));
|
||||
@@ -342,9 +337,7 @@ void MaterialItem::doRender(wxDC &dc)
|
||||
m_warning_text->Wrap(FromDIP(248));
|
||||
|
||||
m_sizer_main->Add(title_panel, 0, wxEXPAND | wxALL, FromDIP(2));
|
||||
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(5));
|
||||
m_sizer_main->Add(m_sizer_list, 0, wxEXPAND | wxALL, FromDIP(0));
|
||||
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(5));
|
||||
m_sizer_main->Add(m_sizer_ams, 0, wxEXPAND | wxALL, FromDIP(2));
|
||||
m_sizer_main->Add(m_warning_text, 0, wxEXPAND | wxALL, FromDIP(6));
|
||||
|
||||
SetSizer(m_sizer_main);
|
||||
@@ -456,73 +449,92 @@ void AmsMapingPopup::update_ams_data_multi_machines()
|
||||
|
||||
void AmsMapingPopup::update_ams_data(std::map<std::string, Ams*> amsList)
|
||||
{
|
||||
m_has_unmatch_filament = false;
|
||||
//m_mapping_item_list.clear();
|
||||
std::map<std::string, Ams *>::iterator ams_iter;
|
||||
BOOST_LOG_TRIVIAL(trace) << "ams_mapping total count " << amsList.size();
|
||||
|
||||
|
||||
for (auto& ams_container : m_amsmapping_container_list) {
|
||||
ams_container->Hide();
|
||||
ams_container->Destroy();
|
||||
}
|
||||
|
||||
|
||||
for (wxWindow *mitem : m_mapping_item_list) {
|
||||
mitem->Destroy();
|
||||
mitem = nullptr;
|
||||
}
|
||||
m_mapping_item_list.clear();
|
||||
|
||||
if (m_amsmapping_container_sizer_list.size() > 0) {
|
||||
for (wxBoxSizer *siz : m_amsmapping_container_sizer_list) {
|
||||
siz->Clear(true);
|
||||
}
|
||||
}
|
||||
|
||||
std::map<std::string, Ams *>::iterator ams_iter;
|
||||
|
||||
BOOST_LOG_TRIVIAL(trace) << "ams_mapping total count " << amsList.size();
|
||||
int m_amsmapping_container_list_index = 0;
|
||||
m_amsmapping_container_list.clear();
|
||||
m_amsmapping_container_sizer_list.clear();
|
||||
m_mapping_item_list.clear();
|
||||
|
||||
for (ams_iter = amsList.begin(); ams_iter != amsList.end(); ams_iter++) {
|
||||
|
||||
BOOST_LOG_TRIVIAL(trace) << "ams_mapping ams id " << ams_iter->first.c_str();
|
||||
|
||||
auto ams_indx = atoi(ams_iter->first.c_str());
|
||||
Ams *ams_group = ams_iter->second;
|
||||
std::vector<TrayData> tray_datas;
|
||||
std::map<std::string, AmsTray *>::iterator tray_iter;
|
||||
int ams_indx = atoi(ams_iter->first.c_str());
|
||||
int ams_type = ams_iter->second->type;
|
||||
int nozzle_id = ams_iter->second->nozzle;
|
||||
|
||||
for (tray_iter = ams_group->trayList.begin(); tray_iter != ams_group->trayList.end(); tray_iter++) {
|
||||
AmsTray *tray_data = tray_iter->second;
|
||||
TrayData td;
|
||||
if (ams_type == 1) {
|
||||
|
||||
td.id = ams_indx * AMS_TOTAL_COUNT + atoi(tray_data->id.c_str());
|
||||
auto sizer_mapping_list = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto ams_mapping_item_container = new MappingContainer(this);
|
||||
ams_mapping_item_container->SetSizer(sizer_mapping_list);
|
||||
ams_mapping_item_container->Layout();
|
||||
|
||||
m_has_unmatch_filament = false;
|
||||
|
||||
if (!tray_data->is_exists) {
|
||||
td.type = EMPTY;
|
||||
} else {
|
||||
if (!tray_data->is_tray_info_ready()) {
|
||||
td.type = THIRD;
|
||||
} else {
|
||||
td.type = NORMAL;
|
||||
td.colour = AmsTray::decode_color(tray_data->color);
|
||||
td.name = tray_data->get_display_filament_type();
|
||||
td.filament_type = tray_data->get_filament_type();
|
||||
td.ctype = tray_data->ctype;
|
||||
for (auto col : tray_data->cols) {
|
||||
td.material_cols.push_back(AmsTray::decode_color(col));
|
||||
}
|
||||
BOOST_LOG_TRIVIAL(trace) << "ams_mapping ams id " << ams_iter->first.c_str();
|
||||
|
||||
Ams* ams_group = ams_iter->second;
|
||||
std::vector<TrayData> tray_datas;
|
||||
std::map<std::string, AmsTray*>::iterator tray_iter;
|
||||
|
||||
for (tray_iter = ams_group->trayList.begin(); tray_iter != ams_group->trayList.end(); tray_iter++) {
|
||||
AmsTray* tray_data = tray_iter->second;
|
||||
TrayData td;
|
||||
|
||||
td.id = ams_indx * AMS_TOTAL_COUNT + atoi(tray_data->id.c_str());
|
||||
|
||||
if (!tray_data->is_exists) {
|
||||
td.type = EMPTY;
|
||||
}
|
||||
else {
|
||||
if (!tray_data->is_tray_info_ready()) {
|
||||
td.type = THIRD;
|
||||
}
|
||||
else {
|
||||
td.type = NORMAL;
|
||||
td.colour = AmsTray::decode_color(tray_data->color);
|
||||
td.name = tray_data->get_display_filament_type();
|
||||
td.filament_type = tray_data->get_filament_type();
|
||||
td.ctype = tray_data->ctype;
|
||||
for (auto col : tray_data->cols) {
|
||||
td.material_cols.push_back(AmsTray::decode_color(col));
|
||||
}
|
||||
}
|
||||
|
||||
td.ams_id = std::stoi(ams_iter->second->id);
|
||||
td.slot_id = std::stoi(tray_iter->second->id);
|
||||
}
|
||||
|
||||
tray_datas.push_back(td);
|
||||
}
|
||||
|
||||
tray_datas.push_back(td);
|
||||
}
|
||||
ams_mapping_item_container->Show();
|
||||
add_ams_mapping(tray_datas, ams_mapping_item_container, sizer_mapping_list);
|
||||
|
||||
|
||||
m_amsmapping_container_list[m_amsmapping_container_list_index]->Show();
|
||||
add_ams_mapping(tray_datas, m_amsmapping_container_list[m_amsmapping_container_list_index], m_amsmapping_container_sizer_list[m_amsmapping_container_list_index]);
|
||||
m_amsmapping_container_list_index++;
|
||||
m_amsmapping_container_sizer_list.push_back(sizer_mapping_list);
|
||||
m_amsmapping_container_list.push_back(ams_mapping_item_container);
|
||||
|
||||
//main nozzle = right nozzle
|
||||
if (nozzle_id == 0) {
|
||||
m_sizer_ams_right->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0);
|
||||
}
|
||||
else if (nozzle_id == 1) {
|
||||
m_sizer_ams_left->Add(ams_mapping_item_container, 0, wxALIGN_CENTER, 0);
|
||||
}
|
||||
|
||||
|
||||
//m_warning_text->Show(m_has_unmatch_filament);
|
||||
}
|
||||
}
|
||||
|
||||
/*extra tray*/
|
||||
|
||||
m_warning_text->Show(m_has_unmatch_filament);
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
@@ -583,6 +595,9 @@ void AmsMapingPopup::add_ams_mapping(std::vector<TrayData> tray_data, wxWindow*
|
||||
|
||||
// set button
|
||||
MappingItem *m_mapping_item = new MappingItem(container);
|
||||
m_mapping_item->m_ams_id = tray_data[i].ams_id;
|
||||
m_mapping_item->m_slot_id = tray_data[i].slot_id;
|
||||
|
||||
m_mapping_item->SetSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
|
||||
m_mapping_item->SetMinSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
|
||||
m_mapping_item->SetMaxSize(wxSize(FromDIP(68 * 0.7), FromDIP(100 * 0.6)));
|
||||
@@ -675,7 +690,8 @@ void MappingItem::send_event(int fliament_id)
|
||||
wxCommandEvent event(EVT_SET_FINISH_MAPPING);
|
||||
event.SetInt(m_tray_data.id);
|
||||
|
||||
wxString param = wxString::Format("%d|%d|%d|%d|%s|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), number, fliament_id);
|
||||
wxString param = wxString::Format("%d|%d|%d|%d|%s|%d|%d|%d", m_coloul.Red(), m_coloul.Green(), m_coloul.Blue(), m_coloul.Alpha(), number, fliament_id,
|
||||
m_tray_data.ams_id, m_tray_data.slot_id);
|
||||
event.SetString(param);
|
||||
event.SetEventObject(this->GetParent()->GetParent());
|
||||
wxPostEvent(this->GetParent()->GetParent()->GetParent(), event);
|
||||
|
||||
@@ -60,6 +60,9 @@ struct TrayData
|
||||
std::string filament_type;
|
||||
wxColour colour;
|
||||
std::vector<wxColour> material_cols = std::vector<wxColour>();
|
||||
|
||||
int ams_id = 0;
|
||||
int slot_id = 0;
|
||||
};
|
||||
|
||||
class MaterialItem: public wxPanel
|
||||
@@ -116,6 +119,9 @@ public:
|
||||
ScalableBitmap m_transparent_mapping_item;
|
||||
bool m_unmatch{false};
|
||||
|
||||
int m_ams_id{255};
|
||||
int m_slot_id{255};
|
||||
|
||||
void msw_rescale();
|
||||
void paintEvent(wxPaintEvent &evt);
|
||||
void render(wxDC &dc);
|
||||
@@ -150,6 +156,9 @@ public:
|
||||
int m_current_filament_id;
|
||||
std::string m_tag_material;
|
||||
wxBoxSizer *m_sizer_main{nullptr};
|
||||
wxBoxSizer *m_sizer_ams{nullptr};
|
||||
wxBoxSizer *m_sizer_ams_left{nullptr};
|
||||
wxBoxSizer *m_sizer_ams_right{nullptr};
|
||||
wxBoxSizer *m_sizer_list{nullptr};
|
||||
wxWindow *m_parent_item{nullptr};
|
||||
|
||||
|
||||
@@ -3942,11 +3942,24 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
|
||||
for (auto it = j_ams.begin(); it != j_ams.end(); it++) {
|
||||
if (!it->contains("id")) continue;
|
||||
std::string ams_id = (*it)["id"].get<std::string>();
|
||||
|
||||
int nozzle_id = 0; // Default nozzle id
|
||||
int type_id = 1; // 0:dummy 1:ams 2:ams-lite 3:n3f 4:n3s
|
||||
|
||||
if (it->contains("nozzle")) {
|
||||
nozzle_id = (*it)["nozzle"].get<int>();
|
||||
}
|
||||
|
||||
if (it->contains("type")) {
|
||||
type_id = (*it)["type"].get<int>();
|
||||
}
|
||||
|
||||
ams_id_set.erase(ams_id);
|
||||
Ams* curr_ams = nullptr;
|
||||
auto ams_it = amsList.find(ams_id);
|
||||
if (ams_it == amsList.end()) {
|
||||
Ams* new_ams = new Ams(ams_id);
|
||||
Ams* new_ams = new Ams(ams_id, nozzle_id, type_id);
|
||||
|
||||
try {
|
||||
if (!ams_id.empty()) {
|
||||
int ams_id_int = atoi(ams_id.c_str());
|
||||
@@ -4773,7 +4786,47 @@ int MachineObject::parse_json(std::string payload, bool key_field_only)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*parse np*/
|
||||
try
|
||||
{
|
||||
if (jj.contains("cfg") && jj.contains("fun") && jj.contains("aux") && jj.contains("stat")) {
|
||||
is_enable_np = true;
|
||||
}
|
||||
else {
|
||||
is_enable_np = false;
|
||||
}
|
||||
|
||||
if (jj.contains("device")) {
|
||||
json const & device = jj["device"];
|
||||
|
||||
if (device.contains("nozzle")) {
|
||||
json const & nozzle = device["nozzle"];
|
||||
|
||||
m_np_nozzle_data = NozzleData();
|
||||
m_np_nozzle_data.info = nozzle["info"].get<int>();
|
||||
|
||||
|
||||
for (const auto& noz : nozzle.items()) {
|
||||
std::string nozzle_id = noz.key();
|
||||
json const & ndata = noz.value();
|
||||
|
||||
Nozzle n;
|
||||
if (ndata.contains("info")) {n.info = ndata["info"].get<int>(); }
|
||||
if (ndata.contains("snow")) {n.info = ndata["snow"].get<int>(); }
|
||||
if (ndata.contains("spre")) {n.info = ndata["spre"].get<int>(); }
|
||||
if (ndata.contains("star")) {n.info = ndata["star"].get<int>(); }
|
||||
if (ndata.contains("stat")) {n.info = ndata["stat"].get<int>(); }
|
||||
if (ndata.contains("temp")) {n.info = ndata["temp"].get<int>(); }
|
||||
m_np_nozzle_data.nozzle[nozzle_id] = n;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (...)
|
||||
{}
|
||||
}
|
||||
|
||||
if (!key_field_only) {
|
||||
try {
|
||||
if (j.contains("camera")) {
|
||||
|
||||
@@ -135,6 +135,21 @@ enum ManualPaCaliMethod {
|
||||
PA_PATTERN,
|
||||
};
|
||||
|
||||
struct Nozzle
|
||||
{
|
||||
int info{0};
|
||||
int snow{0};
|
||||
int spre{0};
|
||||
int star{0};
|
||||
int stat{0};
|
||||
int temp{0};
|
||||
};
|
||||
|
||||
struct NozzleData
|
||||
{
|
||||
std::map<std::string, Nozzle> nozzle; /*0 - main nozzle 1 - slave nozzle*/
|
||||
int info{0};
|
||||
};
|
||||
|
||||
struct RatingInfo {
|
||||
bool request_successful;
|
||||
@@ -226,8 +241,10 @@ public:
|
||||
|
||||
class Ams {
|
||||
public:
|
||||
Ams(std::string ams_id) {
|
||||
Ams(std::string ams_id, int nozzle_id, int type_id) {
|
||||
id = ams_id;
|
||||
nozzle = nozzle_id;
|
||||
type = type_id;
|
||||
}
|
||||
std::string id;
|
||||
int humidity = 5;
|
||||
@@ -235,6 +252,9 @@ public:
|
||||
bool tray_read_opt{false};
|
||||
bool is_exists{false};
|
||||
std::map<std::string, AmsTray*> trayList;
|
||||
|
||||
int nozzle;
|
||||
int type{1}; //0:dummy 1:ams 2:ams-lite 3:n3f 4:n3s
|
||||
};
|
||||
|
||||
enum PrinterFirmwareType {
|
||||
@@ -330,7 +350,6 @@ private:
|
||||
|
||||
// type, time stamp, delay
|
||||
std::vector<std::tuple<std::string, uint64_t, uint64_t>> message_delay;
|
||||
|
||||
public:
|
||||
|
||||
enum LIGHT_EFFECT {
|
||||
@@ -484,6 +503,7 @@ public:
|
||||
/* ams properties */
|
||||
std::map<std::string, Ams*> amsList; // key: ams[id], start with 0
|
||||
AmsTray vt_tray; // virtual tray
|
||||
std::vector<AmsTray> vt_trays; // virtual tray for new
|
||||
long ams_exist_bits = 0;
|
||||
long tray_exist_bits = 0;
|
||||
long tray_is_bbl_bits = 0;
|
||||
@@ -977,6 +997,10 @@ public:
|
||||
bool is_firmware_info_valid();
|
||||
std::string get_string_from_fantype(FanType type);
|
||||
|
||||
/*for more extruder*/
|
||||
bool is_enable_np{ false };
|
||||
NozzleData m_np_nozzle_data;
|
||||
|
||||
/* Device Filament Check */
|
||||
std::set<std::string> m_checked_filament;
|
||||
std::string m_printer_preset_name;
|
||||
@@ -985,6 +1009,7 @@ public:
|
||||
int get_flag_bits(std::string str, int start, int count = 1);
|
||||
int get_flag_bits(int num, int start, int count = 1);
|
||||
void update_printer_preset_name(const std::string &nozzle_diameter_str);
|
||||
|
||||
};
|
||||
|
||||
class DeviceManager
|
||||
|
||||
@@ -968,6 +968,9 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
SetDoubleBuffered(true);
|
||||
#endif //__WINDOWS__
|
||||
|
||||
SetMinSize(wxSize(FromDIP(688), -1));
|
||||
SetMaxSize(wxSize(FromDIP(688), -1));
|
||||
|
||||
// bind
|
||||
Bind(wxEVT_CLOSE_WINDOW, &SelectMachineDialog::on_cancel, this);
|
||||
|
||||
@@ -984,54 +987,77 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
SetBackgroundColour(m_colour_def_color);
|
||||
|
||||
m_sizer_main = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
m_sizer_main->SetMinSize(wxSize(0, -1));
|
||||
m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
||||
m_line_top->SetBackgroundColour(wxColour(166, 169, 170));
|
||||
|
||||
m_scrollable_view = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize);
|
||||
m_sizer_scrollable_view = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
m_scrollable_region = new wxPanel(m_scrollable_view, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
m_sizer_scrollable_region = new wxBoxSizer(wxVERTICAL);
|
||||
m_basic_panel = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
m_basic_panel->SetBackgroundColour(*wxWHITE);
|
||||
m_basicl_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
/*basic info*/
|
||||
|
||||
//rename normal
|
||||
m_rename_switch_panel = new wxSimplebook(m_scrollable_region);
|
||||
m_rename_switch_panel->SetSize(wxSize(FromDIP(420), FromDIP(25)));
|
||||
m_rename_switch_panel->SetMinSize(wxSize(FromDIP(420), FromDIP(25)));
|
||||
m_rename_switch_panel->SetMaxSize(wxSize(FromDIP(420), FromDIP(25)));
|
||||
/*thumbnail*/
|
||||
auto m_sizer_thumbnail_area = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
auto m_panel_image = new wxPanel(m_basic_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
m_panel_image->SetBackgroundColour(m_colour_def_color);
|
||||
m_sizer_thumbnail = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_thumbnailPanel = new ThumbnailPanel(m_panel_image);
|
||||
m_thumbnailPanel->SetSize(wxSize(FromDIP(198), FromDIP(198)));
|
||||
m_thumbnailPanel->SetMinSize(wxSize(FromDIP(198), FromDIP(198)));
|
||||
m_thumbnailPanel->SetMaxSize(wxSize(FromDIP(198), FromDIP(198)));
|
||||
m_thumbnailPanel->SetBackgroundColour(*wxWHITE);
|
||||
m_sizer_thumbnail->Add(m_thumbnailPanel, 0, wxALIGN_CENTER, 0);
|
||||
m_panel_image->SetSizer(m_sizer_thumbnail);
|
||||
m_panel_image->Layout();
|
||||
|
||||
m_sizer_thumbnail_area->Add(m_panel_image, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_thumbnail_area->Layout();
|
||||
|
||||
/*basic info right*/
|
||||
auto sizer_basic_right_info = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
/*rename*/
|
||||
auto sizer_rename = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
m_rename_switch_panel = new wxSimplebook(m_basic_panel);
|
||||
m_rename_switch_panel->SetBackgroundColour(*wxWHITE);
|
||||
m_rename_switch_panel->SetSize(wxSize(FromDIP(360), FromDIP(25)));
|
||||
m_rename_switch_panel->SetMinSize(wxSize(FromDIP(360), FromDIP(25)));
|
||||
m_rename_switch_panel->SetMaxSize(wxSize(FromDIP(360), FromDIP(25)));
|
||||
|
||||
m_rename_normal_panel = new wxPanel(m_rename_switch_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
m_rename_normal_panel->SetBackgroundColour(*wxWHITE);
|
||||
rename_sizer_v = new wxBoxSizer(wxVERTICAL);
|
||||
rename_sizer_h = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
m_rename_text = new wxStaticText(m_rename_normal_panel, wxID_ANY, wxT("MyLabel"), wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
|
||||
m_rename_text = new wxStaticText(m_rename_normal_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
|
||||
m_rename_text->SetFont(::Label::Body_13);
|
||||
m_rename_text->SetMaxSize(wxSize(FromDIP(390), -1));
|
||||
m_rename_button = new ScalableButton(m_rename_normal_panel, wxID_ANY, "ams_editable");
|
||||
ams_editable = new ScalableBitmap(this, "ams_editable", 13);
|
||||
ams_editable_light = new ScalableBitmap(this, "ams_editable_light", 13);
|
||||
m_rename_button->SetBackgroundColour(*wxWHITE);
|
||||
m_rename_text->SetBackgroundColour(*wxWHITE);
|
||||
m_rename_text->SetMaxSize(wxSize(FromDIP(340), -1));
|
||||
rename_editable = new ScalableBitmap(this, "rename_edit", 20);
|
||||
rename_editable_light = new ScalableBitmap(this, "rename_edit", 20);
|
||||
m_rename_button = new wxStaticBitmap(m_rename_normal_panel, wxID_ANY, rename_editable->bmp(), wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), 0);
|
||||
m_rename_button->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
m_rename_button->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
|
||||
rename_sizer_h->Add(m_rename_text, 0, wxALIGN_CENTER, 0);
|
||||
rename_sizer_h->Add(m_rename_text, 0, wxALIGN_CENTER|wxTOP, FromDIP(2));
|
||||
rename_sizer_h->Add(m_rename_button, 0, wxALIGN_CENTER, 0);
|
||||
rename_sizer_v->Add(rename_sizer_h, 1, wxALIGN_CENTER, 0);
|
||||
rename_sizer_v->Add(rename_sizer_h, 1, wxTOP, 0);
|
||||
m_rename_normal_panel->SetSizer(rename_sizer_v);
|
||||
m_rename_normal_panel->Layout();
|
||||
rename_sizer_v->Fit(m_rename_normal_panel);
|
||||
|
||||
//rename edit
|
||||
auto m_rename_edit_panel = new wxPanel(m_rename_switch_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
m_rename_edit_panel->SetBackgroundColour(*wxWHITE);
|
||||
auto rename_edit_sizer_v = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
m_rename_input = new ::TextInput(m_rename_edit_panel, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER);
|
||||
m_rename_input->GetTextCtrl()->SetFont(::Label::Body_13);
|
||||
m_rename_input->SetSize(wxSize(FromDIP(380), FromDIP(24)));
|
||||
m_rename_input->SetMinSize(wxSize(FromDIP(380), FromDIP(24)));
|
||||
m_rename_input->SetMaxSize(wxSize(FromDIP(380), FromDIP(24)));
|
||||
m_rename_input->SetSize(wxSize(FromDIP(360), FromDIP(24)));
|
||||
m_rename_input->SetMinSize(wxSize(FromDIP(360), FromDIP(24)));
|
||||
m_rename_input->SetMaxSize(wxSize(FromDIP(360), FromDIP(24)));
|
||||
m_rename_input->Bind(wxEVT_TEXT_ENTER, [this](auto& e) {on_rename_enter();});
|
||||
m_rename_input->Bind(wxEVT_KILL_FOCUS, [this](auto& e) {
|
||||
if (!m_rename_input->HasFocus() && !m_rename_text->HasFocus())
|
||||
@@ -1045,7 +1071,7 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
m_rename_edit_panel->Layout();
|
||||
rename_edit_sizer_v->Fit(m_rename_edit_panel);
|
||||
|
||||
m_rename_button->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_rename_click, this);
|
||||
m_rename_button->Bind(wxEVT_LEFT_DOWN, &SelectMachineDialog::on_rename_click, this);
|
||||
m_rename_switch_panel->AddPage(m_rename_normal_panel, wxEmptyString, true);
|
||||
m_rename_switch_panel->AddPage(m_rename_edit_panel, wxEmptyString, false);
|
||||
|
||||
@@ -1065,91 +1091,124 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
}
|
||||
});
|
||||
|
||||
auto m_sizer_thumbnail_area = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
auto last_plate_panel = new wxWindow(m_scrollable_region, wxID_ANY);
|
||||
last_plate_panel->SetBackgroundColour(*wxWHITE);
|
||||
auto last_plate_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
last_plate_panel->SetMinSize(wxSize(FromDIP(32), FromDIP(32)));
|
||||
m_bitmap_last_plate = new wxStaticBitmap(last_plate_panel, wxID_ANY, create_scaled_bitmap("go_last_plate", this, 32), wxDefaultPosition, wxSize(FromDIP(32), FromDIP(32)), 0);
|
||||
last_plate_sizer->Add(m_bitmap_last_plate, 0, wxALIGN_CENTER, 0);
|
||||
last_plate_panel->SetSizer(last_plate_sizer);
|
||||
|
||||
m_panel_image = new wxPanel(m_scrollable_region, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
m_panel_image->SetBackgroundColour(m_colour_def_color);
|
||||
m_sizer_thumbnail = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_thumbnailPanel = new ThumbnailPanel(m_panel_image);
|
||||
m_thumbnailPanel->SetSize(wxSize(FromDIP(256), FromDIP(256)));
|
||||
m_thumbnailPanel->SetMinSize(wxSize(FromDIP(256), FromDIP(256)));
|
||||
m_thumbnailPanel->SetMaxSize(wxSize(FromDIP(256), FromDIP(256)));
|
||||
m_thumbnailPanel->SetBackgroundColour(*wxRED);
|
||||
m_sizer_thumbnail->Add(m_thumbnailPanel, 0, wxALIGN_CENTER, 0);
|
||||
m_panel_image->SetSizer(m_sizer_thumbnail);
|
||||
m_panel_image->Layout();
|
||||
|
||||
auto next_plate_panel = new wxWindow(m_scrollable_region, wxID_ANY);
|
||||
next_plate_panel->SetBackgroundColour(*wxWHITE);
|
||||
auto next_plate_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
next_plate_panel->SetMinSize(wxSize(FromDIP(32), FromDIP(32)));
|
||||
m_bitmap_next_plate = new wxStaticBitmap(next_plate_panel, wxID_ANY, create_scaled_bitmap("go_next_plate", this, 32), wxDefaultPosition, wxSize(FromDIP(32), FromDIP(32)), 0);
|
||||
next_plate_sizer->Add(m_bitmap_next_plate, 0, wxALIGN_CENTER, 0);
|
||||
next_plate_panel->SetSizer(next_plate_sizer);
|
||||
|
||||
m_sizer_thumbnail_area->Add(last_plate_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_thumbnail_area->Add(m_panel_image, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(24));
|
||||
m_sizer_thumbnail_area->Add(next_plate_panel, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
wxBoxSizer *m_sizer_basic = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxBoxSizer *m_sizer_basic_weight = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxBoxSizer *m_sizer_basic_time = new wxBoxSizer(wxHORIZONTAL);
|
||||
/*weight & time*/
|
||||
wxBoxSizer *m_sizer_basic_weight_time = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
print_time = new ScalableBitmap(this, "print-time", 18);
|
||||
timeimg = new wxStaticBitmap(m_scrollable_region, wxID_ANY, print_time->bmp(), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0);
|
||||
m_sizer_basic_weight->Add(timeimg, 1, wxEXPAND | wxALL, FromDIP(5));
|
||||
m_stext_time = new wxStaticText(m_scrollable_region, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_RIGHT);
|
||||
m_sizer_basic_weight->Add(m_stext_time, 0, wxALL, FromDIP(5));
|
||||
m_sizer_basic->Add(m_sizer_basic_weight, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_basic->Add(0, 0, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30));
|
||||
timeimg = new wxStaticBitmap(m_basic_panel, wxID_ANY, print_time->bmp(), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0);
|
||||
m_stext_time = new Label(m_basic_panel, wxEmptyString);
|
||||
m_stext_time->SetFont(Label::Body_13);
|
||||
|
||||
print_weight = new ScalableBitmap(this, "print-weight", 18);
|
||||
weightimg = new wxStaticBitmap(m_scrollable_region, wxID_ANY, print_weight->bmp(), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0);
|
||||
m_sizer_basic_time->Add(weightimg, 1, wxEXPAND | wxALL, FromDIP(5));
|
||||
m_stext_weight = new wxStaticText(m_scrollable_region, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
|
||||
m_sizer_basic_time->Add(m_stext_weight, 0, wxALL, FromDIP(5));
|
||||
m_sizer_basic->Add(m_sizer_basic_time, 0, wxALIGN_CENTER, 0);
|
||||
weightimg = new wxStaticBitmap(m_basic_panel, wxID_ANY, print_weight->bmp(), wxDefaultPosition, wxSize(FromDIP(18), FromDIP(18)), 0);
|
||||
m_stext_weight = new Label(m_basic_panel, wxEmptyString);
|
||||
m_stext_weight->SetFont(Label::Body_13);
|
||||
|
||||
wxBoxSizer* m_sizer_material_area = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxBoxSizer* m_sizer_material_tips = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_sizer_basic_weight_time->Add(timeimg, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_basic_weight_time->Add(m_stext_time, 0, wxALIGN_CENTER|wxLEFT, FromDIP(6));
|
||||
m_sizer_basic_weight_time->Add(weightimg, 0, wxALIGN_CENTER|wxLEFT, FromDIP(30));
|
||||
m_sizer_basic_weight_time->Add(m_stext_weight, 0, wxALIGN_CENTER|wxLEFT, FromDIP(6));
|
||||
|
||||
enable_ams_mapping = new ScalableBitmap(this, "enable_ams", 16);
|
||||
img_amsmapping_tip = new wxStaticBitmap(m_scrollable_region, wxID_ANY, enable_ams_mapping->bmp(), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0);
|
||||
m_sizer_material_tips->Add(img_amsmapping_tip, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5));
|
||||
/*bed type*/
|
||||
auto m_text_bed_type = new Label(m_basic_panel, "Plate: Textured PEI");
|
||||
m_text_bed_type->SetFont(Label::Body_13);
|
||||
|
||||
img_amsmapping_tip->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {
|
||||
wxPoint img_pos = img_amsmapping_tip->ClientToScreen(wxPoint(0, 0));
|
||||
wxPoint popup_pos(img_pos.x, img_pos.y + img_amsmapping_tip->GetRect().height);
|
||||
m_mapping_tutorial_popup.Position(popup_pos, wxSize(0, 0));
|
||||
m_mapping_tutorial_popup.Popup();
|
||||
|
||||
if (m_mapping_tutorial_popup.ClientToScreen(wxPoint(0, 0)).y < img_pos.y) {
|
||||
m_mapping_tutorial_popup.Dismiss();
|
||||
popup_pos = wxPoint(img_pos.x, img_pos.y - m_mapping_tutorial_popup.GetRect().height);
|
||||
m_mapping_tutorial_popup.Position(popup_pos, wxSize(0, 0));
|
||||
m_mapping_tutorial_popup.Popup();
|
||||
}
|
||||
});
|
||||
|
||||
img_amsmapping_tip->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) {
|
||||
m_mapping_tutorial_popup.Dismiss();
|
||||
});
|
||||
|
||||
m_sizer_material = new wxGridSizer(0, 4, 0, FromDIP(5));
|
||||
/*last & next page*/
|
||||
|
||||
|
||||
m_sizer_material_area->Add(m_sizer_material_tips, 0, wxALIGN_CENTER|wxLEFT, FromDIP(8));
|
||||
m_sizer_material_area->Add(m_sizer_material, 0, wxLEFT, FromDIP(15));
|
||||
auto last_plate_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_bitmap_last_plate = new wxStaticBitmap(m_basic_panel, wxID_ANY, create_scaled_bitmap("go_last_plate", this, 25), wxDefaultPosition, wxSize(FromDIP(25), FromDIP(25)), 0);
|
||||
last_plate_sizer->Add(m_bitmap_last_plate, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
m_sizer_backup = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto next_plate_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_bitmap_next_plate = new wxStaticBitmap(m_basic_panel, wxID_ANY, create_scaled_bitmap("go_next_plate", this, 25), wxDefaultPosition, wxSize(FromDIP(25), FromDIP(25)), 0);
|
||||
next_plate_sizer->Add(m_bitmap_next_plate, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
sizer_rename->Add(m_rename_switch_panel, 0, wxALIGN_CENTER, 0);
|
||||
sizer_rename->Add(0, 0, 0, wxEXPAND, 0);
|
||||
sizer_rename->Add(m_bitmap_last_plate, 0, wxALIGN_CENTER, 0);
|
||||
sizer_rename->Add(m_bitmap_next_plate, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
/*printer combobox*/
|
||||
wxBoxSizer* m_sizer_printer = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxBoxSizer* sizer_split_printer = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_stext_printer_title = new Label(m_basic_panel, _L("Printer"));
|
||||
m_stext_printer_title->SetFont(::Label::Body_14);
|
||||
m_stext_printer_title->SetForegroundColour(0x909090);
|
||||
auto m_split_line = new wxPanel(m_basic_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||
m_split_line->SetBackgroundColour(0xeeeeee);
|
||||
m_split_line->SetMinSize(wxSize(-1, 1));
|
||||
m_split_line->SetMaxSize(wxSize(-1, 1));
|
||||
sizer_split_printer->Add(0, 0, 0, wxEXPAND, 0);
|
||||
sizer_split_printer->Add(m_stext_printer_title, 0, wxALIGN_CENTER, 0);
|
||||
sizer_split_printer->Add(m_split_line, 1, wxALIGN_CENTER_VERTICAL, 0);
|
||||
|
||||
|
||||
m_comboBox_printer = new ::ComboBox(m_basic_panel, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(300), -1), 0, nullptr, wxCB_READONLY);
|
||||
m_comboBox_printer->SetMinSize(wxSize(FromDIP(300), -1));
|
||||
m_comboBox_printer->SetMaxSize(wxSize(FromDIP(300), -1));
|
||||
m_comboBox_printer->Bind(wxEVT_COMBOBOX, &SelectMachineDialog::on_selection_changed, this);
|
||||
|
||||
|
||||
m_btn_bg_enable = StateColor(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));
|
||||
|
||||
m_button_refresh = new Button(m_basic_panel, _L("Refresh"));
|
||||
m_button_refresh->SetBackgroundColor(m_btn_bg_enable);
|
||||
m_button_refresh->SetBorderColor(m_btn_bg_enable);
|
||||
m_button_refresh->SetTextColor(StateColor::darkModeColorFor("#FFFFFE"));
|
||||
m_button_refresh->SetSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE);
|
||||
m_button_refresh->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE);
|
||||
m_button_refresh->SetCornerRadius(FromDIP(10));
|
||||
m_button_refresh->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_refresh, this);
|
||||
|
||||
m_sizer_printer->Add(m_comboBox_printer, 0, wxEXPAND, 0);
|
||||
m_sizer_printer->Add(m_button_refresh, 0, wxALL | wxLEFT, FromDIP(5));
|
||||
|
||||
m_text_printer_msg = new wxStaticText(m_basic_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
|
||||
m_text_printer_msg->SetMinSize(wxSize(FromDIP(420), -1));
|
||||
m_text_printer_msg->SetMaxSize(wxSize(FromDIP(420), -1));
|
||||
m_text_printer_msg->SetFont(::Label::Body_13);
|
||||
m_text_printer_msg->Hide();
|
||||
|
||||
|
||||
sizer_basic_right_info->Add(sizer_rename, 0, wxTOP, 0);
|
||||
sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(5));
|
||||
sizer_basic_right_info->Add(m_sizer_basic_weight_time, 0, wxTOP, 0);
|
||||
sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(10));
|
||||
sizer_basic_right_info->Add(m_text_bed_type, 0, wxTOP, 0);
|
||||
sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(15));
|
||||
sizer_basic_right_info->Add(sizer_split_printer, 1, wxEXPAND, 0);
|
||||
sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(8));
|
||||
sizer_basic_right_info->Add(m_sizer_printer, 0, wxTOP, 0);
|
||||
sizer_basic_right_info->Add(0, 0, 0, wxTOP, FromDIP(4));
|
||||
sizer_basic_right_info->Add(m_text_printer_msg, 0, wxLEFT, 0);
|
||||
|
||||
|
||||
m_basicl_sizer->Add(m_sizer_thumbnail_area, 0, wxLEFT, 0);
|
||||
m_basicl_sizer->Add(0, 0, 0, wxLEFT, FromDIP(8));
|
||||
m_basicl_sizer->Add(sizer_basic_right_info, 0, wxLEFT, 0);
|
||||
|
||||
|
||||
|
||||
m_basic_panel->SetSizer(m_basicl_sizer);
|
||||
m_basic_panel->Layout();
|
||||
|
||||
|
||||
/*filaments info*/
|
||||
wxBoxSizer* sizer_split_filament = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
auto m_stext_filament_title = new Label(this, _L("Filament"));
|
||||
m_stext_filament_title->SetFont(::Label::Body_14);
|
||||
m_stext_filament_title->SetForegroundColour(0x909090);
|
||||
|
||||
auto m_split_line_filament = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
||||
m_split_line_filament->SetBackgroundColour(0xeeeeee);
|
||||
m_split_line_filament->SetMinSize(wxSize(-1, 1));
|
||||
m_split_line_filament->SetMaxSize(wxSize(-1, 1));
|
||||
|
||||
m_sizer_autorefill = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_ams_backup_tip = new Label(this, _L("Auto Refill"));
|
||||
m_ams_backup_tip->SetFont(::Label::Head_12);
|
||||
m_ams_backup_tip->SetForegroundColour(wxColour(0x009688));
|
||||
@@ -1157,9 +1216,9 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
img_ams_backup = new wxStaticBitmap(this, 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_sizer_autorefill->Add(0, 0, 1, wxEXPAND, 0);
|
||||
m_sizer_autorefill->Add(img_ams_backup, 0, wxALL, FromDIP(3));
|
||||
m_sizer_autorefill->Add(m_ams_backup_tip, 0, wxTOP, FromDIP(5));
|
||||
|
||||
m_ams_backup_tip->Hide();
|
||||
img_ams_backup->Hide();
|
||||
@@ -1170,71 +1229,135 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
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) { if (!m_is_in_sending_mode) {popup_filament_backup(); on_rename_enter();} });
|
||||
img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {if (!m_is_in_sending_mode) popup_filament_backup();on_rename_enter(); });
|
||||
m_ams_backup_tip->Bind(wxEVT_LEFT_DOWN, [this](auto& e) { if (!m_is_in_sending_mode) { popup_filament_backup(); on_rename_enter(); } });
|
||||
img_ams_backup->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {if (!m_is_in_sending_mode) popup_filament_backup(); on_rename_enter(); });
|
||||
|
||||
sizer_split_filament->Add(0, 0, 0, wxEXPAND, 0);
|
||||
sizer_split_filament->Add(m_stext_filament_title, 0, wxALIGN_CENTER, 0);
|
||||
sizer_split_filament->Add(m_split_line_filament, 1, wxALIGN_CENTER_VERTICAL, 0);
|
||||
sizer_split_filament->Add(m_sizer_autorefill, 0, wxALIGN_CENTER, 0);
|
||||
|
||||
//wxBoxSizer* m_sizer_ams_mapping_tips = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
|
||||
|
||||
/* ams_mapping_help_icon = new ScalableBitmap(this, "enable_ams", 16);
|
||||
img_amsmapping_tip = new wxStaticBitmap(this, wxID_ANY, ams_mapping_help_icon->bmp(), wxDefaultPosition, wxSize(FromDIP(16), FromDIP(16)), 0);
|
||||
m_sizer_ams_mapping_tips->Add(img_amsmapping_tip, 0, wxALIGN_CENTER | wxLEFT, FromDIP(5));
|
||||
|
||||
img_amsmapping_tip->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {
|
||||
wxPoint img_pos = img_amsmapping_tip->ClientToScreen(wxPoint(0, 0));
|
||||
wxPoint popup_pos(img_pos.x, img_pos.y + img_amsmapping_tip->GetRect().height);
|
||||
m_mapping_tutorial_popup.Position(popup_pos, wxSize(0, 0));
|
||||
m_mapping_tutorial_popup.Popup();
|
||||
|
||||
if (m_mapping_tutorial_popup.ClientToScreen(wxPoint(0, 0)).y < img_pos.y) {
|
||||
m_mapping_tutorial_popup.Dismiss();
|
||||
popup_pos = wxPoint(img_pos.x, img_pos.y - m_mapping_tutorial_popup.GetRect().height);
|
||||
m_mapping_tutorial_popup.Position(popup_pos, wxSize(0, 0));
|
||||
m_mapping_tutorial_popup.Popup();
|
||||
}
|
||||
});
|
||||
|
||||
img_amsmapping_tip->Bind(wxEVT_LEAVE_WINDOW, [this](wxMouseEvent& e) {
|
||||
m_mapping_tutorial_popup.Dismiss();
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
m_sizer_filament->Add(m_sizer_ams_mapping_tips, 0, wxALIGN_CENTER|wxLEFT, FromDIP(8));*/
|
||||
|
||||
/*filament area*/
|
||||
/*1 extruder*/
|
||||
m_filament_panel = new wxPanel(this, wxID_ANY);
|
||||
m_filament_panel->SetBackgroundColour(wxColour(0xf8f8f8));
|
||||
m_filament_panel->SetMinSize(wxSize(FromDIP(637), -1));
|
||||
m_filament_panel->SetMaxSize(wxSize(FromDIP(637), -1));
|
||||
m_filament_panel_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
|
||||
m_sizer_ams_mapping = new wxGridSizer(0, 10, FromDIP(7), FromDIP(7));
|
||||
m_filament_panel_sizer->Add(m_sizer_ams_mapping, 0, wxEXPAND|wxALL, FromDIP(10));
|
||||
m_filament_panel->SetSizer(m_filament_panel_sizer);
|
||||
m_filament_panel->Layout();
|
||||
m_filament_panel->Fit();
|
||||
|
||||
/*left & right extruder*/
|
||||
m_sizer_filament_2extruder = new wxBoxSizer(wxHORIZONTAL);
|
||||
m_filament_left_panel = new wxPanel(this, wxID_ANY);
|
||||
m_filament_right_panel = new wxPanel(this, wxID_ANY);
|
||||
m_filament_left_panel->SetBackgroundColour(wxColour(0xf8f8f8));
|
||||
m_filament_right_panel->SetBackgroundColour(wxColour(0xf8f8f8));
|
||||
m_filament_left_panel->SetMinSize(wxSize(FromDIP(315), 180));
|
||||
m_filament_left_panel->SetMaxSize(wxSize(FromDIP(315), 180));
|
||||
m_filament_right_panel->SetMinSize(wxSize(FromDIP(315), 180));
|
||||
m_filament_right_panel->SetMaxSize(wxSize(FromDIP(315), 180));
|
||||
|
||||
m_filament_panel_left_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_sizer_ams_mapping_left = new wxGridSizer(0, 5, FromDIP(7), FromDIP(7));
|
||||
m_filament_panel_left_sizer->Add(m_sizer_ams_mapping_left, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||
m_filament_left_panel->SetSizer(m_filament_panel_left_sizer);
|
||||
m_filament_left_panel->Layout();
|
||||
m_filament_left_panel->Fit();
|
||||
|
||||
m_filament_panel_right_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_sizer_ams_mapping_right = new wxGridSizer(0, 5, FromDIP(7), FromDIP(7));
|
||||
m_filament_panel_right_sizer->Add(m_sizer_ams_mapping_right, 0, wxEXPAND | wxALL, FromDIP(10));
|
||||
m_filament_right_panel->SetSizer(m_filament_panel_right_sizer);
|
||||
m_filament_right_panel->Layout();
|
||||
m_filament_right_panel->Fit();
|
||||
|
||||
m_sizer_filament_2extruder->Add(m_filament_left_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_filament_2extruder->Add(0, 0, 0, wxLEFT, FromDIP(7));
|
||||
m_sizer_filament_2extruder->Add(m_filament_right_panel, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_filament_2extruder->Layout();
|
||||
|
||||
m_filament_left_panel->Hide();
|
||||
m_filament_right_panel->Hide();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
m_statictext_ams_msg = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL);
|
||||
m_statictext_ams_msg->SetFont(::Label::Body_13);
|
||||
m_statictext_ams_msg->Hide();
|
||||
|
||||
m_line_materia = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
||||
m_line_materia->SetForegroundColour(wxColour(238, 238, 238));
|
||||
m_line_materia->SetBackgroundColour(wxColour(238, 238, 238));
|
||||
|
||||
wxBoxSizer *m_sizer_printer = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
m_stext_printer_title = new wxStaticText(this, wxID_ANY, _L("Printer"), wxDefaultPosition, wxSize(-1, -1), 0);
|
||||
m_stext_printer_title->SetFont(::Label::Head_14);
|
||||
m_stext_printer_title->Wrap(-1);
|
||||
m_stext_printer_title->SetForegroundColour(m_colour_bold_color);
|
||||
m_stext_printer_title->SetBackgroundColour(m_colour_def_color);
|
||||
/*options*/
|
||||
wxBoxSizer* sizer_split_options = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto m_stext_options_title = new Label(this, _L("Print Options"));
|
||||
m_stext_options_title->SetFont(::Label::Body_14);
|
||||
m_stext_options_title->SetForegroundColour(0x909090);
|
||||
auto m_split_options_line = new wxPanel(this, wxID_ANY);
|
||||
m_split_options_line->SetBackgroundColour(0xeeeeee);
|
||||
m_split_options_line->SetSize(wxSize(-1, FromDIP(1)));
|
||||
m_split_options_line->SetMinSize(wxSize(-1, FromDIP(1)));
|
||||
m_split_options_line->SetMaxSize(wxSize(-1, FromDIP(1)));
|
||||
sizer_split_options->Add(0, 0, 0, wxEXPAND, 0);
|
||||
sizer_split_options->Add(m_stext_options_title, 0, wxALIGN_CENTER, 0);
|
||||
sizer_split_options->Add(m_split_options_line, 1, wxALIGN_CENTER_VERTICAL, 0);
|
||||
|
||||
m_sizer_printer->Add(m_stext_printer_title, 0, wxALL | wxLEFT, FromDIP(5));
|
||||
m_sizer_printer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(12));
|
||||
|
||||
m_comboBox_printer = new ::ComboBox(this, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(250), -1), 0, nullptr, wxCB_READONLY);
|
||||
m_comboBox_printer->Bind(wxEVT_COMBOBOX, &SelectMachineDialog::on_selection_changed, this);
|
||||
|
||||
m_sizer_printer->Add(m_comboBox_printer, 1, wxEXPAND | wxRIGHT, FromDIP(5));
|
||||
m_btn_bg_enable = StateColor(std::pair<wxColour, int>(wxColour(0, 137, 123), StateColor::Pressed), std::pair<wxColour, int>(wxColour(38, 166, 154), StateColor::Hovered),
|
||||
std::pair<wxColour, int>(wxColour(0, 150, 136), StateColor::Normal));
|
||||
|
||||
m_button_refresh = new Button(this, _L("Refresh"));
|
||||
m_button_refresh->SetBackgroundColor(m_btn_bg_enable);
|
||||
m_button_refresh->SetBorderColor(m_btn_bg_enable);
|
||||
m_button_refresh->SetTextColor(StateColor::darkModeColorFor("#FFFFFE"));
|
||||
m_button_refresh->SetSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE);
|
||||
m_button_refresh->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE);
|
||||
m_button_refresh->SetCornerRadius(FromDIP(10));
|
||||
m_button_refresh->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_refresh, this);
|
||||
m_sizer_printer->Add(m_button_refresh, 0, wxALL | wxLEFT, FromDIP(5));
|
||||
|
||||
m_statictext_printer_msg = new wxStaticText(this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxALIGN_CENTER_HORIZONTAL);
|
||||
m_statictext_printer_msg->SetFont(::Label::Body_13);
|
||||
m_statictext_printer_msg->Hide();
|
||||
|
||||
//m_sizer_select = new wxGridSizer(0, 2, 0, 0);
|
||||
m_sizer_select = new wxWrapSizer();
|
||||
m_sizer_options = new wxBoxSizer(wxHORIZONTAL);
|
||||
select_bed = create_item_checkbox(_L("Bed Leveling"), this, _L("Bed Leveling"), "bed_leveling");
|
||||
select_flow = create_item_checkbox(_L("Flow Dynamics Calibration"), this, _L("Flow Dynamics Calibration"), "flow_cali");
|
||||
select_timelapse = create_item_checkbox(_L("Timelapse"), this, _L("Timelapse"), "timelapse");
|
||||
select_use_ams = create_ams_checkbox(_L("Enable AMS"), this, _L("Enable AMS"));
|
||||
|
||||
m_sizer_select->Add(select_bed, 0, wxLEFT | wxRIGHT, WRAP_GAP);
|
||||
m_sizer_select->Add(select_flow, 0, wxLEFT | wxRIGHT, WRAP_GAP);
|
||||
m_sizer_select->Add(select_timelapse, 0, wxLEFT | wxRIGHT, WRAP_GAP);
|
||||
m_sizer_select->Add(select_use_ams, 0, wxLEFT | wxRIGHT, WRAP_GAP);
|
||||
m_sizer_options->Add(select_bed, 0, wxLEFT | wxRIGHT, WRAP_GAP);
|
||||
m_sizer_options->Add(select_flow, 0, wxLEFT | wxRIGHT, WRAP_GAP);
|
||||
m_sizer_options->Add(select_timelapse, 0, wxLEFT | wxRIGHT, WRAP_GAP);
|
||||
m_sizer_options->Add(select_use_ams, 0, wxLEFT | wxRIGHT, WRAP_GAP);
|
||||
|
||||
select_bed->Show(false);
|
||||
select_flow->Show(false);
|
||||
select_timelapse->Show(false);
|
||||
select_use_ams->Show(false);
|
||||
|
||||
m_sizer_select->Layout();
|
||||
m_sizer_options->Layout();
|
||||
|
||||
// line schedule
|
||||
m_line_schedule = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1));
|
||||
m_line_schedule->SetBackgroundColour(wxColour(238, 238, 238));
|
||||
|
||||
m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, SELECT_MACHINE_DIALOG_SIMBOOK_SIZE, 0);
|
||||
|
||||
@@ -1259,7 +1382,7 @@ 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->SetMinSize(SELECT_MACHINE_DIALOG_BUTTON_SIZE);
|
||||
m_button_ensure->SetCornerRadius(FromDIP(12));
|
||||
m_button_ensure->SetCornerRadius(FromDIP(5));
|
||||
m_button_ensure->Bind(wxEVT_BUTTON, &SelectMachineDialog::on_ok_btn, this);
|
||||
|
||||
m_sizer_pcont->Add(0, 0, 1, wxEXPAND, 0);
|
||||
@@ -1384,37 +1507,25 @@ SelectMachineDialog::SelectMachineDialog(Plater *plater)
|
||||
sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3));
|
||||
sizer_print_failed_info->Add(sizer_extra_info, 0, wxLEFT, 5);
|
||||
|
||||
m_sizer_scrollable_region->Add(m_rename_switch_panel, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_sizer_scrollable_region->Add(0, 0, 0, wxTOP, FromDIP(8));
|
||||
m_sizer_scrollable_region->Add(m_sizer_thumbnail_area, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_sizer_scrollable_region->Add(0, 0, 0, wxTOP, FromDIP(10));
|
||||
m_sizer_scrollable_region->Add(m_sizer_basic, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
//m_sizer_scrollable_region->Add(m_sizer_material, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_sizer_scrollable_region->Add(m_sizer_material_area, 0, wxLEFT, FromDIP(10));
|
||||
//m_basic_panel_sizer->Add(m_sizer_material_area, 0, wxLEFT, FromDIP(10));
|
||||
|
||||
m_scrollable_region->SetSizer(m_sizer_scrollable_region);
|
||||
m_scrollable_region->Layout();
|
||||
|
||||
|
||||
m_scrollable_view->SetSizer(m_sizer_scrollable_view);
|
||||
m_scrollable_view->Layout();
|
||||
m_sizer_scrollable_view->Add(m_scrollable_region, 0, wxEXPAND, 0);
|
||||
|
||||
m_sizer_main->Add(m_line_top, 0, wxEXPAND, 0);
|
||||
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(13));
|
||||
m_sizer_main->Add(m_scrollable_view, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, FromDIP(25));
|
||||
m_sizer_main->Add(m_sizer_backup, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(12));
|
||||
m_sizer_main->Add(m_basic_panel, 0, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(14));
|
||||
m_sizer_main->Add(sizer_split_filament, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_sizer_main->Add(m_filament_panel, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_sizer_main->Add(m_sizer_filament_2extruder, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(6));
|
||||
m_sizer_main->Add(m_statictext_ams_msg, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(6));
|
||||
m_sizer_main->Add(m_line_materia, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30));
|
||||
m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(12));
|
||||
m_sizer_main->Add(m_sizer_printer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30));
|
||||
m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(11));
|
||||
m_sizer_main->Add(m_statictext_printer_msg, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_sizer_main->Add(0, 1, 0, wxTOP, FromDIP(16));
|
||||
m_sizer_main->Add(m_sizer_select, 0, wxALIGN_CENTER_HORIZONTAL | wxLEFT | wxRIGHT, FromDIP(30));
|
||||
m_sizer_main->Add(0, 1, 0, wxTOP, FromDIP(10));
|
||||
m_sizer_main->Add(m_line_schedule, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30));
|
||||
m_sizer_main->Add(m_statictext_ams_msg, 0, wxLEFT, 0);
|
||||
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16));
|
||||
m_sizer_main->Add(sizer_split_options, 1, wxEXPAND|wxLEFT|wxRIGHT, FromDIP(15));
|
||||
m_sizer_main->Add(m_sizer_options, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT| wxRIGHT, FromDIP(15));
|
||||
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(10));
|
||||
m_sizer_main->Add(m_simplebook, 0, wxALIGN_CENTER_HORIZONTAL, 0);
|
||||
m_sizer_main->Add(m_sw_print_failed_info, 0, wxALIGN_CENTER, 0);
|
||||
m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(18));
|
||||
@@ -1442,7 +1553,7 @@ void SelectMachineDialog::init_bind()
|
||||
Bind(EVT_SET_FINISH_MAPPING, &SelectMachineDialog::on_set_finish_mapping, this);
|
||||
Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this);e.Skip();});
|
||||
m_panel_prepare->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this);e.Skip();});
|
||||
m_scrollable_region->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this);e.Skip();});
|
||||
m_basic_panel->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {check_fcous_state(this);e.Skip();});
|
||||
m_bitmap_last_plate->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
m_bitmap_last_plate->Bind(wxEVT_LEAVE_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_ARROW); });
|
||||
m_bitmap_next_plate->Bind(wxEVT_ENTER_WINDOW, [this](auto& e) {SetCursor(wxCURSOR_HAND); });
|
||||
@@ -1695,7 +1806,7 @@ void SelectMachineDialog::update_select_layout(MachineObject *obj)
|
||||
select_timelapse->Hide();
|
||||
}
|
||||
|
||||
m_sizer_select->Layout();
|
||||
m_sizer_options->Layout();
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
@@ -1923,8 +2034,14 @@ bool SelectMachineDialog::get_ams_mapping_result(std::string &mapping_array_str,
|
||||
|
||||
/*new ams mapping data*/
|
||||
|
||||
mapping_item_v1["ams_id"] = m_ams_mapping_result[k].ams_id;
|
||||
mapping_item_v1["slot_id"] = m_ams_mapping_result[k].slot_id;
|
||||
try
|
||||
{
|
||||
mapping_item_v1["ams_id"] = std::stoi(m_ams_mapping_result[k].ams_id);
|
||||
mapping_item_v1["slot_id"] = std::stoi(m_ams_mapping_result[k].slot_id);
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
mapping_v0_json.push_back(tray_id);
|
||||
@@ -1985,12 +2102,12 @@ void SelectMachineDialog::update_ams_status_msg(wxString msg, bool is_warning)
|
||||
void SelectMachineDialog::update_priner_status_msg(wxString msg, bool is_warning)
|
||||
{
|
||||
auto colour = is_warning ? wxColour(0xFF, 0x6F, 0x00) : wxColour(0x6B, 0x6B, 0x6B);
|
||||
m_statictext_printer_msg->SetForegroundColour(colour);
|
||||
m_text_printer_msg->SetForegroundColour(colour);
|
||||
|
||||
if (msg.empty()) {
|
||||
if (!m_statictext_printer_msg->GetLabel().empty()) {
|
||||
m_statictext_printer_msg->SetLabel(wxEmptyString);
|
||||
m_statictext_printer_msg->Hide();
|
||||
if (!m_text_printer_msg->GetLabel().empty()) {
|
||||
m_text_printer_msg->SetLabel(wxEmptyString);
|
||||
m_text_printer_msg->Hide();
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
@@ -2000,16 +2117,16 @@ void SelectMachineDialog::update_priner_status_msg(wxString msg, bool is_warning
|
||||
auto str_new = msg.utf8_string();
|
||||
stripWhiteSpace(str_new);
|
||||
|
||||
auto str_old = m_statictext_printer_msg->GetLabel().utf8_string();
|
||||
auto str_old = m_text_printer_msg->GetLabel().utf8_string();
|
||||
stripWhiteSpace(str_old);
|
||||
|
||||
if (str_new != str_old) {
|
||||
if (m_statictext_printer_msg->GetLabel() != msg) {
|
||||
m_statictext_printer_msg->SetLabel(msg);
|
||||
m_statictext_printer_msg->SetMinSize(wxSize(FromDIP(400), -1));
|
||||
m_statictext_printer_msg->SetMaxSize(wxSize(FromDIP(400), -1));
|
||||
m_statictext_printer_msg->Wrap(FromDIP(400));
|
||||
m_statictext_printer_msg->Show();
|
||||
if (m_text_printer_msg->GetLabel() != msg) {
|
||||
m_text_printer_msg->SetLabel(msg);
|
||||
m_text_printer_msg->SetMinSize(wxSize(FromDIP(420), -1));
|
||||
m_text_printer_msg->SetMaxSize(wxSize(FromDIP(420), -1));
|
||||
m_text_printer_msg->Wrap(FromDIP(420));
|
||||
m_text_printer_msg->Show();
|
||||
Layout();
|
||||
Fit();
|
||||
}
|
||||
@@ -2962,7 +3079,7 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt)
|
||||
|
||||
BOOST_LOG_TRIVIAL(info) << "The ams mapping selection result: data is " << selection_data;
|
||||
|
||||
if (selection_data_arr.size() == 6) {
|
||||
if (selection_data_arr.size() == 8) {
|
||||
auto ams_colour = wxColour(wxAtoi(selection_data_arr[0]), wxAtoi(selection_data_arr[1]), wxAtoi(selection_data_arr[2]), wxAtoi(selection_data_arr[3]));
|
||||
int old_filament_id = (int) wxAtoi(selection_data_arr[5]);
|
||||
if (m_print_type == PrintFromType::FROM_NORMAL) {//todo:support sd card
|
||||
@@ -2994,6 +3111,9 @@ void SelectMachineDialog::on_set_finish_mapping(wxCommandEvent &evt)
|
||||
m_ams_mapping_result[i].color = color.ToStdString();
|
||||
m_ams_mapping_result[i].ctype = ctype;
|
||||
m_ams_mapping_result[i].colors = tray_cols;
|
||||
|
||||
m_ams_mapping_result[i].ams_id = selection_data_arr[6].ToStdString();
|
||||
m_ams_mapping_result[i].slot_id = selection_data_arr[7].ToStdString();
|
||||
}
|
||||
BOOST_LOG_TRIVIAL(trace) << "The ams mapping result: id is " << m_ams_mapping_result[i].id << "tray_id is " << m_ams_mapping_result[i].tray_id;
|
||||
}
|
||||
@@ -3181,7 +3301,7 @@ void SelectMachineDialog::update_user_printer()
|
||||
BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "for send task, current printer id = " << m_printer_last_select << std::endl;
|
||||
}
|
||||
|
||||
void SelectMachineDialog::on_rename_click(wxCommandEvent& event)
|
||||
void SelectMachineDialog::on_rename_click(wxMouseEvent& event)
|
||||
{
|
||||
m_is_rename_mode = true;
|
||||
m_rename_input->GetTextCtrl()->SetValue(m_current_project_name);
|
||||
@@ -3768,11 +3888,10 @@ void SelectMachineDialog::on_dpi_changed(const wxRect &suggested_rect)
|
||||
timeimg->SetBitmap(print_time->bmp());
|
||||
print_weight->msw_rescale();
|
||||
weightimg->SetBitmap(print_weight->bmp());
|
||||
m_rename_button->msw_rescale();
|
||||
ams_editable->msw_rescale();
|
||||
ams_editable_light->msw_rescale();
|
||||
enable_ams_mapping->msw_rescale();
|
||||
img_amsmapping_tip->SetBitmap(enable_ams_mapping->bmp());
|
||||
rename_editable->msw_rescale();
|
||||
rename_editable_light->msw_rescale();
|
||||
ams_mapping_help_icon->msw_rescale();
|
||||
img_amsmapping_tip->SetBitmap(ams_mapping_help_icon->bmp());
|
||||
enable_ams->msw_rescale();
|
||||
img_use_ams_tip->SetBitmap(enable_ams->bmp());
|
||||
|
||||
@@ -4006,8 +4125,8 @@ void SelectMachineDialog::reset_and_sync_ams_list()
|
||||
delete item;
|
||||
iter++;
|
||||
}
|
||||
|
||||
m_sizer_material->Clear();
|
||||
|
||||
m_sizer_ams_mapping->Clear();
|
||||
m_materialList.clear();
|
||||
m_filaments.clear();
|
||||
|
||||
@@ -4020,8 +4139,8 @@ void SelectMachineDialog::reset_and_sync_ams_list()
|
||||
auto colour_rgb = wxColour((int) rgb[0], (int) rgb[1], (int) rgb[2], (int) rgb[3]);
|
||||
if (extruder >= materials.size() || extruder < 0 || extruder >= display_materials.size()) continue;
|
||||
|
||||
MaterialItem *item = new MaterialItem(m_scrollable_region, colour_rgb, _L(display_materials[extruder]));
|
||||
m_sizer_material->Add(item, 0, wxALL, FromDIP(4));
|
||||
MaterialItem *item = new MaterialItem(m_filament_panel, colour_rgb, _L(display_materials[extruder]));
|
||||
m_sizer_ams_mapping->Add(item, 0, wxALL, FromDIP(5));
|
||||
|
||||
item->Bind(wxEVT_LEFT_UP, [this, item, materials, extruder](wxMouseEvent &e) {});
|
||||
item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, extruder](wxMouseEvent &e) {
|
||||
@@ -4078,12 +4197,16 @@ void SelectMachineDialog::reset_and_sync_ams_list()
|
||||
}
|
||||
}
|
||||
|
||||
if (extruders.size() <= 4) {
|
||||
m_sizer_material->SetCols(extruders.size());
|
||||
} else {
|
||||
m_sizer_material->SetCols(4);
|
||||
/*if (extruders.size() <= 10) {
|
||||
m_sizer_ams_mapping->SetCols(extruders.size());
|
||||
}
|
||||
else {
|
||||
m_sizer_ams_mapping->SetCols(10);
|
||||
}*/
|
||||
|
||||
m_sizer_ams_mapping->SetCols(8);
|
||||
m_sizer_ams_mapping->Layout();
|
||||
m_filament_panel_sizer->Layout();
|
||||
// reset_ams_material();//show "-"
|
||||
}
|
||||
|
||||
@@ -4354,16 +4477,12 @@ void SelectMachineDialog::set_default_normal(const ThumbnailData &data)
|
||||
image.SetAlpha((int)c, (int)r, px[3]);
|
||||
}
|
||||
}
|
||||
image = image.Rescale(FromDIP(256), FromDIP(256));
|
||||
image = image.Rescale(FromDIP(198), FromDIP(198));
|
||||
m_thumbnailPanel->set_thumbnail(image);
|
||||
}
|
||||
|
||||
m_scrollable_region->Layout();
|
||||
m_scrollable_region->Fit();
|
||||
|
||||
m_scrollable_view->SetSize(m_scrollable_region->GetSize());
|
||||
m_scrollable_view->SetMinSize(m_scrollable_region->GetSize());
|
||||
m_scrollable_view->SetMaxSize(m_scrollable_region->GetSize());
|
||||
m_basic_panel->Layout();
|
||||
m_basic_panel->Fit();
|
||||
|
||||
//disable pei bed
|
||||
DeviceManager* dev_manager = Slic3r::GUI::wxGetApp().getDeviceManager();
|
||||
@@ -4375,16 +4494,7 @@ void SelectMachineDialog::set_default_normal(const ThumbnailData &data)
|
||||
auto dialogSize = this->GetSize();
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
if (screenSize.GetHeight() < dialogSize.GetHeight()) {
|
||||
m_need_adaptation_screen = true;
|
||||
m_scrollable_view->SetScrollRate(0, 5);
|
||||
m_scrollable_view->SetSize(wxSize(-1, FromDIP(220)));
|
||||
m_scrollable_view->SetMinSize(wxSize(-1, FromDIP(220)));
|
||||
m_scrollable_view->SetMaxSize(wxSize(-1, FromDIP(220)));
|
||||
}
|
||||
else {
|
||||
m_scrollable_view->SetScrollRate(0, 0);
|
||||
}
|
||||
|
||||
#endif // __WXOSX_MAC__
|
||||
// basic info
|
||||
auto aprint_stats = m_plater->get_partplate_list().get_current_fff_print().print_statistics();
|
||||
@@ -4416,7 +4526,7 @@ void SelectMachineDialog::set_default_from_sdcard()
|
||||
if (data.pixels.size() > 0) {
|
||||
wxMemoryInputStream mis((unsigned char*)data.pixels.data(), data.pixels.size());
|
||||
wxImage image = wxImage(mis);
|
||||
image = image.Rescale(FromDIP(256), FromDIP(256));
|
||||
image = image.Rescale(FromDIP(198), FromDIP(198));
|
||||
m_thumbnailPanel->set_thumbnail(image);
|
||||
}
|
||||
|
||||
@@ -4443,7 +4553,7 @@ void SelectMachineDialog::set_default_from_sdcard()
|
||||
}
|
||||
|
||||
m_ams_mapping_result.clear();
|
||||
m_sizer_material->Clear();
|
||||
m_sizer_ams_mapping->Clear();
|
||||
m_materialList.clear();
|
||||
m_filaments.clear();
|
||||
|
||||
@@ -4451,8 +4561,8 @@ void SelectMachineDialog::set_default_from_sdcard()
|
||||
for (auto i = 0; i < m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size(); i++) {
|
||||
FilamentInfo fo = m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info[i];
|
||||
|
||||
MaterialItem* item = new MaterialItem(m_scrollable_region, wxColour(fo.color), fo.type);
|
||||
m_sizer_material->Add(item, 0, wxALL, FromDIP(4));
|
||||
MaterialItem* item = new MaterialItem(m_filament_panel, wxColour(fo.color), fo.type);
|
||||
m_sizer_ams_mapping->Add(item, 0, wxALL, FromDIP(5));
|
||||
|
||||
item->Bind(wxEVT_LEFT_UP, [this, item, materials](wxMouseEvent& e) {});
|
||||
item->Bind(wxEVT_LEFT_DOWN, [this, item, materials, fo](wxMouseEvent& e) {
|
||||
@@ -4509,38 +4619,21 @@ void SelectMachineDialog::set_default_from_sdcard()
|
||||
}
|
||||
|
||||
if (m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size() <= 4) {
|
||||
m_sizer_material->SetCols(m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size());
|
||||
m_sizer_ams_mapping->SetCols(m_required_data_plate_data_list[m_print_plate_idx]->slice_filaments_info.size());
|
||||
}
|
||||
else {
|
||||
m_sizer_material->SetCols(4);
|
||||
m_sizer_ams_mapping->SetCols(4);
|
||||
}
|
||||
|
||||
m_scrollable_region->Layout();
|
||||
m_scrollable_region->Fit();
|
||||
m_basic_panel->Layout();
|
||||
m_basic_panel->Fit();
|
||||
|
||||
m_scrollable_view->SetSize(m_scrollable_region->GetSize());
|
||||
m_scrollable_view->SetMinSize(m_scrollable_region->GetSize());
|
||||
m_scrollable_view->SetMaxSize(m_scrollable_region->GetSize());
|
||||
|
||||
set_flow_calibration_state(true);
|
||||
|
||||
wxSize screenSize = wxGetDisplaySize();
|
||||
auto dialogSize = this->GetSize();
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
if (screenSize.GetHeight() < dialogSize.GetHeight()) {
|
||||
m_need_adaptation_screen = true;
|
||||
m_scrollable_view->SetScrollRate(0, 5);
|
||||
m_scrollable_view->SetSize(wxSize(-1, FromDIP(220)));
|
||||
m_scrollable_view->SetMinSize(wxSize(-1, FromDIP(220)));
|
||||
m_scrollable_view->SetMaxSize(wxSize(-1, FromDIP(220)));
|
||||
}
|
||||
else {
|
||||
m_scrollable_view->SetScrollRate(0, 0);
|
||||
}
|
||||
#endif // __WXOSX_MAC__
|
||||
|
||||
|
||||
reset_ams_material();
|
||||
|
||||
// basic info
|
||||
@@ -4559,32 +4652,32 @@ void SelectMachineDialog::set_default_from_sdcard()
|
||||
|
||||
void SelectMachineDialog::update_page_turn_state(bool show)
|
||||
{
|
||||
m_bitmap_last_plate->Show(show);
|
||||
m_bitmap_next_plate->Show(show);
|
||||
/* m_bitmap_last_plate->Show(show);
|
||||
m_bitmap_next_plate->Show(show);
|
||||
|
||||
if (show) {
|
||||
if (m_print_plate_idx <= 0) { m_bitmap_last_plate->Hide(); }
|
||||
else { m_bitmap_last_plate->Show(); }
|
||||
if (show) {
|
||||
if (m_print_plate_idx <= 0) { m_bitmap_last_plate->Hide(); }
|
||||
else { m_bitmap_last_plate->Show(); }
|
||||
|
||||
if ((m_print_plate_idx + 1) >= m_print_plate_total) { m_bitmap_next_plate->Hide(); }
|
||||
else { m_bitmap_next_plate->Show(); }
|
||||
if ((m_print_plate_idx + 1) >= m_print_plate_total) { m_bitmap_next_plate->Hide(); }
|
||||
else { m_bitmap_next_plate->Show(); }
|
||||
|
||||
if (m_print_plate_total == 1) {
|
||||
m_bitmap_last_plate->Show(false);
|
||||
m_bitmap_next_plate->Show(false);
|
||||
}
|
||||
}
|
||||
if (m_print_plate_total == 1) {
|
||||
m_bitmap_last_plate->Show(false);
|
||||
m_bitmap_next_plate->Show(false);
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
void SelectMachineDialog::sys_color_changed()
|
||||
{
|
||||
if (wxGetApp(). dark_mode()) {
|
||||
//rename_button->SetIcon("ams_editable_light");
|
||||
m_rename_button->SetBitmap(ams_editable_light->bmp());
|
||||
m_rename_button->SetBitmap(rename_editable_light->bmp());
|
||||
|
||||
}
|
||||
else {
|
||||
m_rename_button->SetBitmap(ams_editable->bmp());
|
||||
m_rename_button->SetBitmap(rename_editable->bmp());
|
||||
}
|
||||
m_rename_button->Refresh();
|
||||
}
|
||||
|
||||
@@ -347,7 +347,6 @@ private:
|
||||
bool m_is_in_sending_mode{ false };
|
||||
bool m_ams_mapping_res{ false };
|
||||
bool m_ams_mapping_valid{ false };
|
||||
bool m_need_adaptation_screen{ false };
|
||||
bool m_export_3mf_cancel{ false };
|
||||
bool m_is_canceled{ false };
|
||||
bool m_is_rename_mode{ false };
|
||||
@@ -385,18 +384,17 @@ protected:
|
||||
AmsTutorialPopup m_mapping_tutorial_popup{ nullptr };
|
||||
MaterialHash m_materialList;
|
||||
Plater * m_plater{nullptr};
|
||||
wxWrapSizer* m_sizer_select{ nullptr };
|
||||
wxBoxSizer* m_sizer_options{ nullptr };
|
||||
wxBoxSizer* m_sizer_thumbnail{ nullptr };
|
||||
wxGridSizer* m_sizer_material{ nullptr };
|
||||
|
||||
wxBoxSizer* m_sizer_main{ nullptr };
|
||||
wxBoxSizer* m_sizer_scrollable_view{ nullptr };
|
||||
wxBoxSizer* m_sizer_scrollable_region{ nullptr };
|
||||
wxBoxSizer* m_basicl_sizer{ nullptr };
|
||||
wxBoxSizer* rename_sizer_v{ nullptr };
|
||||
wxBoxSizer* rename_sizer_h{ nullptr };
|
||||
wxBoxSizer* m_sizer_backup{ nullptr };
|
||||
wxBoxSizer* m_sizer_autorefill{ nullptr };
|
||||
Button* m_button_refresh{ nullptr };
|
||||
Button* m_button_ensure{ nullptr };
|
||||
ScalableButton * m_rename_button{nullptr};
|
||||
wxStaticBitmap * m_rename_button{nullptr};
|
||||
ComboBox* m_comboBox_printer{ nullptr };
|
||||
wxStaticBitmap* m_staticbitmap{ nullptr };
|
||||
wxStaticBitmap* m_bitmap_last_plate{ nullptr };
|
||||
@@ -408,15 +406,12 @@ protected:
|
||||
wxWindow* select_timelapse{ nullptr };
|
||||
wxWindow* select_use_ams{ nullptr };
|
||||
wxPanel* m_panel_status{ nullptr };
|
||||
wxPanel* m_scrollable_region;
|
||||
wxPanel* m_basic_panel;
|
||||
wxPanel* m_rename_normal_panel{nullptr};
|
||||
wxPanel* m_line_schedule{nullptr};
|
||||
wxPanel* m_panel_sending{nullptr};
|
||||
wxPanel* m_panel_prepare{nullptr};
|
||||
wxPanel* m_panel_finish{nullptr};
|
||||
wxPanel* m_line_top{ nullptr };
|
||||
wxPanel* m_panel_image{ nullptr };
|
||||
wxPanel* m_line_materia{ nullptr };
|
||||
Label* m_st_txt_error_code{nullptr};
|
||||
Label* m_st_txt_error_desc{nullptr};
|
||||
Label* m_st_txt_extra_info{nullptr};
|
||||
@@ -425,26 +420,25 @@ protected:
|
||||
wxSimplebook* m_rename_switch_panel{nullptr};
|
||||
wxSimplebook* m_simplebook{nullptr};
|
||||
wxStaticText* m_rename_text{nullptr};
|
||||
wxStaticText* m_stext_printer_title{nullptr};
|
||||
wxStaticText* m_stext_time{ nullptr };
|
||||
wxStaticText* m_stext_weight{ nullptr };
|
||||
Label* m_stext_printer_title{nullptr};
|
||||
Label* m_stext_time{ nullptr };
|
||||
Label* m_stext_weight{ nullptr };
|
||||
wxStaticText* m_statictext_ams_msg{ nullptr };
|
||||
wxStaticText* m_statictext_printer_msg{ nullptr };
|
||||
wxStaticText* m_text_printer_msg{ nullptr };
|
||||
wxStaticText* m_staticText_bed_title{ nullptr };
|
||||
wxStaticText* m_stext_sending{ nullptr };
|
||||
wxStaticText* m_statictext_finish{nullptr};
|
||||
TextInput* m_rename_input{nullptr};
|
||||
wxTimer* m_refresh_timer{ nullptr };
|
||||
wxScrolledWindow* m_scrollable_view;
|
||||
wxScrolledWindow* m_sw_print_failed_info{nullptr};
|
||||
wxHyperlinkCtrl* m_hyperlink{nullptr};
|
||||
ScalableBitmap * ams_editable{nullptr};
|
||||
ScalableBitmap * ams_editable_light{nullptr};
|
||||
ScalableBitmap * rename_editable{nullptr};
|
||||
ScalableBitmap * rename_editable_light{nullptr};
|
||||
wxStaticBitmap * timeimg{nullptr};
|
||||
ScalableBitmap * print_time{nullptr};
|
||||
wxStaticBitmap * weightimg{nullptr};
|
||||
ScalableBitmap * print_weight{nullptr};
|
||||
ScalableBitmap * enable_ams_mapping{nullptr};
|
||||
ScalableBitmap * ams_mapping_help_icon{nullptr};
|
||||
wxStaticBitmap * img_use_ams_tip{nullptr};
|
||||
wxStaticBitmap * img_ams_backup{nullptr};
|
||||
ScalableBitmap * enable_ams{nullptr};
|
||||
@@ -455,6 +449,19 @@ protected:
|
||||
std::vector<wxColour> m_cur_colors_in_thumbnail;
|
||||
std::vector<bool> m_edge_pixels;
|
||||
|
||||
wxPanel* m_filament_panel;
|
||||
wxPanel* m_filament_left_panel;
|
||||
wxPanel* m_filament_right_panel;
|
||||
|
||||
wxBoxSizer* m_filament_panel_sizer;
|
||||
wxBoxSizer* m_filament_panel_left_sizer;
|
||||
wxBoxSizer* m_filament_panel_right_sizer;
|
||||
wxBoxSizer* m_sizer_filament_2extruder;
|
||||
|
||||
wxGridSizer* m_sizer_ams_mapping{ nullptr };
|
||||
wxGridSizer* m_sizer_ams_mapping_left{ nullptr };
|
||||
wxGridSizer* m_sizer_ams_mapping_right{ nullptr };
|
||||
|
||||
public:
|
||||
SelectMachineDialog(Plater *plater = nullptr);
|
||||
~SelectMachineDialog();
|
||||
@@ -478,7 +485,7 @@ public:
|
||||
void reset_ams_material();
|
||||
void update_show_status();
|
||||
void update_ams_check(MachineObject* obj);
|
||||
void on_rename_click(wxCommandEvent& event);
|
||||
void on_rename_click(wxMouseEvent& event);
|
||||
void on_rename_enter();
|
||||
void update_printer_combobox(wxCommandEvent& event);
|
||||
void on_cancel(wxCloseEvent& event);
|
||||
|
||||
Reference in New Issue
Block a user