mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-20 11:53:48 +00:00
FIX: parts file download failed && canvas display error
Jira: [STUDIO-13253] Change-Id: I6ce11c0ceb1c4f7ed49c41eb9c6d7a6d96e866f9 (cherry picked from commit 37f742007bc168d8a3365ca617c7bd27bafca038)
This commit is contained in:
@@ -5216,6 +5216,7 @@ void MachineObject::update_slice_info(std::string project_id, std::string profil
|
|||||||
|
|
||||||
if (plate_idx >= 0) {
|
if (plate_idx >= 0) {
|
||||||
plate_index = plate_idx;
|
plate_index = plate_idx;
|
||||||
|
this->m_plate_index = plate_idx;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
std::string subtask_json;
|
std::string subtask_json;
|
||||||
@@ -5278,8 +5279,7 @@ void MachineObject::update_slice_info(std::string project_id, std::string profil
|
|||||||
BOOST_LOG_TRIVIAL(error) << "task_info: get subtask id failed!";
|
BOOST_LOG_TRIVIAL(error) << "task_info: get subtask id failed!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// this->m_plate_index = plate_index;
|
||||||
this->m_plate_index = plate_index;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,13 +27,11 @@
|
|||||||
#include "SkipPartCanvas.hpp"
|
#include "SkipPartCanvas.hpp"
|
||||||
#include "MediaPlayCtrl.h"
|
#include "MediaPlayCtrl.h"
|
||||||
|
|
||||||
|
|
||||||
namespace Slic3r { namespace GUI {
|
namespace Slic3r { namespace GUI {
|
||||||
|
|
||||||
extern wxString hide_passwd(wxString url, std::vector<wxString> const &passwords);
|
extern wxString hide_passwd(wxString url, std::vector<wxString> const &passwords);
|
||||||
extern void refresh_agora_url(char const *device, char const *dev_ver, char const *channel, void *context, void (*callback)(void *context, char const *url));
|
extern void refresh_agora_url(char const *device, char const *dev_ver, char const *channel, void *context, void (*callback)(void *context, char const *url));
|
||||||
|
|
||||||
|
|
||||||
PartSkipDialog::PartSkipDialog(wxWindow *parent) : DPIDialog(parent, wxID_ANY, _L("Skip Objects"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
|
PartSkipDialog::PartSkipDialog(wxWindow *parent) : DPIDialog(parent, wxID_ANY, _L("Skip Objects"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
|
||||||
{
|
{
|
||||||
std::time_t t = std::time(0);
|
std::time_t t = std::time(0);
|
||||||
@@ -50,8 +48,7 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
||||||
m_line_top->SetMinSize(wxSize(-1, 1));
|
m_line_top->SetMinSize(wxSize(-1, 1));
|
||||||
m_line_top->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
|
m_line_top->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
|
||||||
m_sizer->Add(m_line_top, 0, wxEXPAND | wxTOP, FromDIP(5));
|
m_sizer->Add(m_line_top, 0, wxEXPAND | wxTOP, FromDIP(0));
|
||||||
|
|
||||||
|
|
||||||
m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
|
m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
|
||||||
m_simplebook->SetMinSize(wxSize(FromDIP(720), FromDIP(535)));
|
m_simplebook->SetMinSize(wxSize(FromDIP(720), FromDIP(535)));
|
||||||
@@ -70,7 +67,6 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_canvas->SetMinSize(wxSize(FromDIP(400), FromDIP(400)));
|
m_canvas->SetMinSize(wxSize(FromDIP(400), FromDIP(400)));
|
||||||
m_canvas->SetMaxSize(wxSize(FromDIP(400), FromDIP(400)));
|
m_canvas->SetMaxSize(wxSize(FromDIP(400), FromDIP(400)));
|
||||||
|
|
||||||
|
|
||||||
m_canvas_btn_sizer = new wxBoxSizer(wxHORIZONTAL);
|
m_canvas_btn_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
m_canvas_btn_sizer->SetMinSize(wxSize(-1, FromDIP(28)));
|
m_canvas_btn_sizer->SetMinSize(wxSize(-1, FromDIP(28)));
|
||||||
|
|
||||||
@@ -89,7 +85,6 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_zoom_out_btn->SetCornerRadius(0);
|
m_zoom_out_btn->SetCornerRadius(0);
|
||||||
m_zoom_out_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
m_zoom_out_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
|
||||||
|
|
||||||
StateColor percent_bg(std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Disabled), std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Pressed),
|
StateColor percent_bg(std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Disabled), std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Pressed),
|
||||||
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Hovered), std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Enabled),
|
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Hovered), std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Enabled),
|
||||||
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Normal));
|
std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Normal));
|
||||||
@@ -160,7 +155,7 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_cnt_label->Wrap(-1);
|
m_cnt_label->Wrap(-1);
|
||||||
m_cnt_label->SetBackgroundColour(*wxWHITE);
|
m_cnt_label->SetBackgroundColour(*wxWHITE);
|
||||||
m_cnt_label->SetForegroundColour(wxColour(0, 174, 66));
|
m_cnt_label->SetForegroundColour(wxColour(0, 174, 66));
|
||||||
m_cnt_label->SetFont(Label::Head_15);
|
m_cnt_label->SetFont(Label::Head_16);
|
||||||
m_cnt_label->SetSize(wxSize(-1, FromDIP(20)));
|
m_cnt_label->SetSize(wxSize(-1, FromDIP(20)));
|
||||||
m_cnt_label->SetMaxSize(wxSize(-1, FromDIP(20)));
|
m_cnt_label->SetMaxSize(wxSize(-1, FromDIP(20)));
|
||||||
|
|
||||||
@@ -184,7 +179,6 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_apply_btn->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
m_apply_btn->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
||||||
m_apply_btn->SetCornerRadius(FromDIP(16));
|
m_apply_btn->SetCornerRadius(FromDIP(16));
|
||||||
|
|
||||||
|
|
||||||
m_canvas_sizer->Add(m_canvas, 0, wxLEFT | wxTOP | wxEXPAND, FromDIP(17));
|
m_canvas_sizer->Add(m_canvas, 0, wxLEFT | wxTOP | wxEXPAND, FromDIP(17));
|
||||||
m_canvas_sizer->Add(m_canvas_btn_sizer, 0, wxTOP, FromDIP(8));
|
m_canvas_sizer->Add(m_canvas_btn_sizer, 0, wxTOP, FromDIP(8));
|
||||||
m_list_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
m_list_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
@@ -204,7 +198,7 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
m_dlg_btn_sizer->Add(m_tot_label, 0, wxLEFT |wxTOP| wxALIGN_CENTER_VERTICAL, FromDIP(2));
|
m_dlg_btn_sizer->Add(m_tot_label, 0, wxLEFT |wxTOP| wxALIGN_CENTER_VERTICAL, FromDIP(2));
|
||||||
#else
|
#else
|
||||||
m_dlg_btn_sizer->Add(m_tot_label, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 0);
|
m_dlg_btn_sizer->Add(m_tot_label, 0, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
#endif
|
#endif
|
||||||
m_dlg_btn_sizer->Add(0, 0, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
m_dlg_btn_sizer->Add(0, 0, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
||||||
m_dlg_btn_sizer->Add(m_apply_btn, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
m_dlg_btn_sizer->Add(m_apply_btn, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
||||||
@@ -269,8 +263,8 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_loading_label->Wrap(-1);
|
m_loading_label->Wrap(-1);
|
||||||
m_loading_label->SetBackgroundColour(*wxWHITE);
|
m_loading_label->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
m_loading_sizer->Add(m_loading_icon, 0, wxALL, FromDIP(5));
|
m_loading_sizer->Add(m_loading_icon, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
||||||
m_loading_sizer->Add(m_loading_label, 0, wxALL, FromDIP(5));
|
m_loading_sizer->Add(m_loading_label, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
||||||
|
|
||||||
m_book_first_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
m_book_first_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
m_book_first_sizer->Add(m_loading_sizer, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL, 0);
|
m_book_first_sizer->Add(m_loading_sizer, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL, 0);
|
||||||
@@ -285,7 +279,6 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_simplebook->AddPage(m_book_third_panel, _("dialog page"), false);
|
m_simplebook->AddPage(m_book_third_panel, _("dialog page"), false);
|
||||||
m_sizer->Add(m_simplebook, 1, wxEXPAND | wxALL, 5);
|
m_sizer->Add(m_simplebook, 1, wxEXPAND | wxALL, 5);
|
||||||
|
|
||||||
|
|
||||||
SetSizer(m_sizer);
|
SetSizer(m_sizer);
|
||||||
m_zoom_in_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnZoomIn, this);
|
m_zoom_in_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnZoomIn, this);
|
||||||
m_zoom_out_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnZoomOut, this);
|
m_zoom_out_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnZoomOut, this);
|
||||||
@@ -296,14 +289,15 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_apply_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnApplyDialog, this);
|
m_apply_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnApplyDialog, this);
|
||||||
m_all_checkbox->Bind(wxEVT_TOGGLEBUTTON, &PartSkipDialog::OnAllCheckbox, this);
|
m_all_checkbox->Bind(wxEVT_TOGGLEBUTTON, &PartSkipDialog::OnAllCheckbox, this);
|
||||||
|
|
||||||
Fit();
|
|
||||||
Layout();
|
Layout();
|
||||||
|
Fit();
|
||||||
CentreOnParent();
|
CentreOnParent();
|
||||||
}
|
}
|
||||||
|
|
||||||
PartSkipDialog::~PartSkipDialog() {}
|
PartSkipDialog::~PartSkipDialog() {}
|
||||||
|
|
||||||
void PartSkipDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
void PartSkipDialog::on_dpi_changed(const wxRect &suggested_rect)
|
||||||
|
{
|
||||||
m_canvas->LoadPickImage(m_local_paths[0]);
|
m_canvas->LoadPickImage(m_local_paths[0]);
|
||||||
|
|
||||||
m_loading_icon->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
|
m_loading_icon->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
|
||||||
@@ -332,7 +326,6 @@ void PartSkipDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
|||||||
m_line->SetMinSize(wxSize(FromDIP(267), 1));
|
m_line->SetMinSize(wxSize(FromDIP(267), 1));
|
||||||
m_line->SetMaxSize(wxSize(FromDIP(267), 1));
|
m_line->SetMaxSize(wxSize(FromDIP(267), 1));
|
||||||
|
|
||||||
|
|
||||||
m_apply_btn->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
m_apply_btn->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
||||||
m_apply_btn->SetCornerRadius(FromDIP(16));
|
m_apply_btn->SetCornerRadius(FromDIP(16));
|
||||||
m_apply_btn->Rescale();
|
m_apply_btn->Rescale();
|
||||||
@@ -345,7 +338,6 @@ void PartSkipDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
|||||||
m_second_retry_btn->SetCornerRadius(FromDIP(16));
|
m_second_retry_btn->SetCornerRadius(FromDIP(16));
|
||||||
m_second_retry_btn->Rescale();
|
m_second_retry_btn->Rescale();
|
||||||
|
|
||||||
|
|
||||||
m_all_checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
|
m_all_checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
|
||||||
m_all_checkbox->Rescale();
|
m_all_checkbox->Rescale();
|
||||||
|
|
||||||
@@ -354,8 +346,7 @@ void PartSkipDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
|||||||
if (item && item->IsSizer()) {
|
if (item && item->IsSizer()) {
|
||||||
wxSizer *sizer = item->GetSizer();
|
wxSizer *sizer = item->GetSizer();
|
||||||
auto check_item = sizer->GetItem((size_t) 0);
|
auto check_item = sizer->GetItem((size_t) 0);
|
||||||
if (check_item && check_item->IsWindow())
|
if (check_item && check_item->IsWindow()) {
|
||||||
{
|
|
||||||
wxWindow *window = check_item->GetWindow();
|
wxWindow *window = check_item->GetWindow();
|
||||||
CheckBox *checkbox = dynamic_cast<CheckBox *>(window);
|
CheckBox *checkbox = dynamic_cast<CheckBox *>(window);
|
||||||
checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
|
checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
|
||||||
@@ -373,8 +364,8 @@ void PartSkipDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
|||||||
Layout();
|
Layout();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string PartSkipDialog::create_tmp_path()
|
||||||
std::string PartSkipDialog::create_tmp_path(){
|
{
|
||||||
boost::filesystem::path parent_path(temporary_dir());
|
boost::filesystem::path parent_path(temporary_dir());
|
||||||
|
|
||||||
std::stringstream buf;
|
std::stringstream buf;
|
||||||
@@ -388,19 +379,14 @@ std::string PartSkipDialog::create_tmp_path(){
|
|||||||
}
|
}
|
||||||
std::string tmp_path = (parent_path / buf.str()).string();
|
std::string tmp_path = (parent_path / buf.str()).string();
|
||||||
|
|
||||||
if (!std::filesystem::exists(tmp_path + "Metadata/") && !fs::create_directories(tmp_path + "Metadata/")) {
|
if (!std::filesystem::exists(tmp_path + "Metadata/") && !fs::create_directories(tmp_path + "Metadata/")) { wxMessageBox("create file failed."); }
|
||||||
wxMessageBox("create file failed.");
|
|
||||||
}
|
|
||||||
return tmp_path;
|
return tmp_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool PartSkipDialog::is_local_file_existed(const std::vector<string> &local_paths)
|
bool PartSkipDialog::is_local_file_existed(const std::vector<string> &local_paths)
|
||||||
{
|
{
|
||||||
for (auto path : local_paths) {
|
for (auto path : local_paths) {
|
||||||
if (!std::filesystem::exists(path)) {
|
if (!std::filesystem::exists(path)) { return false; }
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -412,13 +398,17 @@ void PartSkipDialog::DownloadPartsFile()
|
|||||||
m_local_paths.clear();
|
m_local_paths.clear();
|
||||||
m_target_paths.clear();
|
m_target_paths.clear();
|
||||||
|
|
||||||
int plate_idx = m_obj ? m_obj->m_plate_index : 1;
|
m_plate_idx = m_obj ? m_obj->m_plate_index : -1;
|
||||||
|
if (m_plate_idx < 0) {
|
||||||
|
m_plate_idx = 1;
|
||||||
|
BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << "part skip: printer plate index is invalid.";
|
||||||
|
}
|
||||||
|
|
||||||
m_local_paths.push_back(m_tmp_path + "Metadata/pick_" + std::to_string(plate_idx) + ".png");
|
m_local_paths.push_back(m_tmp_path + "Metadata/pick_" + std::to_string(m_plate_idx) + ".png");
|
||||||
m_local_paths.push_back(m_tmp_path + "Metadata/model_settings.config");
|
m_local_paths.push_back(m_tmp_path + "Metadata/model_settings.config");
|
||||||
m_local_paths.push_back(m_tmp_path + "Metadata/slice_info.config");
|
m_local_paths.push_back(m_tmp_path + "Metadata/slice_info.config");
|
||||||
|
|
||||||
m_target_paths.push_back("Metadata/pick_" + std::to_string(plate_idx) + ".png");
|
m_target_paths.push_back("Metadata/pick_" + std::to_string(m_plate_idx) + ".png");
|
||||||
m_target_paths.push_back("Metadata/model_settings.config");
|
m_target_paths.push_back("Metadata/model_settings.config");
|
||||||
m_target_paths.push_back("Metadata/slice_info.config");
|
m_target_paths.push_back("Metadata/slice_info.config");
|
||||||
|
|
||||||
@@ -459,9 +449,7 @@ void PartSkipDialog::fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs)
|
|||||||
std::string agent_version = agent ? agent->get_version() : "";
|
std::string agent_version = agent ? agent->get_version() : "";
|
||||||
|
|
||||||
auto url_state = m_url_state;
|
auto url_state = m_url_state;
|
||||||
if(obj->is_lan_mode_printer()){
|
if (obj->is_lan_mode_printer()) { url_state = URL_TCP; }
|
||||||
url_state = URL_TCP;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (agent) {
|
if (agent) {
|
||||||
switch (url_state) {
|
switch (url_state) {
|
||||||
@@ -551,7 +539,8 @@ void PartSkipDialog::OnFileSystemEvent(wxCommandEvent &e)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// reseter: [TCP -> TUTK(TCP)] -> [TCP -> TUTK(TCP)]
|
// reseter: [TCP -> TUTK(TCP)] -> [TCP -> TUTK(TCP)]
|
||||||
void PartSkipDialog::OnFileSystemResult(wxCommandEvent &event){
|
void PartSkipDialog::OnFileSystemResult(wxCommandEvent &event)
|
||||||
|
{
|
||||||
int result = event.GetInt();
|
int result = event.GetInt();
|
||||||
m_loading_icon->Stop();
|
m_loading_icon->Stop();
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
@@ -567,44 +556,44 @@ void PartSkipDialog::OnFileSystemResult(wxCommandEvent &event){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::InitSchedule(MachineObject *obj){
|
void PartSkipDialog::InitSchedule(MachineObject *obj)
|
||||||
|
{
|
||||||
m_obj = obj;
|
m_obj = obj;
|
||||||
SetSimplebookPage(0);
|
SetSimplebookPage(0);
|
||||||
m_loading_icon->Play();
|
m_loading_icon->Play();
|
||||||
DownloadPartsFile();
|
DownloadPartsFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::OnRetryButton(wxCommandEvent &event) {
|
void PartSkipDialog::OnRetryButton(wxCommandEvent &event)
|
||||||
|
{
|
||||||
event.Skip();
|
event.Skip();
|
||||||
InitSchedule(m_obj);
|
InitSchedule(m_obj);
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PartSkipDialog::is_drag_mode() { return m_is_drag == true; }
|
||||||
|
|
||||||
bool PartSkipDialog::is_drag_mode(){
|
PartsInfo PartSkipDialog::GetPartsInfo()
|
||||||
return m_is_drag == true;
|
|
||||||
}
|
|
||||||
|
|
||||||
PartsInfo PartSkipDialog::GetPartsInfo(){
|
|
||||||
PartsInfo parts_info;
|
|
||||||
for (auto [part_id, part_state] : this->m_parts_state)
|
|
||||||
{
|
{
|
||||||
parts_info.push_back(std::pair<int, PartState>(part_id, part_state));
|
PartsInfo parts_info;
|
||||||
}
|
for (auto [part_id, part_state] : this->m_parts_state) { parts_info.push_back(std::pair<int, PartState>(part_id, part_state)); }
|
||||||
return parts_info;
|
return parts_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::OnZoomIn(wxCommandEvent &event){
|
void PartSkipDialog::OnZoomIn(wxCommandEvent &event)
|
||||||
|
{
|
||||||
m_canvas->ZoomIn(20);
|
m_canvas->ZoomIn(20);
|
||||||
UpdateZoomPercent();
|
UpdateZoomPercent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::OnZoomOut(wxCommandEvent &event){
|
void PartSkipDialog::OnZoomOut(wxCommandEvent &event)
|
||||||
|
{
|
||||||
m_canvas->ZoomOut(20);
|
m_canvas->ZoomOut(20);
|
||||||
UpdateZoomPercent();
|
UpdateZoomPercent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::OnSwitchDrag(wxCommandEvent& event){
|
void PartSkipDialog::OnSwitchDrag(wxCommandEvent &event)
|
||||||
|
{
|
||||||
if (this->is_drag_mode()) {
|
if (this->is_drag_mode()) {
|
||||||
m_is_drag = false;
|
m_is_drag = false;
|
||||||
m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
|
m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
|
||||||
@@ -617,7 +606,8 @@ void PartSkipDialog::OnSwitchDrag(wxCommandEvent& event){
|
|||||||
m_canvas->SwitchDrag(m_is_drag);
|
m_canvas->SwitchDrag(m_is_drag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::OnZoomPercent(wxCommandEvent &event) {
|
void PartSkipDialog::OnZoomPercent(wxCommandEvent &event)
|
||||||
|
{
|
||||||
m_zoom_percent = event.GetInt();
|
m_zoom_percent = event.GetInt();
|
||||||
if (m_zoom_percent >= 1000) {
|
if (m_zoom_percent >= 1000) {
|
||||||
m_zoom_percent = 1000;
|
m_zoom_percent = 1000;
|
||||||
@@ -637,25 +627,21 @@ void PartSkipDialog::OnZoomPercent(wxCommandEvent &event) {
|
|||||||
UpdateZoomPercent();
|
UpdateZoomPercent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::UpdatePartsStateFromCanvas(wxCommandEvent &event) {
|
void PartSkipDialog::UpdatePartsStateFromCanvas(wxCommandEvent &event)
|
||||||
|
{
|
||||||
int part_id = event.GetExtraLong();
|
int part_id = event.GetExtraLong();
|
||||||
PartState part_state = PartState(event.GetInt());
|
PartState part_state = PartState(event.GetInt());
|
||||||
|
|
||||||
m_parts_state[part_id] = part_state;
|
m_parts_state[part_id] = part_state;
|
||||||
if(part_state == psUnCheck){
|
if (part_state == psUnCheck) { m_all_checkbox->SetValue(false); }
|
||||||
m_all_checkbox->SetValue(false);
|
if (IsAllChecked()) { m_all_checkbox->SetValue(true); }
|
||||||
}
|
|
||||||
if(IsAllChecked()){
|
|
||||||
m_all_checkbox->SetValue(true);
|
|
||||||
}
|
|
||||||
UpdateDialogUI();
|
UpdateDialogUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::UpdateZoomPercent() {
|
void PartSkipDialog::UpdateZoomPercent() { m_percent_label->SetLabel(wxString::Format(_L("%d%%"), m_zoom_percent)); }
|
||||||
m_percent_label->SetLabel(wxString::Format(_L("%d%%"), m_zoom_percent));
|
|
||||||
}
|
|
||||||
|
|
||||||
void PartSkipDialog::UpdateCountLabel() {
|
void PartSkipDialog::UpdateCountLabel()
|
||||||
|
{
|
||||||
int check_cnt = 0;
|
int check_cnt = 0;
|
||||||
int tot_cnt = 0;
|
int tot_cnt = 0;
|
||||||
for (auto [part_id, part_state] : m_parts_state) {
|
for (auto [part_id, part_state] : m_parts_state) {
|
||||||
@@ -678,7 +664,8 @@ bool PartSkipDialog::Show(bool show)
|
|||||||
return DPIDialog::Show(show);
|
return DPIDialog::Show(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::InitDialogUI() {
|
void PartSkipDialog::InitDialogUI()
|
||||||
|
{
|
||||||
m_print_lock = true;
|
m_print_lock = true;
|
||||||
BOOST_LOG_TRIVIAL(info) << "part skip: lock parts info from printer.";
|
BOOST_LOG_TRIVIAL(info) << "part skip: lock parts info from printer.";
|
||||||
m_scroll_sizer->Clear(true);
|
m_scroll_sizer->Clear(true);
|
||||||
@@ -702,17 +689,14 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
ModelSettingHelper helper(slice_info);
|
ModelSettingHelper helper(slice_info);
|
||||||
|
|
||||||
if (helper.Parse()) {
|
if (helper.Parse()) {
|
||||||
int plate_idx = m_obj ? m_obj->m_plate_index : 0;
|
auto parse_result = helper.GetPlateObjects(m_plate_idx);
|
||||||
auto parse_result = helper.GetPlates()[plate_idx - 1].objects;
|
|
||||||
for (const auto &part : parse_result) {
|
for (const auto &part : parse_result) {
|
||||||
m_parts_state[part.identify_id] = part.state;
|
m_parts_state[part.identify_id] = part.state;
|
||||||
m_parts_name[part.identify_id] = part.name;
|
m_parts_name[part.identify_id] = part.name;
|
||||||
}
|
}
|
||||||
if (m_obj) {
|
if (m_obj) {
|
||||||
std::vector<int> partskip_ids = m_obj->m_partskip_ids;
|
std::vector<int> partskip_ids = m_obj->m_partskip_ids;
|
||||||
for (auto part_id : partskip_ids) {
|
for (auto part_id : partskip_ids) { m_parts_state[part_id] = PartState::psSkipped; }
|
||||||
m_parts_state[part_id] = PartState::psSkipped;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto &[part_id, part_state] : m_parts_state) {
|
for (const auto &[part_id, part_state] : m_parts_state) {
|
||||||
@@ -720,7 +704,9 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
auto checkbox = new CheckBox(m_list_view);
|
auto checkbox = new CheckBox(m_list_view);
|
||||||
auto label = new Label(m_list_view, wxEmptyString);
|
auto label = new Label(m_list_view, wxEmptyString);
|
||||||
|
|
||||||
checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, part_id=part_id](wxCommandEvent& event) {
|
checkbox->Bind(
|
||||||
|
wxEVT_TOGGLEBUTTON,
|
||||||
|
[this, part_id = part_id](wxCommandEvent &event) {
|
||||||
m_parts_state[part_id] = event.IsChecked() ? PartState::psChecked : PartState::psUnCheck;
|
m_parts_state[part_id] = event.IsChecked() ? PartState::psChecked : PartState::psUnCheck;
|
||||||
if (!event.IsChecked()) {
|
if (!event.IsChecked()) {
|
||||||
m_all_checkbox->SetValue(false);
|
m_all_checkbox->SetValue(false);
|
||||||
@@ -730,7 +716,8 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
m_canvas->UpdatePartsInfo(GetPartsInfo());
|
m_canvas->UpdatePartsInfo(GetPartsInfo());
|
||||||
UpdateCountLabel();
|
UpdateCountLabel();
|
||||||
event.Skip();
|
event.Skip();
|
||||||
}, checkbox->GetId());
|
},
|
||||||
|
checkbox->GetId());
|
||||||
|
|
||||||
if (part_state == PartState::psChecked) {
|
if (part_state == PartState::psChecked) {
|
||||||
checkbox->SetValue(true);
|
checkbox->SetValue(true);
|
||||||
@@ -766,7 +753,8 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
BOOST_LOG_TRIVIAL(info) << "part skip: unlock parts info from printer.";
|
BOOST_LOG_TRIVIAL(info) << "part skip: unlock parts info from printer.";
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::UpdatePartsStateFromPrinter(MachineObject *obj) {
|
void PartSkipDialog::UpdatePartsStateFromPrinter(MachineObject *obj)
|
||||||
|
{
|
||||||
if (m_print_lock) {
|
if (m_print_lock) {
|
||||||
BOOST_LOG_TRIVIAL(info) << "part skip: parts info from printer is locked.";
|
BOOST_LOG_TRIVIAL(info) << "part skip: parts info from printer is locked.";
|
||||||
return;
|
return;
|
||||||
@@ -788,8 +776,8 @@ void PartSkipDialog::UpdatePartsStateFromPrinter(MachineObject *obj) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PartSkipDialog::UpdateDialogUI()
|
||||||
void PartSkipDialog::UpdateDialogUI(){
|
{
|
||||||
if (m_parts_state.size() != m_scroll_sizer->GetItemCount()) {
|
if (m_parts_state.size() != m_scroll_sizer->GetItemCount()) {
|
||||||
BOOST_LOG_TRIVIAL(warning) << "part skip: m_parts_state and m_scroll_sizer mismatch.";
|
BOOST_LOG_TRIVIAL(warning) << "part skip: m_parts_state and m_scroll_sizer mismatch.";
|
||||||
return;
|
return;
|
||||||
@@ -804,8 +792,7 @@ void PartSkipDialog::UpdateDialogUI(){
|
|||||||
wxSizer *sizer = item->GetSizer();
|
wxSizer *sizer = item->GetSizer();
|
||||||
auto check_item = sizer->GetItem((size_t) 0);
|
auto check_item = sizer->GetItem((size_t) 0);
|
||||||
|
|
||||||
if (check_item && check_item->IsWindow())
|
if (check_item && check_item->IsWindow()) {
|
||||||
{
|
|
||||||
wxWindow *window = check_item->GetWindow();
|
wxWindow *window = check_item->GetWindow();
|
||||||
CheckBox *checkbox = dynamic_cast<CheckBox *>(window);
|
CheckBox *checkbox = dynamic_cast<CheckBox *>(window);
|
||||||
if (part_state == PartState::psChecked) {
|
if (part_state == PartState::psChecked) {
|
||||||
@@ -824,14 +811,12 @@ void PartSkipDialog::UpdateDialogUI(){
|
|||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::SetSimplebookPage(int page) {
|
void PartSkipDialog::SetSimplebookPage(int page) { m_simplebook->SetSelection(page); }
|
||||||
m_simplebook->SetSelection(page);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PartSkipDialog::IsAllChecked() {
|
bool PartSkipDialog::IsAllChecked()
|
||||||
|
{
|
||||||
for (auto &[part_id, part_state] : m_parts_state) {
|
for (auto &[part_id, part_state] : m_parts_state) {
|
||||||
if (part_state == PartState::psUnCheck)
|
if (part_state == PartState::psUnCheck) return false;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -840,14 +825,11 @@ void PartSkipDialog::OnAllCheckbox(wxCommandEvent &event)
|
|||||||
{
|
{
|
||||||
if (m_all_checkbox->GetValue()) {
|
if (m_all_checkbox->GetValue()) {
|
||||||
for (auto &[part_id, part_state] : m_parts_state) {
|
for (auto &[part_id, part_state] : m_parts_state) {
|
||||||
if (part_state == PartState::psUnCheck)
|
if (part_state == PartState::psUnCheck) part_state = PartState::psChecked;
|
||||||
part_state = PartState::psChecked;
|
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
for (auto &[part_id, part_state] : m_parts_state) {
|
for (auto &[part_id, part_state] : m_parts_state) {
|
||||||
if (part_state == PartState::psChecked)
|
if (part_state == PartState::psChecked) part_state = PartState::psUnCheck;
|
||||||
part_state = PartState::psUnCheck;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
m_canvas->UpdatePartsInfo(GetPartsInfo());
|
m_canvas->UpdatePartsInfo(GetPartsInfo());
|
||||||
@@ -855,15 +837,12 @@ void PartSkipDialog::OnAllCheckbox(wxCommandEvent &event)
|
|||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PartSkipDialog::OnApplyDialog(wxCommandEvent &event)
|
void PartSkipDialog::OnApplyDialog(wxCommandEvent &event)
|
||||||
{
|
{
|
||||||
event.Skip();
|
event.Skip();
|
||||||
m_partskip_ids.clear();
|
m_partskip_ids.clear();
|
||||||
for (const auto &[part_id, part_state] : m_parts_state) {
|
for (const auto &[part_id, part_state] : m_parts_state) {
|
||||||
if (part_state == PartState::psChecked) {
|
if (part_state == PartState::psChecked) { m_partskip_ids.push_back(part_id); }
|
||||||
m_partskip_ids.push_back(part_id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool all_skipped = true;
|
bool all_skipped = true;
|
||||||
@@ -898,11 +877,11 @@ void PartSkipDialog::OnApplyDialog(wxCommandEvent &event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int PartSkipDialog::GetAllSkippedPartsNum() {
|
int PartSkipDialog::GetAllSkippedPartsNum()
|
||||||
|
{
|
||||||
int skipped_cnt = 0;
|
int skipped_cnt = 0;
|
||||||
for (auto &[part_id, part_state] : m_parts_state) {
|
for (auto &[part_id, part_state] : m_parts_state) {
|
||||||
if (part_state == PartState::psSkipped || part_state == PartState::psChecked)
|
if (part_state == PartState::psSkipped || part_state == PartState::psChecked) skipped_cnt++;
|
||||||
skipped_cnt++;
|
|
||||||
}
|
}
|
||||||
return skipped_cnt;
|
return skipped_cnt;
|
||||||
}
|
}
|
||||||
@@ -943,7 +922,6 @@ PartSkipConfirmDialog::PartSkipConfirmDialog(wxWindow *parent) : DPIDialog(paren
|
|||||||
m_button_sizer->SetMinSize(wxSize(FromDIP(480), FromDIP(54)));
|
m_button_sizer->SetMinSize(wxSize(FromDIP(480), FromDIP(54)));
|
||||||
m_button_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
m_button_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
|
|
||||||
|
|
||||||
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
|
StateColor btn_bg_white(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
|
||||||
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
|
std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
|
||||||
|
|
||||||
@@ -972,9 +950,7 @@ PartSkipConfirmDialog::PartSkipConfirmDialog(wxWindow *parent) : DPIDialog(paren
|
|||||||
Fit();
|
Fit();
|
||||||
}
|
}
|
||||||
|
|
||||||
PartSkipConfirmDialog::~PartSkipConfirmDialog()
|
PartSkipConfirmDialog::~PartSkipConfirmDialog() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PartSkipConfirmDialog::Show(bool show)
|
bool PartSkipConfirmDialog::Show(bool show)
|
||||||
{
|
{
|
||||||
@@ -988,7 +964,8 @@ bool PartSkipConfirmDialog::Show(bool show)
|
|||||||
return DPIDialog::Show(show);
|
return DPIDialog::Show(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipConfirmDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
void PartSkipConfirmDialog::on_dpi_changed(const wxRect &suggested_rect)
|
||||||
|
{
|
||||||
m_apply_button->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
m_apply_button->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
||||||
m_apply_button->SetCornerRadius(FromDIP(16));
|
m_apply_button->SetCornerRadius(FromDIP(16));
|
||||||
m_apply_button->Rescale();
|
m_apply_button->Rescale();
|
||||||
@@ -996,20 +973,10 @@ void PartSkipConfirmDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
|||||||
Fit();
|
Fit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Button *PartSkipConfirmDialog::GetConfirmButton() { return m_apply_button; }
|
||||||
|
|
||||||
Button* PartSkipConfirmDialog::GetConfirmButton()
|
void PartSkipConfirmDialog::SetMsgLabel(wxString msg) { m_msg_label->SetLabel(msg); }
|
||||||
{
|
|
||||||
return m_apply_button;
|
|
||||||
}
|
|
||||||
|
|
||||||
void PartSkipConfirmDialog::SetMsgLabel(wxString msg){
|
void PartSkipConfirmDialog::SetTipLabel(wxString msg) { m_tip_label->SetLabel(msg); }
|
||||||
m_msg_label->SetLabel(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
void PartSkipConfirmDialog::SetTipLabel(wxString msg){
|
}} // namespace Slic3r::GUI
|
||||||
m_tip_label->SetLabel(msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
} // namespace Slic3r::GUI
|
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ public:
|
|||||||
AnimaIcon *m_loading_icon;
|
AnimaIcon *m_loading_icon;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
int m_plate_idx{-1};
|
||||||
int m_zoom_percent{100};
|
int m_zoom_percent{100};
|
||||||
bool m_is_drag{false};
|
bool m_is_drag{false};
|
||||||
bool m_print_lock{true};
|
bool m_print_lock{true};
|
||||||
@@ -139,7 +140,6 @@ private:
|
|||||||
void OnFileSystemResult(wxCommandEvent &event);
|
void OnFileSystemResult(wxCommandEvent &event);
|
||||||
void fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs);
|
void fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs);
|
||||||
|
|
||||||
|
|
||||||
void OnZoomIn(wxCommandEvent &event);
|
void OnZoomIn(wxCommandEvent &event);
|
||||||
void OnZoomOut(wxCommandEvent &event);
|
void OnZoomOut(wxCommandEvent &event);
|
||||||
void OnSwitchDrag(wxCommandEvent &event);
|
void OnSwitchDrag(wxCommandEvent &event);
|
||||||
@@ -156,4 +156,4 @@ private:
|
|||||||
void OnApplyDialog(wxCommandEvent &event);
|
void OnApplyDialog(wxCommandEvent &event);
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}} // namespace Slic3r::GUI
|
||||||
@@ -252,6 +252,7 @@ struct PrinterFileSystem::Download : Progress
|
|||||||
|
|
||||||
void PrinterFileSystem::GetPickImages(const std::vector<std::string> &local_paths, const std::vector<std::string> &targetpaths)
|
void PrinterFileSystem::GetPickImages(const std::vector<std::string> &local_paths, const std::vector<std::string> &targetpaths)
|
||||||
{
|
{
|
||||||
|
m_download_states.clear();
|
||||||
|
|
||||||
GetPickImage(1, local_paths[0], targetpaths[0]);
|
GetPickImage(1, local_paths[0], targetpaths[0]);
|
||||||
GetPickImage(2, local_paths[1], targetpaths[1]);
|
GetPickImage(2, local_paths[1], targetpaths[1]);
|
||||||
@@ -303,6 +304,9 @@ void PrinterFileSystem::DownloadRamFile(int index, const std::string &local_path
|
|||||||
wxLogWarning("Download failed: result = 1");
|
wxLogWarning("Download failed: result = 1");
|
||||||
return ERROR_JSON;
|
return ERROR_JSON;
|
||||||
}
|
}
|
||||||
|
if(mem_dl_json.contains("size") && mem_dl_json["size"] == 0 )
|
||||||
|
return FILE_SIZE_ERR;
|
||||||
|
|
||||||
return CONTINUE;
|
return CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,13 +359,27 @@ void PrinterFileSystem::DownloadRamFile(int index, const std::string &local_path
|
|||||||
if (result == CONTINUE) { return; }
|
if (result == CONTINUE) { return; }
|
||||||
std::string msg;
|
std::string msg;
|
||||||
if (result == SUCCESS) {
|
if (result == SUCCESS) {
|
||||||
wxLogMessage("DownloadImageFromRam finished: %s", download->local_path);
|
if (std::filesystem::exists(download->local_path)) {
|
||||||
msg = "SUCCESS";
|
m_download_states.emplace_back(true);
|
||||||
SendChangedEvent(EVT_RAMDOWNLOAD, result, result ? download->error : download->local_path);
|
BOOST_LOG_TRIVIAL(info) <<"DownloadImageFromRam finished: " << download->local_path << "result = " << result;
|
||||||
|
}else{
|
||||||
|
m_download_states.emplace_back(false);
|
||||||
|
BOOST_LOG_TRIVIAL(warning) <<"DownloadImageFromRam finished, but file not exist: " << download->local_path << "result = " << result;
|
||||||
|
}
|
||||||
} else if (result != CONTINUE) {
|
} else if (result != CONTINUE) {
|
||||||
wxLogWarning("DownloadImageFromRam failed: %s", download->error);
|
m_download_states.emplace_back(false);
|
||||||
msg = "ERROR";
|
BOOST_LOG_TRIVIAL(warning) << "DownloadImageFromRam failed: " << download->error << "result = " << result;
|
||||||
SendChangedEvent(EVT_RAMDOWNLOAD, result, result ? download->error : download->local_path);
|
}
|
||||||
|
|
||||||
|
if(m_download_states.size() == 3){
|
||||||
|
if(m_download_states[0] && m_download_states[1] && m_download_states[2]){
|
||||||
|
SendChangedEvent(EVT_RAMDOWNLOAD, SUCCESS);
|
||||||
|
}else{
|
||||||
|
// FILE_NO_EXIST is not really error_code
|
||||||
|
SendChangedEvent(EVT_RAMDOWNLOAD, FILE_NO_EXIST);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
BOOST_LOG_TRIVIAL(warning) << "m_download_states current size is : " << m_download_states.size();
|
||||||
}
|
}
|
||||||
},param);
|
},param);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -317,6 +317,8 @@ private:
|
|||||||
size_t m_lock_end = 0;
|
size_t m_lock_end = 0;
|
||||||
int m_task_flags = 0;
|
int m_task_flags = 0;
|
||||||
|
|
||||||
|
std::vector<bool> m_download_states;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct Session
|
struct Session
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
#include <expat.h>
|
#include <expat.h>
|
||||||
#include <earcut/earcut.hpp>
|
#include <earcut/earcut.hpp>
|
||||||
#include <libslic3r/Color.hpp>
|
#include <libslic3r/Color.hpp>
|
||||||
|
#include <filesystem>
|
||||||
|
|
||||||
wxDEFINE_EVENT(EVT_ZOOM_PERCENT, wxCommandEvent);
|
wxDEFINE_EVENT(EVT_ZOOM_PERCENT, wxCommandEvent);
|
||||||
wxDEFINE_EVENT(EVT_CANVAS_PART, wxCommandEvent);
|
wxDEFINE_EVENT(EVT_CANVAS_PART, wxCommandEvent);
|
||||||
@@ -32,6 +33,8 @@ SkipPartCanvas::SkipPartCanvas(wxWindow *parent, const wxGLAttributes& dispAttrs
|
|||||||
|
|
||||||
void SkipPartCanvas::LoadPickImage(const std::string & path)
|
void SkipPartCanvas::LoadPickImage(const std::string & path)
|
||||||
{
|
{
|
||||||
|
if(!std::filesystem::exists(path)) return;
|
||||||
|
|
||||||
auto ParseShapeId = [](cv::Mat image, const std::vector<std::vector<cv::Point>> &contours, const std::vector<cv::Vec4i> &hierarchy, int root_idx) -> uint32_t {
|
auto ParseShapeId = [](cv::Mat image, const std::vector<std::vector<cv::Point>> &contours, const std::vector<cv::Vec4i> &hierarchy, int root_idx) -> uint32_t {
|
||||||
cv::Mat mask = cv::Mat::zeros(image.size(), CV_8UC1);
|
cv::Mat mask = cv::Mat::zeros(image.size(), CV_8UC1);
|
||||||
|
|
||||||
@@ -249,8 +252,12 @@ void SkipPartCanvas::Render()
|
|||||||
|
|
||||||
int w, h;
|
int w, h;
|
||||||
GetClientSize(&w, &h);
|
GetClientSize(&w, &h);
|
||||||
|
#if defined(__APPLE__)
|
||||||
|
double scale = GetDPIScaleFactor();
|
||||||
|
glViewport(0, 0, w * scale, h * scale);
|
||||||
|
#else
|
||||||
glViewport(0, 0, w, h);
|
glViewport(0, 0, w, h);
|
||||||
|
#endif
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
auto view_rect = ViewPtToImagePt(wxPoint(w, h));
|
auto view_rect = ViewPtToImagePt(wxPoint(w, h));
|
||||||
@@ -661,7 +668,14 @@ void XMLCALL ModelSettingHelper::EndElementHandler(void *userData, const XML_Cha
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<PlateInfo> ModelSettingHelper::GetPlates() { return context_.plates; }
|
std::vector<ObjectInfo> ModelSettingHelper::GetPlateObjects(int plate_idx) {
|
||||||
|
for (const auto &plate : context_.plates) {
|
||||||
|
if (plate.index == plate_idx) {
|
||||||
|
return plate.objects;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return std::vector<ObjectInfo>();
|
||||||
|
}
|
||||||
|
|
||||||
void ModelSettingHelper::DataHandler(const XML_Char *s, int len)
|
void ModelSettingHelper::DataHandler(const XML_Char *s, int len)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ public:
|
|||||||
ModelSettingHelper(const std::string &path);
|
ModelSettingHelper(const std::string &path);
|
||||||
|
|
||||||
bool Parse();
|
bool Parse();
|
||||||
std::vector<PlateInfo> GetPlates();
|
std::vector<ObjectInfo> GetPlateObjects(int plate_idx);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string path_;
|
std::string path_;
|
||||||
|
|||||||
@@ -9,12 +9,13 @@
|
|||||||
AnimaIcon::AnimaIcon(wxWindow *parent, wxWindowID id, std::vector<std::string> img_list, std::string img_enable, int ivt)
|
AnimaIcon::AnimaIcon(wxWindow *parent, wxWindowID id, std::vector<std::string> img_list, std::string img_enable, int ivt)
|
||||||
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize), m_ivt(ivt)
|
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize), m_ivt(ivt)
|
||||||
{
|
{
|
||||||
|
auto sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
SetBackgroundColour((wxColour(255, 255, 255)));
|
SetBackgroundColour((wxColour(255, 255, 255)));
|
||||||
m_size = 20;
|
m_size = 25;
|
||||||
|
|
||||||
//add ScalableBitmap
|
//add ScalableBitmap
|
||||||
for (const auto &filename : img_list) m_images.emplace_back(create_scaled_bitmap(filename, this, FromDIP(m_size)));
|
for (const auto &filename : img_list) m_images.emplace_back(create_scaled_bitmap(filename, this, m_size));
|
||||||
m_image_enable = create_scaled_bitmap(img_enable, this, FromDIP(m_size-8));
|
m_image_enable = create_scaled_bitmap(img_enable, this, m_size-8);
|
||||||
|
|
||||||
// show first wxStaticBitmap
|
// show first wxStaticBitmap
|
||||||
if (!m_images.empty()) m_bitmap = new wxStaticBitmap(this, wxID_ANY, m_images[0], wxDefaultPosition, wxSize(FromDIP(m_size), FromDIP(m_size)));
|
if (!m_images.empty()) m_bitmap = new wxStaticBitmap(this, wxID_ANY, m_images[0], wxDefaultPosition, wxSize(FromDIP(m_size), FromDIP(m_size)));
|
||||||
@@ -47,12 +48,13 @@ AnimaIcon::AnimaIcon(wxWindow *parent, wxWindowID id, std::vector<std::string> i
|
|||||||
SetCursor(wxCursor(wxCURSOR_ARROW));
|
SetCursor(wxCursor(wxCURSOR_ARROW));
|
||||||
e.Skip();
|
e.Skip();
|
||||||
});
|
});
|
||||||
|
sizer->Add(m_bitmap, 0, wxALIGN_CENTER, 0);
|
||||||
|
SetSizer(sizer);
|
||||||
SetSize(wxSize(FromDIP(m_size), FromDIP(m_size)));
|
SetSize(wxSize(FromDIP(m_size), FromDIP(m_size)));
|
||||||
SetMaxSize(wxSize(FromDIP(m_size), FromDIP(m_size)));
|
SetMaxSize(wxSize(FromDIP(m_size), FromDIP(m_size)));
|
||||||
SetMinSize(wxSize(FromDIP(m_size), FromDIP(m_size)));
|
SetMinSize(wxSize(FromDIP(m_size), FromDIP(m_size)));
|
||||||
Refresh();
|
Layout();
|
||||||
|
Fit();
|
||||||
Play();
|
Play();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user