mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-19 11:23:42 +00:00
ENH: advance part skip dialog
Jira: [STUDIO-12687] Change-Id: Ie6805c57f478ae5a10f81b49dc5a4e45fb40dbc7 (cherry picked from commit 8ed17efc32f8c635dc50e27bf7146fd2eb70941d)
This commit is contained in:
@@ -177,3 +177,7 @@ src/slic3r/Utils/Flashforge.cpp
|
|||||||
src/slic3r/GUI/Jobs/OAuthJob.cpp
|
src/slic3r/GUI/Jobs/OAuthJob.cpp
|
||||||
src/slic3r/GUI/BackgroundSlicingProcess.cpp
|
src/slic3r/GUI/BackgroundSlicingProcess.cpp
|
||||||
src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp
|
src/slic3r/GUI/Gizmos/GLGizmoBrimEars.cpp
|
||||||
|
src/slic3r/GUI/PartSkipDialog.cpp
|
||||||
|
src/slic3r/GUI/PartSkipDialog.hpp
|
||||||
|
src/slic3r/GUI/SkipCanvas.cpp
|
||||||
|
src/slic3r/GUI/SkipCanvas.cpp
|
||||||
|
|||||||
@@ -5609,6 +5609,7 @@ void MachineObject::parse_new_info(json print)
|
|||||||
is_support_upgrade_kit = get_flag_bits(cfg, 14);
|
is_support_upgrade_kit = get_flag_bits(cfg, 14);
|
||||||
is_support_command_homing = get_flag_bits(fun, 32);
|
is_support_command_homing = get_flag_bits(fun, 32);
|
||||||
is_support_brtc = get_flag_bits(fun, 31);
|
is_support_brtc = get_flag_bits(fun, 31);
|
||||||
|
is_support_partskip = get_flag_bits(fun, 49);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*aux*/
|
/*aux*/
|
||||||
|
|||||||
@@ -876,6 +876,7 @@ public:
|
|||||||
bool is_support_upgrade_kit{false};
|
bool is_support_upgrade_kit{false};
|
||||||
bool is_support_command_homing { false };// fun[32]
|
bool is_support_command_homing { false };// fun[32]
|
||||||
bool is_support_brtc{false}; // fun[31], support tcp and upload protocol
|
bool is_support_brtc{false}; // fun[31], support tcp and upload protocol
|
||||||
|
bool is_support_partskip{false};
|
||||||
|
|
||||||
bool installed_upgrade_kit{false};
|
bool installed_upgrade_kit{false};
|
||||||
int nozzle_max_temperature = -1;
|
int nozzle_max_temperature = -1;
|
||||||
|
|||||||
@@ -40,24 +40,25 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
std::stringstream buf;
|
std::stringstream buf;
|
||||||
buf << put_time(std::localtime(&t), "%a_%b_%d_%H_%M_%S/");
|
buf << put_time(std::localtime(&t), "%a_%b_%d_%H_%M_%S/");
|
||||||
m_timestamp = buf.str();
|
m_timestamp = buf.str();
|
||||||
|
|
||||||
std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % Slic3r::resources_dir()).str();
|
std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % Slic3r::resources_dir()).str();
|
||||||
SetIcon(wxIcon(Slic3r::encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO));
|
SetIcon(wxIcon(Slic3r::encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO));
|
||||||
SetBackgroundColour(*wxWHITE);
|
SetBackgroundColour(*wxWHITE);
|
||||||
SetSizeHints( wxDefaultSize, wxDefaultSize );
|
|
||||||
|
|
||||||
m_sizer = new wxBoxSizer( wxVERTICAL );
|
m_sizer = new wxBoxSizer( wxVERTICAL );
|
||||||
auto 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->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
|
m_line_top->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
|
||||||
m_sizer->Add(m_line_top, 0, wxEXPAND, FromDIP(5));
|
m_sizer->Add(m_line_top, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
m_sizer->Add(0, 0, 0, wxTOP, FromDIP(5));
|
|
||||||
|
|
||||||
|
|
||||||
m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
|
m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
|
||||||
m_book_first_panel = new wxPanel( m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
m_simplebook->SetMinSize(wxSize(FromDIP(720), FromDIP(535)));
|
||||||
|
m_simplebook->SetMaxSize(wxSize(FromDIP(720), FromDIP(535)));
|
||||||
|
m_book_first_panel = new wxPanel(m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||||
m_book_third_panel = new wxPanel(m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
m_book_third_panel = new wxPanel(m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
m_book_third_panel->SetBackgroundColour(*wxWHITE);
|
m_book_third_panel->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
m_dlg_sizer = new wxBoxSizer( wxVERTICAL );
|
m_dlg_sizer = new wxBoxSizer( wxVERTICAL );
|
||||||
m_dlg_content_sizer = new wxBoxSizer( wxHORIZONTAL );
|
m_dlg_content_sizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
m_canvas_sizer = new wxBoxSizer( wxVERTICAL );
|
m_canvas_sizer = new wxBoxSizer( wxVERTICAL );
|
||||||
@@ -66,14 +67,13 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
wxGLAttributes canvasAttrs;
|
wxGLAttributes canvasAttrs;
|
||||||
canvasAttrs.PlatformDefaults().Defaults().Stencil(8).EndList();
|
canvasAttrs.PlatformDefaults().Defaults().Stencil(8).EndList();
|
||||||
m_canvas = new SkipPartCanvas(m_book_third_panel, canvasAttrs);
|
m_canvas = new SkipPartCanvas(m_book_third_panel, canvasAttrs);
|
||||||
m_canvas->SetPosition(wxPoint(FromDIP(10), FromDIP(10)));
|
|
||||||
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_sizer->Add( m_canvas, 0, wxALL, FromDIP(10) );
|
|
||||||
|
|
||||||
m_canvas_btn_sizer = new wxBoxSizer( wxHORIZONTAL );
|
m_canvas_btn_sizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
m_canvas_btn_sizer->SetMinSize( wxSize( FromDIP(214),FromDIP(28) ) );
|
m_canvas_btn_sizer->SetMinSize( wxSize( -1,FromDIP(28)));
|
||||||
|
|
||||||
StateColor zoom_bg(std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Disabled), std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed),
|
StateColor zoom_bg(std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Disabled), std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed),
|
||||||
std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered), std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Enabled),
|
std::pair<wxColour, int>(wxColour(238, 238, 238), 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));
|
||||||
@@ -81,15 +81,14 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
StateColor zoom_bd(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled), std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
|
StateColor zoom_bd(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled), std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
|
||||||
StateColor zoom_text(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled), std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
|
StateColor zoom_text(std::pair<wxColour, int>(wxColour(144, 144, 144), StateColor::Disabled), std::pair<wxColour, int>(wxColour(38, 46, 48), StateColor::Enabled));
|
||||||
|
|
||||||
m_zoom_out_btn = new Button(m_book_third_panel, _L(""));
|
m_zoom_out_btn = new Button(m_book_third_panel, wxEmptyString);
|
||||||
m_zoom_out_btn->SetIcon("canvas_zoom_out");
|
m_zoom_out_btn->SetIcon("canvas_zoom_out");
|
||||||
m_zoom_out_btn->SetToolTip(_L("Zoom Out"));
|
m_zoom_out_btn->SetToolTip(_L("Zoom Out"));
|
||||||
m_zoom_out_btn->SetBackgroundColor(zoom_bg);
|
m_zoom_out_btn->SetBackgroundColor(zoom_bg);
|
||||||
m_zoom_out_btn->SetBorderColor(wxColour(238, 238, 238));
|
m_zoom_out_btn->SetBorderColor(wxColour(238, 238, 238));
|
||||||
m_zoom_out_btn->SetCornerRadius(0);
|
m_zoom_out_btn->SetCornerRadius(0);
|
||||||
m_zoom_out_btn->SetMinSize(wxSize(FromDIP(54), FromDIP(26)));
|
m_zoom_out_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
|
||||||
m_canvas_btn_sizer->Add(m_zoom_out_btn, 0, wxEXPAND, 0);
|
|
||||||
|
|
||||||
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),
|
||||||
@@ -97,114 +96,134 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
m_percent_label = new Button(m_book_third_panel, _L("100 %"));
|
m_percent_label = new Button(m_book_third_panel, _L("100 %"));
|
||||||
m_percent_label->SetBackgroundColor(percent_bg);
|
m_percent_label->SetBackgroundColor(percent_bg);
|
||||||
m_percent_label->SetBorderColor(wxColour(238, 238, 238));
|
m_percent_label->SetBorderColor(wxColour(238, 238, 238));
|
||||||
m_percent_label->SetMinSize(wxSize(FromDIP(54), FromDIP(26)));
|
m_percent_label->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
m_percent_label->SetCornerRadius(0);
|
m_percent_label->SetCornerRadius(0);
|
||||||
m_canvas_btn_sizer->Add( m_percent_label, 0, wxEXPAND, 0 );
|
|
||||||
|
|
||||||
m_zoom_in_btn = new Button(m_book_third_panel, _L(""));
|
m_zoom_in_btn = new Button(m_book_third_panel, wxEmptyString);
|
||||||
m_zoom_in_btn->SetIcon("canvas_zoom_in");
|
m_zoom_in_btn->SetIcon("canvas_zoom_in");
|
||||||
m_zoom_in_btn->SetToolTip(_L("Zoom In"));
|
m_zoom_in_btn->SetToolTip(_L("Zoom In"));
|
||||||
m_zoom_in_btn->SetBackgroundColor(zoom_bg);
|
m_zoom_in_btn->SetBackgroundColor(zoom_bg);
|
||||||
m_zoom_in_btn->SetBorderColor(wxColour(238, 238, 238));
|
m_zoom_in_btn->SetBorderColor(wxColour(238, 238, 238));
|
||||||
m_zoom_in_btn->SetMinSize(wxSize(FromDIP(54), FromDIP(26)));
|
m_zoom_in_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
m_zoom_in_btn->SetCornerRadius(0);
|
m_zoom_in_btn->SetCornerRadius(0);
|
||||||
m_canvas_btn_sizer->Add(m_zoom_in_btn, 0, wxEXPAND, 0);
|
|
||||||
|
|
||||||
m_switch_drag_btn = new Button(m_book_third_panel, _L(""));
|
m_switch_drag_btn = new Button(m_book_third_panel, wxEmptyString);
|
||||||
m_switch_drag_btn->SetIcon("canvas_drag");
|
m_switch_drag_btn->SetIcon("canvas_drag");
|
||||||
m_switch_drag_btn->SetToolTip(_L("Drag"));
|
m_switch_drag_btn->SetToolTip(_L("Drag"));
|
||||||
m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
|
m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
|
||||||
m_switch_drag_btn->SetBorderColor(wxColour(238, 238, 238));
|
m_switch_drag_btn->SetBorderColor(wxColour(238, 238, 238));
|
||||||
m_switch_drag_btn->SetMinSize(wxSize(FromDIP(54),FromDIP(26)));
|
m_switch_drag_btn->SetMinSize(wxSize(FromDIP(56),FromDIP(28)));
|
||||||
m_switch_drag_btn->SetCornerRadius(0);
|
m_switch_drag_btn->SetCornerRadius(0);
|
||||||
m_canvas_btn_sizer->Add( m_switch_drag_btn, 0, wxEXPAND, FromDIP(5) );
|
|
||||||
|
|
||||||
m_canvas_sizer->Add(m_canvas_btn_sizer, 0, wxALIGN_CENTER_HORIZONTAL, FromDIP(10));
|
m_canvas_btn_sizer->Add(m_zoom_out_btn, 0, wxEXPAND | wxLEFT, FromDIP(105));
|
||||||
|
m_canvas_btn_sizer->Add( m_percent_label, 0, wxEXPAND, 0 );
|
||||||
m_dlg_content_sizer->Add( m_canvas_sizer, 0, wxALL, FromDIP(10) );
|
m_canvas_btn_sizer->Add(m_zoom_in_btn, 0, wxEXPAND, 0);
|
||||||
|
m_canvas_btn_sizer->Add( m_switch_drag_btn, 0, wxEXPAND | wxRIGHT, FromDIP(88) );
|
||||||
|
|
||||||
m_list_sizer = new wxBoxSizer( wxVERTICAL );
|
m_list_sizer = new wxBoxSizer( wxVERTICAL );
|
||||||
m_list_sizer->SetMinSize( wxSize( FromDIP(267),FromDIP(422) ) );
|
m_list_sizer->SetMinSize( wxSize( FromDIP(267),FromDIP(422) ) );
|
||||||
|
|
||||||
auto all_checkbox_sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto all_checkbox_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
m_all_checkbox = new CheckBox(m_book_third_panel, wxID_ANY);
|
m_all_checkbox = new CheckBox(m_book_third_panel, wxID_ANY);
|
||||||
m_all_checkbox->SetValue(false);
|
m_all_checkbox->SetValue(false);
|
||||||
|
m_all_checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
|
||||||
m_all_checkbox->SetBackgroundColour(*wxWHITE);
|
m_all_checkbox->SetBackgroundColour(*wxWHITE);
|
||||||
m_all_label = new Label(m_book_third_panel, _L("Select All"));
|
m_all_label = new Label(m_book_third_panel, _L("Select All"));
|
||||||
m_all_label->Wrap(-1);
|
m_all_label->Wrap(-1);
|
||||||
|
m_all_label->SetMinSize(wxSize(-1, FromDIP(18)));
|
||||||
m_all_label->SetBackgroundColour(*wxWHITE);
|
m_all_label->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
m_all_label->SetMinSize(wxSize(267, -1));
|
m_all_label->SetMinSize(wxSize(267, -1));
|
||||||
m_all_label->SetMaxSize(wxSize(267, -1));
|
m_all_label->SetMaxSize(wxSize(267, -1));
|
||||||
all_checkbox_sizer->Add(m_all_checkbox, 0, wxALL | wxALIGN_CENTER_VERTICAL, 0);
|
all_checkbox_sizer->Add(m_all_checkbox, 0, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
all_checkbox_sizer->Add(m_all_label, 0, wxALL | wxALIGN_CENTER_VERTICAL, 0);
|
all_checkbox_sizer->Add(m_all_label, 0, wxLEFT| wxALIGN_CENTER_VERTICAL, FromDIP(8));
|
||||||
|
|
||||||
m_list_sizer->Add(all_checkbox_sizer, 0, wxALL, FromDIP(5));
|
|
||||||
|
|
||||||
m_line = new wxPanel(m_book_third_panel, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(267), FromDIP(1)), wxTAB_TRAVERSAL);
|
m_line = new wxPanel(m_book_third_panel, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(267), FromDIP(1)), wxTAB_TRAVERSAL);
|
||||||
m_line->SetBackgroundColour( wxColor(238, 238, 238) );
|
m_line->SetMinSize(wxSize(FromDIP(267), 1));
|
||||||
|
m_line->SetMaxSize(wxSize(FromDIP(267), 1));
|
||||||
m_list_sizer->Add(m_line, 0, wxEXPAND, 0);
|
m_line->SetBackgroundColour( wxColor(238, 238, 238) );
|
||||||
|
|
||||||
m_list_view = new wxScrolledWindow( m_book_third_panel, wxID_ANY, wxDefaultPosition, wxSize( 267,-1 ), wxHSCROLL|wxVSCROLL );
|
m_list_view = new wxScrolledWindow( m_book_third_panel, wxID_ANY, wxDefaultPosition, wxSize( 267,-1 ), wxHSCROLL|wxVSCROLL );
|
||||||
m_list_view->SetScrollRate( 5, 5 );
|
m_list_view->SetScrollRate( 5, 5 );
|
||||||
m_list_view->SetMinSize( wxSize( FromDIP(267),FromDIP(410) ) );
|
m_list_view->SetMinSize( wxSize( FromDIP(267),FromDIP(378)));
|
||||||
m_list_view->SetMaxSize(wxSize(FromDIP(267), FromDIP(410)));
|
m_list_view->SetMaxSize(wxSize(FromDIP(267), FromDIP(378)));
|
||||||
m_list_view->SetBackgroundColour(*wxWHITE);
|
m_list_view->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
m_scroll_sizer = new wxBoxSizer(wxVERTICAL);
|
m_scroll_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
m_list_view->SetSizer(m_scroll_sizer);
|
m_list_view->SetSizer(m_scroll_sizer);
|
||||||
m_list_view->Layout();
|
m_list_view->Layout();
|
||||||
|
|
||||||
m_list_sizer->Add(m_list_view, 0, wxEXPAND, 0);
|
|
||||||
|
|
||||||
m_dlg_content_sizer->Add( m_list_sizer, 0, wxALL, FromDIP(15) );
|
|
||||||
|
|
||||||
|
|
||||||
m_dlg_sizer->Add( m_dlg_content_sizer, 0, wxEXPAND, FromDIP(5) );
|
|
||||||
|
|
||||||
m_dlg_btn_sizer = new wxBoxSizer( wxHORIZONTAL );
|
m_dlg_btn_sizer = new wxBoxSizer( wxHORIZONTAL );
|
||||||
m_dlg_btn_sizer->SetMinSize(wxSize(FromDIP(720), FromDIP(54)));
|
m_dlg_btn_sizer->SetMinSize(wxSize(-1, FromDIP(54)));
|
||||||
|
|
||||||
m_cnt_label = new Label(m_book_third_panel, _L("cnt 1"));
|
m_cnt_label = new Label(m_book_third_panel, wxEmptyString);
|
||||||
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_15);
|
||||||
m_dlg_btn_sizer->Add(0, 0, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
m_cnt_label->SetSize(wxSize(-1, FromDIP(20)));
|
||||||
m_dlg_btn_sizer->Add( m_cnt_label, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(0) );
|
m_cnt_label->SetMaxSize(wxSize(-1, FromDIP(20)));
|
||||||
|
|
||||||
m_tot_label = new Label(m_book_third_panel, _L("tot 15"));
|
m_tot_label = new Label(m_book_third_panel, wxEmptyString);
|
||||||
m_tot_label->Wrap( -1 );
|
m_tot_label->Wrap( -1 );
|
||||||
m_tot_label->SetBackgroundColour(*wxWHITE);
|
m_tot_label->SetBackgroundColour(*wxWHITE);
|
||||||
|
m_tot_label->SetMinSize(wxSize(FromDIP(200), FromDIP(20)));
|
||||||
m_dlg_btn_sizer->Add(m_tot_label, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
|
||||||
m_dlg_btn_sizer->Add(0, 0, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL, FromDIP(5));
|
|
||||||
|
|
||||||
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));
|
||||||
|
|
||||||
|
|
||||||
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
|
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
|
||||||
std::pair<wxColour, int>(wxColour(0, 177, 66), StateColor::Normal));
|
std::pair<wxColour, int>(wxColour(0, 177, 66), StateColor::Normal));
|
||||||
|
|
||||||
m_apply_btn = new Button(m_book_third_panel, wxString(_L("Skip")));
|
m_apply_btn = new Button(m_book_third_panel, _L("Skip"));
|
||||||
m_apply_btn->SetBackgroundColor(btn_bg_green);
|
m_apply_btn->SetBackgroundColor(btn_bg_green);
|
||||||
m_apply_btn->SetTextColor(*wxWHITE);
|
m_apply_btn->SetTextColor(*wxWHITE);
|
||||||
// m_apply_btn->SetBorderColor(wxColour(38, 46, 48));
|
// m_apply_btn->SetBorderColor(wxColour(38, 46, 48));
|
||||||
m_apply_btn->SetFont(Label::Body_14);
|
m_apply_btn->SetFont(Label::Body_14);
|
||||||
m_apply_btn->SetSize(wxSize(-1, FromDIP(32)));
|
m_apply_btn->SetSize(wxSize(FromDIP(80), FromDIP(32)));
|
||||||
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_dlg_btn_sizer->Add(m_apply_btn, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(15));
|
|
||||||
|
|
||||||
m_dlg_sizer->Add( m_dlg_btn_sizer, 0, wxEXPAND, FromDIP(5) );
|
|
||||||
|
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_list_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
|
|
||||||
|
m_list_sizer->Add(0, 0, 0, wxTOP , FromDIP(27));
|
||||||
|
m_list_sizer->Add(all_checkbox_sizer, 0, wxLEFT , FromDIP(0));
|
||||||
|
m_list_sizer->Add(m_line, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(12));
|
||||||
|
m_list_sizer->Add(m_list_view, 0, wxEXPAND, 0);
|
||||||
|
m_list_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
|
|
||||||
|
m_dlg_content_sizer->Add( m_canvas_sizer, 0, wxEXPAND, FromDIP(0) );
|
||||||
|
m_dlg_content_sizer->Add( 0, 0, 0, wxEXPAND | wxLEFT, FromDIP(22) );
|
||||||
|
m_dlg_content_sizer->Add( m_list_sizer, 0, wxRIGHT | wxEXPAND, FromDIP(14) );
|
||||||
|
|
||||||
|
m_dlg_btn_sizer->Add(0, 0, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(21));
|
||||||
|
m_dlg_btn_sizer->Add(m_cnt_label, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0) );
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
m_dlg_btn_sizer->Add(m_tot_label, 0, wxLEFT |wxTOP| wxALIGN_CENTER_VERTICAL, FromDIP(2));
|
||||||
|
#else
|
||||||
|
m_dlg_btn_sizer->Add(m_tot_label, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 0);
|
||||||
|
#endif
|
||||||
|
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(0, 0, 0, wxLEFT | wxEXPAND| wxALIGN_CENTER_VERTICAL, FromDIP(24));
|
||||||
|
|
||||||
|
m_dlg_placeholder = new wxPanel(m_book_third_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
|
||||||
|
m_dlg_placeholder->SetMinSize(wxSize(-1, FromDIP(15)));
|
||||||
|
m_dlg_placeholder->SetMaxSize(wxSize(-1, FromDIP(15)));
|
||||||
|
m_dlg_placeholder->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
|
m_dlg_sizer->Add( m_dlg_content_sizer, 1, wxEXPAND, FromDIP(0) );
|
||||||
|
// m_dlg_sizer->Add( 0, 0, 1, wxEXPAND, FromDIP(0));
|
||||||
|
m_dlg_sizer->Add( m_dlg_btn_sizer, 0, wxEXPAND, FromDIP(0));
|
||||||
|
m_dlg_sizer->Add( m_dlg_placeholder, 0, 0, wxEXPAND, 0);
|
||||||
|
|
||||||
m_book_third_panel->SetSizer( m_dlg_sizer );
|
m_book_third_panel->SetSizer( m_dlg_sizer );
|
||||||
m_book_third_panel->Layout();
|
m_book_third_panel->Layout();
|
||||||
m_dlg_sizer->Fit( m_book_third_panel );
|
m_dlg_sizer->Fit( m_book_third_panel );
|
||||||
|
|
||||||
// page 2
|
// page 2
|
||||||
m_book_second_panel = new wxPanel( m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
m_book_second_panel = new wxPanel( m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||||
m_book_second_panel->SetBackgroundColour(*wxWHITE);
|
m_book_second_panel->SetBackgroundColour(*wxWHITE);
|
||||||
@@ -237,35 +256,34 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
// page 1
|
// page 1
|
||||||
m_book_first_panel = new wxPanel( m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
m_book_first_panel = new wxPanel( m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
|
||||||
m_book_first_sizer = new wxBoxSizer( wxVERTICAL );
|
m_book_first_sizer = new wxBoxSizer( wxVERTICAL );
|
||||||
m_book_first_sizer->SetMinSize(wxSize(FromDIP(720), FromDIP(500)));
|
// m_book_first_sizer->SetMinSize(wxSize(FromDIP(720), FromDIP(500)));
|
||||||
|
|
||||||
// auto m_loading_sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto m_loading_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
// std::vector<std::string> list{"ams_rfid_1", "ams_rfid_2", "ams_rfid_3", "ams_rfid_4"};
|
std::vector<std::string> list{"ams_rfid_1", "ams_rfid_2", "ams_rfid_3", "ams_rfid_4"};
|
||||||
// m_loading_icon = new AnimaIcon(m_book_first_panel, wxID_ANY, list, "refresh_printer", 100);
|
m_loading_icon = new AnimaIcon(m_book_first_panel, wxID_ANY, list, "refresh_printer", 100);
|
||||||
|
m_loading_icon->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
|
||||||
|
|
||||||
m_loading_label = new Label( m_book_first_panel, wxString(_L("Skipping Objects Information Loading ...")));
|
m_loading_label = new Label( m_book_first_panel, _L("Loading ..."));
|
||||||
m_loading_label->Wrap( -1 );
|
m_loading_label->Wrap( -1 );
|
||||||
m_loading_label->SetBackgroundColour(*wxWHITE);
|
m_loading_label->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
// m_loading_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
m_loading_sizer->Add(m_loading_icon, 0, wxALL, FromDIP(5));
|
||||||
// m_loading_sizer->Add(m_loading_icon, 0, wxALL, FromDIP(5));
|
m_loading_sizer->Add(m_loading_label, 0, wxALL, FromDIP(5));
|
||||||
// m_loading_sizer->Add(m_loading_label, 0, wxALL, FromDIP(5));
|
|
||||||
// m_loading_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
|
||||||
|
|
||||||
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_label, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 0);
|
m_book_first_sizer->Add( m_loading_sizer, 0, wxALIGN_CENTER_VERTICAL|wxALIGN_CENTER_HORIZONTAL, 0);
|
||||||
m_book_first_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
m_book_first_sizer->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
|
|
||||||
m_book_first_panel->SetSizer( m_book_first_sizer );
|
m_book_first_panel->SetSizer( m_book_first_sizer );
|
||||||
m_book_first_panel->Layout();
|
m_book_first_panel->Layout();
|
||||||
m_book_first_sizer->Fit( m_book_first_panel );
|
m_book_first_sizer->Fit( m_book_first_panel );
|
||||||
|
|
||||||
m_simplebook->AddPage( m_book_first_panel, _("loading page"), false );
|
m_simplebook->AddPage( m_book_first_panel, _("loading page"), false );
|
||||||
m_simplebook->AddPage( m_book_second_panel, _("retry page"), false );
|
m_simplebook->AddPage( m_book_second_panel, _("retry page"), false );
|
||||||
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);
|
||||||
@@ -275,7 +293,7 @@ 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();
|
Fit();
|
||||||
Layout();
|
Layout();
|
||||||
CentreOnParent();
|
CentreOnParent();
|
||||||
@@ -283,7 +301,74 @@ PartSkipDialog::PartSkipDialog(wxWindow* parent): DPIDialog(parent, wxID_ANY, _L
|
|||||||
|
|
||||||
PartSkipDialog::~PartSkipDialog() {}
|
PartSkipDialog::~PartSkipDialog() {}
|
||||||
|
|
||||||
void PartSkipDialog::on_dpi_changed(const wxRect& suggested_rect) { Fit(); }
|
void PartSkipDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
||||||
|
m_canvas->LoadPickImage(m_local_paths[0]);
|
||||||
|
|
||||||
|
m_loading_icon->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
|
||||||
|
|
||||||
|
m_percent_label->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
m_percent_label->SetMaxSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
m_zoom_out_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
m_zoom_out_btn->SetMaxSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
m_zoom_in_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
m_zoom_in_btn->SetMaxSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
m_switch_drag_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
m_switch_drag_btn->SetMaxSize(wxSize(FromDIP(56), FromDIP(28)));
|
||||||
|
m_percent_label->Rescale();
|
||||||
|
m_zoom_out_btn->Rescale();
|
||||||
|
m_zoom_in_btn->Rescale();
|
||||||
|
m_switch_drag_btn->Rescale();
|
||||||
|
|
||||||
|
m_cnt_label->SetMaxSize(wxSize(-1, FromDIP(20)));
|
||||||
|
|
||||||
|
m_tot_label->SetMinSize(wxSize(FromDIP(200), FromDIP(20)));
|
||||||
|
m_tot_label->SetLabel(m_tot_label->GetLabel());
|
||||||
|
m_tot_label->Refresh();
|
||||||
|
|
||||||
|
m_line_top->SetMinSize(wxSize(-1, 1));
|
||||||
|
m_line->SetMinSize(wxSize(FromDIP(267), 1));
|
||||||
|
m_line->SetMaxSize(wxSize(FromDIP(267), 1));
|
||||||
|
|
||||||
|
|
||||||
|
m_apply_btn->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
||||||
|
m_apply_btn->SetCornerRadius(FromDIP(16));
|
||||||
|
m_apply_btn->Rescale();
|
||||||
|
|
||||||
|
m_dlg_placeholder->SetMinSize(wxSize(-1, FromDIP(15)));
|
||||||
|
m_dlg_placeholder->SetMaxSize(wxSize(-1, FromDIP(15)));
|
||||||
|
|
||||||
|
// m_second_retry_btn->SetSize(wxSize(-1, FromDIP(32)));
|
||||||
|
m_second_retry_btn->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
||||||
|
m_second_retry_btn->SetCornerRadius(FromDIP(16));
|
||||||
|
m_second_retry_btn->Rescale();
|
||||||
|
|
||||||
|
|
||||||
|
m_all_checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
|
||||||
|
m_all_checkbox->Rescale();
|
||||||
|
|
||||||
|
for (auto it = m_scroll_sizer->GetChildren().begin(); it != m_scroll_sizer->GetChildren().end(); ++it) {
|
||||||
|
wxSizerItem *item = *it;
|
||||||
|
if (item && item->IsSizer()) {
|
||||||
|
wxSizer* sizer = item->GetSizer();
|
||||||
|
auto check_item = sizer->GetItem((size_t)0);
|
||||||
|
if (check_item && check_item->IsWindow())
|
||||||
|
{
|
||||||
|
wxWindow *window = check_item->GetWindow();
|
||||||
|
CheckBox *checkbox = dynamic_cast<CheckBox *>(window);
|
||||||
|
checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
|
||||||
|
checkbox->Rescale();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m_canvas_btn_sizer->SetMinSize(wxSize(-1, FromDIP(28)));
|
||||||
|
m_canvas_btn_sizer->Layout();
|
||||||
|
m_canvas_sizer->Layout();
|
||||||
|
m_dlg_content_sizer->Layout();
|
||||||
|
m_dlg_sizer->Layout();
|
||||||
|
|
||||||
|
Fit();
|
||||||
|
Layout();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string PartSkipDialog::create_tmp_path(){
|
std::string PartSkipDialog::create_tmp_path(){
|
||||||
@@ -307,10 +392,10 @@ std::string PartSkipDialog::create_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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -323,7 +408,7 @@ 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;
|
int plate_idx = m_obj ? m_obj->m_plate_index : 1;
|
||||||
|
|
||||||
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(plate_idx) + ".png");
|
||||||
@@ -333,17 +418,22 @@ void PartSkipDialog::DownloadPartsFile()
|
|||||||
m_target_paths.push_back("Metadata/pick_" + std::to_string(plate_idx) + ".png");
|
m_target_paths.push_back("Metadata/pick_" + std::to_string(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");
|
||||||
|
|
||||||
if (!is_local_file_existed(m_local_paths)) {
|
if (!is_local_file_existed(m_local_paths)) {
|
||||||
m_file_sys = boost::make_shared<PrinterFileSystem>();
|
if(!m_file_sys){
|
||||||
m_file_sys->Attached();
|
m_file_sys = boost::make_shared<PrinterFileSystem>();
|
||||||
m_file_sys->Bind(EVT_STATUS_CHANGED, &PartSkipDialog::OnFileSystemEvent, this);
|
m_file_sys->Attached();
|
||||||
m_file_sys->Bind(EVT_RAMDOWNLOAD, &PartSkipDialog::OnFileSystemResult, this);
|
m_file_sys->Bind(EVT_STATUS_CHANGED, &PartSkipDialog::OnFileSystemEvent, this);
|
||||||
m_file_sys->Start();
|
m_file_sys->Bind(EVT_RAMDOWNLOAD, &PartSkipDialog::OnFileSystemResult, this);
|
||||||
|
m_file_sys->Start();
|
||||||
|
}else{
|
||||||
|
m_file_sys->Retry();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
m_file_sys->SendExistedFile();
|
m_file_sys->SendExistedFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// actor
|
||||||
void PartSkipDialog::fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs)
|
void PartSkipDialog::fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs)
|
||||||
{
|
{
|
||||||
boost::shared_ptr fs(wfs.lock());
|
boost::shared_ptr fs(wfs.lock());
|
||||||
@@ -358,13 +448,18 @@ void PartSkipDialog::fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs)
|
|||||||
}
|
}
|
||||||
std::string dev_ver = obj->get_ota_version();
|
std::string dev_ver = obj->get_ota_version();
|
||||||
std::string dev_id = obj->dev_id;
|
std::string dev_id = obj->dev_id;
|
||||||
int remote_proto = obj->get_file_remote();
|
// int remote_proto = obj->get_file_remote();
|
||||||
|
|
||||||
NetworkAgent *agent = wxGetApp().getAgent();
|
NetworkAgent *agent = wxGetApp().getAgent();
|
||||||
std::string agent_version = agent ? agent->get_version() : "";
|
std::string agent_version = agent ? agent->get_version() : "";
|
||||||
|
|
||||||
|
auto url_state = m_url_state;
|
||||||
|
if(obj->is_lan_mode_printer()){
|
||||||
|
url_state = URL_TCP;
|
||||||
|
}
|
||||||
|
|
||||||
if (agent) {
|
if (agent) {
|
||||||
switch (m_url_state) {
|
switch (url_state) {
|
||||||
case URL_TCP: {
|
case URL_TCP: {
|
||||||
std::string devIP = obj->dev_ip;
|
std::string devIP = obj->dev_ip;
|
||||||
std::string accessCode = obj->get_access_code();
|
std::string accessCode = obj->get_access_code();
|
||||||
@@ -379,10 +474,10 @@ void PartSkipDialog::fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs)
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case URL_TUTK: {
|
case URL_TUTK: {
|
||||||
std::string protocols[] = {"", "\"tutk\"", "\"agora\"", "\"tutk\",\"agora\""};
|
std::string protocols[] = {"", "\"tutk\"", "\"agora\"", "\"tutk\",\"agora\""};
|
||||||
agent->get_camera_url(obj->dev_id + "|" + dev_ver + "|" + protocols[1], [this, wfs, m = dev_id, v = agent->get_version(), dv = dev_ver](std::string url) {
|
agent->get_camera_url(obj->dev_id + "|" + dev_ver + "|" + protocols[3], [this, wfs, m = dev_id, v = agent->get_version(), dv = dev_ver](std::string url) {
|
||||||
if (boost::algorithm::starts_with(url, "bambu:///")) {
|
if (boost::algorithm::starts_with(url, "bambu:///")) {
|
||||||
url += "&device=" + m;
|
url += "&device=" + m;
|
||||||
url += "&net_ver=" + v;
|
url += "&net_ver=" + v;
|
||||||
@@ -391,8 +486,6 @@ void PartSkipDialog::fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs)
|
|||||||
url += "&cli_id=" + wxGetApp().app_config->get("slicer_uuid");
|
url += "&cli_id=" + wxGetApp().app_config->get("slicer_uuid");
|
||||||
url += "&cli_ver=" + std::string(SLIC3R_VERSION);
|
url += "&cli_ver=" + std::string(SLIC3R_VERSION);
|
||||||
}
|
}
|
||||||
BOOST_LOG_TRIVIAL(info) << "SendToPrinter::fetchUrl: camera_url: " << hide_passwd(url, {"?uid=", "authkey=", "passwd="});
|
|
||||||
std::cout << "SendToPrinter::fetchUrl: camera_url: " << hide_passwd(url, {"?uid=", "authkey=", "passwd="});
|
|
||||||
CallAfter([=] {
|
CallAfter([=] {
|
||||||
boost::shared_ptr fs(wfs.lock());
|
boost::shared_ptr fs(wfs.lock());
|
||||||
if (!fs) return;
|
if (!fs) return;
|
||||||
@@ -402,14 +495,14 @@ void PartSkipDialog::fetchUrl(boost::weak_ptr<PrinterFileSystem> wfs)
|
|||||||
fs->SetUrl("3");
|
fs->SetUrl("3");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// controller
|
||||||
void PartSkipDialog::OnFileSystemEvent(wxCommandEvent &e)
|
void PartSkipDialog::OnFileSystemEvent(wxCommandEvent &e)
|
||||||
{
|
{
|
||||||
e.Skip();
|
e.Skip();
|
||||||
@@ -419,20 +512,26 @@ void PartSkipDialog::OnFileSystemEvent(wxCommandEvent &e)
|
|||||||
|
|
||||||
wxString msg;
|
wxString msg;
|
||||||
int status = e.GetInt();
|
int status = e.GetInt();
|
||||||
int extra = e.GetExtraLong();
|
// int extra = e.GetExtraLong();
|
||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case PrinterFileSystem::Initializing:
|
case PrinterFileSystem::Initializing:
|
||||||
case PrinterFileSystem::Connecting: break;
|
case PrinterFileSystem::Connecting: break;
|
||||||
case PrinterFileSystem::ListSyncing: {
|
case PrinterFileSystem::ListSyncing: {
|
||||||
m_file_sys->GetPickImages(m_local_paths, m_target_paths);
|
m_file_sys->GetPickImages(m_local_paths, m_target_paths);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PrinterFileSystem::Failed: {
|
case PrinterFileSystem::Failed: {
|
||||||
m_file_sys->SendConnectFail();
|
m_file_sys->Stop();
|
||||||
break;
|
if( m_url_state == URL_TCP){
|
||||||
}
|
m_url_state = URL_TUTK;
|
||||||
case PrinterFileSystem::Reconnecting: break;
|
m_file_sys->Retry();
|
||||||
|
}else{
|
||||||
|
m_file_sys->SendConnectFail();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case PrinterFileSystem::Reconnecting: break;
|
||||||
}
|
}
|
||||||
if (e.GetInt() == PrinterFileSystem::Initializing) {
|
if (e.GetInt() == PrinterFileSystem::Initializing) {
|
||||||
CallAfter([=] {
|
CallAfter([=] {
|
||||||
@@ -442,33 +541,26 @@ void PartSkipDialog::OnFileSystemEvent(wxCommandEvent &e)
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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();
|
||||||
if (result == 0) {
|
if (result == 0) {
|
||||||
InitDialogUI();
|
InitDialogUI();
|
||||||
SetSimplebookPage(2);
|
SetSimplebookPage(2);
|
||||||
|
m_file_sys->Stop();
|
||||||
}else{
|
}else{
|
||||||
switch (m_url_state) {
|
m_url_state = URL_TCP;
|
||||||
case URL_TCP: {
|
|
||||||
m_url_state = URL_TUTK;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case URL_TUTK: {
|
|
||||||
m_url_state = URL_TCP;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
SetSimplebookPage(1);
|
SetSimplebookPage(1);
|
||||||
|
m_file_sys->Stop();
|
||||||
}
|
}
|
||||||
// wxMilliSleep(1000);
|
|
||||||
// m_loading_icon->Stop();
|
|
||||||
Refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -485,9 +577,9 @@ bool PartSkipDialog::is_drag_mode(){
|
|||||||
|
|
||||||
PartsInfo PartSkipDialog::GetPartsInfo(){
|
PartsInfo PartSkipDialog::GetPartsInfo(){
|
||||||
PartsInfo parts_info;
|
PartsInfo parts_info;
|
||||||
for (auto [part_id, part_state] : this->m_parts_state)
|
for (auto [part_id, part_state] : this->m_parts_state)
|
||||||
{
|
{
|
||||||
parts_info.push_back(std::pair<int, PartState>(part_id, part_state));
|
parts_info.push_back(std::pair<int, PartState>(part_id, part_state));
|
||||||
}
|
}
|
||||||
return parts_info;
|
return parts_info;
|
||||||
}
|
}
|
||||||
@@ -497,7 +589,7 @@ void PartSkipDialog::OnZoomIn(wxCommandEvent &event){
|
|||||||
UpdateZoomPercent();
|
UpdateZoomPercent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::OnZoomOut(wxCommandEvent &event){
|
void PartSkipDialog::OnZoomOut(wxCommandEvent &event){
|
||||||
m_canvas->ZoomOut(20);
|
m_canvas->ZoomOut(20);
|
||||||
UpdateZoomPercent();
|
UpdateZoomPercent();
|
||||||
}
|
}
|
||||||
@@ -512,7 +604,7 @@ void PartSkipDialog::OnSwitchDrag(wxCommandEvent& event){
|
|||||||
m_switch_drag_btn->SetBackgroundColor(wxColour(0, 174, 66));
|
m_switch_drag_btn->SetBackgroundColor(wxColour(0, 174, 66));
|
||||||
m_switch_drag_btn->SetIcon("canvas_drag_active");
|
m_switch_drag_btn->SetIcon("canvas_drag_active");
|
||||||
}
|
}
|
||||||
m_canvas->SwitchDrag(m_is_drag);
|
m_canvas->SwitchDrag(m_is_drag);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipDialog::OnZoomPercent(wxCommandEvent &event) {
|
void PartSkipDialog::OnZoomPercent(wxCommandEvent &event) {
|
||||||
@@ -549,14 +641,14 @@ void PartSkipDialog::UpdatePartsStateFromCanvas(wxCommandEvent &event) {
|
|||||||
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) {
|
||||||
if (part_state == PartState::psChecked) check_cnt++;
|
if (part_state == PartState::psChecked) check_cnt++;
|
||||||
if (part_state != PartState::psSkipped) tot_cnt++;
|
if (part_state != PartState::psSkipped) tot_cnt++;
|
||||||
}
|
}
|
||||||
@@ -584,7 +676,7 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
m_parts_name.clear();
|
m_parts_name.clear();
|
||||||
|
|
||||||
string pick_img = m_local_paths[0];
|
string pick_img = m_local_paths[0];
|
||||||
string model_settings = m_local_paths[1];
|
string slice_info = m_local_paths[2];
|
||||||
|
|
||||||
m_switch_drag_btn->SetIcon("canvas_drag");
|
m_switch_drag_btn->SetIcon("canvas_drag");
|
||||||
m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
|
m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
|
||||||
@@ -593,7 +685,7 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
m_canvas->SetZoomPercent(100);
|
m_canvas->SetZoomPercent(100);
|
||||||
m_canvas->SetOffset(wxPoint(0, 0));
|
m_canvas->SetOffset(wxPoint(0, 0));
|
||||||
m_canvas->LoadPickImage(pick_img);
|
m_canvas->LoadPickImage(pick_img);
|
||||||
ModelSettingHelper helper(model_settings);
|
ModelSettingHelper helper(slice_info);
|
||||||
|
|
||||||
if (helper.Parse()) {
|
if (helper.Parse()) {
|
||||||
auto parse_result = helper.GetResults();
|
auto parse_result = helper.GetResults();
|
||||||
@@ -607,13 +699,13 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
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) {
|
||||||
auto line_sizer = new wxBoxSizer(wxHORIZONTAL);
|
auto line_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
auto checkbox = new CheckBox(m_list_view);
|
auto checkbox = new CheckBox(m_list_view);
|
||||||
auto label = new Label(m_list_view, _L("file 0"));
|
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);
|
||||||
@@ -624,7 +716,7 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
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);
|
||||||
checkbox->Enable(true);
|
checkbox->Enable(true);
|
||||||
@@ -639,15 +731,18 @@ void PartSkipDialog::InitDialogUI() {
|
|||||||
label->SetBackgroundColour(*wxWHITE);
|
label->SetBackgroundColour(*wxWHITE);
|
||||||
label->SetForegroundColour(wxColor(107,107,107));
|
label->SetForegroundColour(wxColor(107,107,107));
|
||||||
label->Wrap(-1);
|
label->Wrap(-1);
|
||||||
|
label->SetMinSize(wxSize(-1, FromDIP(18)));
|
||||||
checkbox->SetBackgroundColour(*wxWHITE);
|
checkbox->SetBackgroundColour(*wxWHITE);
|
||||||
|
checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
|
||||||
line_sizer->Add(checkbox, 0, wxALL | wxALIGN_CENTER_VERTICAL, 0);
|
checkbox->SetMaxSize(wxSize(FromDIP(18), FromDIP(18)));
|
||||||
line_sizer->Add(label, 1, wxALL | wxALIGN_CENTER_VERTICAL, 0);
|
|
||||||
m_scroll_sizer->Add(line_sizer, 0, wxALL, FromDIP(5));
|
line_sizer->Add(checkbox, 0, wxALIGN_CENTER_VERTICAL, 0);
|
||||||
|
line_sizer->Add(label, 1, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(8));
|
||||||
|
m_scroll_sizer->Add(line_sizer, 0, wxBOTTOM | wxEXPAND, FromDIP(12));
|
||||||
}
|
}
|
||||||
m_canvas->UpdatePartsInfo(GetPartsInfo());
|
m_canvas->UpdatePartsInfo(GetPartsInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_scroll_sizer->Layout();
|
m_scroll_sizer->Layout();
|
||||||
UpdateCountLabel();
|
UpdateCountLabel();
|
||||||
Refresh();
|
Refresh();
|
||||||
@@ -674,26 +769,25 @@ void PartSkipDialog::UpdateDialogUI(){
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (auto it = m_parts_state.begin(); it != m_parts_state.end(); ++it) {
|
for (auto it = m_parts_state.begin(); it != m_parts_state.end(); ++it) {
|
||||||
int idx = std::distance(m_parts_state.begin(), it);
|
int idx = std::distance(m_parts_state.begin(), it);
|
||||||
auto part_id = it->first;
|
|
||||||
auto part_state = it->second;
|
auto part_state = it->second;
|
||||||
|
|
||||||
wxSizerItem *item = m_scroll_sizer->GetItem(idx);
|
wxSizerItem *item = m_scroll_sizer->GetItem(idx);
|
||||||
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);
|
||||||
if (part_state == PartState::psChecked) {
|
if (part_state == PartState::psChecked) {
|
||||||
checkbox->SetValue(true);
|
checkbox->SetValue(true);
|
||||||
} else if (part_state == PartState::psUnCheck) {
|
} else if (part_state == PartState::psUnCheck) {
|
||||||
checkbox->SetValue(false);
|
checkbox->SetValue(false);
|
||||||
} else {
|
} else {
|
||||||
checkbox->SetValue(true);
|
checkbox->SetValue(true);
|
||||||
checkbox->Enable(false);
|
checkbox->Enable(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -721,13 +815,13 @@ 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());
|
||||||
@@ -750,15 +844,15 @@ void PartSkipDialog::OnApplyDialog(wxCommandEvent &event)
|
|||||||
|
|
||||||
if(confirm_dialog.ShowModal() == wxID_OK){
|
if(confirm_dialog.ShowModal() == wxID_OK){
|
||||||
if (m_obj) {
|
if (m_obj) {
|
||||||
BOOST_LOG_TRIVIAL(info) << "monitor: skipping "<< m_partskip_ids.size() <<" parts dev_id =" << m_obj->dev_id;
|
BOOST_LOG_TRIVIAL(info) << "monitor: skipping "<< m_partskip_ids.size() <<" objects.";
|
||||||
|
|
||||||
bool all_skipped = true;
|
bool all_skipped = true;
|
||||||
for (auto [part_id, part_state] : m_parts_state) {
|
for (auto [part_id, part_state] : m_parts_state) {
|
||||||
if (part_state == PartState::psUnCheck) all_skipped = false;
|
if (part_state == PartState::psUnCheck) all_skipped = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (all_skipped) {
|
if (all_skipped) {
|
||||||
m_obj->command_task_abort();
|
m_obj->command_task_abort();
|
||||||
} else {
|
} else {
|
||||||
m_obj->command_task_partskip(m_partskip_ids);
|
m_obj->command_task_partskip(m_partskip_ids);
|
||||||
}
|
}
|
||||||
@@ -775,27 +869,33 @@ PartSkipConfirmDialog::PartSkipConfirmDialog(wxWindow *parent) : DPIDialog(paren
|
|||||||
std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % Slic3r::resources_dir()).str();
|
std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % Slic3r::resources_dir()).str();
|
||||||
SetIcon(wxIcon(Slic3r::encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO));
|
SetIcon(wxIcon(Slic3r::encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO));
|
||||||
SetBackgroundColour(*wxWHITE);
|
SetBackgroundColour(*wxWHITE);
|
||||||
|
SetMinSize(wxSize(FromDIP(480), FromDIP(215)));
|
||||||
SetSizeHints(wxDefaultSize, wxDefaultSize);
|
SetSizeHints(wxDefaultSize, wxDefaultSize);
|
||||||
|
|
||||||
wxBoxSizer* m_sizer;
|
wxBoxSizer* m_sizer;
|
||||||
m_sizer = new wxBoxSizer( wxVERTICAL );
|
m_sizer = new wxBoxSizer( wxVERTICAL );
|
||||||
|
|
||||||
auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
|
||||||
|
m_line_top->SetMinSize(wxSize(FromDIP(480), 1));
|
||||||
|
m_line_top->SetMaxSize(wxSize(FromDIP(480), 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, 0);
|
m_sizer->Add(m_line_top, 0, wxEXPAND, 0);
|
||||||
m_sizer->Add(0, 0, 0, wxALL, FromDIP(15));
|
m_sizer->Add(0, 0, 0, wxALL, FromDIP(15));
|
||||||
|
|
||||||
m_msg_label = new Label( this, wxString(_L("Skipping objects.")));
|
m_msg_label = new Label( this, _L("Skipping objects."));
|
||||||
m_msg_label->Wrap( -1 );
|
m_msg_label->Wrap( -1 );
|
||||||
m_msg_label->SetBackgroundColour(*wxWHITE);
|
m_msg_label->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
m_sizer->Add(m_msg_label, 0, wxLEFT, FromDIP(15));
|
|
||||||
|
|
||||||
auto m_tip_label = new Label(this, wxString(_("This action cannot be undone. Continue?")));
|
|
||||||
|
auto m_tip_label = new Label(this, _L("This action cannot be undone. Continue?"));
|
||||||
m_tip_label->Wrap(-1);
|
m_tip_label->Wrap(-1);
|
||||||
m_tip_label->SetBackgroundColour(*wxWHITE);
|
m_tip_label->SetBackgroundColour(*wxWHITE);
|
||||||
m_tip_label->SetForegroundColour(wxColor(92,92,92));
|
m_tip_label->SetForegroundColour(wxColor(92,92,92));
|
||||||
m_sizer->Add(m_tip_label, 0, wxLEFT | wxTOP, FromDIP(15));
|
|
||||||
|
m_sizer->Add(m_msg_label, 0, wxLEFT, FromDIP(29));
|
||||||
|
m_sizer->Add(0, 0, 0, wxTOP, FromDIP(9));
|
||||||
|
m_sizer->Add(m_tip_label, 0, wxLEFT, FromDIP(29));
|
||||||
|
|
||||||
wxBoxSizer* m_button_sizer;
|
wxBoxSizer* m_button_sizer;
|
||||||
m_button_sizer = new wxBoxSizer(wxHORIZONTAL);
|
m_button_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
@@ -809,7 +909,7 @@ PartSkipConfirmDialog::PartSkipConfirmDialog(wxWindow *parent) : DPIDialog(paren
|
|||||||
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
|
StateColor btn_bg_green(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
|
||||||
std::pair<wxColour, int>(wxColour(0, 177, 66), StateColor::Normal));
|
std::pair<wxColour, int>(wxColour(0, 177, 66), StateColor::Normal));
|
||||||
|
|
||||||
m_apply_button = new Button(this, wxString(_L("Continue")));
|
m_apply_button = new Button(this, _L("Continue"));
|
||||||
m_apply_button->SetBackgroundColor(btn_bg_green);
|
m_apply_button->SetBackgroundColor(btn_bg_green);
|
||||||
m_apply_button->SetTextColor(*wxWHITE);
|
m_apply_button->SetTextColor(*wxWHITE);
|
||||||
// m_apply_button->SetBorderColor(wxColour(38, 46, 48));
|
// m_apply_button->SetBorderColor(wxColour(38, 46, 48));
|
||||||
@@ -822,7 +922,7 @@ PartSkipConfirmDialog::PartSkipConfirmDialog(wxWindow *parent) : DPIDialog(paren
|
|||||||
e.Skip();
|
e.Skip();
|
||||||
});
|
});
|
||||||
|
|
||||||
m_button_sizer->Add(m_apply_button, 0, wxALL, FromDIP(15));
|
m_button_sizer->Add(m_apply_button, 0, wxRIGHT | wxBOTTOM, FromDIP(24));
|
||||||
m_sizer->Add(m_button_sizer, 1, wxEXPAND, FromDIP(5));
|
m_sizer->Add(m_button_sizer, 1, wxEXPAND, FromDIP(5));
|
||||||
m_sizer->Fit( this );
|
m_sizer->Fit( this );
|
||||||
|
|
||||||
@@ -847,7 +947,13 @@ bool PartSkipConfirmDialog::Show(bool show)
|
|||||||
return DPIDialog::Show(show);
|
return DPIDialog::Show(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PartSkipConfirmDialog::on_dpi_changed(const wxRect& suggested_rect) { Fit(); }
|
void PartSkipConfirmDialog::on_dpi_changed(const wxRect& suggested_rect) {
|
||||||
|
m_apply_button->SetMinSize(wxSize(FromDIP(80), FromDIP(32)));
|
||||||
|
m_apply_button->SetCornerRadius(FromDIP(16));
|
||||||
|
m_apply_button->Rescale();
|
||||||
|
Layout();
|
||||||
|
Fit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Button* PartSkipConfirmDialog::GetConfirmButton()
|
Button* PartSkipConfirmDialog::GetConfirmButton()
|
||||||
@@ -860,4 +966,5 @@ void PartSkipConfirmDialog::SetMsgLabel(wxString msg){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}} // namespace Slic3r::GUI
|
}
|
||||||
|
} // namespace Slic3r::GUI
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ namespace Slic3r { namespace GUI {
|
|||||||
|
|
||||||
class SkipPartCanvas;
|
class SkipPartCanvas;
|
||||||
|
|
||||||
enum URL_STATE {
|
enum URL_STATE {
|
||||||
URL_TCP,
|
URL_TCP,
|
||||||
URL_TUTK,
|
URL_TUTK,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -78,13 +78,15 @@ public:
|
|||||||
Button* m_switch_drag_btn;
|
Button* m_switch_drag_btn;
|
||||||
CheckBox* m_all_checkbox;
|
CheckBox* m_all_checkbox;
|
||||||
Button* m_percent_label;
|
Button* m_percent_label;
|
||||||
Label * m_all_label;
|
Label* m_all_label;
|
||||||
wxPanel* m_line;
|
wxPanel* m_line;
|
||||||
|
wxPanel* m_line_top;
|
||||||
wxScrolledWindow* m_list_view;
|
wxScrolledWindow* m_list_view;
|
||||||
|
|
||||||
|
wxPanel* m_dlg_placeholder;
|
||||||
Label* m_cnt_label;
|
Label* m_cnt_label;
|
||||||
Label* m_tot_label;
|
Label* m_tot_label;
|
||||||
|
|
||||||
Button* m_apply_btn;
|
Button* m_apply_btn;
|
||||||
|
|
||||||
Label* m_loading_label;
|
Label* m_loading_label;
|
||||||
@@ -108,7 +110,7 @@ private:
|
|||||||
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};
|
||||||
|
|
||||||
std::map<uint32_t, PartState> m_parts_state;
|
std::map<uint32_t, PartState> m_parts_state;
|
||||||
std::map<uint32_t, std::string> m_parts_name;
|
std::map<uint32_t, std::string> m_parts_name;
|
||||||
std::vector<int> m_partskip_ids;
|
std::vector<int> m_partskip_ids;
|
||||||
@@ -117,7 +119,7 @@ private:
|
|||||||
|
|
||||||
PartsInfo GetPartsInfo();
|
PartsInfo GetPartsInfo();
|
||||||
bool is_drag_mode();
|
bool is_drag_mode();
|
||||||
|
|
||||||
boost::shared_ptr<PrinterFileSystem> m_file_sys;
|
boost::shared_ptr<PrinterFileSystem> m_file_sys;
|
||||||
bool m_file_sys_result{false};
|
bool m_file_sys_result{false};
|
||||||
std::string m_timestamp;
|
std::string m_timestamp;
|
||||||
@@ -127,19 +129,19 @@ private:
|
|||||||
std::string create_tmp_path();
|
std::string create_tmp_path();
|
||||||
|
|
||||||
bool is_local_file_existed(const std::vector<string> &local_paths);
|
bool is_local_file_existed(const std::vector<string> &local_paths);
|
||||||
|
|
||||||
void DownloadPartsFile();
|
void DownloadPartsFile();
|
||||||
void OnFileSystemEvent(wxCommandEvent &event);
|
void OnFileSystemEvent(wxCommandEvent &event);
|
||||||
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);
|
||||||
void OnZoomPercent(wxCommandEvent &event);
|
void OnZoomPercent(wxCommandEvent &event);
|
||||||
void UpdatePartsStateFromCanvas(wxCommandEvent &event);
|
void UpdatePartsStateFromCanvas(wxCommandEvent &event);
|
||||||
|
|
||||||
void UpdateZoomPercent();
|
void UpdateZoomPercent();
|
||||||
void UpdateCountLabel();
|
void UpdateCountLabel();
|
||||||
void UpdateDialogUI();
|
void UpdateDialogUI();
|
||||||
|
|||||||
@@ -263,7 +263,7 @@ void PrinterFileSystem::GetPickImage(int id, const std::string &local_path, cons
|
|||||||
{
|
{
|
||||||
json j;
|
json j;
|
||||||
|
|
||||||
j["sequence_id"] = id;
|
j["sequence_id"] = id;
|
||||||
j["version"] = 1;
|
j["version"] = 1;
|
||||||
j["peer_host"] = "studio";
|
j["peer_host"] = "studio";
|
||||||
j["command"] = "get_project_file";
|
j["command"] = "get_project_file";
|
||||||
@@ -836,7 +836,7 @@ void PrinterFileSystem::DownloadNextFile()
|
|||||||
file.download.reset(), file.flags &= ~FF_DOWNLOAD;
|
file.download.reset(), file.flags &= ~FF_DOWNLOAD;
|
||||||
else // FAILED
|
else // FAILED
|
||||||
file.download.reset();
|
file.download.reset();
|
||||||
if (&file_index.first == &m_file_list)
|
if (&file_index.first == &m_file_list)
|
||||||
SendChangedEvent(EVT_DOWNLOAD, download->index, result ? download->error : file.local_path, result);
|
SendChangedEvent(EVT_DOWNLOAD, download->index, result ? download->error : file.local_path, result);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,8 +33,11 @@ SkipPartCanvas::SkipPartCanvas(wxWindow *parent, const wxGLAttributes& dispAttrs
|
|||||||
void SkipPartCanvas::LoadPickImage(const std::string & path)
|
void SkipPartCanvas::LoadPickImage(const std::string & path)
|
||||||
{
|
{
|
||||||
parts_state_.clear();
|
parts_state_.clear();
|
||||||
|
pick_parts_.clear();
|
||||||
|
parts_triangles_.clear();
|
||||||
int preffered_w{FromDIP(400)}, preffered_h{FromDIP(400)};
|
int preffered_w{FromDIP(400)}, preffered_h{FromDIP(400)};
|
||||||
cv::Mat src_image = cv::imread(path, cv::IMREAD_UNCHANGED);
|
cv::Mat src_image = cv::imread(path, cv::IMREAD_UNCHANGED);
|
||||||
|
cv::cvtColor(src_image, src_image, cv::COLOR_BGRA2BGR); // remove alpha
|
||||||
float zoom_x{static_cast<float>(preffered_w) / src_image.cols};
|
float zoom_x{static_cast<float>(preffered_w) / src_image.cols};
|
||||||
float zoom_y{static_cast<float>(preffered_h) / src_image.rows};
|
float zoom_y{static_cast<float>(preffered_h) / src_image.rows};
|
||||||
float image_scale{0};
|
float image_scale{0};
|
||||||
@@ -42,12 +45,12 @@ void SkipPartCanvas::LoadPickImage(const std::string & path)
|
|||||||
image_scale = zoom_x;
|
image_scale = zoom_x;
|
||||||
else
|
else
|
||||||
image_scale = zoom_y;
|
image_scale = zoom_y;
|
||||||
cv::resize(src_image, pick_image_, cv::Size(), image_scale, image_scale);
|
cv::resize(src_image, pick_image_, cv::Size(), image_scale, image_scale, cv::INTER_NEAREST);
|
||||||
std::vector<cv::Mat> channels;
|
std::vector<cv::Mat> channels;
|
||||||
cv::split(pick_image_, channels); // channels[3] 是 Alpha
|
cv::Mat gray; // convert to gray
|
||||||
cv::Mat alpha = channels[3];
|
cv::cvtColor(pick_image_, gray, cv::COLOR_BGR2GRAY);
|
||||||
cv::Mat mask;
|
cv::Mat mask; // convery to binary
|
||||||
cv::threshold(alpha, mask, 0, 255, cv::THRESH_BINARY);
|
cv::threshold(gray, mask, 0, 255, cv::THRESH_BINARY);
|
||||||
std::vector<std::vector<cv::Point>> pick_counters;
|
std::vector<std::vector<cv::Point>> pick_counters;
|
||||||
cv::findContours(mask, pick_counters, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_TC89_KCOS);
|
cv::findContours(mask, pick_counters, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_TC89_KCOS);
|
||||||
std::vector<std::vector<FloatPoint>> polygon;
|
std::vector<std::vector<FloatPoint>> polygon;
|
||||||
@@ -328,7 +331,7 @@ uint32_t SkipPartCanvas::GetIdAtImagePt(const wxPoint& image_pt) const
|
|||||||
if (image_pt.x >= 0 && image_pt.x < pick_image_.cols
|
if (image_pt.x >= 0 && image_pt.x < pick_image_.cols
|
||||||
&& image_pt.y >= 0 && image_pt.y < pick_image_.rows) {
|
&& image_pt.y >= 0 && image_pt.y < pick_image_.rows) {
|
||||||
// at(row, col)=>at(y, x)
|
// at(row, col)=>at(y, x)
|
||||||
cv::Vec4b bgr = pick_image_.at<cv::Vec4b>(image_pt.y, image_pt.x);
|
cv::Vec3b bgr = pick_image_.at<cv::Vec3b>(image_pt.y, image_pt.x);
|
||||||
SkipIdHelper helper{bgr[2], bgr[1], bgr[0]};
|
SkipIdHelper helper{bgr[2], bgr[1], bgr[0]};
|
||||||
helper.reverse();
|
helper.reverse();
|
||||||
return helper.value;
|
return helper.value;
|
||||||
@@ -392,7 +395,7 @@ void SkipPartCanvas::ProcessHover(const wxPoint& mouse_pt)
|
|||||||
int new_hover_id { -1 };
|
int new_hover_id { -1 };
|
||||||
auto part_state = parts_state_.find(id_at_mouse);
|
auto part_state = parts_state_.find(id_at_mouse);
|
||||||
if (part_state != parts_state_.end() && part_state->second == psUnCheck) {
|
if (part_state != parts_state_.end() && part_state->second == psUnCheck) {
|
||||||
new_hover_id = id_at_mouse;
|
new_hover_id = id_at_mouse;
|
||||||
};
|
};
|
||||||
if (new_hover_id != this->hover_id_) {
|
if (new_hover_id != this->hover_id_) {
|
||||||
this->hover_id_ = new_hover_id;
|
this->hover_id_ = new_hover_id;
|
||||||
@@ -457,9 +460,9 @@ void SkipPartCanvas::OnMouseLeftUp(wxMouseEvent& event)
|
|||||||
left_down_ = false;
|
left_down_ = false;
|
||||||
if (fixed_draging_)
|
if (fixed_draging_)
|
||||||
EndDrag();
|
EndDrag();
|
||||||
else {
|
else {
|
||||||
Refresh();
|
Refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SkipPartCanvas::OnMouseRightDown(wxMouseEvent& event)
|
void SkipPartCanvas::OnMouseRightDown(wxMouseEvent& event)
|
||||||
@@ -556,44 +559,19 @@ bool ModelSettingHelper::Parse()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<ObjectInfo> ModelSettingHelper::GetResults() { return context_.objects; }
|
std::vector<ObjectInfo> ModelSettingHelper::GetResults() {
|
||||||
|
return context_.objects;
|
||||||
|
}
|
||||||
|
|
||||||
void XMLCALL ModelSettingHelper::StartElementHandler(void *userData, const XML_Char *name, const XML_Char **atts)
|
void XMLCALL ModelSettingHelper::StartElementHandler(void *userData, const XML_Char *name, const XML_Char **atts)
|
||||||
{
|
{
|
||||||
ModelSettingHelper* self = static_cast<ModelSettingHelper*>(userData);
|
ModelSettingHelper* self = static_cast<ModelSettingHelper*>(userData);
|
||||||
if (strcmp(name, "object") == 0) {
|
if (strcmp(name, "object") == 0) {
|
||||||
for (int i = 0; atts[i]; i += 2) {
|
for (int i = 0; atts[i]; i += 2) {
|
||||||
if (strcmp(atts[i], "id") == 0) {
|
if (strcmp(atts[i], "identify_id") == 0) { self->context_.temp_object.identify_id = atoi(atts[i + 1]); }
|
||||||
self->context_.current_object_id = atoi(atts[i+1]);
|
if (strcmp(atts[i], "name") == 0) { self->context_.temp_object.name = std::string(atts[i + 1]); }
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if ((self->context_.current_object_id != -1)
|
|
||||||
&& (strcmp(name, "metadata") == 0)
|
|
||||||
&& (self->context_.node_name.top() == "object")) {
|
|
||||||
const XML_Char *key{nullptr}, *value{nullptr};
|
|
||||||
for (int i = 0; atts[i]; i += 2) {
|
|
||||||
if (strcmp(atts[i], "key") == 0) key = atts[i+1];
|
|
||||||
if (strcmp(atts[i], "value") == 0) value = atts[i+1];
|
|
||||||
}
|
|
||||||
if (key && value && (strcmp(key, "name") == 0)) {
|
|
||||||
self->context_.temp_object.id = self->context_.current_object_id;
|
|
||||||
self->context_.temp_object.name = std::string(value);
|
|
||||||
}
|
|
||||||
} else if ((strcmp(name, "metadata") == 0)
|
|
||||||
&& (self->context_.node_name.top() == "model_instance")) {
|
|
||||||
const XML_Char *key{nullptr}, *value{nullptr};
|
|
||||||
for (int i = 0; atts[i]; i += 2) {
|
|
||||||
if (strcmp(atts[i], "key") == 0) key = atts[i+1];
|
|
||||||
if (strcmp(atts[i], "value") == 0) value = atts[i+1];
|
|
||||||
}
|
|
||||||
if (key && value && (strcmp(key, "object_id") == 0)) {
|
|
||||||
self->context_.current_instance_object_id = atoi(value);
|
|
||||||
} else if (key && value && (strcmp(key, "identify_id") == 0)) {
|
|
||||||
self->context_.current_instance_identify_id = atoi(value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
self->context_.node_name.push(std::string(name));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void XMLCALL ModelSettingHelper::EndElementHandler(void *userData, const XML_Char *name)
|
void XMLCALL ModelSettingHelper::EndElementHandler(void *userData, const XML_Char *name)
|
||||||
@@ -601,23 +579,7 @@ void XMLCALL ModelSettingHelper::EndElementHandler(void *userData, const XML_Cha
|
|||||||
ModelSettingHelper* self = static_cast<ModelSettingHelper*>(userData);
|
ModelSettingHelper* self = static_cast<ModelSettingHelper*>(userData);
|
||||||
if (strcmp(name, "object") == 0) {
|
if (strcmp(name, "object") == 0) {
|
||||||
self->context_.objects.push_back(self->context_.temp_object);
|
self->context_.objects.push_back(self->context_.temp_object);
|
||||||
self->context_.current_object_id = -1;
|
|
||||||
}
|
}
|
||||||
else if ((strcmp(name, "model_instance") == 0)
|
|
||||||
&& (self->context_.current_instance_identify_id != -1)
|
|
||||||
&& (self->context_.current_instance_object_id != -1)) {
|
|
||||||
for (auto& obj : self->context_.objects) {
|
|
||||||
if (obj.id == self->context_.current_instance_object_id) {
|
|
||||||
obj.identify_id = self->context_.current_instance_identify_id;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
self->context_.current_instance_identify_id = -1;
|
|
||||||
self->context_.current_instance_object_id = -1;
|
|
||||||
} else if (strcmp(name, "object") == 0) {
|
|
||||||
self->context_.current_object_id = -1;
|
|
||||||
}
|
|
||||||
self->context_.node_name.pop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ModelSettingHelper::DataHandler(const XML_Char *s, int len)
|
void ModelSettingHelper::DataHandler(const XML_Char *s, int len)
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ using FloatPoint = std::array<Coord, 2>;
|
|||||||
|
|
||||||
|
|
||||||
struct ObjectInfo {
|
struct ObjectInfo {
|
||||||
int id{-1};
|
|
||||||
std::string name{""};
|
std::string name{""};
|
||||||
int identify_id{-1};
|
int identify_id{-1};
|
||||||
PartState state{psUnCheck};
|
PartState state{psUnCheck};
|
||||||
@@ -107,7 +106,7 @@ private:
|
|||||||
inline wxPoint ViewPtToImagePt(const wxPoint& view_pt) const;
|
inline wxPoint ViewPtToImagePt(const wxPoint& view_pt) const;
|
||||||
uint32_t GetIdAtImagePt(const wxPoint& image_pt) const;
|
uint32_t GetIdAtImagePt(const wxPoint& image_pt) const;
|
||||||
inline uint32_t GetIdAtViewPt(const wxPoint& view_pt) const;
|
inline uint32_t GetIdAtViewPt(const wxPoint& view_pt) const;
|
||||||
|
|
||||||
void ProcessHover(const wxPoint& mouse_pt);
|
void ProcessHover(const wxPoint& mouse_pt);
|
||||||
void AutoSetCursor();
|
void AutoSetCursor();
|
||||||
void StartDrag(const wxPoint& mouse_pt);
|
void StartDrag(const wxPoint& mouse_pt);
|
||||||
@@ -136,16 +135,11 @@ class ModelSettingHelper : public _BBS_3MF_Base {
|
|||||||
struct ParseContext{
|
struct ParseContext{
|
||||||
std::vector<ObjectInfo> objects;
|
std::vector<ObjectInfo> objects;
|
||||||
ObjectInfo temp_object;
|
ObjectInfo temp_object;
|
||||||
|
|
||||||
std::stack<std::string> node_name;
|
|
||||||
int current_object_id{-1};
|
|
||||||
int current_instance_identify_id{-1};
|
|
||||||
int current_instance_object_id{-1};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ModelSettingHelper(const std::string& path);
|
ModelSettingHelper(const std::string& path);
|
||||||
|
|
||||||
|
|
||||||
bool Parse();
|
bool Parse();
|
||||||
std::vector<ObjectInfo> GetResults();
|
std::vector<ObjectInfo> GetResults();
|
||||||
|
|||||||
@@ -233,12 +233,6 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
|||||||
|
|
||||||
bSizer_task_name->Add(task_name_panel, 0, wxEXPAND, FromDIP(5));
|
bSizer_task_name->Add(task_name_panel, 0, wxEXPAND, FromDIP(5));
|
||||||
|
|
||||||
|
|
||||||
/* wxFlexGridSizer *fgSizer_task = new wxFlexGridSizer(2, 2, 0, 0);
|
|
||||||
fgSizer_task->AddGrowableCol(0);
|
|
||||||
fgSizer_task->SetFlexibleDirection(wxVERTICAL);
|
|
||||||
fgSizer_task->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);*/
|
|
||||||
|
|
||||||
m_printing_stage_value = new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT | wxST_ELLIPSIZE_END);
|
m_printing_stage_value = new wxStaticText(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT | wxST_ELLIPSIZE_END);
|
||||||
m_printing_stage_value->Wrap(-1);
|
m_printing_stage_value->Wrap(-1);
|
||||||
m_printing_stage_value->SetMaxSize(wxSize(FromDIP(800),-1));
|
m_printing_stage_value->SetMaxSize(wxSize(FromDIP(800),-1));
|
||||||
@@ -261,18 +255,12 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
|||||||
|
|
||||||
m_staticText_profile_value->SetForegroundColour(0x6B6B6B);
|
m_staticText_profile_value->SetForegroundColour(0x6B6B6B);
|
||||||
|
|
||||||
|
auto progress_lr_panel = new wxPanel(parent, wxID_ANY);
|
||||||
|
progress_lr_panel->SetBackgroundColour(*wxWHITE);
|
||||||
|
|
||||||
auto m_panel_progress = new wxPanel(parent, wxID_ANY);
|
m_gauge_progress = new ProgressBar(progress_lr_panel, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize);
|
||||||
m_panel_progress->SetBackgroundColour(*wxWHITE);
|
|
||||||
auto m_sizer_progressbar = new wxBoxSizer(wxHORIZONTAL);
|
|
||||||
m_gauge_progress = new ProgressBar(m_panel_progress, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize);
|
|
||||||
m_gauge_progress->SetValue(0);
|
m_gauge_progress->SetValue(0);
|
||||||
m_gauge_progress->SetHeight(PROGRESSBAR_HEIGHT);
|
m_gauge_progress->SetHeight(PROGRESSBAR_HEIGHT);
|
||||||
m_gauge_progress->SetMaxSize(wxSize(FromDIP(600), -1));
|
|
||||||
m_panel_progress->SetSizer(m_sizer_progressbar);
|
|
||||||
m_panel_progress->Layout();
|
|
||||||
m_panel_progress->SetSize(wxSize(-1, FromDIP(24)));
|
|
||||||
m_panel_progress->SetMaxSize(wxSize(-1, FromDIP(24)));
|
|
||||||
|
|
||||||
wxBoxSizer *bSizer_task_btn = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *bSizer_task_btn = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
@@ -281,8 +269,9 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
|||||||
StateColor white_bg(std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Disabled), std::pair<wxColour, int>(wxColour(255, 255, 255), StateColor::Pressed),
|
StateColor white_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));
|
||||||
m_button_partskip = new Button(m_panel_progress, "");
|
m_button_partskip = new Button(progress_lr_panel, "");
|
||||||
m_button_partskip->Enable(false);
|
m_button_partskip->Enable(false);
|
||||||
|
m_button_partskip->Hide();
|
||||||
m_button_partskip->SetBackgroundColor(white_bg);
|
m_button_partskip->SetBackgroundColor(white_bg);
|
||||||
m_button_partskip->SetIcon("print_control_partskip_disable");
|
m_button_partskip->SetIcon("print_control_partskip_disable");
|
||||||
m_button_partskip->SetBorderColor(*wxWHITE);
|
m_button_partskip->SetBorderColor(*wxWHITE);
|
||||||
@@ -292,7 +281,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
|||||||
m_button_partskip->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { m_button_partskip->SetIcon("print_control_partskip"); });
|
m_button_partskip->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) { m_button_partskip->SetIcon("print_control_partskip"); });
|
||||||
m_button_partskip->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { m_button_partskip->SetIcon("print_control_partskip"); });
|
m_button_partskip->Bind(wxEVT_LEAVE_WINDOW, [this](auto &e) { m_button_partskip->SetIcon("print_control_partskip"); });
|
||||||
|
|
||||||
m_button_pause_resume = new ScalableButton(m_panel_progress, wxID_ANY, "print_control_pause", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER,true);
|
m_button_pause_resume = new ScalableButton(progress_lr_panel, wxID_ANY, "print_control_pause", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER,true);
|
||||||
|
|
||||||
m_button_pause_resume->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) {
|
m_button_pause_resume->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) {
|
||||||
if (m_button_pause_resume->GetToolTipText() == _L("Pause")) {
|
if (m_button_pause_resume->GetToolTipText() == _L("Pause")) {
|
||||||
@@ -315,7 +304,7 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
m_button_abort = new ScalableButton(m_panel_progress, wxID_ANY, "print_control_stop", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true);
|
m_button_abort = new ScalableButton(progress_lr_panel, wxID_ANY, "print_control_stop", wxEmptyString, wxDefaultSize, wxDefaultPosition, wxBU_EXACTFIT | wxNO_BORDER, true);
|
||||||
m_button_abort->SetToolTip(_L("Stop"));
|
m_button_abort->SetToolTip(_L("Stop"));
|
||||||
|
|
||||||
m_button_abort->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) {
|
m_button_abort->Bind(wxEVT_ENTER_WINDOW, [this](auto &e) {
|
||||||
@@ -326,14 +315,6 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
|||||||
m_button_abort->SetBitmap_("print_control_stop"); }
|
m_button_abort->SetBitmap_("print_control_stop"); }
|
||||||
);
|
);
|
||||||
|
|
||||||
m_sizer_progressbar->Add(m_gauge_progress, 1, wxALIGN_CENTER_VERTICAL, 0);
|
|
||||||
m_sizer_progressbar->Add(0, 0, 0, wxEXPAND|wxLEFT, FromDIP(18));
|
|
||||||
m_sizer_progressbar->Add(m_button_partskip, 0, wxALL, FromDIP(5));
|
|
||||||
m_sizer_progressbar->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(18));
|
|
||||||
m_sizer_progressbar->Add(m_button_pause_resume, 0, wxALL, FromDIP(5));
|
|
||||||
m_sizer_progressbar->Add(0, 0, 0, wxEXPAND|wxLEFT, FromDIP(18));
|
|
||||||
m_sizer_progressbar->Add(m_button_abort, 0, wxALL, FromDIP(5));
|
|
||||||
|
|
||||||
wxBoxSizer *bSizer_buttons = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *bSizer_buttons = new wxBoxSizer(wxHORIZONTAL);
|
||||||
wxBoxSizer *bSizer_text = new wxBoxSizer(wxHORIZONTAL);
|
wxBoxSizer *bSizer_text = new wxBoxSizer(wxHORIZONTAL);
|
||||||
wxPanel* penel_bottons = new wxPanel(parent);
|
wxPanel* penel_bottons = new wxPanel(parent);
|
||||||
@@ -380,48 +361,55 @@ void PrintingTaskPanel::create_panel(wxWindow* parent)
|
|||||||
wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC")));
|
wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC")));
|
||||||
m_staticText_progress_end->SetForegroundColour(wxColour(146, 146, 146));
|
m_staticText_progress_end->SetForegroundColour(wxColour(146, 146, 146));
|
||||||
|
|
||||||
//fgSizer_task->Add(bSizer_buttons, 0, wxEXPAND, 0);
|
|
||||||
//fgSizer_task->Add(0, 0, 0, wxEXPAND, FromDIP(5));
|
|
||||||
|
|
||||||
wxPanel* panel_button_block = new wxPanel(penel_bottons, wxID_ANY);
|
|
||||||
panel_button_block->SetMinSize(wxSize(TASK_BUTTON_SIZE.x * 2 + FromDIP(5) * 4, -1));
|
|
||||||
panel_button_block->SetMinSize(wxSize(TASK_BUTTON_SIZE.x * 2 + FromDIP(5) * 4, -1));
|
|
||||||
panel_button_block->SetSize(wxSize(TASK_BUTTON_SIZE.x * 2 + FromDIP(5) * 2, -1));
|
|
||||||
panel_button_block->SetBackgroundColour(*wxWHITE);
|
|
||||||
|
|
||||||
m_staticText_layers = new wxStaticText(penel_text, wxID_ANY, _L("Layer: N/A"));
|
m_staticText_layers = new wxStaticText(penel_text, wxID_ANY, _L("Layer: N/A"));
|
||||||
m_staticText_layers->SetFont(wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC")));
|
m_staticText_layers->SetFont(wxFont(12, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("HarmonyOS Sans SC")));
|
||||||
m_staticText_layers->SetForegroundColour(wxColour(146, 146, 146));
|
m_staticText_layers->SetForegroundColour(wxColour(146, 146, 146));
|
||||||
m_staticText_layers->Hide();
|
m_staticText_layers->Hide();
|
||||||
|
|
||||||
//bSizer_text->Add(m_staticText_progress_percent, 0, wxALL, 0);
|
|
||||||
bSizer_text->Add(sizer_percent, 0, wxEXPAND, 0);
|
bSizer_text->Add(sizer_percent, 0, wxEXPAND, 0);
|
||||||
bSizer_text->Add(sizer_percent_icon, 0, wxEXPAND, 0);
|
bSizer_text->Add(sizer_percent_icon, 0, wxEXPAND, 0);
|
||||||
bSizer_text->Add(0, 0, 1, wxEXPAND, 0);
|
bSizer_text->Add(0, 0, 1, wxEXPAND, 0);
|
||||||
bSizer_text->Add(m_staticText_layers, 0, wxALIGN_CENTER | wxALL, 0);
|
bSizer_text->Add(m_staticText_layers, 0, wxALIGN_CENTER_VERTICAL | wxALL, 0);
|
||||||
bSizer_text->Add(0, 0, 0, wxLEFT, FromDIP(20));
|
bSizer_text->Add(0, 0, 0, wxLEFT, FromDIP(20));
|
||||||
bSizer_text->Add(m_staticText_progress_left, 0, wxALIGN_CENTER | wxALL, 0);
|
bSizer_text->Add(m_staticText_progress_left, 0, wxALIGN_CENTER_VERTICAL | wxALL, 0);
|
||||||
// Orca: display the end time of the print
|
// Orca: display the end time of the print
|
||||||
bSizer_text->Add(0, 0, 0, wxLEFT, FromDIP(8));
|
bSizer_text->Add(0, 0, 0, wxLEFT, FromDIP(8));
|
||||||
bSizer_text->Add(m_staticText_progress_end, 0, wxALIGN_CENTER | wxALL, 0);
|
bSizer_text->Add(m_staticText_progress_end, 0, wxALIGN_CENTER | wxALL, 0);
|
||||||
|
|
||||||
penel_text->SetMaxSize(wxSize(FromDIP(600), -1));
|
// penel_text->SetMaxSize(wxSize(FromDIP(600), -1));
|
||||||
penel_text->SetSizer(bSizer_text);
|
penel_text->SetSizer(bSizer_text);
|
||||||
penel_text->Layout();
|
penel_text->Layout();
|
||||||
|
|
||||||
bSizer_buttons->Add(penel_text, 1, wxEXPAND | wxALL, 0);
|
auto progress_lr_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
bSizer_buttons->Add(panel_button_block, 0, wxALIGN_CENTER | wxALL, 0);
|
auto progress_left_sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
|
auto progress_right_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
|
|
||||||
penel_bottons->SetSizer(bSizer_buttons);
|
progress_left_sizer->Add(penel_text, 0, wxEXPAND | wxALL, 0);
|
||||||
penel_bottons->Layout();
|
progress_left_sizer->Add(m_gauge_progress, 0, wxEXPAND | wxALL, 0);
|
||||||
|
// progress_left_sizer->SetMaxSize(wxSize(FromDIP(600), -1));
|
||||||
|
|
||||||
|
progress_right_sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(18));
|
||||||
|
progress_right_sizer->Add(m_button_partskip, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(0));//5
|
||||||
|
progress_right_sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(18));
|
||||||
|
progress_right_sizer->Add(m_button_pause_resume, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
||||||
|
progress_right_sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(18));
|
||||||
|
progress_right_sizer->Add(m_button_abort, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(0));
|
||||||
|
progress_right_sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(18));
|
||||||
|
|
||||||
|
progress_lr_sizer->Add(progress_left_sizer, 1, wxEXPAND | wxALL, 0);
|
||||||
|
progress_lr_sizer->Add(progress_right_sizer, 0, wxEXPAND | wxALL , 0);
|
||||||
|
|
||||||
|
progress_lr_panel->SetSizer(progress_lr_sizer);
|
||||||
|
progress_lr_panel->SetMaxSize(wxSize(FromDIP(720), -1));
|
||||||
|
|
||||||
|
progress_lr_panel->Layout();
|
||||||
|
progress_lr_panel->Fit();
|
||||||
|
|
||||||
bSizer_subtask_info->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(14));
|
bSizer_subtask_info->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(14));
|
||||||
bSizer_subtask_info->Add(bSizer_task_name, 0, wxEXPAND|wxRIGHT, FromDIP(18));
|
bSizer_subtask_info->Add(bSizer_task_name, 0, wxEXPAND|wxRIGHT, FromDIP(18));
|
||||||
bSizer_subtask_info->Add(m_staticText_profile_value, 0, wxEXPAND | wxTOP, FromDIP(5));
|
bSizer_subtask_info->Add(m_staticText_profile_value, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
bSizer_subtask_info->Add(m_printing_stage_value, 0, wxEXPAND | wxTOP, FromDIP(5));
|
bSizer_subtask_info->Add(m_printing_stage_value, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
bSizer_subtask_info->Add(penel_bottons, 0, wxEXPAND | wxTOP, FromDIP(10));
|
bSizer_subtask_info->Add(progress_lr_panel, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||||
bSizer_subtask_info->Add(m_panel_progress, 0, wxEXPAND|wxRIGHT, FromDIP(25));
|
|
||||||
|
|
||||||
|
|
||||||
m_printing_sizer = new wxBoxSizer(wxHORIZONTAL);
|
m_printing_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||||
m_printing_sizer->SetMinSize(wxSize(PAGE_MIN_WIDTH, -1));
|
m_printing_sizer->SetMinSize(wxSize(PAGE_MIN_WIDTH, -1));
|
||||||
@@ -660,6 +648,14 @@ void PrintingTaskPanel::update_machine_object(MachineObject* obj){
|
|||||||
|
|
||||||
void PrintingTaskPanel::enable_partskip_button(bool enable)
|
void PrintingTaskPanel::enable_partskip_button(bool enable)
|
||||||
{
|
{
|
||||||
|
if(m_obj){
|
||||||
|
if( m_obj->is_support_partskip ){
|
||||||
|
m_button_partskip->Show();
|
||||||
|
}else{
|
||||||
|
m_button_partskip->Hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!enable) {
|
if (!enable) {
|
||||||
m_button_partskip->Enable(false);
|
m_button_partskip->Enable(false);
|
||||||
m_button_partskip->SetLabel("");
|
m_button_partskip->SetLabel("");
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ AnimaIcon::AnimaIcon(wxWindow *parent, wxWindowID id, std::vector<std::string> i
|
|||||||
m_size = 20;
|
m_size = 20;
|
||||||
|
|
||||||
//add ScalableBitmap
|
//add ScalableBitmap
|
||||||
for (const auto &filename : img_list) m_images.emplace_back(create_scaled_bitmap(filename, this, m_size));
|
for (const auto &filename : img_list) m_images.emplace_back(create_scaled_bitmap(filename, this, FromDIP(m_size)));
|
||||||
m_image_enable = create_scaled_bitmap(img_enable, this, m_size-8);
|
m_image_enable = create_scaled_bitmap(img_enable, this, FromDIP(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)));
|
||||||
@@ -73,5 +73,3 @@ void AnimaIcon::Enable()
|
|||||||
{
|
{
|
||||||
if (m_bitmap) { m_bitmap->SetBitmap(m_image_enable); }
|
if (m_bitmap) { m_bitmap->SetBitmap(m_image_enable); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user