OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::GUI::SendSystemInfoDialog Class Reference
Inheritance diagram for Slic3r::GUI::SendSystemInfoDialog:
Collaboration diagram for Slic3r::GUI::SendSystemInfoDialog:

Public Member Functions

 SendSystemInfoDialog (wxWindow *parent)
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 ()

Protected Member Functions

virtual void on_sys_color_changed ()

Private Types

enum  { MIN_WIDTH = 70 , MIN_HEIGHT = 34 }

Private Member Functions

bool send_info (wxString &message)
void on_dpi_changed (const wxRect &) override
void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

const std::string m_system_info_json
wxButton * m_btn_show_data
wxButton * m_btn_send
wxButton * m_btn_dont_send
wxButton * m_btn_ask_later
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

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
private
Enumerator
MIN_WIDTH 
MIN_HEIGHT 
109 {
110 MIN_WIDTH = 70,
111 MIN_HEIGHT = 34
112 };
@ MIN_HEIGHT
Definition SendSystemInfoDialog.cpp:111
@ MIN_WIDTH
Definition SendSystemInfoDialog.cpp:110

Constructor & Destructor Documentation

◆ SendSystemInfoDialog()

Slic3r::GUI::SendSystemInfoDialog::SendSystemInfoDialog ( wxWindow * parent)
624 /*GUI::DPIDialog(parent, wxID_ANY, _L("Send system info"), wxDefaultPosition, wxDefaultSize,
625 wxDEFAULT_DIALOG_STYLE)*/
626 GUI::DPIDialog(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize,
627 wxDEFAULT_DIALOG_STYLE)
628{
629 const int em = GUI::wxGetApp().em_unit();
630
631 // Get current BambuSliver version info.
632 std::string app_name;
633 {
634 Semver semver(SLIC3R_VERSION);
635 bool is_alpha = false;
636 if (semver.prerelease()) {
637 is_alpha = std::string{ semver.prerelease() }.find("alpha") != std::string::npos;
638 }
639
640 bool is_beta = false;
641 if (semver.prerelease()) {
642 is_beta = std::string{ semver.prerelease() }.find("beta") != std::string::npos;
643 }
644 app_name = std::string(SLIC3R_APP_FULL_NAME) + " " + std::to_string(semver.maj())
645 + "." + std::to_string(semver.min()) + " "
646 + (is_alpha ? "Alpha" : is_beta ? "Beta" : "");
647 }
648
649 const char* filename = "SendSystemInfoDialog.cpp";
650 assert(strstr(__FILE__, filename));
651
652 // Set dialog background color, fonts, etc.
653 SetFont(wxGetApp().normal_font());
654 wxColour bgr_clr = wxGetApp().get_window_default_clr();
655 SetBackgroundColour(bgr_clr);
656 const auto text_clr = wxGetApp().get_label_clr_default();
657 auto text_clr_str = encode_color(ColorRGB(text_clr.Red(), text_clr.Green(), text_clr.Blue()));
658 auto bgr_clr_str = encode_color(ColorRGB(bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()));
659
660 auto *topSizer = new wxBoxSizer(wxVERTICAL);
661 auto *vsizer = new wxBoxSizer(wxVERTICAL);
662
663 wxString text0 = GUI::format_wxstr(wxEmptyString, app_name);
664 wxString text1 = wxEmptyString;
665 wxString label2 = wxEmptyString;
666
667 wxString text2 = GUI::format_wxstr(wxEmptyString, std::string("<i>") + filename + "</i>");
668
669 auto* html_window = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxSize(70*em, 34*em), wxHW_SCROLLBAR_NEVER);
670 wxString html = GUI::format_wxstr(
671 "<html><body bgcolor=%1%><font color=%2%>"
672 "<table><tr><td>"
673 "<img src = \"" + resources_dir() + "/images/OrcaSlicer_192px.png\" />"
674 "</td><td align=\"left\">"
675 + text0 + "<br / ><br / >"
676 + text1 + "<br /><br />"
677 "</td></tr></table>"
678 + "<b>" + label2 + "</b><br />"
679 + text2
680 + "</font></body></html>", bgr_clr_str, text_clr_str);
681 html_window->SetPage(html);
682
683 vsizer->Add(html_window, 1, wxEXPAND);
684
685 //m_btn_show_data = new wxButton(this, wxID_ANY, _L("Show verbatim data that will be sent"));
686 m_btn_show_data = new wxButton(this, wxID_ANY, wxEmptyString);
687
688 //m_btn_ask_later = new wxButton(this, wxID_ANY, _L("Ask me next time"));
689 m_btn_ask_later = new wxButton(this, wxID_ANY, wxEmptyString);
690
691 //m_btn_dont_send = new wxButton(this, wxID_ANY, _L("Do not send anything"));
692 m_btn_dont_send = new wxButton(this, wxID_ANY, wxEmptyString);
693
694 //m_btn_send = new wxButton(this, wxID_ANY, _L("Send system info"));
695 m_btn_send = new wxButton(this, wxID_ANY, wxEmptyString);
696
697 auto* hsizer = new wxBoxSizer(wxHORIZONTAL);
698 hsizer->Add(m_btn_ask_later);
699 hsizer->AddSpacer(em);
700 hsizer->Add(m_btn_dont_send);
701 hsizer->AddSpacer(em);
702 hsizer->Add(m_btn_send);
703
704 vsizer->Add(m_btn_show_data, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 20);
705 vsizer->Add(hsizer, 0, wxALIGN_CENTER_HORIZONTAL | wxALL, 10);
706 topSizer->Add(vsizer, 1, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, 10);
707
708 SetSizer(topSizer);
709 topSizer->SetSizeHints(this);
710
711
712#ifdef _WIN32
713 wxGetApp().UpdateDlgDarkUI(this);
714#endif
715
716 const auto size = GetSize();
717 SetSize(std::max(size.GetWidth(), MIN_WIDTH * em),
718 std::max(size.GetHeight(), MIN_HEIGHT * em));
719
720 CenterOnParent();
721
722 m_btn_show_data->Bind(wxEVT_BUTTON, [this](wxEvent&) {
723 ShowJsonDialog dlg(this, m_system_info_json, GetSize().Scale(0.9, 0.7));
724 dlg.ShowModal();
725 });
726
727 m_btn_send->Bind(wxEVT_BUTTON, [this](const wxEvent&)
728 {
729 wxString message;
730 bool success = send_info(message);
731 if (! message.IsEmpty())
732 InfoDialog(nullptr, wxEmptyString, message).ShowModal();
733 if (success) {
734 save_version();
735 EndModal(0);
736 }
737 });
738 m_btn_dont_send->Bind(wxEVT_BUTTON, [this](const wxEvent&)
739 {
740 save_version();
741 EndModal(0);
742 });
743 m_btn_ask_later->Bind(wxEVT_BUTTON, [this](const wxEvent&) { EndModal(0); });
744}
class WXDLLIMPEXP_FWD_CORE wxButton
Definition ProgressDialog.hpp:27
const wxFont & normal_font() const
Definition GUI_Utils.hpp:205
void EndModal(int retCode) override
Definition GUI_Utils.hpp:305
bool send_info(wxString &message)
Definition SendSystemInfoDialog.cpp:762
wxButton * m_btn_send
Definition SendSystemInfoDialog.cpp:121
wxButton * m_btn_ask_later
Definition SendSystemInfoDialog.cpp:123
const std::string m_system_info_json
Definition SendSystemInfoDialog.cpp:119
wxButton * m_btn_show_data
Definition SendSystemInfoDialog.cpp:120
wxButton * m_btn_dont_send
Definition SendSystemInfoDialog.cpp:122
#define SLIC3R_APP_FULL_NAME
Definition libslic3r.h:11
wxString format_wxstr(const char *fmt, TArgs &&... args)
Definition format.hpp:22
static std::string generate_system_info_json()
Definition SendSystemInfoDialog.cpp:419
static void save_version()
Definition SendSystemInfoDialog.cpp:256
std::string encode_color(const ColorRGB &color)
Definition Color.cpp:397
const std::string & resources_dir()
Definition utils.cpp:296

References Slic3r::GUI::DPIAware< P >::em_unit(), Slic3r::encode_color(), Slic3r::GUI::DPIDialog::EndModal(), Slic3r::GUI::format_wxstr(), Slic3r::GUI::generate_system_info_json(), m_btn_ask_later, m_btn_dont_send, m_btn_send, m_btn_show_data, m_system_info_json, Slic3r::Semver::maj(), Slic3r::Semver::min(), MIN_HEIGHT, MIN_WIDTH, Slic3r::GUI::DPIAware< wxDialog >::normal_font(), Slic3r::Semver::prerelease(), Slic3r::resources_dir(), Slic3r::GUI::save_version(), send_info(), Slic3r::GUI::DPIAware< P >::ShowModal(), SLIC3R_APP_FULL_NAME, and wxButton.

Here is the call graph for this function:

Member Function Documentation

◆ 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().

◆ force_rescale()

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

◆ 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; }

◆ normal_font()

◆ on_dpi_changed()

void Slic3r::GUI::SendSystemInfoDialog::on_dpi_changed ( const wxRect & )
overrideprivatevirtual

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

749{
750 const int& em = em_unit();
751 msw_buttons_rescale(this, em, { m_btn_send->GetId(),
752 m_btn_dont_send->GetId(),
753 m_btn_ask_later->GetId() });
754 SetMinSize(wxSize(MIN_WIDTH * em, MIN_HEIGHT * em));
755 Fit();
756 Refresh();
757}
int em_unit() const
Definition GUI_Utils.hpp:203
void msw_buttons_rescale(wxDialog *dlg, const int em_unit, const std::vector< int > &btn_ids)
Definition wxExtensions.cpp:406

References Slic3r::GUI::DPIAware< wxDialog >::em_unit(), m_btn_ask_later, m_btn_dont_send, m_btn_send, MIN_HEIGHT, MIN_WIDTH, and msw_buttons_rescale().

Here is the call graph for this function:

◆ on_sys_color_changed()

◆ 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; }

◆ send_info()

bool Slic3r::GUI::SendSystemInfoDialog::send_info ( wxString & message)
private
763{
764 std::atomic<int> job_done = false; // Flag to communicate between threads.
765 struct Result {
766 enum {
767 Success,
768 Cancelled,
769 Error
770 } value;
771 wxString str;
772 } result; // No synchronization needed, UI thread reads only after worker is joined.
773
774 auto send = [&job_done, &result](const std::string& data) {
776 http.header("Content-Type", "application/json")
777 .timeout_max(6) // seconds
778 .set_post_body(data)
779 .on_complete([&result](std::string body, unsigned status) {
780 //result = { Result::Success, _L("System info sent successfully. Thank you.") };
781 result = {Result::Success, wxEmptyString};
782 })
783 .on_error([&result](std::string body, std::string error, unsigned status) {
784 //result = { Result::Error, _L("Sending system info failed!") };
785 result = {Result::Error, wxEmptyString};
786 //BOOST_LOG_TRIVIAL(error) << "Sending system info failed! STATUS: " << status;
787 BOOST_LOG_TRIVIAL(error) << "" << status;
788 })
789 .on_progress([&job_done, &result](Slic3r::Http::Progress, bool &cancel) {
790 if (job_done) // UI thread wants us to cancel.
791 cancel = true;
792 if (cancel)
793 //result = { Result::Cancelled, _L("Sending system info was canceled.") };
794 result = {Result::Cancelled, wxEmptyString};
795 })
796 .perform_sync();
797 job_done = true; // So that the dialog knows we are done.
798 };
799
800 std::thread sending_thread(send, m_system_info_json);
801 //SendSystemInfoProgressDialog dlg(this, _L("Sending system info..."));
802 SendSystemInfoProgressDialog dlg(this, wxEmptyString);
803 wxTimer timer(&dlg); // Periodically check the status of the other thread, close dialog when done.
804 dlg.Bind(wxEVT_TIMER, [&dlg, &job_done](wxTimerEvent&){ if (job_done) dlg.EndModal(0); });
805 timer.Start(50);
806 dlg.ShowModal();
807 // The dialog is closed, either by user, or by the now terminated worker thread.
808 job_done = true; // In case the user closed the dialog, let the other thread know
809 sending_thread.join(); // and wait until it terminates.
810
811 message = result.value == Result::Cancelled ? wxString("") : result.str;
812 return result.value == Result::Success;
813}
static Http post(std::string url)
Definition Http.cpp:891
@ Error
Definition PrePrintChecker.hpp:17
static const std::string SEND_SYSTEM_INFO_URL
Definition SendSystemInfoDialog.cpp:99
@ Success
Definition AssembleList.hpp:49
@ http
Definition IPrinterAgent.hpp:64
@ Http
Definition PluginAuditManager.hpp:49

References Slic3r::GUI::Error, Slic3r::http, m_system_info_json, Slic3r::Http::post(), Slic3r::GUI::SEND_SYSTEM_INFO_URL, and Slic3r::Success.

Referenced by SendSystemInfoDialog().

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

◆ 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; }

◆ 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 }

Member Data Documentation

◆ m_btn_ask_later

wxButton* Slic3r::GUI::SendSystemInfoDialog::m_btn_ask_later
private

◆ m_btn_dont_send

wxButton* Slic3r::GUI::SendSystemInfoDialog::m_btn_dont_send
private

◆ m_btn_send

wxButton* Slic3r::GUI::SendSystemInfoDialog::m_btn_send
private

◆ m_btn_show_data

wxButton* Slic3r::GUI::SendSystemInfoDialog::m_btn_show_data
private

Referenced by SendSystemInfoDialog().

◆ m_can_rescale

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

◆ m_em_unit

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

◆ m_force_rescale

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

◆ 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_prev_scale_factor

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

◆ m_scale_factor

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

◆ m_system_info_json

const std::string Slic3r::GUI::SendSystemInfoDialog::m_system_info_json
private

Referenced by SendSystemInfoDialog(), and send_info().


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