OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::PartSkipDialog Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/GUI/PartSkipDialog.hpp>

Inheritance diagram for Slic3r::GUI::PartSkipDialog:
Collaboration diagram for Slic3r::GUI::PartSkipDialog:

Public Member Functions

 PartSkipDialog (wxWindow *parent)
 ~PartSkipDialog ()
void on_dpi_changed (const wxRect &suggested_rect)
bool Show (bool show)
void UpdatePartsStateFromPrinter (MachineObject *obj_)
void SetSimplebookPage (int page)
void InitSchedule (MachineObject *obj_)
void InitDialogUI ()
int GetAllSkippedPartsNum ()
void EndModal (int retCode) override
float scale_factor () const
float prev_scale_factor () const
void set_scale_factor (float v)
void set_prev_scale_factor (float v)
void set_em_unit (int v)
bool force_rescale () const
int em_unit () const
const wxFont & normal_font () const
void enable_force_rescale ()
int ShowModal ()

Public Attributes

MachineObject * m_obj {nullptr}
wxSimplebook * m_simplebook
wxPanel * m_book_third_panel
wxPanel * m_book_second_panel
wxPanel * m_book_first_panel
SkipPartCanvas * m_canvas
Button * m_zoom_in_btn
Button * m_zoom_out_btn
Button * m_switch_drag_btn
CheckBox * m_all_checkbox
Button * m_percent_label
Label * m_all_label
wxPanel * m_line
wxPanel * m_line_top
wxScrolledWindow * m_list_view
wxPanel * m_dlg_placeholder
Label * m_cnt_label
Label * m_tot_label
Button * m_apply_btn
Label * m_loading_label
Label * m_retry_label
ScalableBitmap * m_retry_icon
wxStaticBitmap * m_retry_bitmap
wxBoxSizer * m_sizer
wxBoxSizer * m_dlg_sizer
wxBoxSizer * m_dlg_content_sizer
wxBoxSizer * m_dlg_btn_sizer
wxBoxSizer * m_canvas_sizer
wxBoxSizer * m_canvas_btn_sizer
wxBoxSizer * m_list_sizer
wxBoxSizer * m_scroll_sizer
wxBoxSizer * m_book_first_sizer
wxBoxSizer * m_book_second_sizer
wxBoxSizer * m_book_second_btn_sizer
Button * m_second_retry_btn
AnimaIcon * m_loading_icon

Protected Member Functions

virtual void on_sys_color_changed ()

Private Member Functions

PartsInfo GetPartsInfo ()
bool is_drag_mode ()
std::string create_tmp_path ()
bool is_local_file_existed (const std::vector< std::string > &local_paths)
void DownloadPartsFile ()
void OnFileSystemEvent (wxCommandEvent &event)
void OnFileSystemResult (wxCommandEvent &event)
void fetchUrl (boost::weak_ptr< PrinterFileSystem > wfs)
void OnZoomIn (wxCommandEvent &event)
void OnZoomOut (wxCommandEvent &event)
void OnSwitchDrag (wxCommandEvent &event)
void OnZoomPercent (wxCommandEvent &event)
void UpdatePartsStateFromCanvas (wxCommandEvent &event)
void UpdateZoomPercent ()
void UpdateCountLabel ()
void UpdateDialogUI ()
void UpdateApplyButtonStatus ()
bool IsAllChecked ()
bool IsAllCanceled ()
void OnRetryButton (wxCommandEvent &event)
void OnAllCheckbox (wxCommandEvent &event)
void OnApplyDialog (wxCommandEvent &event)
void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

int m_plate_idx {-1}
int m_zoom_percent {100}
bool m_is_drag {false}
bool m_print_lock {true}
bool m_enable_apply_btn {false}
bool is_model_support_partskip {false}
std::map< uint32_t, PartState > m_parts_state
std::map< uint32_t, std::string > m_parts_name
std::vector< int > m_partskip_ids
enum URL_STATE m_url_state = URL_STATE::URL_TCP
boost::shared_ptr< PrinterFileSystem > m_file_sys
std::string m_timestamp
std::string m_tmp_path
std::vector< std::string > m_local_paths
std::vector< std::string > m_target_paths
float m_scale_factor
int m_em_unit
wxFont m_normal_font
float m_prev_scale_factor
bool m_can_rescale
bool m_force_rescale
int m_new_font_point_size

Detailed Description

Constructor & Destructor Documentation

◆ PartSkipDialog()

Slic3r::GUI::PartSkipDialog::PartSkipDialog ( wxWindow * parent)
85 : DPIDialog(parent, wxID_ANY, _L("Skip Objects"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX)
86{
87 std::time_t t = std::time(0);
88 std::stringstream buf;
89 buf << std::put_time(std::localtime(&t), "%a_%b_%d_%H_%M_%S/");
90 m_timestamp = buf.str();
91
92 SetBackgroundColour(*wxWHITE);
93
94 m_sizer = new wxBoxSizer(wxVERTICAL);
95
96 m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
97 m_line_top->SetMinSize(wxSize(-1, 1));
98 m_line_top->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
99 m_sizer->Add(m_line_top, 0, wxEXPAND | wxTOP, FromDIP(0));
100
101 m_simplebook = new wxSimplebook(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, 0);
102 m_simplebook->SetMinSize(wxSize(FromDIP(720), FromDIP(535)));
103 m_simplebook->SetMaxSize(wxSize(FromDIP(720), FromDIP(535)));
104 m_book_first_panel = new wxPanel(m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
105 m_book_third_panel = new wxPanel(m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
106 m_book_third_panel->SetBackgroundColour(*wxWHITE);
107 m_dlg_sizer = new wxBoxSizer(wxVERTICAL);
108 m_dlg_content_sizer = new wxBoxSizer(wxHORIZONTAL);
109 m_canvas_sizer = new wxBoxSizer(wxVERTICAL);
110
111 // page 3
112 wxGLAttributes canvasAttrs;
113 canvasAttrs.PlatformDefaults().Defaults().Stencil(8).EndList();
114 m_canvas = new SkipPartCanvas(m_book_third_panel, canvasAttrs);
115 m_canvas->SetMinSize(wxSize(FromDIP(400), FromDIP(400)));
116 m_canvas->SetMaxSize(wxSize(FromDIP(400), FromDIP(400)));
117
118 m_canvas_btn_sizer = new wxBoxSizer(wxHORIZONTAL);
119 m_canvas_btn_sizer->SetMinSize(wxSize(-1, FromDIP(28)));
120
122
123 m_zoom_out_btn = new Button(m_book_third_panel, wxEmptyString);
124 m_zoom_out_btn->SetIcon("canvas_zoom_out");
125 m_zoom_out_btn->SetToolTip(_L("Zoom Out"));
126 m_zoom_out_btn->SetBackgroundColor(zoom_bg);
127 m_zoom_out_btn->SetBorderColor(wxColour(238, 238, 238));
128 m_zoom_out_btn->SetCornerRadius(0);
129 m_zoom_out_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
130
131 m_percent_label = new Button(m_book_third_panel, "100%");
132 m_percent_label->SetBackgroundColor(percent_bg);
133 m_percent_label->SetBorderColor(wxColour(238, 238, 238));
134 m_percent_label->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
135 m_percent_label->SetCornerRadius(0);
136
137 m_zoom_in_btn = new Button(m_book_third_panel, wxEmptyString);
138 m_zoom_in_btn->SetIcon("canvas_zoom_in");
139 m_zoom_in_btn->SetToolTip(_L("Zoom In"));
140 m_zoom_in_btn->SetBackgroundColor(zoom_bg);
141 m_zoom_in_btn->SetBorderColor(wxColour(238, 238, 238));
142 m_zoom_in_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
143 m_zoom_in_btn->SetCornerRadius(0);
144
145 m_switch_drag_btn = new Button(m_book_third_panel, wxEmptyString);
146 m_switch_drag_btn->SetIcon("canvas_drag");
147 m_switch_drag_btn->SetToolTip(_L("Drag"));
148 m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
149 m_switch_drag_btn->SetBorderColor(wxColour(238, 238, 238));
150 m_switch_drag_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
151 m_switch_drag_btn->SetCornerRadius(0);
152
153 m_canvas_btn_sizer->Add(m_zoom_out_btn, 0, wxEXPAND | wxLEFT, FromDIP(105));
154 m_canvas_btn_sizer->Add(m_percent_label, 0, wxEXPAND, 0);
155 m_canvas_btn_sizer->Add(m_zoom_in_btn, 0, wxEXPAND, 0);
156 m_canvas_btn_sizer->Add(m_switch_drag_btn, 0, wxEXPAND | wxRIGHT, FromDIP(88));
157
158 m_list_sizer = new wxBoxSizer(wxVERTICAL);
159 m_list_sizer->SetMinSize(wxSize(FromDIP(267), FromDIP(422)));
160
161 auto all_checkbox_sizer = new wxBoxSizer(wxHORIZONTAL);
162 m_all_checkbox = new CheckBox(m_book_third_panel, wxID_ANY);
163 m_all_checkbox->SetValue(false);
164 m_all_checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
165 m_all_checkbox->SetBackgroundColour(*wxWHITE);
166 m_all_label = new Label(m_book_third_panel, _L("Select All"));
167 m_all_label->Wrap(-1);
168 m_all_label->SetMinSize(wxSize(-1, FromDIP(18)));
169 m_all_label->SetBackgroundColour(*wxWHITE);
170
171 m_all_label->SetMinSize(wxSize(267, -1));
172 m_all_label->SetMaxSize(wxSize(267, -1));
173 all_checkbox_sizer->Add(m_all_checkbox, 0, wxALIGN_CENTER_VERTICAL, 0);
174 all_checkbox_sizer->Add(m_all_label, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(8));
175
176 m_line = new wxPanel(m_book_third_panel, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(267), FromDIP(1)), wxTAB_TRAVERSAL);
177 m_line->SetMinSize(wxSize(FromDIP(267), 1));
178 m_line->SetMaxSize(wxSize(FromDIP(267), 1));
179 m_line->SetBackgroundColour(wxColor(238, 238, 238));
180
181 m_list_view = new wxScrolledWindow(m_book_third_panel, wxID_ANY, wxDefaultPosition, wxSize(267, -1), wxHSCROLL | wxVSCROLL);
182 m_list_view->SetScrollRate(5, FromDIP(30));
183 m_list_view->SetMinSize(wxSize(FromDIP(267), FromDIP(378)));
184 m_list_view->SetMaxSize(wxSize(FromDIP(267), FromDIP(378)));
185 m_list_view->SetBackgroundColour(*wxWHITE);
186
187 m_scroll_sizer = new wxBoxSizer(wxVERTICAL);
188 m_list_view->SetSizer(m_scroll_sizer);
189 m_list_view->Layout();
190
191 m_dlg_btn_sizer = new wxBoxSizer(wxHORIZONTAL);
192 m_dlg_btn_sizer->SetMinSize(wxSize(-1, FromDIP(54)));
193
194 m_cnt_label = new Label(m_book_third_panel, wxEmptyString);
195 m_cnt_label->Wrap(-1);
196 m_cnt_label->SetBackgroundColour(*wxWHITE);
197 m_cnt_label->SetForegroundColour(wxColour(0, 150, 136));
198 m_cnt_label->SetFont(Label::Head_16);
199 m_cnt_label->SetSize(wxSize(-1, FromDIP(20)));
200 m_cnt_label->SetMaxSize(wxSize(-1, FromDIP(20)));
201
202 m_tot_label = new Label(m_book_third_panel, wxEmptyString);
203 m_tot_label->Wrap(-1);
204 m_tot_label->SetBackgroundColour(*wxWHITE);
205 m_tot_label->SetMinSize(wxSize(FromDIP(200), FromDIP(20)));
206
207 m_apply_btn = new Button(m_book_third_panel, _L("Skip"));
209 m_apply_btn->SetToolTip(wxEmptyString);
210
211 m_canvas_sizer->Add(m_canvas, 0, wxLEFT | wxTOP | wxEXPAND, FromDIP(17));
212 m_canvas_sizer->Add(m_canvas_btn_sizer, 0, wxTOP, FromDIP(8));
213 m_list_sizer->Add(0, 0, 1, wxEXPAND, 0);
214
215 m_list_sizer->Add(0, 0, 0, wxTOP, FromDIP(27));
216 m_list_sizer->Add(all_checkbox_sizer, 0, wxLEFT, FromDIP(0));
217 m_list_sizer->Add(m_line, 0, wxEXPAND | wxTOP | wxBOTTOM, FromDIP(12));
218 m_list_sizer->Add(m_list_view, 0, wxEXPAND, 0);
219 m_list_sizer->Add(0, 0, 1, wxEXPAND, 0);
220
221 m_dlg_content_sizer->Add(m_canvas_sizer, 0, wxEXPAND, FromDIP(0));
222 m_dlg_content_sizer->Add(0, 0, 0, wxEXPAND | wxLEFT, FromDIP(22));
223 m_dlg_content_sizer->Add(m_list_sizer, 0, wxRIGHT | wxEXPAND, FromDIP(14));
224
225 m_dlg_btn_sizer->Add(0, 0, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(21));
226 m_dlg_btn_sizer->Add(m_cnt_label, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0));
227#ifdef __WXMSW__
228 m_dlg_btn_sizer->Add(m_tot_label, 0, wxLEFT | wxTOP | wxALIGN_CENTER_VERTICAL, FromDIP(2));
229#else
230 m_dlg_btn_sizer->Add(m_tot_label, 0, wxALIGN_CENTER_VERTICAL, 0);
231#endif
232 m_dlg_btn_sizer->Add(0, 0, 1, wxEXPAND, FromDIP(0));
233 m_dlg_btn_sizer->Add(m_apply_btn, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0));
234 m_dlg_btn_sizer->Add(0, 0, 0, wxLEFT | wxEXPAND, FromDIP(24));
235
236 m_dlg_placeholder = new wxPanel(m_book_third_panel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
237 m_dlg_placeholder->SetMinSize(wxSize(-1, FromDIP(15)));
238 m_dlg_placeholder->SetMaxSize(wxSize(-1, FromDIP(15)));
239 m_dlg_placeholder->SetBackgroundColour(*wxWHITE);
240
241 m_dlg_sizer->Add(m_dlg_content_sizer, 1, wxEXPAND, FromDIP(0));
242 // m_dlg_sizer->Add( 0, 0, 1, wxEXPAND, FromDIP(0));
243 m_dlg_sizer->Add(m_dlg_btn_sizer, 0, wxEXPAND, FromDIP(0));
244 m_dlg_sizer->Add(m_dlg_placeholder, 0, 0, wxEXPAND, 0);
245
247 m_book_third_panel->Layout();
249
250 // page 2
251 m_book_second_panel = new wxPanel(m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
252 m_book_second_panel->SetBackgroundColour(*wxWHITE);
253 m_book_second_sizer = new wxBoxSizer(wxVERTICAL);
254 m_book_second_btn_sizer = new wxBoxSizer(wxHORIZONTAL);
255
256 m_retry_bitmap = new wxStaticBitmap(m_book_second_panel, -1, create_scaled_bitmap("partskip_retry", m_book_second_panel, 200), wxDefaultPosition, wxDefaultSize);
257 m_retry_label = new Label(m_book_second_panel, _L("Load skipping objects information failed. Please try again."));
258 m_retry_label->Wrap(-1);
259 m_retry_label->SetBackgroundColour(*wxWHITE);
260 m_book_second_sizer->Add(0, 0, 1, wxEXPAND, 0);
261 m_book_second_sizer->Add(m_retry_bitmap, 0, wxALIGN_CENTER_HORIZONTAL, 0);
262 m_book_second_sizer->Add(m_retry_label, 0, wxALIGN_CENTER_HORIZONTAL, 0);
263 m_book_second_sizer->Add(0, 0, 1, wxEXPAND, 0);
264
265 m_second_retry_btn = new Button(m_book_second_panel, _L("Retry"));
267 m_second_retry_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnRetryButton, this);
268 m_book_second_btn_sizer->Add(m_second_retry_btn, 0, wxALL, FromDIP(24));
269
270 m_book_second_sizer->Add(m_book_second_btn_sizer, 0, wxALIGN_RIGHT, 0);
272 m_book_second_panel->Layout();
274
275 // page 1
276 m_book_first_panel = new wxPanel(m_simplebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
277 m_book_first_sizer = new wxBoxSizer(wxVERTICAL);
278 // m_book_first_sizer->SetMinSize(wxSize(FromDIP(720), FromDIP(500)));
279
280 auto m_loading_sizer = new wxBoxSizer(wxHORIZONTAL);
281 std::vector<std::string> list{"ams_rfid_1", "ams_rfid_2", "ams_rfid_3", "ams_rfid_4"};
282 m_loading_icon = new AnimaIcon(m_book_first_panel, wxID_ANY, list, "refresh_printer", 100);
283 m_loading_icon->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
284
285 m_loading_label = new Label(m_book_first_panel, _L("Loading..."));
286 m_loading_label->Wrap(-1);
287 m_loading_label->SetBackgroundColour(*wxWHITE);
288
289 m_loading_sizer->Add(m_loading_icon, 0, wxALIGN_CENTER_VERTICAL, FromDIP(0));
290 m_loading_sizer->Add(m_loading_label, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(5));
291
292 m_book_first_sizer->Add(0, 0, 1, wxEXPAND, 0);
293 m_book_first_sizer->Add(m_loading_sizer, 0, wxALIGN_CENTER_VERTICAL | wxALIGN_CENTER_HORIZONTAL, 0);
294 m_book_first_sizer->Add(0, 0, 1, wxEXPAND, 0);
295
297 m_book_first_panel->Layout();
299
300 m_simplebook->AddPage(m_book_first_panel, _("loading page"), false);
301 m_simplebook->AddPage(m_book_second_panel, _("retry page"), false);
302 m_simplebook->AddPage(m_book_third_panel, _("dialog page"), false);
303 m_sizer->Add(m_simplebook, 1, wxEXPAND | wxALL, 5);
304
305 SetSizerAndFit(m_sizer);
306 m_zoom_in_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnZoomIn, this);
307 m_zoom_out_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnZoomOut, this);
308 m_switch_drag_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnSwitchDrag, this);
309 m_canvas->Bind(EVT_ZOOM_PERCENT, &PartSkipDialog::OnZoomPercent, this);
310 m_canvas->Bind(EVT_CANVAS_PART, &PartSkipDialog::UpdatePartsStateFromCanvas, this);
311
312 m_apply_btn->Bind(wxEVT_BUTTON, &PartSkipDialog::OnApplyDialog, this);
313 m_all_checkbox->Bind(wxEVT_TOGGLEBUTTON, &PartSkipDialog::OnAllCheckbox, this);
314
315 Layout();
316 CentreOnParent();
317}
#define _(s)
Definition 3mf.cpp:306
@ Confirm
Definition Button.hpp:25
@ Regular
Definition Button.hpp:24
@ Choice
Definition Button.hpp:33
#define _L(s)
Definition OBJ.cpp:34
static wxFont Head_16
Definition Label.hpp:43
Button * m_switch_drag_btn
Definition PartSkipDialog.hpp:91
wxBoxSizer * m_dlg_sizer
Definition PartSkipDialog.hpp:111
wxBoxSizer * m_book_first_sizer
Definition PartSkipDialog.hpp:118
wxPanel * m_book_third_panel
Definition PartSkipDialog.hpp:84
wxBoxSizer * m_book_second_sizer
Definition PartSkipDialog.hpp:119
void OnRetryButton(wxCommandEvent &event)
Definition PartSkipDialog.cpp:591
Label * m_all_label
Definition PartSkipDialog.hpp:94
Button * m_zoom_out_btn
Definition PartSkipDialog.hpp:90
void OnZoomOut(wxCommandEvent &event)
Definition PartSkipDialog.cpp:613
void OnZoomPercent(wxCommandEvent &event)
Definition PartSkipDialog.cpp:633
wxPanel * m_book_second_panel
Definition PartSkipDialog.hpp:85
wxPanel * m_line
Definition PartSkipDialog.hpp:95
Button * m_second_retry_btn
Definition PartSkipDialog.hpp:121
Label * m_cnt_label
Definition PartSkipDialog.hpp:100
void UpdatePartsStateFromCanvas(wxCommandEvent &event)
Definition PartSkipDialog.cpp:654
void OnSwitchDrag(wxCommandEvent &event)
Definition PartSkipDialog.cpp:619
Button * m_apply_btn
Definition PartSkipDialog.hpp:103
wxBoxSizer * m_sizer
Definition PartSkipDialog.hpp:110
wxBoxSizer * m_book_second_btn_sizer
Definition PartSkipDialog.hpp:120
Label * m_tot_label
Definition PartSkipDialog.hpp:101
Label * m_loading_label
Definition PartSkipDialog.hpp:105
void OnApplyDialog(wxCommandEvent &event)
Definition PartSkipDialog.cpp:905
wxPanel * m_dlg_placeholder
Definition PartSkipDialog.hpp:99
wxPanel * m_line_top
Definition PartSkipDialog.hpp:96
wxSimplebook * m_simplebook
Definition PartSkipDialog.hpp:83
wxBoxSizer * m_list_sizer
Definition PartSkipDialog.hpp:116
Button * m_zoom_in_btn
Definition PartSkipDialog.hpp:89
void OnZoomIn(wxCommandEvent &event)
Definition PartSkipDialog.cpp:607
CheckBox * m_all_checkbox
Definition PartSkipDialog.hpp:92
wxStaticBitmap * m_retry_bitmap
Definition PartSkipDialog.hpp:108
wxBoxSizer * m_canvas_btn_sizer
Definition PartSkipDialog.hpp:115
wxPanel * m_book_first_panel
Definition PartSkipDialog.hpp:86
wxScrolledWindow * m_list_view
Definition PartSkipDialog.hpp:97
wxBoxSizer * m_canvas_sizer
Definition PartSkipDialog.hpp:114
AnimaIcon * m_loading_icon
Definition PartSkipDialog.hpp:122
void OnAllCheckbox(wxCommandEvent &event)
Definition PartSkipDialog.cpp:867
std::string m_timestamp
Definition PartSkipDialog.hpp:142
Label * m_retry_label
Definition PartSkipDialog.hpp:106
SkipPartCanvas * m_canvas
Definition PartSkipDialog.hpp:88
wxBoxSizer * m_dlg_content_sizer
Definition PartSkipDialog.hpp:112
Button * m_percent_label
Definition PartSkipDialog.hpp:93
wxBoxSizer * m_dlg_btn_sizer
Definition PartSkipDialog.hpp:113
wxBoxSizer * m_scroll_sizer
Definition PartSkipDialog.hpp:117
void setTakeFocusedAsHovered(bool set)
Definition StateColor.cpp:331
static 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(255, 255, 255), StateColor::Normal))
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::Normal))
wxBitmap create_scaled_bitmap(const std::string &bmp_name_in, wxWindow *win, const int px_cnt, const bool grayscale, const std::string &new_color, const bool menu_bitmap, const bool resize, const bool bitmap2, const std::vector< std::string > &array_new_color)
Definition wxExtensions.cpp:448

References _, _L, Choice, Confirm, create_scaled_bitmap(), Label::Head_16, m_all_checkbox, m_all_label, m_apply_btn, m_book_first_panel, m_book_first_sizer, m_book_second_btn_sizer, m_book_second_panel, m_book_second_sizer, m_book_third_panel, m_canvas, m_canvas_btn_sizer, m_canvas_sizer, m_cnt_label, m_dlg_btn_sizer, m_dlg_content_sizer, m_dlg_placeholder, m_dlg_sizer, m_line, m_line_top, m_list_sizer, m_list_view, m_loading_icon, m_loading_label, m_percent_label, m_retry_bitmap, m_retry_label, m_scroll_sizer, m_second_retry_btn, m_simplebook, m_sizer, m_switch_drag_btn, m_timestamp, m_tot_label, m_zoom_in_btn, m_zoom_out_btn, OnAllCheckbox(), OnApplyDialog(), OnRetryButton(), OnSwitchDrag(), OnZoomIn(), OnZoomOut(), OnZoomPercent(), Slic3r::GUI::percent_bg, Regular, UpdatePartsStateFromCanvas(), and Slic3r::GUI::zoom_bg.

Here is the call graph for this function:

◆ ~PartSkipDialog()

Slic3r::GUI::PartSkipDialog::~PartSkipDialog ( )
319{}

Member Function Documentation

◆ create_tmp_path()

std::string Slic3r::GUI::PartSkipDialog::create_tmp_path ( )
private
385{
386 boost::filesystem::path parent_path(temporary_dir());
387
388 std::stringstream buf;
389 buf << "/bamboo_task/";
390 buf << m_timestamp;
391 if (m_obj) {
392 const auto& dev_id = m_obj->get_dev_id();
393 buf << dev_id.substr(0, 3) << "_";
394 buf << dev_id.substr(dev_id.length() - 3, 3) << "_";
395 buf << m_obj->job_id_ << "/";
396 } else {
397 buf << 1 << "_" << 1 << "/";
398 }
399 std::string tmp_path = (parent_path / buf.str()).string();
400
401 if (!std::filesystem::exists(tmp_path + "Metadata/") && !fs::create_directories(tmp_path + "Metadata/")) { wxMessageBox(_L("Failed to create the temporary folder.")); }
402 return tmp_path;
403}
MachineObject * m_obj
Definition PartSkipDialog.hpp:81
const std::string & temporary_dir()
Definition utils.cpp:308

References _L, m_obj, m_timestamp, and Slic3r::temporary_dir().

Referenced by DownloadPartsFile().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DownloadPartsFile()

void Slic3r::GUI::PartSkipDialog::DownloadPartsFile ( )
private
414{
415 BOOST_LOG_TRIVIAL(info) << "part skip: create temp path begin.";
416 m_tmp_path = create_tmp_path(); // wxGetApp().app_config->get("download_path");
417 BOOST_LOG_TRIVIAL(info) << "part skip: create temp path end.";
418
419 m_local_paths.clear();
420 m_target_paths.clear();
421
422 m_plate_idx = m_obj ? m_obj->m_plate_index : -1;
423 if (m_plate_idx < 0) {
424 m_plate_idx = 1;
425 BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << "part skip: printer plate index is invalid.";
426 }
427
428 m_local_paths.push_back(m_tmp_path + "Metadata/pick_" + std::to_string(m_plate_idx) + ".png");
429 m_local_paths.push_back(m_tmp_path + "Metadata/model_settings.config");
430 m_local_paths.push_back(m_tmp_path + "Metadata/slice_info.config");
431
432 m_target_paths.push_back("Metadata/pick_" + std::to_string(m_plate_idx) + ".png");
433 m_target_paths.push_back("Metadata/model_settings.config");
434 m_target_paths.push_back("Metadata/slice_info.config");
435
437 if (!m_file_sys) {
438 m_file_sys = boost::make_shared<PrinterFileSystem>();
439 m_file_sys->Attached();
440 m_file_sys->Bind(EVT_STATUS_CHANGED, &PartSkipDialog::OnFileSystemEvent, this);
441 m_file_sys->Bind(EVT_RAMDOWNLOAD, &PartSkipDialog::OnFileSystemResult, this);
442 m_file_sys->Start();
443 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "part skip: print file system start.";
444 } else {
445 m_file_sys->Retry();
446 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "part skip: print file system retry.";
447 }
448 } else {
449 m_file_sys->SendExistedFile();
450 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "part skip: local parts info file is existed.";
451 }
452}
std::vector< std::string > m_target_paths
Definition PartSkipDialog.hpp:145
boost::shared_ptr< PrinterFileSystem > m_file_sys
Definition PartSkipDialog.hpp:141
int m_plate_idx
Definition PartSkipDialog.hpp:125
void OnFileSystemEvent(wxCommandEvent &event)
Definition PartSkipDialog.cpp:522
std::string m_tmp_path
Definition PartSkipDialog.hpp:143
std::string create_tmp_path()
Definition PartSkipDialog.cpp:384
bool is_local_file_existed(const std::vector< std::string > &local_paths)
Definition PartSkipDialog.cpp:405
void OnFileSystemResult(wxCommandEvent &event)
Definition PartSkipDialog.cpp:566
std::vector< std::string > m_local_paths
Definition PartSkipDialog.hpp:144

References create_tmp_path(), is_local_file_existed(), m_file_sys, m_local_paths, m_obj, m_plate_idx, m_target_paths, m_tmp_path, OnFileSystemEvent(), and OnFileSystemResult().

Referenced by InitSchedule().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ em_unit()

int Slic3r::GUI::DPIAware< wxDialog >::em_unit ( ) const
inlineinherited
203{ return m_em_unit; }
Definition GUI_Utils.hpp:107

Referenced by Slic3r::GUI::AuxiliaryDialog::AuxiliaryDialog(), Slic3r::GUI::CopyrightsDialog::CopyrightsDialog(), Slic3r::GUI::DesignTextDialog::DesignTextDialog(), Slic3r::GUI::EditGCodeDialog::EditGCodeDialog(), Slic3r::GUI::FileArchiveDialog::FileArchiveDialog(), Slic3r::GUI::MsgNoUpdates::MsgNoUpdates(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::OAuthDialog::OAuthDialog(), Slic3r::GUI::ParamsDialog::ParamsDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::SettingsDialog::SettingsDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), anonymous_namespace{3DPrinterOS.cpp}::UploadOptionsDialog::UploadOptionsDialog(), Slic3r::GUI::PublishSettingsDialog::add_row_ui(), Slic3r::GUI::DiffPresetDialog::complete_dialog_creation(), Slic3r::GUI::DiffPresetDialog::create_edit_sizer(), Slic3r::GUI::DiffPresetDialog::create_presets_sizer(), Slic3r::GUI::DiffPresetDialog::create_tree(), Slic3r::GUI::ElegooPrintHostSendDialog::init(), Slic3r::GUI::FlashforgePrintHostSendDialog::init(), Slic3r::GUI::PrintHostSendDialog::init(), Slic3r::GUI::AboutDialog::on_dpi_changed(), Slic3r::GUI::AuxiliaryDialog::on_dpi_changed(), Slic3r::GUI::BedShapeDialog::on_dpi_changed(), Slic3r::GUI::ConfigWizard::on_dpi_changed(), Slic3r::GUI::CopyrightsDialog::on_dpi_changed(), Slic3r::GUI::DiffPresetDialog::on_dpi_changed(), Slic3r::GUI::EditGCodeDialog::on_dpi_changed(), Slic3r::GUI::FileArchiveDialog::on_dpi_changed(), Slic3r::GUI::OAuthDialog::on_dpi_changed(), Slic3r::GUI::ObjectTableDialog::on_dpi_changed(), Slic3r::GUI::ParamsDialog::on_dpi_changed(), Slic3r::GUI::PhysicalPrinterDialog::on_dpi_changed(), Slic3r::GUI::PrintHostQueueDialog::on_dpi_changed(), Slic3r::GUI::PurgeModeDialog::on_dpi_changed(), Slic3r::GUI::SavePresetDialog::on_dpi_changed(), Slic3r::GUI::SendSystemInfoDialog::on_dpi_changed(), Slic3r::GUI::SettingsDialog::on_dpi_changed(), and Slic3r::GUI::UnsavedChangesDialog::on_dpi_changed().

Here is the caller graph for this function:

◆ enable_force_rescale()

void Slic3r::GUI::DPIAware< wxDialog >::enable_force_rescale ( )
inlineinherited
206{ m_force_rescale = true; }

◆ EndModal()

void Slic3r::GUI::DPIDialog::EndModal ( int retCode)
inlineoverrideinherited
306 {
307 if (!dialogStack.empty() && dialogStack.front() != this) {
308 // This is a bug in wxWidgets
309 // when the dialog is not top modal dialog, EndModal() just hide dialog without quit
310 // the modal event loop. And the modal event loop blocks us from bottom widgets.
311 // Solution: let user click it manually or close outside. FIXME
312 BOOST_LOG_TRIVIAL(warning) << "DPIAware::EndModal Error: dialogStack is not empty, but top dialog is not this one. retCode=" << retCode;
313 return;
314 }
315
316 return wxDialog::EndModal(retCode);
317 }
std::deque< wxDialog * > dialogStack
Definition GUI_Utils.cpp:549

References Slic3r::GUI::dialogStack.

Referenced by Slic3r::GUI::CloneDialog::CloneDialog(), Slic3r::GUI::ConfigWizard::ConfigWizard(), Slic3r::GUI::CreatePresetSuccessfulDialog::CreatePresetSuccessfulDialog(), Slic3r::GUI::DeleteConfirmDialog::DeleteConfirmDialog(), Slic3r::GUI::DesignVariableDialog::DesignVariableDialog(), Slic3r::GUI::anonymous_namespace{PrintHostDialogs.cpp}::FlashforgeSlotDialog::FlashforgeSlotDialog(), Slic3r::GUI::GuideFrame::GuideFrame(), Slic3r::GUI::InputIpAddressDialog::InputIpAddressDialog(), Slic3r::GUI::ManualNozzleCountDialog::ManualNozzleCountDialog(), Slic3r::GUI::MsgUpdateConfig::MsgUpdateConfig(), Slic3r::GUI::MsgUpdateForced::MsgUpdateForced(), Slic3r::GUI::MultiChoiceDialog::MultiChoiceDialog(), Slic3r::GUI::NetworkErrorDialog::NetworkErrorDialog(), Slic3r::GUI::NetworkPluginRestartDialog::NetworkPluginRestartDialog(), Slic3r::GUI::PartSkipConfirmDialog::PartSkipConfirmDialog(), Slic3r::GUI::PhysicalPrinterDialog::PhysicalPrinterDialog(), Slic3r::GUI::PlateNameEditDialog::PlateNameEditDialog(), Slic3r::GUI::PlateSettingsDialog::PlateSettingsDialog(), Slic3r::GUI::PublishSettingsDialog::PublishSettingsDialog(), Slic3r::GUI::SelectMachineDialog::SelectMachineDialog(), Slic3r::GUI::SendFailedConfirm::SendFailedConfirm(), Slic3r::GUI::SendSystemInfoDialog::SendSystemInfoDialog(), Slic3r::GUI::ShortcutCaptureDialog::ShortcutCaptureDialog(), Slic3r::GUI::SingleChoiceDialog::SingleChoiceDialog(), StepMeshDialog::StepMeshDialog(), Slic3r::GUI::SyncAmsInfoDialog::SyncAmsInfoDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::TokenAuthDialog(), Slic3r::GUI::UpdatePluginDialog::UpdatePluginDialog(), Slic3r::GUI::UpdateVersionDialog::UpdateVersionDialog(), Slic3r::GUI::wgtDeviceNozzleRackUpgradeDlg::wgtDeviceNozzleRackUpgradeDlg(), Slic3r::GUI::SavePresetDialog::accept(), Slic3r::GUI::MsgDialog::add_button(), Slic3r::GUI::TipsDialog::add_button(), Slic3r::GUI::FilamentPickerDialog::BindEvents(), Slic3r::GUI::PluginPickerDialog::build_capability_ui(), Slic3r::GUI::BedShapeDialog::build_dialog(), Slic3r::GUI::PluginPickerDialog::build_ui(), Slic3r::GUI::UnsavedChangesDialog::close(), Slic3r::GUI::FileArchiveDialog::create_btn_sizer(), Slic3r::GUI::ColorDecomposeDialog::create_button_panel(), Slic3r::GUI::MixedFilamentDialog::create_button_panel(), Slic3r::GUI::CreateFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::CreatePresetForPrinterDialog::create_dialog_buttons(), Slic3r::GUI::EditFilamentPresetDialog::create_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::create_dialog_buttons(), Slic3r::GUI::PreferencesDialog::create_item_language_combobox(), Slic3r::GUI::PreferencesDialog::create_item_region_combobox(), Slic3r::GUI::PreferencesDialog::create_items(), Slic3r::GUI::CreatePrinterPresetDialog::create_page1_dialog_buttons(), Slic3r::GUI::CreatePrinterPresetDialog::create_page2_dialog_buttons(), Slic3r::GUI::ExportConfigsDialog::data_init(), Slic3r::GUI::WebDialog::destroy_silently(), Slic3r::GUI::EditFilamentPresetDialog::edit_preset(), Slic3r::GUI::ConnectPrinterDialog::end_modal(), Slic3r::GUI::PrintHostSendDialog::EndModal(), Slic3r::GUI::ColorPickerDialog::finish(), Slic3r::GUI::WebDialog::finish(), Slic3r::GUI::Newer3mfVersionDialog::get_btn_sizer(), Slic3r::GUI::ScoreDialog::get_button_sizer(), Slic3r::GUI::WebViewHostDialog::handle_common_script_command(), Slic3r::GUI::ExportPresetBundleDialog::InitExportData(), Slic3r::GUI::SelectMachineDialog::navigate_to_timelapse_page(), Slic3r::GUI::BindMachineDialog::on_bind_success(), Slic3r::GUI::ConnectPrinterDialog::on_button_confirm(), Slic3r::GUI::RecenterDialog::on_button_confirm(), Slic3r::GUI::BindMachineDialog::on_cancel(), Slic3r::GUI::EditCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::InputIpAddressDialog::on_cancel(), Slic3r::GUI::NewCalibrationHistoryDialog::on_cancel(), Slic3r::GUI::OAuthDialog::on_cancel(), Slic3r::GUI::PingCodeBindDialog::on_cancel(), Slic3r::GUI::SelectMachineDialog::on_cancel(), Slic3r::GUI::SendToPrinterDialog::on_cancel(), Slic3r::GUI::SyncAmsInfoDialog::on_cancel(), Slic3r::GUI::UnBindMachineDialog::on_cancel(), Slic3r::GUI::WebDialog::on_close_window(), Slic3r::GUI::NetworkPluginDownloadDialog::on_dont_ask(), Slic3r::GUI::NetworkPluginDownloadDialog::on_download(), Slic3r::GUI::EditDevNameDialog::on_edit_name(), Slic3r::GUI::ConfirmBeforeSendDialog::on_hide(), Slic3r::GUI::PrivacyUpdateDialog::on_hide(), Slic3r::GUI::ShortcutCaptureDialog::on_key(), Slic3r::GUI::TextureImportDialog::on_ok_clicked(), Slic3r::GUI::FileArchiveDialog::on_open_button(), Slic3r::GUI::NetworkPluginDownloadDialog::on_remind_later(), Slic3r::GUI::ProjectDropDialog::on_select_cancel(), Slic3r::GUI::SavePresetDialog::on_select_cancel(), Slic3r::GUI::ProjectDropDialog::on_select_ok(), Slic3r::GUI::SendMultiMachinePage::on_send(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip(), Slic3r::GUI::TextureImportDialog::on_skip_clicked(), Slic3r::GUI::NetworkPluginDownloadDialog::on_skip_version(), Slic3r::GUI::Cornering_Test_Dlg::on_start(), Slic3r::GUI::FlowRateCalibrationDialog::on_start(), Slic3r::GUI::Input_Shaping_Damp_Test_Dlg::on_start(), Slic3r::GUI::Input_Shaping_Freq_Test_Dlg::on_start(), Slic3r::GUI::MaxVolumetricSpeed_Test_Dlg::on_start(), Slic3r::GUI::PA_Calibration_Dlg::on_start(), Slic3r::GUI::Retraction_Test_Dlg::on_start(), Slic3r::GUI::Temp_Calibration_Dlg::on_start(), Slic3r::GUI::VFA_Test_Dlg::on_start(), Slic3r::GUI::CalibrationDialog::on_start_calibration(), Slic3r::GUI::UnBindMachineDialog::on_unbind_printer(), Slic3r::GUI::PartSkipDialog::OnApplyDialog(), anonymous_namespace{3DPrinterOS.cpp}::TokenAuthDialog::OnCancel(), Slic3r::GUI::AboutDialog::onCloseDialog(), Slic3r::GUI::CopyrightsDialog::onCloseDialog(), Slic3r::GUI::MultiNozzleSyncDialog::OnRackStatusReadingFinished(), Slic3r::GUI::GuideFrame::OnScriptMessage(), Slic3r::GUI::InputIpAddressDialog::OnTimer(), Slic3r::GUI::KBShortcutsDialog::open_mouse_preferences(), Slic3r::GUI::TroubleshootDialog::PackAll(), Slic3r::GUI::TroubleshootDialog::RebuildSystemProfiles(), Slic3r::GUI::SpeedDialWebDialog::run_action(), Slic3r::GUI::OAuthDialog::Show(), Slic3r::GUI::MultiNozzleSyncDialog::UpdateButton(), and Slic3r::GUI::CreatePrinterPresetDialog::validate_input_valid().

◆ fetchUrl()

void Slic3r::GUI::PartSkipDialog::fetchUrl ( boost::weak_ptr< PrinterFileSystem > wfs)
private
455{
456 boost::shared_ptr fs(wfs.lock());
457 if (!fs) return;
458
459 DeviceManager *dm = GUI::wxGetApp().getDeviceManager();
460 MachineObject *obj = dm->get_selected_machine();
461
462 if (obj == nullptr) {
463 fs->SetUrl("0");
464 return;
465 }
466 std::string dev_ver = obj->get_ota_version();
467 std::string dev_id = obj->get_dev_id();
468 // int remote_proto = obj->get_file_remote();
469
470 NetworkAgent *agent = wxGetApp().getAgent();
471 std::string agent_version = agent ? agent->get_version() : "";
472
473 auto url_state = m_url_state;
474 if (obj->is_lan_mode_printer()) { url_state = URL_TCP; }
475
476 if (agent) {
477 switch (url_state) {
478 case URL_TCP: {
479 std::string devIP = obj->get_dev_ip();
480 std::string accessCode = obj->get_access_code();
481 std::string tcp_url = "bambu:///local/" + devIP + "?port=6000&user=" + "bblp" + "&passwd=" + accessCode;
482 CallAfter([=] {
483 boost::shared_ptr fs(wfs.lock());
484 if (!fs) return;
485 if (boost::algorithm::starts_with(tcp_url, "bambu:///")) {
486 fs->SetUrl(tcp_url);
487 } else {
488 fs->SetUrl("3");
489 }
490 });
491 break;
492 }
493 case URL_TUTK: {
494 std::string protocols[] = {"", "\"tutk\"", "\"agora\"", "\"tutk\",\"agora\""};
495 agent->get_camera_url(obj->get_dev_id() + "|" + dev_ver + "|" + protocols[3], [this, wfs, m = dev_id, v = agent->get_version(), dv = dev_ver](std::string url)
496 {
497 if (boost::algorithm::starts_with(url, "bambu:///")) {
498 url += "&device=" + m;
499 url += "&net_ver=" + v;
500 url += "&dev_ver=" + dv;
501 url += "&refresh_url=" + boost::lexical_cast<std::string>(&refresh_agora_url);
502 url += "&cli_id=" + wxGetApp().app_config->get("slicer_uuid");
503 url += "&cli_ver=" + std::string(SLIC3R_VERSION);
504 }
505 CallAfter([=] {
506 boost::shared_ptr fs(wfs.lock());
507 if (!fs) return;
508 if (boost::algorithm::starts_with(url, "bambu:///")) {
509 fs->SetUrl(url);
510 } else {
511 fs->SetUrl("3");
512 }
513 });
514 }, wxGetApp().get_printer_cloud_provider());
515 break;
516 }
517 default: break;
518 }
519 }
520}
enum URL_STATE m_url_state
Definition PartSkipDialog.hpp:136
@ URL_TCP
Definition PartSkipDialog.hpp:44
@ URL_TUTK
Definition PartSkipDialog.hpp:45

References Slic3r::MachineObject::get_access_code(), Slic3r::NetworkAgent::get_camera_url(), Slic3r::MachineObject::get_dev_id(), Slic3r::MachineObject::get_dev_ip(), Slic3r::MachineObject::get_ota_version(), Slic3r::DeviceManager::get_selected_machine(), Slic3r::NetworkAgent::get_version(), Slic3r::MachineObject::is_lan_mode_printer(), m_url_state, Slic3r::GUI::URL_TCP, and Slic3r::GUI::URL_TUTK.

Referenced by OnFileSystemEvent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ force_rescale()

bool Slic3r::GUI::DPIAware< wxDialog >::force_rescale ( ) const
inlineinherited
201{ return m_force_rescale; }

◆ GetAllSkippedPartsNum()

int Slic3r::GUI::PartSkipDialog::GetAllSkippedPartsNum ( )
950{
951 int skipped_cnt = 0;
952 for (auto &[part_id, part_state] : m_parts_state) {
953 if (part_state == PartState::psSkipped || part_state == PartState::psChecked) skipped_cnt++;
954 }
955 return skipped_cnt;
956}
std::map< uint32_t, PartState > m_parts_state
Definition PartSkipDialog.hpp:132
@ psChecked
Definition PartSkipCommon.hpp:11
@ psSkipped
Definition PartSkipCommon.hpp:12

References GetAllSkippedPartsNum(), m_parts_state, Slic3r::GUI::psChecked, and Slic3r::GUI::psSkipped.

Referenced by GetAllSkippedPartsNum().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetPartsInfo()

PartsInfo Slic3r::GUI::PartSkipDialog::GetPartsInfo ( )
private
601{
602 PartsInfo parts_info;
603 for (auto [part_id, part_state] : this->m_parts_state) { parts_info.push_back(std::pair<int, PartState>(part_id, part_state)); }
604 return parts_info;
605}
std::vector< std::pair< int, PartState > > PartsInfo
Definition PartSkipCommon.hpp:16

References GetPartsInfo(), and m_parts_state.

Referenced by GetPartsInfo(), InitDialogUI(), OnAllCheckbox(), and UpdatePartsStateFromPrinter().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InitDialogUI()

void Slic3r::GUI::PartSkipDialog::InitDialogUI ( )
698{
699 m_print_lock = true;
701 BOOST_LOG_TRIVIAL(info) << "part skip: lock parts info from printer.";
702 m_scroll_sizer->Clear(true);
703 m_all_checkbox->SetValue(false);
704 m_parts_state.clear();
705 m_parts_name.clear();
706
707 std::string pick_img = m_local_paths[0];
708 std::string slice_info = m_local_paths[2];
709
710 m_switch_drag_btn->SetIcon("canvas_drag");
711 m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
712 m_is_drag = false;
713 m_canvas->SwitchDrag(false);
714 m_canvas->SetZoomPercent(100);
715 m_canvas->SetOffset(wxPoint(0, 0));
716
717 BOOST_LOG_TRIVIAL(info) << "part skip: load canvas pick image begin.";
718 m_canvas->LoadPickImage(pick_img);
719 BOOST_LOG_TRIVIAL(info) << "part skip: load canvas pick image end.";
720 ModelSettingHelper helper(slice_info);
721
722 if (helper.Parse()) {
723 is_model_support_partskip = helper.GetLabelObjectEnabled(m_plate_idx);
724 auto parse_result = helper.GetPlateObjects(m_plate_idx);
725 for (const auto &part : parse_result) {
726 m_parts_state[part.identify_id] = part.state;
727 m_parts_name[part.identify_id] = part.name;
728 }
729 if (m_obj) {
730 std::vector<int> partskip_ids = m_obj->m_partskip_ids;
731 for (auto part_id : partskip_ids) { m_parts_state[part_id] = PartState::psSkipped; }
732 }
733
734 for (const auto &[part_id, part_state] : m_parts_state) {
735 auto line_sizer = new wxBoxSizer(wxHORIZONTAL);
736 auto checkbox = new CheckBox(m_list_view);
737 auto label = new Label(m_list_view, wxEmptyString);
738
739 checkbox->Bind(
740 wxEVT_TOGGLEBUTTON,
741 [this, part_id = part_id](wxCommandEvent &event) {
742 m_parts_state[part_id] = event.IsChecked() ? PartState::psChecked : PartState::psUnCheck;
743 if (!event.IsChecked()) {
744 m_all_checkbox->SetValue(false);
745 } else if (IsAllChecked()) {
746 m_all_checkbox->SetValue(true);
747 }
748 m_canvas->UpdatePartsInfo(GetPartsInfo());
751 event.Skip();
752 },
753 checkbox->GetId());
754
755 if (part_state == PartState::psChecked) {
756 checkbox->SetValue(true);
757 checkbox->Enable(true);
758 } else if (part_state == PartState::psUnCheck) {
759 checkbox->SetValue(false);
760 checkbox->Enable(true);
761 } else if (part_state == PartState::psSkipped) {
762 checkbox->SetValue(true);
763 checkbox->Enable(false);
764 }
765 label->SetLabel(wxString::FromUTF8(m_parts_name[part_id]));
766 label->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE));
767 label->SetForegroundColour(StateColor::darkModeColorFor(wxColor(107, 107, 107)));
768 label->Wrap(-1);
769 label->SetMinSize(wxSize(-1, FromDIP(18)));
770 checkbox->SetBackgroundColour(StateColor::darkModeColorFor(*wxWHITE));
771 checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
772 checkbox->SetMaxSize(wxSize(FromDIP(18), FromDIP(18)));
773
774 line_sizer->Add(checkbox, 0, wxALIGN_CENTER_VERTICAL, 0);
775 line_sizer->Add(label, 1, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(8));
776 m_scroll_sizer->Add(line_sizer, 0, wxBOTTOM | wxEXPAND, FromDIP(12));
777 }
778 m_canvas->UpdatePartsInfo(GetPartsInfo());
779 BOOST_LOG_TRIVIAL(info) << "part skip: update canvas parts info.";
780 }
781
782 m_scroll_sizer->Layout();
783 m_list_view->FitInside();
786 Refresh();
787 m_print_lock = false;
788 BOOST_LOG_TRIVIAL(info) << "part skip: unlock parts info from printer.";
789}
void UpdateCountLabel()
Definition PartSkipDialog.cpp:669
bool IsAllChecked()
Definition PartSkipDialog.cpp:851
bool m_print_lock
Definition PartSkipDialog.hpp:128
std::map< uint32_t, std::string > m_parts_name
Definition PartSkipDialog.hpp:133
bool m_is_drag
Definition PartSkipDialog.hpp:127
PartsInfo GetPartsInfo()
Definition PartSkipDialog.cpp:600
bool is_model_support_partskip
Definition PartSkipDialog.hpp:130
void UpdateApplyButtonStatus()
Definition PartSkipDialog.cpp:884
static wxColour darkModeColorFor(wxColour const &color)
Definition StateColor.cpp:219
@ psUnCheck
Definition PartSkipCommon.hpp:10

References StateColor::darkModeColorFor(), Slic3r::GUI::ModelSettingHelper::GetLabelObjectEnabled(), GetPartsInfo(), Slic3r::GUI::ModelSettingHelper::GetPlateObjects(), InitDialogUI(), is_model_support_partskip, IsAllChecked(), m_all_checkbox, m_canvas, m_is_drag, m_list_view, m_local_paths, m_obj, m_parts_name, m_parts_state, m_plate_idx, m_print_lock, m_scroll_sizer, m_switch_drag_btn, Slic3r::GUI::ModelSettingHelper::Parse(), Slic3r::GUI::psChecked, Slic3r::GUI::psSkipped, Slic3r::GUI::psUnCheck, UpdateApplyButtonStatus(), and UpdateCountLabel().

Referenced by InitDialogUI(), and OnFileSystemResult().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ InitSchedule()

void Slic3r::GUI::PartSkipDialog::InitSchedule ( MachineObject * obj_)
584{
585 m_obj = obj;
587 m_loading_icon->Play();
589}
void SetSimplebookPage(int page)
Definition PartSkipDialog.cpp:849
void DownloadPartsFile()
Definition PartSkipDialog.cpp:413

References DownloadPartsFile(), InitSchedule(), m_loading_icon, m_obj, and SetSimplebookPage().

Referenced by InitSchedule(), and OnRetryButton().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_drag_mode()

bool Slic3r::GUI::PartSkipDialog::is_drag_mode ( )
private
598{ return m_is_drag == true; }

References is_drag_mode(), and m_is_drag.

Referenced by is_drag_mode(), and OnSwitchDrag().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ is_local_file_existed()

bool Slic3r::GUI::PartSkipDialog::is_local_file_existed ( const std::vector< std::string > & local_paths)
private
406{
407 for (auto path : local_paths) {
408 if (!std::filesystem::exists(path)) { return false; }
409 }
410 return true;
411}

Referenced by DownloadPartsFile().

Here is the caller graph for this function:

◆ is_new_scale_factor()

bool Slic3r::GUI::DPIAware< wxDialog >::is_new_scale_factor ( ) const
inlineprivateinherited
262{ return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }

◆ IsAllCanceled()

bool Slic3r::GUI::PartSkipDialog::IsAllCanceled ( )
private
860{
861 for (auto &[part_id, part_state] : m_parts_state) {
862 if (part_state == PartState::psChecked) return false;
863 }
864 return true;
865}

References IsAllCanceled(), m_parts_state, and Slic3r::GUI::psChecked.

Referenced by IsAllCanceled(), and UpdateApplyButtonStatus().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsAllChecked()

bool Slic3r::GUI::PartSkipDialog::IsAllChecked ( )
private
852{
853 for (auto &[part_id, part_state] : m_parts_state) {
854 if (part_state == PartState::psUnCheck) return false;
855 }
856 return true;
857}

References IsAllChecked(), m_parts_state, and Slic3r::GUI::psUnCheck.

Referenced by InitDialogUI(), IsAllChecked(), and UpdatePartsStateFromCanvas().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ normal_font()

◆ on_dpi_changed()

void Slic3r::GUI::PartSkipDialog::on_dpi_changed ( const wxRect & suggested_rect)
virtual

Implements Slic3r::GUI::DPIAware< wxDialog >.

322{
323 m_canvas->LoadPickImage(m_local_paths[0]);
324
325 m_loading_icon->SetMinSize(wxSize(FromDIP(25), FromDIP(25)));
326 m_retry_bitmap->SetBitmap(create_scaled_bitmap("partskip_retry", m_book_second_panel, 200));
327
328 m_percent_label->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
329 m_percent_label->SetMaxSize(wxSize(FromDIP(56), FromDIP(28)));
330 m_zoom_out_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
331 m_zoom_out_btn->SetMaxSize(wxSize(FromDIP(56), FromDIP(28)));
332 m_zoom_in_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
333 m_zoom_in_btn->SetMaxSize(wxSize(FromDIP(56), FromDIP(28)));
334 m_switch_drag_btn->SetMinSize(wxSize(FromDIP(56), FromDIP(28)));
335 m_switch_drag_btn->SetMaxSize(wxSize(FromDIP(56), FromDIP(28)));
336 m_percent_label->Rescale();
337 m_zoom_out_btn->Rescale();
338 m_zoom_in_btn->Rescale();
339 m_switch_drag_btn->Rescale();
340
341 m_cnt_label->SetMaxSize(wxSize(-1, FromDIP(20)));
342
343 m_tot_label->SetMinSize(wxSize(FromDIP(200), FromDIP(20)));
344 m_tot_label->SetLabel(m_tot_label->GetLabel());
345 m_tot_label->Refresh();
346
347 m_line_top->SetMinSize(wxSize(-1, 1));
348 m_line->SetMinSize(wxSize(FromDIP(267), 1));
349 m_line->SetMaxSize(wxSize(FromDIP(267), 1));
350
351 m_apply_btn->Rescale(); // ORCA no need to set size again with SetStyle
352
353 m_dlg_placeholder->SetMinSize(wxSize(-1, FromDIP(15)));
354 m_dlg_placeholder->SetMaxSize(wxSize(-1, FromDIP(15)));
355
356 m_second_retry_btn->Rescale(); // ORCA no need to set size again with SetStyle
357
358 m_all_checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
359 m_all_checkbox->Rescale();
360
361 for (auto it = m_scroll_sizer->GetChildren().begin(); it != m_scroll_sizer->GetChildren().end(); ++it) {
362 wxSizerItem *item = *it;
363 if (item && item->IsSizer()) {
364 wxSizer *sizer = item->GetSizer();
365 auto check_item = sizer->GetItem((size_t) 0);
366 if (check_item && check_item->IsWindow()) {
367 wxWindow *window = check_item->GetWindow();
368 CheckBox *checkbox = dynamic_cast<CheckBox *>(window);
369 checkbox->SetMinSize(wxSize(FromDIP(18), FromDIP(18)));
370 checkbox->Rescale();
371 }
372 }
373 }
374 m_canvas_btn_sizer->SetMinSize(wxSize(-1, FromDIP(28)));
375 m_canvas_btn_sizer->Layout();
376 m_canvas_sizer->Layout();
377 m_dlg_content_sizer->Layout();
378 m_dlg_sizer->Layout();
379
380 Fit();
381 Layout();
382}
void Rescale()
Definition CheckBox.cpp:57

References create_scaled_bitmap(), m_all_checkbox, m_apply_btn, m_book_second_panel, m_canvas, m_canvas_btn_sizer, m_canvas_sizer, m_cnt_label, m_dlg_content_sizer, m_dlg_placeholder, m_dlg_sizer, m_line, m_line_top, m_loading_icon, m_local_paths, m_percent_label, m_retry_bitmap, m_scroll_sizer, m_second_retry_btn, m_switch_drag_btn, m_tot_label, m_zoom_in_btn, and m_zoom_out_btn.

Here is the call graph for this function:

◆ on_sys_color_changed()

◆ OnAllCheckbox()

void Slic3r::GUI::PartSkipDialog::OnAllCheckbox ( wxCommandEvent & event)
private
868{
869 if (m_all_checkbox->GetValue()) {
870 for (auto &[part_id, part_state] : m_parts_state) {
871 if (part_state == PartState::psUnCheck) part_state = PartState::psChecked;
872 }
873 } else {
874 for (auto &[part_id, part_state] : m_parts_state) {
875 if (part_state == PartState::psChecked) part_state = PartState::psUnCheck;
876 }
877 }
879 m_canvas->UpdatePartsInfo(GetPartsInfo());
881 event.Skip();
882}
void UpdateDialogUI()
Definition PartSkipDialog.cpp:814

References GetPartsInfo(), m_all_checkbox, m_canvas, m_parts_state, OnAllCheckbox(), Slic3r::GUI::psChecked, Slic3r::GUI::psUnCheck, UpdateApplyButtonStatus(), and UpdateDialogUI().

Referenced by PartSkipDialog(), and OnAllCheckbox().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnApplyDialog()

void Slic3r::GUI::PartSkipDialog::OnApplyDialog ( wxCommandEvent & event)
private
906{
907 event.Skip();
908
909 if (!m_enable_apply_btn) return;
910
911 m_partskip_ids.clear();
912 for (const auto &[part_id, part_state] : m_parts_state) {
913 if (part_state == PartState::psChecked) { m_partskip_ids.push_back(part_id); }
914 }
915
916 bool all_skipped = true;
917 for (auto [part_id, part_state] : m_parts_state) {
918 if (part_state == PartState::psUnCheck) all_skipped = false;
919 }
920
921 PartSkipConfirmDialog confirm_dialog(this);
922 if (all_skipped) {
923 confirm_dialog.SetMsgLabel(_L("Skipping all objects."));
924 confirm_dialog.SetTipLabel(_L("The printing job will be stopped. Continue?"));
925 } else {
926 const int skip_cnt = int(m_partskip_ids.size());
927 confirm_dialog.SetMsgLabel(wxString::Format(_L_PLURAL("Skipping %d object.", "Skipping %d objects.", skip_cnt), skip_cnt));
928 confirm_dialog.SetTipLabel(_L("This action cannot be undone. Continue?"));
929 }
930
931 if (confirm_dialog.ShowModal() == wxID_OK) {
932 if (m_obj) {
933 BOOST_LOG_TRIVIAL(info) << "part skip: skipping " << m_partskip_ids.size() << " objects.";
934
935 if (all_skipped) {
936 m_obj->command_task_abort();
937 BOOST_LOG_TRIVIAL(info) << "part skip: command skip all parts, abort task.";
938 } else if (m_partskip_ids.size() > 0) {
939 m_obj->command_task_partskip(m_partskip_ids);
940 BOOST_LOG_TRIVIAL(info) << "part skip: command skip " << m_partskip_ids.size() << " parts.";
941 }
942 EndModal(wxID_OK);
943 } else {
944 BOOST_LOG_TRIVIAL(warning) << "part skip: machine object is null.";
945 }
946 }
947}
void EndModal(int retCode) override
Definition GUI_Utils.hpp:305
std::vector< int > m_partskip_ids
Definition PartSkipDialog.hpp:134
bool m_enable_apply_btn
Definition PartSkipDialog.hpp:129
#define _L_PLURAL(s, plural, n)
Definition I18N.hpp:96

References _L, _L_PLURAL, Slic3r::GUI::DPIDialog::EndModal(), m_enable_apply_btn, m_obj, m_parts_state, m_partskip_ids, OnApplyDialog(), Slic3r::GUI::psChecked, Slic3r::GUI::psUnCheck, Slic3r::GUI::PartSkipConfirmDialog::SetMsgLabel(), Slic3r::GUI::PartSkipConfirmDialog::SetTipLabel(), and Slic3r::GUI::DPIAware< P >::ShowModal().

Referenced by PartSkipDialog(), and OnApplyDialog().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnFileSystemEvent()

void Slic3r::GUI::PartSkipDialog::OnFileSystemEvent ( wxCommandEvent & event)
private
523{
524 e.Skip();
525 auto wfs = boost::weak_ptr(m_file_sys);
526 boost::shared_ptr fs(wfs.lock());
527 if (!fs) return;
528
529 wxString msg;
530 int status = e.GetInt();
531 // int extra = e.GetExtraLong();
532
533 switch (status) {
537 m_file_sys->GetPickImages(m_local_paths, m_target_paths);
538 break;
539 }
541 m_file_sys->Stop();
542 if (m_url_state == URL_TCP) {
544 m_file_sys->SetUrl("3");
545 m_file_sys->Retry();
546 BOOST_LOG_TRIVIAL(info) << "part skip: print file system connnect failed first.";
547 } else {
548 m_file_sys->SendConnectFail();
549 BOOST_LOG_TRIVIAL(info) << "part skip: print file system connnect failed second.";
550 }
551 break;
552 }
554 }
555 if (e.GetInt() == PrinterFileSystem::Initializing) {
556 CallAfter([=] {
557 boost::shared_ptr fs(wfs.lock());
558 if (!fs) return;
559 fetchUrl(boost::weak_ptr(fs));
560 BOOST_LOG_TRIVIAL(info) << "part skip: fetch url, get parts info files from printer.";
561 });
562 }
563}
@ Initializing
Definition PrinterFileSystem.h:235
@ ListSyncing
Definition PrinterFileSystem.h:237
@ Connecting
Definition PrinterFileSystem.h:236
@ Reconnecting
Definition PrinterFileSystem.h:240
@ Failed
Definition PrinterFileSystem.h:239
void fetchUrl(boost::weak_ptr< PrinterFileSystem > wfs)
Definition PartSkipDialog.cpp:454

References PrinterFileSystem::Connecting, PrinterFileSystem::Failed, fetchUrl(), PrinterFileSystem::Initializing, PrinterFileSystem::ListSyncing, m_file_sys, m_local_paths, m_target_paths, m_url_state, OnFileSystemEvent(), PrinterFileSystem::Reconnecting, Slic3r::GUI::URL_TCP, and Slic3r::GUI::URL_TUTK.

Referenced by DownloadPartsFile(), and OnFileSystemEvent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnFileSystemResult()

void Slic3r::GUI::PartSkipDialog::OnFileSystemResult ( wxCommandEvent & event)
private
567{
568 int result = event.GetInt();
569 m_loading_icon->Stop();
570 if (result == 0) {
571 InitDialogUI();
573 m_file_sys->Stop();
574 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "part skip: on file system result success.";
575 } else {
578 m_file_sys->Stop();
579 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "part skip: on file system result failed.";
580 }
581}
void InitDialogUI()
Definition PartSkipDialog.cpp:697

References InitDialogUI(), m_file_sys, m_loading_icon, m_url_state, OnFileSystemResult(), SetSimplebookPage(), and Slic3r::GUI::URL_TCP.

Referenced by DownloadPartsFile(), and OnFileSystemResult().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnRetryButton()

void Slic3r::GUI::PartSkipDialog::OnRetryButton ( wxCommandEvent & event)
private
592{
593 event.Skip();
595 Refresh();
596}
void InitSchedule(MachineObject *obj_)
Definition PartSkipDialog.cpp:583

References InitSchedule(), m_obj, and OnRetryButton().

Referenced by PartSkipDialog(), and OnRetryButton().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnSwitchDrag()

void Slic3r::GUI::PartSkipDialog::OnSwitchDrag ( wxCommandEvent & event)
private
620{
621 if (this->is_drag_mode()) {
622 m_is_drag = false;
623 m_switch_drag_btn->SetBackgroundColor(*wxWHITE);
624 m_switch_drag_btn->SetIcon("canvas_drag");
625 } else {
626 m_is_drag = true;
627 m_switch_drag_btn->SetBackgroundColor(wxColour(0, 150, 136));
628 m_switch_drag_btn->SetIcon("canvas_drag_active");
629 }
630 m_canvas->SwitchDrag(m_is_drag);
631}
bool is_drag_mode()
Definition PartSkipDialog.cpp:598

References is_drag_mode(), m_canvas, m_is_drag, m_switch_drag_btn, and OnSwitchDrag().

Referenced by PartSkipDialog(), and OnSwitchDrag().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnZoomIn()

void Slic3r::GUI::PartSkipDialog::OnZoomIn ( wxCommandEvent & event)
private
608{
609 m_canvas->ZoomIn(20);
611}
void UpdateZoomPercent()
Definition PartSkipDialog.cpp:667

References m_canvas, OnZoomIn(), and UpdateZoomPercent().

Referenced by PartSkipDialog(), and OnZoomIn().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnZoomOut()

void Slic3r::GUI::PartSkipDialog::OnZoomOut ( wxCommandEvent & event)
private
614{
615 m_canvas->ZoomOut(20);
617}

References m_canvas, OnZoomOut(), and UpdateZoomPercent().

Referenced by PartSkipDialog(), and OnZoomOut().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnZoomPercent()

void Slic3r::GUI::PartSkipDialog::OnZoomPercent ( wxCommandEvent & event)
private
634{
635 m_zoom_percent = event.GetInt();
636 if (m_zoom_percent >= 1000) {
637 m_zoom_percent = 1000;
638 m_zoom_in_btn->Enable(false);
639 m_zoom_in_btn->SetIcon("canvas_zoom_in_disable");
640 } else if (m_zoom_percent <= 100) {
641 m_zoom_percent = 100;
642 m_zoom_out_btn->Enable(false);
643 m_zoom_out_btn->SetIcon("canvas_zoom_out_disable");
644 } else {
645 m_zoom_in_btn->Enable(true);
646 m_zoom_out_btn->Enable(true);
647 m_zoom_in_btn->SetIcon("canvas_zoom_in");
648 m_zoom_out_btn->SetIcon("canvas_zoom_out");
649 }
650
652}
int m_zoom_percent
Definition PartSkipDialog.hpp:126

References m_zoom_in_btn, m_zoom_out_btn, m_zoom_percent, OnZoomPercent(), and UpdateZoomPercent().

Referenced by PartSkipDialog(), and OnZoomPercent().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ prev_scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::prev_scale_factor ( ) const
inlineinherited
196{ return m_prev_scale_factor; }

◆ rescale()

void Slic3r::GUI::DPIAware< wxDialog >::rescale ( const wxRect & suggested_rect)
inlineprivateinherited
265 {
266 this->Freeze();
267
268 m_force_rescale = false;
269
270 // set normal application font as a current window font
271 m_normal_font = this->GetFont();
272
274
275 // rescale missed controls sizes and images
277
278 this->Layout();
279 this->Thaw();
280
281 // reset previous scale factor from current scale factor value
283 }
virtual void on_dpi_changed(const wxRect &suggested_rect)=0
void update_em_unit()
Definition GUI_Utils.hpp:249

◆ scale_factor()

float Slic3r::GUI::DPIAware< wxDialog >::scale_factor ( ) const
inlineinherited
195{ return m_scale_factor; }

◆ set_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::set_em_unit ( int v)
inlineinherited
200{ m_em_unit = v; }

◆ set_prev_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_prev_scale_factor ( float v)
inlineinherited

◆ set_scale_factor()

void Slic3r::GUI::DPIAware< wxDialog >::set_scale_factor ( float v)
inlineinherited
198{ m_scale_factor = v; }

◆ SetSimplebookPage()

void Slic3r::GUI::PartSkipDialog::SetSimplebookPage ( int page)
849{ m_simplebook->SetSelection(page); }

References m_simplebook, and SetSimplebookPage().

Referenced by InitSchedule(), OnFileSystemResult(), and SetSimplebookPage().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Show()

bool Slic3r::GUI::PartSkipDialog::Show ( bool show)
686{
687 if (show) {
688 wxGetApp().UpdateDlgDarkUI(this);
689 CentreOnParent();
690
691 Layout();
692 Fit();
693 }
694 return DPIDialog::Show(show);
695}

References Show().

Referenced by Show().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ShowModal()

◆ update_em_unit()

void Slic3r::GUI::DPIAware< wxDialog >::update_em_unit ( )
inlineprivateinherited
250 {
251 // Linux specific issue : get_dpi_for_window(this) still doesn't responce to the Display's scale in new wxWidgets(3.1.3).
252 // So, calculate the m_em_unit value from the font size, as before
253#if !defined(__WXGTK__)
255#else
256 // initialize default width_unit according to the width of the one symbol ("m") of the currently active font of this window.
257 m_em_unit = std::max<size_t>(10, this->GetTextExtent("m").x - 1);
258#endif // __WXGTK__
259 }

◆ UpdateApplyButtonStatus()

void Slic3r::GUI::PartSkipDialog::UpdateApplyButtonStatus ( )
private
885{
886 if (IsAllCanceled()) {
888 m_apply_btn->SetToolTip(_L("Nothing selected"));
889 m_enable_apply_btn = false;
890 } else if (m_parts_state.size() > 64) {
892 m_apply_btn->SetToolTip(_L("Over 64 objects in single plate"));
893 m_enable_apply_btn = false;
894 } else if (!is_model_support_partskip) {
896 m_apply_btn->SetToolTip(_L("The current print job cannot be skipped"));
897 m_enable_apply_btn = false;
898 } else {
900 m_apply_btn->SetToolTip(wxEmptyString);
901 m_enable_apply_btn = true;
902 }
903}
bool IsAllCanceled()
Definition PartSkipDialog.cpp:859

References _L, Choice, Confirm, is_model_support_partskip, IsAllCanceled(), m_apply_btn, m_enable_apply_btn, m_parts_state, Regular, and UpdateApplyButtonStatus().

Referenced by InitDialogUI(), OnAllCheckbox(), UpdateApplyButtonStatus(), and UpdatePartsStateFromCanvas().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateCountLabel()

void Slic3r::GUI::PartSkipDialog::UpdateCountLabel ( )
private
670{
671 int check_cnt = 0;
672 int tot_cnt = 0;
673 for (auto [part_id, part_state] : m_parts_state) {
674 if (part_state == PartState::psChecked) check_cnt++;
675 if (part_state != PartState::psSkipped) tot_cnt++;
676 }
677 m_cnt_label->SetLabel(wxString::Format("%d", check_cnt));
678 m_cnt_label->Fit();
679 // TRN Shown right after the number of selected objects, which is a separate label: "3/10 Selected". %d is the total number of objects.
680 m_tot_label->SetLabel(wxString::Format(_L("/%d Selected"), tot_cnt));
681 m_tot_label->Fit();
682 m_dlg_btn_sizer->Layout();
683}

References _L, m_cnt_label, m_dlg_btn_sizer, m_parts_state, m_tot_label, Slic3r::GUI::psChecked, Slic3r::GUI::psSkipped, and UpdateCountLabel().

Referenced by InitDialogUI(), UpdateCountLabel(), and UpdateDialogUI().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateDialogUI()

void Slic3r::GUI::PartSkipDialog::UpdateDialogUI ( )
private
815{
816 if (m_parts_state.size() != m_scroll_sizer->GetItemCount()) {
817 BOOST_LOG_TRIVIAL(warning) << "part skip: m_parts_state and m_scroll_sizer mismatch.";
818 return;
819 }
820
821 for (auto it = m_parts_state.begin(); it != m_parts_state.end(); ++it) {
822 int idx = std::distance(m_parts_state.begin(), it);
823 auto part_state = it->second;
824
825 wxSizerItem *item = m_scroll_sizer->GetItem(idx);
826 if (item && item->IsSizer()) {
827 wxSizer *sizer = item->GetSizer();
828 auto check_item = sizer->GetItem((size_t) 0);
829
830 if (check_item && check_item->IsWindow()) {
831 wxWindow *window = check_item->GetWindow();
832 CheckBox *checkbox = dynamic_cast<CheckBox *>(window);
833 if (part_state == PartState::psChecked) {
834 checkbox->SetValue(true);
835 } else if (part_state == PartState::psUnCheck) {
836 checkbox->SetValue(false);
837 } else {
838 checkbox->SetValue(true);
839 checkbox->Enable(false);
840 }
841 }
842 }
843 }
844
846 Refresh();
847}
void SetValue(bool value) override
Definition CheckBox.cpp:43

References m_parts_state, m_scroll_sizer, Slic3r::GUI::psChecked, Slic3r::GUI::psUnCheck, UpdateCountLabel(), and UpdateDialogUI().

Referenced by OnAllCheckbox(), UpdateDialogUI(), UpdatePartsStateFromCanvas(), and UpdatePartsStateFromPrinter().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdatePartsStateFromCanvas()

void Slic3r::GUI::PartSkipDialog::UpdatePartsStateFromCanvas ( wxCommandEvent & event)
private
655{
656 int part_id = event.GetExtraLong();
657 PartState part_state = PartState(event.GetInt());
658
659 m_parts_state[part_id] = part_state;
660 if (part_state == psUnCheck) { m_all_checkbox->SetValue(false); }
661 if (IsAllChecked()) { m_all_checkbox->SetValue(true); }
662
665}
PartState
Definition PartSkipCommon.hpp:9

References IsAllChecked(), m_all_checkbox, m_parts_state, Slic3r::GUI::psUnCheck, UpdateApplyButtonStatus(), UpdateDialogUI(), and UpdatePartsStateFromCanvas().

Referenced by PartSkipDialog(), and UpdatePartsStateFromCanvas().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdatePartsStateFromPrinter()

void Slic3r::GUI::PartSkipDialog::UpdatePartsStateFromPrinter ( MachineObject * obj_)
792{
793 if (m_print_lock) {
794 BOOST_LOG_TRIVIAL(info) << "part skip: parts info from printer is locked.";
795 return;
796 }
797 m_obj = obj;
798 if (m_obj) {
799 bool update_flag = false;
800 std::vector<int> partskip_ids = m_obj->m_partskip_ids;
801 for (auto part_id : partskip_ids) {
802 if (m_parts_state[part_id] != PartState::psSkipped) {
804 update_flag = true;
805 }
806 }
807 if (update_flag) {
808 m_canvas->UpdatePartsInfo(GetPartsInfo());
810 }
811 }
812}

References GetPartsInfo(), m_canvas, m_obj, m_parts_state, m_print_lock, Slic3r::GUI::psSkipped, UpdateDialogUI(), and UpdatePartsStateFromPrinter().

Referenced by UpdatePartsStateFromPrinter().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateZoomPercent()

void Slic3r::GUI::PartSkipDialog::UpdateZoomPercent ( )
private
667{ m_percent_label->SetLabel(wxString::Format("%d%%", m_zoom_percent)); }

References m_percent_label, m_zoom_percent, and UpdateZoomPercent().

Referenced by OnZoomIn(), OnZoomOut(), OnZoomPercent(), and UpdateZoomPercent().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ is_model_support_partskip

bool Slic3r::GUI::PartSkipDialog::is_model_support_partskip {false}
private
130{false};

Referenced by InitDialogUI(), and UpdateApplyButtonStatus().

◆ m_all_checkbox

CheckBox* Slic3r::GUI::PartSkipDialog::m_all_checkbox

◆ m_all_label

Label* Slic3r::GUI::PartSkipDialog::m_all_label

Referenced by PartSkipDialog().

◆ m_apply_btn

Button* Slic3r::GUI::PartSkipDialog::m_apply_btn

◆ m_book_first_panel

wxPanel* Slic3r::GUI::PartSkipDialog::m_book_first_panel

Referenced by PartSkipDialog().

◆ m_book_first_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_book_first_sizer

Referenced by PartSkipDialog().

◆ m_book_second_btn_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_book_second_btn_sizer

Referenced by PartSkipDialog().

◆ m_book_second_panel

wxPanel* Slic3r::GUI::PartSkipDialog::m_book_second_panel

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_book_second_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_book_second_sizer

Referenced by PartSkipDialog().

◆ m_book_third_panel

wxPanel* Slic3r::GUI::PartSkipDialog::m_book_third_panel

Referenced by PartSkipDialog().

◆ m_can_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_can_rescale
privateinherited
235{ true };

◆ m_canvas

◆ m_canvas_btn_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_canvas_btn_sizer

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_canvas_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_canvas_sizer

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_cnt_label

Label* Slic3r::GUI::PartSkipDialog::m_cnt_label

◆ m_dlg_btn_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_dlg_btn_sizer

Referenced by PartSkipDialog(), and UpdateCountLabel().

◆ m_dlg_content_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_dlg_content_sizer

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_dlg_placeholder

wxPanel* Slic3r::GUI::PartSkipDialog::m_dlg_placeholder

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_dlg_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_dlg_sizer

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_em_unit

int Slic3r::GUI::DPIAware< wxDialog >::m_em_unit
privateinherited

◆ m_enable_apply_btn

bool Slic3r::GUI::PartSkipDialog::m_enable_apply_btn {false}
private
129{false};

Referenced by OnApplyDialog(), and UpdateApplyButtonStatus().

◆ m_file_sys

boost::shared_ptr<PrinterFileSystem> Slic3r::GUI::PartSkipDialog::m_file_sys
private

◆ m_force_rescale

bool Slic3r::GUI::DPIAware< wxDialog >::m_force_rescale
privateinherited
236{ false };

◆ m_is_drag

bool Slic3r::GUI::PartSkipDialog::m_is_drag {false}
private
127{false};

Referenced by InitDialogUI(), is_drag_mode(), and OnSwitchDrag().

◆ m_line

wxPanel* Slic3r::GUI::PartSkipDialog::m_line

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_line_top

wxPanel* Slic3r::GUI::PartSkipDialog::m_line_top

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_list_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_list_sizer

Referenced by PartSkipDialog().

◆ m_list_view

wxScrolledWindow* Slic3r::GUI::PartSkipDialog::m_list_view

Referenced by PartSkipDialog(), and InitDialogUI().

◆ m_loading_icon

AnimaIcon* Slic3r::GUI::PartSkipDialog::m_loading_icon

◆ m_loading_label

Label* Slic3r::GUI::PartSkipDialog::m_loading_label

Referenced by PartSkipDialog().

◆ m_local_paths

std::vector<std::string> Slic3r::GUI::PartSkipDialog::m_local_paths
private

◆ m_new_font_point_size

int Slic3r::GUI::DPIAware< wxDialog >::m_new_font_point_size
privateinherited

◆ m_normal_font

wxFont Slic3r::GUI::DPIAware< wxDialog >::m_normal_font
privateinherited

◆ m_obj

◆ m_parts_name

std::map<uint32_t, std::string> Slic3r::GUI::PartSkipDialog::m_parts_name
private

Referenced by InitDialogUI().

◆ m_parts_state

◆ m_partskip_ids

std::vector<int> Slic3r::GUI::PartSkipDialog::m_partskip_ids
private

Referenced by OnApplyDialog().

◆ m_percent_label

Button* Slic3r::GUI::PartSkipDialog::m_percent_label

◆ m_plate_idx

int Slic3r::GUI::PartSkipDialog::m_plate_idx {-1}
private
125{-1};

Referenced by DownloadPartsFile(), and InitDialogUI().

◆ m_prev_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_prev_scale_factor
privateinherited

◆ m_print_lock

bool Slic3r::GUI::PartSkipDialog::m_print_lock {true}
private
128{true};

Referenced by InitDialogUI(), and UpdatePartsStateFromPrinter().

◆ m_retry_bitmap

wxStaticBitmap* Slic3r::GUI::PartSkipDialog::m_retry_bitmap

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_retry_icon

ScalableBitmap* Slic3r::GUI::PartSkipDialog::m_retry_icon

◆ m_retry_label

Label* Slic3r::GUI::PartSkipDialog::m_retry_label

Referenced by PartSkipDialog().

◆ m_scale_factor

float Slic3r::GUI::DPIAware< wxDialog >::m_scale_factor
privateinherited

◆ m_scroll_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_scroll_sizer

◆ m_second_retry_btn

Button* Slic3r::GUI::PartSkipDialog::m_second_retry_btn

Referenced by PartSkipDialog(), and on_dpi_changed().

◆ m_simplebook

wxSimplebook* Slic3r::GUI::PartSkipDialog::m_simplebook

◆ m_sizer

wxBoxSizer* Slic3r::GUI::PartSkipDialog::m_sizer

Referenced by PartSkipDialog().

◆ m_switch_drag_btn

Button* Slic3r::GUI::PartSkipDialog::m_switch_drag_btn

◆ m_target_paths

std::vector<std::string> Slic3r::GUI::PartSkipDialog::m_target_paths
private

◆ m_timestamp

std::string Slic3r::GUI::PartSkipDialog::m_timestamp
private

Referenced by PartSkipDialog(), and create_tmp_path().

◆ m_tmp_path

std::string Slic3r::GUI::PartSkipDialog::m_tmp_path
private

Referenced by DownloadPartsFile().

◆ m_tot_label

Label* Slic3r::GUI::PartSkipDialog::m_tot_label

◆ m_url_state

enum URL_STATE Slic3r::GUI::PartSkipDialog::m_url_state = URL_STATE::URL_TCP
private

◆ m_zoom_in_btn

Button* Slic3r::GUI::PartSkipDialog::m_zoom_in_btn

◆ m_zoom_out_btn

Button* Slic3r::GUI::PartSkipDialog::m_zoom_out_btn

◆ m_zoom_percent

int Slic3r::GUI::PartSkipDialog::m_zoom_percent {100}
private
126{100};

Referenced by OnZoomPercent(), and UpdateZoomPercent().


The documentation for this class was generated from the following files: