356 : DPIDialog(
static_cast<wxWindow *
>(wxGetApp().mainframe), wxID_ANY,
_L(
"Log in printer"), wxDefaultPosition, wxDefaultSize, wxCAPTION)
357 {
358
359#ifdef __WINDOWS__
360 SetDoubleBuffered(true);
361#endif
362
364
365 SetBackgroundColour(*wxWHITE);
366 wxBoxSizer *m_sizer_main = new wxBoxSizer(wxVERTICAL);
367 auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
368 m_line_top->SetBackgroundColour(wxColour(166, 169, 170));
369 m_sizer_main->Add(m_line_top, 0, wxEXPAND, 0);
370 m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(38));
371
372 wxBoxSizer *m_sizer_body = new wxBoxSizer(wxHORIZONTAL);
373
374 m_panel_left =
new StaticBox(
this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(201), FromDIP(212)), wxBORDER_NONE);
375 m_panel_left->SetMinSize(wxSize(FromDIP(201), FromDIP(212)));
378 wxBoxSizer *m_sizere_left_h = new wxBoxSizer(wxHORIZONTAL);
379 wxBoxSizer *m_sizere_left_v= new wxBoxSizer(wxVERTICAL);
380
389 m_sizere_left_v->Add(0, 0, 0, wxTOP, 5);
391 m_sizere_left_h->Add(m_sizere_left_v, 1, wxALIGN_CENTER, 0);
392
396
398 m_sizer_body->Add(new wxStaticBitmap(this, wxID_ANY, m_bind_icon, wxDefaultPosition, wxSize(FromDIP(34), FromDIP(14)), 0), 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(20));
399
400 m_panel_right =
new StaticBox(
this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(201), FromDIP(212)), wxBORDER_NONE);
401 m_panel_right->SetMinSize(wxSize(FromDIP(201), FromDIP(212)));
404
408 wxBoxSizer *m_sizer_right_h = new wxBoxSizer(wxHORIZONTAL);
409 wxBoxSizer *m_sizer_right_v = new wxBoxSizer(wxVERTICAL);
410
411 m_avatar =
new wxStaticBitmap(
m_panel_right, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(60), FromDIP(60)), 0);
412 m_sizer_right_v->Add(
m_avatar, 0, wxALIGN_CENTER, 0);
413 m_sizer_right_v->Add(0, 0, 0, wxTOP, 7);
414 m_sizer_right_v->Add(
m_user_name, 0, wxALIGN_CENTER, 0);
415 m_sizer_right_h->Add(m_sizer_right_v, 1, wxALIGN_CENTER, 0);
416
420
421 m_sizer_main->Add(m_sizer_body, 1, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(30));
422
423 m_sizer_main->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(20));
424
425
426 auto m_sizer_status_text = new wxBoxSizer(wxHORIZONTAL);
431
432
436
440
441 m_link_show_error->Bind(wxEVT_ENTER_WINDOW, [
this](
auto& e) {SetCursor(wxCURSOR_HAND); });
442 m_link_show_error->Bind(wxEVT_LEAVE_WINDOW, [
this](
auto& e) {SetCursor(wxCURSOR_ARROW); });
447 );
454 });
455
458
460 m_sizer_status_text->Add(
m_status_text, 0, wxALIGN_CENTER, 0);
461 m_sizer_status_text->Add(
m_link_show_error, 0, wxLEFT|wxALIGN_CENTER, FromDIP(8));
463
464
465
470
471
472 wxWrapSizer* sizer_privacy_agreement = new wxWrapSizer( wxHORIZONTAL, wxWRAPSIZER_DEFAULT_FLAGS );
473 wxWrapSizer* sizere_notice_agreement= new wxWrapSizer( wxHORIZONTAL, wxWRAPSIZER_DEFAULT_FLAGS );
474 wxBoxSizer* sizer_privacy_body = new wxBoxSizer(wxHORIZONTAL);
475 wxBoxSizer* sizere_notice_body = new wxBoxSizer(wxHORIZONTAL);
476
480 m_st_privacy_title->SetForegroundColour(wxColour(38, 46, 48));
481
482
485 m_link_Terms_title->SetMaxSize(wxSize(FromDIP(450), -1));
486 m_link_Terms_title->Wrap(FromDIP(450));
487 m_link_Terms_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
488 wxString txt =
_L(
"Thank you for purchasing a Bambu Lab device. Before using your Bambu Lab device, please read the terms and conditions. "
489 "By clicking to agree to use your Bambu Lab device, you agree to abide by the Privacy Policy and Terms of Use (collectively, the \"Terms\"). "
490 "If you do not comply with or agree to the Bambu Lab Privacy Policy, please do not use Bambu Lab equipment and services.");
492 confirm_dlg.update_text(txt);
493 confirm_dlg.CenterOnParent();
494 confirm_dlg.on_show();
495 });
496
499 m_st_and_title->SetForegroundColour(wxColour(38, 46, 48));
500
501
504 m_link_privacy_title->SetMaxSize(wxSize(FromDIP(450), -1));
505 m_link_privacy_title->Wrap(FromDIP(450));
506 m_link_privacy_title->Bind(wxEVT_LEFT_DOWN, [](auto& e) {
507 std::string url;
508 std::string country_code = Slic3r::GUI::wxGetApp().app_config->get_country_code();
509
510 if (country_code == "CN") {
511 url = "https://www.bambulab.cn/policies/privacy";
512 }
513 else{
514 url = "https://www.bambulab.com/policies/privacy";
515 }
516 wxLaunchDefaultBrowser(url);
517 });
518
519 sizere_notice_agreement->Add(0, 0, 0, wxTOP, FromDIP(4));
520 sizer_privacy_agreement->Add(m_st_privacy_title, 0, wxALIGN_CENTER, 0);
521 sizer_privacy_agreement->Add(0, 0, 0, wxLEFT, FromDIP(5));
522 sizer_privacy_agreement->Add(m_link_Terms_title, 0, wxALIGN_CENTER, 0);
523 sizer_privacy_agreement->Add(m_st_and_title, 0, wxALIGN_CENTER|wxLEFT|wxRIGHT, FromDIP(5));
524 sizer_privacy_agreement->Add(m_link_privacy_title, 0, wxALIGN_CENTER, 0);
525
526 sizer_privacy_body->Add(m_checkbox_privacy, 0, wxALL, 0);
527 sizer_privacy_body->Add(0, 0, 0, wxLEFT, FromDIP(8));
528 sizer_privacy_body->Add(sizer_privacy_agreement, 1, wxEXPAND, 0);
529
530
531 wxString notice_title =
_L(
"We ask for your help to improve everyone's printer");
532 wxString notice_link_title =
_L(
"Statement about User Experience Improvement Program");
533
537 m_st_notice_title->SetForegroundColour(wxColour(38, 46, 48));
538
539
542 m_link_notice_title->SetMaxSize(wxSize(FromDIP(450), -1));
543 m_link_notice_title->Wrap(FromDIP(450));
544 m_link_notice_title->Bind(wxEVT_LEFT_DOWN, [this](auto& e) {
545 wxString txt =
_L(
"In the 3D Printing community, we learn from each other's successes and failures to adjust "
546 "our own slicing parameters and settings. %s follows the same principle and uses machine "
547 "learning to improve its performance from the successes and failures of the vast number of "
548 "prints by our users. We are training %s to be smarter by feeding them the real-world data. "
549 "If you are willing, this service will access information from your error logs and usage "
550 "logs, which may include information described in Privacy Policy. We will not collect any "
551 "Personal Data by which an individual can be identified directly or indirectly, including "
552 "without limitation names, addresses, payment information, or phone numbers. By enabling "
553 "this service, you agree to these terms and the statement about Privacy Policy.");
555
556 wxString model_id_text;
557
560 }
561 confirm_dlg.update_text(wxString::Format(txt, model_id_text, model_id_text));
562 confirm_dlg.CenterOnParent();
563 confirm_dlg.on_show();
564 });
565
566 sizere_notice_agreement->Add(0, 0, 0, wxTOP, FromDIP(4));
567 sizere_notice_agreement->Add(m_st_notice_title, 0, 0, wxALIGN_CENTER, 0);
568 sizere_notice_agreement->Add(0, 0, 0, wxLEFT, FromDIP(2));
569 sizere_notice_agreement->Add(m_link_notice_title, 0, 0, wxALIGN_CENTER, 0);
570
571 sizere_notice_body->Add(m_checkbox_notice, 0, wxALL, 0);
572 sizere_notice_body->Add(0, 0, 0, wxLEFT, FromDIP(8));
573 sizere_notice_body->Add(sizere_notice_agreement, 1, wxEXPAND, 0);
574
575 wxBoxSizer* sizer_agreement = new wxBoxSizer(wxVERTICAL);
576 sizer_agreement->Add(sizer_privacy_body, 1, wxEXPAND, 0);
577 sizer_agreement->Add(sizere_notice_body, 1, wxEXPAND, 0);
578
579
580 m_checkbox_privacy->Bind(wxEVT_TOGGLEBUTTON, [this, m_checkbox_privacy](auto& e) {
583 e.Skip();
584 });
585 m_checkbox_notice->Bind(wxEVT_TOGGLEBUTTON, [this, m_checkbox_notice](auto& e) {
587 e.Skip();
588 });
589
592
593
594 m_sw_bind_failed_info =
new wxScrolledWindow(
this, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(450), FromDIP(300)), wxVSCROLL);
599
600 wxBoxSizer* m_sizer_bind_failed_info = new wxBoxSizer(wxVERTICAL);
602
603
605
606 wxBoxSizer* sizer_error_code = new wxBoxSizer(wxHORIZONTAL);
607 wxBoxSizer* sizer_error_desc = new wxBoxSizer(wxHORIZONTAL);
608 wxBoxSizer* sizer_extra_info = new wxBoxSizer(wxHORIZONTAL);
609
613 st_title_error_code->SetForegroundColour(0x909090);
614 st_title_error_code_doc->SetForegroundColour(0x909090);
619 st_title_error_code->SetMinSize(wxSize(FromDIP(80), -1));
620 st_title_error_code->SetMaxSize(wxSize(FromDIP(80), -1));
623 sizer_error_code->Add(st_title_error_code, 0, wxALL, 0);
624 sizer_error_code->Add(st_title_error_code_doc, 0, wxALL, 0);
626
627
631 st_title_error_desc->SetForegroundColour(0x909090);
632 st_title_error_desc_doc->SetForegroundColour(0x909090);
637 st_title_error_desc->SetMinSize(wxSize(FromDIP(80), -1));
638 st_title_error_desc->SetMaxSize(wxSize(FromDIP(80), -1));
641 sizer_error_desc->Add(st_title_error_desc, 0, wxALL, 0);
642 sizer_error_desc->Add(st_title_error_desc_doc, 0, wxALL, 0);
644
648 st_title_extra_info->SetForegroundColour(0x909090);
649 st_title_extra_info_doc->SetForegroundColour(0x909090);
654 st_title_extra_info->SetMinSize(wxSize(FromDIP(80), -1));
655 st_title_extra_info->SetMaxSize(wxSize(FromDIP(80), -1));
658 sizer_extra_info->Add(st_title_extra_info, 0, wxALL, 0);
659 sizer_extra_info->Add(st_title_extra_info_doc, 0, wxALL, 0);
661
663 m_sizer_bind_failed_info->Add(sizer_error_code, 0, wxLEFT, 0);
664 m_sizer_bind_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3));
665 m_sizer_bind_failed_info->Add(sizer_error_desc, 0, wxLEFT, 0);
666 m_sizer_bind_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3));
667 m_sizer_bind_failed_info->Add(sizer_extra_info, 0, wxLEFT, 0);
668
671
673
674 m_worker = std::make_unique<PlaterWorker<BoostThreadWorker>>(
this,
m_status_bar,
"bind_worker");
675
677 button_panel->SetBackgroundColour(*wxWHITE);
678 wxBoxSizer *m_sizer_button = new wxBoxSizer(wxHORIZONTAL);
682
685
689 button_panel->SetSizer(m_sizer_button);
690 button_panel->Layout();
691 m_sizer_button->Fit(button_panel);
692
694 m_simplebook->AddPage(button_panel, wxEmptyString,
false);
695
696
697
699
700
701 m_sizer_main->Add(m_sizer_status_text, 0, wxALIGN_CENTER, FromDIP(40));
702 m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(10));
704 m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(10));
707
708 SetSizerAndFit(m_sizer_main);
709 Layout();
710 Fit();
711 Centre(wxBOTH);
712
715
722
723 wxGetApp().UpdateDlgDarkUI(this);
724 }
#define BIND_DIALOG_GREY200
Definition BindDialog.hpp:44
#define BIND_DIALOG_BUTTON_PANEL_SIZE
Definition BindDialog.hpp:48
#define _L(s)
Definition OBJ.cpp:34
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30
static wxFont Body_13
Definition Label.hpp:54
static wxFont Head_13
Definition Label.hpp:46
static wxFont Head_14
Definition Label.hpp:45
wxBitmap m_bitmap_show_error_close
Definition BindDialog.hpp:109
Label * m_st_txt_error_code
Definition BindDialog.hpp:112
bool m_allow_privacy
Definition BindDialog.hpp:119
void on_close(wxCloseEvent &event)
Definition BindDialog.cpp:797
Button * m_button_cancel
Definition BindDialog.hpp:104
MachineObject * m_machine_info
Definition BindDialog.hpp:124
wxSimplebook * m_simplebook
Definition BindDialog.hpp:105
wxStaticText * m_status_text
Definition BindDialog.hpp:101
std::shared_ptr< BBLStatusBarBind > m_status_bar
Definition BindDialog.hpp:125
void on_show(wxShowEvent &event)
Definition BindDialog.cpp:885
Label * m_st_txt_error_desc
Definition BindDialog.hpp:113
bool m_show_error_info_state
Definition BindDialog.hpp:118
wxBitmap m_bitmap_show_error_open
Definition BindDialog.hpp:110
void on_bind_success(wxCommandEvent &event)
Definition BindDialog.cpp:821
wxStaticBitmap * m_printer_img
Definition BindDialog.hpp:107
void on_update_message(wxCommandEvent &event)
Definition BindDialog.cpp:816
wxStaticBitmap * m_avatar
Definition BindDialog.hpp:106
wxStaticText * m_link_show_error
Definition BindDialog.hpp:102
void on_cancel(wxCommandEvent &event)
Definition BindDialog.cpp:786
StaticBox * m_panel_left
Definition BindDialog.hpp:99
wxStaticText * m_user_name
Definition BindDialog.hpp:98
HyperLink * m_link_network_state
Definition BindDialog.hpp:115
bool m_allow_notice
Definition BindDialog.hpp:120
void on_bind_printer(wxCommandEvent &event)
Definition BindDialog.cpp:829
wxStaticBitmap * m_static_bitmap_show_error
Definition BindDialog.hpp:108
void show_bind_failed_info(bool show, int code=0, wxString description=wxEmptyString, wxString extra=wxEmptyString)
Definition BindDialog.cpp:755
std::unique_ptr< Worker > m_worker
Definition BindDialog.hpp:126
StaticBox * m_panel_right
Definition BindDialog.hpp:100
Button * m_button_bind
Definition BindDialog.hpp:103
wxStaticText * m_printer_name
Definition BindDialog.hpp:97
Label * m_st_txt_extra_info
Definition BindDialog.hpp:114
void on_bind_fail(wxCommandEvent &event)
Definition BindDialog.cpp:803
std::shared_ptr< int > m_tocken
Definition BindDialog.hpp:122
wxScrolledWindow * m_sw_bind_failed_info
Definition BindDialog.hpp:111
wxWindow * m_panel_agreement
Definition BindDialog.hpp:96
@ ONLY_CONFIRM
Definition ReleaseNote.hpp:257
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