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

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

Inheritance diagram for Slic3r::GUI::ScoreDialog:
Collaboration diagram for Slic3r::GUI::ScoreDialog:

Classes

struct  ImageMsg

Public Member Functions

 ScoreDialog (wxWindow *parent, int design_id, std::string model_id, int profile_id, int rating_id, bool success_printed, int star_count=0)
 ScoreDialog (wxWindow *parent, ScoreData *score_data)
 ~ScoreDialog ()
int get_rating_id ()
ScoreData get_score_data ()
void set_comment (std::string comment)
void set_cloud_bitmap (std::vector< std::string > cloud_bitmaps)
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 Types

enum  StatusCode { UPLOAD_PROGRESS = 0 , UPLOAD_EXIST_ISSUE , UPLOAD_IMG_FAILED , CODE_NUMBER }

Protected Member Functions

void init ()
void update_static_bitmap (wxStaticBitmap *static_bitmap, wxImage image)
void create_comment_text (const wxString &comment="")
void load_photo (const std::vector< std::pair< wxString, std::string > > &filePaths)
void on_dpi_changed (const wxRect &suggested_rect) override
void OnBitmapClicked (wxMouseEvent &event)
wxBoxSizer * create_broad_sizer (wxStaticBitmap *bitmap, ImageMsg &cur_image_msg)
wxBoxSizer * get_score_sizer ()
wxBoxSizer * get_star_sizer ()
wxBoxSizer * get_comment_text_sizer ()
wxBoxSizer * get_photo_btn_sizer ()
wxBoxSizer * get_button_sizer ()
wxBoxSizer * get_main_sizer (const std::vector< std::pair< wxString, std::string > > &images=std::vector< std::pair< wxString, std::string > >(), const wxString &comment="")
std::set< std::pair< wxStaticBitmap *, wxString > > add_need_upload_imgs ()
std::pair< wxStaticBitmap *, ImageMsg > create_local_thumbnail (wxString &local_path)
std::pair< wxStaticBitmap *, ImageMsg > create_oss_thumbnail (std::string &oss_path)
virtual void on_sys_color_changed ()

Protected Attributes

std::shared_ptr< int > m_tocken
const int m_photo_nums = 16
int m_rating_id
int m_design_id
std::string m_model_id
int m_profile_id
int m_star_count
bool m_success_printed
std::vector< std::string > m_image_url_paths
StatusCode m_upload_status_code
std::vector< ScalableButton * > m_score_star
wxTextCtrl * m_comment_text = nullptr
Button * m_button_ok = nullptr
Button * m_button_cancel = nullptr
Label * m_add_photo = nullptr
Label * m_delete_photo = nullptr
wxGridSizer * m_image_sizer = nullptr
wxStaticText * warning_text = nullptr
std::unordered_map< wxStaticBitmap *, ImageMsg > m_image
std::unordered_set< wxStaticBitmap * > m_selected_image_list

Private Member Functions

void update_em_unit ()
bool is_new_scale_factor () const
void rescale (const wxRect &suggested_rect)

Private Attributes

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


Class Documentation

◆ Slic3r::GUI::ScoreDialog::ImageMsg

struct Slic3r::GUI::ScoreDialog::ImageMsg
Collaboration diagram for Slic3r::GUI::ScoreDialog::ImageMsg:
Class Members
vector< wxPanel * > image_broad
wxBoxSizer * image_tb_broad = nullptr
string img_url_paths
bool is_selected
bool is_uploaded
wxString local_image_url

Member Enumeration Documentation

◆ StatusCode

Enumerator
UPLOAD_PROGRESS 
UPLOAD_EXIST_ISSUE 
UPLOAD_IMG_FAILED 
CODE_NUMBER 
225 {
226 UPLOAD_PROGRESS = 0,
230 };
@ UPLOAD_PROGRESS
Definition StatusPanel.hpp:226
@ UPLOAD_EXIST_ISSUE
Definition StatusPanel.hpp:227
@ UPLOAD_IMG_FAILED
Definition StatusPanel.hpp:228
@ CODE_NUMBER
Definition StatusPanel.hpp:229

Constructor & Destructor Documentation

◆ ScoreDialog() [1/2]

Slic3r::GUI::ScoreDialog::ScoreDialog ( wxWindow * parent,
int design_id,
std::string model_id,
int profile_id,
int rating_id,
bool success_printed,
int star_count = 0 )
5631 : DPIDialog(parent, wxID_ANY, _L("Rate the Print Profile"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER)
5632 , m_design_id(design_id)
5633 , m_model_id(model_id)
5634 , m_profile_id(profile_id)
5635 , m_star_count(star_count)
5636 , m_rating_id(rating_id)
5637 , m_success_printed(success_printed)
5639{
5640 m_tocken.reset(new int(0));
5641
5642 wxBoxSizer *m_main_sizer = get_main_sizer();
5643
5644 this->SetSizer(m_main_sizer);
5645 Fit();
5646 Layout();
5647 wxGetApp().UpdateDlgDarkUI(this);
5648}
#define _L(s)
Definition OBJ.cpp:34
StatusCode m_upload_status_code
Definition StatusPanel.hpp:241
int m_design_id
Definition StatusPanel.hpp:235
std::string m_model_id
Definition StatusPanel.hpp:236
wxBoxSizer * get_main_sizer(const std::vector< std::pair< wxString, std::string > > &images=std::vector< std::pair< wxString, std::string > >(), const wxString &comment="")
Definition StatusPanel.cpp:6191
int m_star_count
Definition StatusPanel.hpp:238
int m_rating_id
Definition StatusPanel.hpp:234
bool m_success_printed
Definition StatusPanel.hpp:239
int m_profile_id
Definition StatusPanel.hpp:237
std::shared_ptr< int > m_tocken
Definition StatusPanel.hpp:232

References _L, CODE_NUMBER, get_main_sizer(), m_design_id, m_model_id, m_profile_id, m_rating_id, m_star_count, m_success_printed, m_tocken, and m_upload_status_code.

Here is the call graph for this function:

◆ ScoreDialog() [2/2]

Slic3r::GUI::ScoreDialog::ScoreDialog ( wxWindow * parent,
ScoreData * score_data )
5651 : DPIDialog(parent, wxID_ANY, _L("Rate the Print Profile"), wxDefaultPosition, wxDefaultSize, wxCAPTION | wxCLOSE_BOX | wxRESIZE_BORDER)
5652 , m_design_id(score_data->design_id)
5653 , m_rating_id(score_data->rating_id)
5654 , m_model_id(score_data->model_id)
5655 , m_profile_id(score_data->profile_id)
5656 , m_star_count(score_data->star_count)
5657 , m_success_printed(score_data->success_printed)
5659{
5660 m_tocken.reset(new int(0));
5661
5662 wxBoxSizer *m_main_sizer = get_main_sizer(score_data->local_to_url_image, score_data->comment_text);
5663
5664 m_image_url_paths = score_data->image_url_paths;
5665
5666
5667 this->SetSizer(m_main_sizer);
5668 Fit();
5669 Layout();
5670 wxGetApp().UpdateDlgDarkUI(this);
5671
5672}
std::vector< std::string > m_image_url_paths
Definition StatusPanel.hpp:240

References _L, CODE_NUMBER, Slic3r::GUI::ScoreData::comment_text, get_main_sizer(), Slic3r::GUI::ScoreData::image_url_paths, Slic3r::GUI::ScoreData::local_to_url_image, m_design_id, m_image_url_paths, m_model_id, m_profile_id, m_rating_id, m_star_count, m_success_printed, m_tocken, and m_upload_status_code.

Here is the call graph for this function:

◆ ~ScoreDialog()

Slic3r::GUI::ScoreDialog::~ScoreDialog ( )
5674{}

Member Function Documentation

◆ add_need_upload_imgs()

std::set< std::pair< wxStaticBitmap *, wxString > > Slic3r::GUI::ScoreDialog::add_need_upload_imgs ( )
protected
5707{
5708 std::set<std::pair<wxStaticBitmap *, wxString>> need_upload_images;
5709 for (auto bitmap : m_image) {
5710 if (!bitmap.second.is_uploaded) {
5711 wxString &local_image_path = bitmap.second.local_image_url;
5712 if (!local_image_path.empty()) { need_upload_images.insert(std::make_pair(bitmap.first, local_image_path)); }
5713 }
5714 }
5715 return need_upload_images;
5716}
std::unordered_map< wxStaticBitmap *, ImageMsg > m_image
Definition StatusPanel.hpp:261

References m_image.

Referenced by get_button_sizer().

Here is the caller graph for this function:

◆ create_broad_sizer()

wxBoxSizer * Slic3r::GUI::ScoreDialog::create_broad_sizer ( wxStaticBitmap * bitmap,
ImageMsg & cur_image_msg )
protected
5794{
5795 // tb: top and bottom lr: left and right
5796 auto m_image_tb_broad = new wxBoxSizer(wxVERTICAL);
5797 auto line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
5798 line_top->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
5799 m_image_tb_broad->Add(line_top, 0, wxEXPAND, 0);
5800 cur_image_msg.image_broad.push_back(line_top);
5801 line_top->Hide();
5802
5803 auto m_image_lr_broad = new wxBoxSizer(wxHORIZONTAL);
5804 auto line_left = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(1, -1), wxTAB_TRAVERSAL);
5805 line_left->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
5806 m_image_lr_broad->Add(line_left, 0, wxEXPAND, 0);
5807 cur_image_msg.image_broad.push_back(line_left);
5808 line_left->Hide();
5809
5810 m_image_lr_broad->Add(bitmap, 0, wxALL, 5);
5811
5812 auto line_right = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(1, -1), wxTAB_TRAVERSAL);
5813 line_right->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
5814 m_image_lr_broad->Add(line_right, 0, wxEXPAND, 0);
5815 m_image_tb_broad->Add(m_image_lr_broad, 0, wxEXPAND, 0);
5816 cur_image_msg.image_broad.push_back(line_right);
5817 line_right->Hide();
5818
5819 auto line_bottom = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
5820 line_bottom->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
5821 m_image_tb_broad->Add(line_bottom, 0, wxEXPAND, 0);
5822 cur_image_msg.image_broad.push_back(line_bottom);
5823 line_bottom->Hide();
5824
5825 cur_image_msg.is_selected = false;
5826 cur_image_msg.image_tb_broad = m_image_tb_broad;
5827
5828 return m_image_tb_broad;
5829}

References Slic3r::GUI::ScoreDialog::ImageMsg::image_broad, Slic3r::GUI::ScoreDialog::ImageMsg::image_tb_broad, and Slic3r::GUI::ScoreDialog::ImageMsg::is_selected.

Referenced by create_local_thumbnail(), and create_oss_thumbnail().

Here is the caller graph for this function:

◆ create_comment_text()

void Slic3r::GUI::ScoreDialog::create_comment_text ( const wxString & comment = "")
protected
5907 {
5908 m_comment_text = new wxTextCtrl(this, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(492), FromDIP(104)), wxTE_MULTILINE);
5909 m_comment_text->SetBackgroundColour(wxColor(*wxWHITE));
5910
5911 if (!comment.empty()) {
5912 m_comment_text->SetValue(comment);
5913 }
5914 m_comment_text->SetHint(_L("Rate this print"));
5915 m_comment_text->SetBackgroundColour(*wxWHITE);
5916 //m_comment_text->SetForegroundColour(wxColor("#BBBBBB"));
5917 m_comment_text->SetMinSize(wxSize(FromDIP(492), FromDIP(104)));
5918
5919 m_comment_text->Bind(wxEVT_SET_FOCUS, [this](auto &event) {
5920 if (wxGetApp().dark_mode()) {
5921 m_comment_text->SetForegroundColour(wxColor(*wxWHITE));
5922 } else
5923 m_comment_text->SetForegroundColour(wxColor(*wxBLACK));
5924 m_comment_text->Refresh();
5925 event.Skip();
5926 });
5927}
wxTextCtrl * m_comment_text
Definition StatusPanel.hpp:254

References _L, and m_comment_text.

Referenced by get_main_sizer().

Here is the caller graph for this function:

◆ create_local_thumbnail()

std::pair< wxStaticBitmap *, ScoreDialog::ImageMsg > Slic3r::GUI::ScoreDialog::create_local_thumbnail ( wxString & local_path)
protected
5721{
5722 std::pair<wxStaticBitmap *, ImageMsg> bitmap_to_image_msg;
5723 if (local_path.empty()) return bitmap_to_image_msg;
5724
5725 ImageMsg cur_image_msg;
5726 cur_image_msg.local_image_url = local_path;
5727 cur_image_msg.img_url_paths = "";
5728 cur_image_msg.is_uploaded = false;
5729
5730 wxStaticBitmap *imageCtrl = new wxStaticBitmap(this, wxID_ANY, wxBitmap(wxImage(local_path, wxBITMAP_TYPE_ANY).Rescale(FromDIP(80), FromDIP(60))), wxDefaultPosition,
5731 wxDefaultSize, 0);
5732 imageCtrl->Bind(wxEVT_LEFT_DOWN, &ScoreDialog::OnBitmapClicked, this);
5733
5734 m_image_sizer->Add(create_broad_sizer(imageCtrl, cur_image_msg), 0, wxALL, 5);
5735
5736 bitmap_to_image_msg.first = imageCtrl;
5737 bitmap_to_image_msg.second = cur_image_msg;
5738 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": local picture is download";
5739 return bitmap_to_image_msg;
5740}
wxGridSizer * m_image_sizer
Definition StatusPanel.hpp:259
void OnBitmapClicked(wxMouseEvent &event)
Definition StatusPanel.cpp:5678
wxBoxSizer * create_broad_sizer(wxStaticBitmap *bitmap, ImageMsg &cur_image_msg)
Definition StatusPanel.cpp:5793
wxString local_image_url
Definition StatusPanel.hpp:245
Definition StatusPanel.hpp:244

References create_broad_sizer(), Slic3r::GUI::ScoreDialog::ImageMsg::img_url_paths, Slic3r::GUI::ScoreDialog::ImageMsg::is_uploaded, Slic3r::GUI::ScoreDialog::ImageMsg::local_image_url, m_image_sizer, and OnBitmapClicked().

Referenced by load_photo().

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

◆ create_oss_thumbnail()

std::pair< wxStaticBitmap *, ScoreDialog::ImageMsg > Slic3r::GUI::ScoreDialog::create_oss_thumbnail ( std::string & oss_path)
protected
5743{
5744 std::pair<wxStaticBitmap *, ImageMsg> bitmap_to_image_msg;
5745 if (oss_path.empty()) return bitmap_to_image_msg;
5746
5747 ImageMsg cur_image_msg;
5748 cur_image_msg.local_image_url = "";
5749 cur_image_msg.img_url_paths = oss_path;
5750 cur_image_msg.is_uploaded = true;
5751
5752
5753 wxImage image(Slic3r::resources_dir() + "/images/oss_picture_loading.png", wxBITMAP_TYPE_ANY);
5754 wxStaticBitmap *imageCtrl = new wxStaticBitmap(this, wxID_ANY, wxBitmap(image.Rescale(FromDIP(80), FromDIP(60))), wxDefaultPosition, wxDefaultSize, 0);
5755 imageCtrl->Bind(wxEVT_LEFT_DOWN, &ScoreDialog::OnBitmapClicked, this);
5756
5758 std::string suffix = oss_path.substr(oss_path.find_last_of(".") + 1);
5759 http.header("accept", "image/" + suffix) //"image/" + suffix
5760 .header("Accept-Encoding", "gzip")
5761 .on_complete([this, imageCtrl, time = std::weak_ptr<int>(m_tocken)](std::string body, unsigned int status) {
5762 if (time.expired()) return;
5763 wxMemoryInputStream stream(body.data(), body.size());
5764 wxImage success_image;
5765 if (success_image.LoadFile(stream, wxBITMAP_TYPE_ANY)) {
5766 CallAfter([this, success_image, imageCtrl]() { update_static_bitmap(imageCtrl, success_image); });
5767
5768 } else {
5769 CallAfter([this, imageCtrl]() { update_static_bitmap(imageCtrl, fail_image); });
5770 }
5771 })
5772 .on_error([this, imageCtrl, &oss_path](std::string body, std::string error, unsigned status) {
5773 BOOST_LOG_TRIVIAL(info) << "load oss picture failed, oss path: " << oss_path << " status:" << status << " error:" << error;
5774 CallAfter([this, imageCtrl]() { update_static_bitmap(imageCtrl, fail_image); });
5775 }).perform();
5776
5777 m_image_sizer->Add(create_broad_sizer(imageCtrl, cur_image_msg), 0, wxALL, 5);
5778
5779 bitmap_to_image_msg.first = imageCtrl;
5780 bitmap_to_image_msg.second = cur_image_msg;
5781 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": oss picture is download";
5782 return bitmap_to_image_msg;
5783}
void update_static_bitmap(wxStaticBitmap *static_bitmap, wxImage image)
Definition StatusPanel.cpp:5785
static Http get(std::string url)
Definition Http.cpp:886
static wxImage fail_image
Definition StatusPanel.cpp:164
@ http
Definition IPrinterAgent.hpp:64
const std::string & resources_dir()
Definition utils.cpp:296
@ Http
Definition PluginAuditManager.hpp:49

References create_broad_sizer(), Slic3r::GUI::fail_image, Slic3r::Http::get(), Slic3r::http, Slic3r::GUI::ScoreDialog::ImageMsg::img_url_paths, Slic3r::GUI::ScoreDialog::ImageMsg::is_uploaded, Slic3r::GUI::ScoreDialog::ImageMsg::local_image_url, m_image_sizer, m_tocken, OnBitmapClicked(), Slic3r::resources_dir(), and update_static_bitmap().

Referenced by load_photo(), and set_cloud_bitmap().

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

◆ force_rescale()

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

◆ get_button_sizer()

wxBoxSizer * Slic3r::GUI::ScoreDialog::get_button_sizer ( )
protected
6008{
6009 wxBoxSizer *bSizer_button = new wxBoxSizer(wxHORIZONTAL);
6010 bSizer_button->Add(0, 0, 1, wxEXPAND, 0);
6011
6012 m_button_ok = new Button(this, _L("Submit"));
6014 bSizer_button->Add(m_button_ok, 0, wxRIGHT, FromDIP(ButtonProps::ChoiceButtonGap()));
6015
6016 m_button_ok->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) {
6018
6019 if (m_star_count == 0) {
6020 MessageDialog dlg(this, _L("Please click on the star first."), wxString(SLIC3R_APP_FULL_NAME) + " - " + _L("Info"), wxOK);
6021 dlg.ShowModal();
6022 return;
6023 }
6024
6025 std::set<std::pair<wxStaticBitmap *, wxString>> need_upload_images = add_need_upload_imgs();
6026 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": get need upload picture count: " << need_upload_images.size();
6027
6028 std::string comment = into_u8(m_comment_text->GetValue());
6029 unsigned int http_code;
6030 std::string http_error;
6031 wxString error_info;
6032
6033 if (!need_upload_images.empty()) {
6034 std::string config;
6035 int ret = wxGetApp().getAgent()->get_oss_config(config, wxGetApp().app_config->get_country_code(), http_code, http_error, wxGetApp().get_printer_cloud_provider());
6036 if (ret == -1) {
6037 error_info += into_u8(_L("Get oss config failed.")) + "\n\thttp code: " + std::to_string(http_code) + "\n\thttp error: " + http_error;
6038 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": get oss config filed and http_error: " << http_error;
6040 }
6042 int need_upload_nums = need_upload_images.size();
6043 int upload_nums = 0;
6044 int upload_failed_nums = 0;
6045 ProgressDialog *progress_dialog = new ProgressDialog(_L("Upload Pictures"), _L("Number of images successfully uploaded") + ": " + std::to_string(upload_nums) + "/" + std::to_string(need_upload_nums), need_upload_nums, this);
6046 for (std::set<std::pair<wxStaticBitmap *, wxString>>::iterator it = need_upload_images.begin(); it != need_upload_images.end();) {
6047 std::pair<wxStaticBitmap *, wxString> need_upload = *it;
6048 std::string need_upload_uf8 = into_u8(need_upload.second);
6049 //Local path when incoming, cloud path when outgoing
6050 ret = wxGetApp().getAgent()->put_rating_picture_oss(config, need_upload_uf8, m_model_id, m_profile_id, http_code, http_error, wxGetApp().get_printer_cloud_provider());
6051 std::unordered_map<wxStaticBitmap *, ImageMsg>::iterator iter;
6052 switch (ret) {
6053 case 0:
6054 upload_nums++;
6055 iter = m_image.find(need_upload.first);
6056 if (m_image.end() != iter) {
6057 iter->second.img_url_paths = need_upload_uf8;
6058 iter->second.is_uploaded = true;
6059 m_image_url_paths.push_back(need_upload_uf8);
6060 }
6061 it++;
6062 progress_dialog->Update(upload_nums, _L("Number of images successfully uploaded") + ": " + std::to_string(upload_nums) + "/" + std::to_string(need_upload_nums));
6063 progress_dialog->Fit();
6064 BOOST_LOG_TRIVIAL(info) << "put_rating_picture_oss: model_id [" << m_model_id << "] profile_id [" << m_profile_id << "] http_code [" << http_code
6065 << "] http_error [" << http_error << "] config [" << config << "] image_path [" << need_upload.second << "]";
6066 break;
6067 case -1:
6068 // TRN %s is the path of an image file.
6069 error_info += wxString::Format(_L("%s upload failed"), need_upload.second) + "\n\thttp code:" + std::to_string(http_code) + "\n\thttp_error:" + http_error + "\n";
6071 ++it;
6072 break;
6074 // TRN %s is the path of an image file.
6075 error_info += wxString::Format(_L("%s upload config parse failed"), need_upload.second) + "\n\n";
6077 ++it;
6078 break;
6080 // TRN %s is the path of an image file.
6081 error_info += wxString::Format(_L("%s: No corresponding storage bucket"), need_upload.second) + "\n\n";
6083 ++it;
6084 break;
6086 // TRN %s is the path of an image file.
6087 error_info += wxString::Format(_L("%s cannot be opened"), need_upload.second) + "\n\n";
6089 ++it;
6090 break;
6091 }
6092 }
6093 progress_dialog->Hide();
6094 if (progress_dialog) {
6095 delete progress_dialog;
6096 progress_dialog = nullptr;
6097 }
6098
6100 std::string upload_failed_images = into_u8(_L("The following issues occurred during the process of uploading images. Do you want to ignore them?\n\n"));
6101 MessageDialog dlg_info(this, upload_failed_images + error_info, wxString(_L("info")), wxOK | wxNO | wxCENTER);
6102 if (dlg_info.ShowModal() == wxID_OK) {
6104 }
6105 }
6106 }
6107 }
6108
6110 int ret = wxGetApp().getAgent()->put_model_mall_rating(m_rating_id, m_star_count, comment, m_image_url_paths, http_code, http_error, wxGetApp().get_printer_cloud_provider());
6111 MessageDialog *dlg_info;
6112 switch (ret) {
6113 case 0: EndModal(wxID_OK); break;
6115 dlg_info = new MessageDialog(this, _L("Synchronizing the printing results. Please retry a few seconds later."), wxString(_L("info")), wxOK | wxCENTER);
6116 dlg_info->ShowModal();
6117 delete dlg_info;
6118 break;
6119 default: // Upload failed and obtaining instance_id failed
6120 if (ret == -1)
6121 error_info += _L("Upload failed\n").ToUTF8().data();
6122 else
6123 error_info += _L("Obtaining instance_id failed\n").ToUTF8().data();
6124 if (!error_info.empty()) { BOOST_LOG_TRIVIAL(info) << error_info; }
6125
6126 dlg_info = new MessageDialog(this,
6127 wxString::Format(_L("Your comment result cannot be uploaded due to the following reasons:\n\n error code: %d\n error message: %s\n\nWould you like to redirect to the webpage to give a rating?"),
6128 int(http_code), wxString::FromUTF8(http_error)),
6129 wxString(_L("info")), wxOK | wxNO | wxCENTER);
6130 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": upload rating picture failed and http error" << http_error;
6131 if (dlg_info->ShowModal() == wxID_OK) {
6133 EndModal(wxID_OK);
6134 }
6135 delete dlg_info;
6136 break;
6137 }
6139 MessageDialog *dlg_info = new MessageDialog(this,
6140 _L("Some of your images failed to upload. Would you like to redirect to the webpage to give a rating?"),
6141 wxString(_L("info")), wxOK | wxNO | wxCENTER);
6142 BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": upload rating picture failed or get oss config failed";
6143 if (dlg_info->ShowModal() == wxID_OK) {
6145 EndModal(wxID_OK);
6146 }
6147 delete dlg_info;
6148 if (!error_info.empty()) { BOOST_LOG_TRIVIAL(info) << error_info; }
6149 }
6150 });
6151
6152 m_button_cancel = new Button(this, _L("Cancel"));
6154 bSizer_button->Add(m_button_cancel, 0, wxRIGHT, FromDIP(ButtonProps::ChoiceButtonGap()));
6155
6156 m_button_cancel->Bind(wxEVT_LEFT_DOWN, [this](wxMouseEvent &e) { EndModal(wxID_CANCEL); });
6157
6158 return bSizer_button;
6159}
@ Confirm
Definition Button.hpp:25
@ Regular
Definition Button.hpp:24
@ Choice
Definition Button.hpp:33
#define BAMBU_NETWORK_ERR_NO_CORRESPONDING_BUCKET
Definition bambu_networking.hpp:40
#define BAMBU_NETWORK_ERR_GET_RATING_ID_FAILED
Definition bambu_networking.hpp:37
#define BAMBU_NETWORK_ERR_PARSE_CONFIG_FAILED
Definition bambu_networking.hpp:39
#define BAMBU_NETWORK_ERR_OPEN_FILE_FAILED
Definition bambu_networking.hpp:38
static int ChoiceButtonGap()
Definition Button.hpp:19
void EndModal(int retCode) override
Definition GUI_Utils.hpp:305
std::set< std::pair< wxStaticBitmap *, wxString > > add_need_upload_imgs()
Definition StatusPanel.cpp:5706
Button * m_button_cancel
Definition StatusPanel.hpp:256
Button * m_button_ok
Definition StatusPanel.hpp:255
#define SLIC3R_APP_FULL_NAME
Definition libslic3r.h:11
wxMouseEvent
Definition CameraPopup.cpp:47
static void market_model_scoring_page(int design_id)
Definition StatusPanel.cpp:194
std::string into_u8(const wxString &str)
Definition GUI.cpp:549

References _L, add_need_upload_imgs(), BAMBU_NETWORK_ERR_GET_RATING_ID_FAILED, BAMBU_NETWORK_ERR_NO_CORRESPONDING_BUCKET, BAMBU_NETWORK_ERR_OPEN_FILE_FAILED, BAMBU_NETWORK_ERR_PARSE_CONFIG_FAILED, Choice, ButtonProps::ChoiceButtonGap(), Confirm, Slic3r::GUI::DPIDialog::EndModal(), Slic3r::GUI::into_u8(), m_button_cancel, m_button_ok, m_comment_text, m_design_id, m_image, m_image_url_paths, m_model_id, m_profile_id, m_rating_id, m_star_count, m_upload_status_code, Slic3r::GUI::market_model_scoring_page(), Regular, Slic3r::GUI::DPIAware< P >::ShowModal(), SLIC3R_APP_FULL_NAME, Slic3r::GUI::ProgressDialog::Update(), UPLOAD_EXIST_ISSUE, UPLOAD_IMG_FAILED, UPLOAD_PROGRESS, and Slic3r::GUI::wxMouseEvent.

Referenced by get_main_sizer().

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

◆ get_comment_text_sizer()

wxBoxSizer * Slic3r::GUI::ScoreDialog::get_comment_text_sizer ( )
protected
5898 {
5899 wxBoxSizer* m_comment_sizer = new wxBoxSizer(wxHORIZONTAL);
5900 wxStaticText *static_comment_text = new wxStaticText(this, wxID_ANY, _L("Comment"), wxDefaultPosition, wxDefaultSize, 0);
5901 static_comment_text->Wrap(-1);
5902 m_comment_sizer->Add(static_comment_text, 1, wxEXPAND | wxLEFT, FromDIP(24));
5903 m_comment_sizer->Add(0, 0, 1, wxEXPAND, 0);
5904 return m_comment_sizer;
5905}
class WXDLLIMPEXP_FWD_CORE wxStaticText
Definition ProgressDialog.hpp:30

References _L, and wxStaticText.

Referenced by get_main_sizer().

Here is the caller graph for this function:

◆ get_main_sizer()

wxBoxSizer * Slic3r::GUI::ScoreDialog::get_main_sizer ( const std::vector< std::pair< wxString, std::string > > & images = std::vector<std::pair<wxString, std::string>>(),
const wxString & comment = "" )
protected
6192{
6193 init();
6194 wxBoxSizer *m_main_sizer = new wxBoxSizer(wxVERTICAL);
6195 // top line
6196 auto m_line_top = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(-1, 1), wxTAB_TRAVERSAL);
6197 m_line_top->SetBackgroundColour(wxColour(0xA6, 0xa9, 0xAA));
6198 m_main_sizer->Add(m_line_top, 0, wxEXPAND, 0);
6199 m_main_sizer->Add(0, 0, 0, wxTOP, FromDIP(32));
6200
6201 warning_text = new wxStaticText(this, wxID_ANY, _L("At least one successful print record of this print profile is required \nto give a positive rating (4 or 5 stars)."));
6202 warning_text->SetForegroundColour(*wxRED);
6204
6205 wxBoxSizer *score_sizer = get_score_sizer();
6206 m_main_sizer->Add(score_sizer, 0, wxEXPAND, FromDIP(20));
6207 m_main_sizer->Add(0, 0, 0, wxBOTTOM, FromDIP(8));
6208
6209 wxBoxSizer *static_score_star_sizer = get_star_sizer();
6210 m_main_sizer->Add(static_score_star_sizer, 1, wxEXPAND | wxBOTTOM, FromDIP(20));
6211
6212 m_main_sizer->Add(warning_text, 0, wxEXPAND | wxLEFT, FromDIP(24));
6213 m_main_sizer->Add(0, 0, 0, wxBOTTOM, FromDIP(8));
6214 warning_text->Hide();
6215
6216 wxBoxSizer *m_comment_sizer = get_comment_text_sizer();
6217 m_main_sizer->Add(m_comment_sizer, 0, wxEXPAND, FromDIP(20));
6218 m_main_sizer->Add(0, 0, 0, wxBOTTOM, FromDIP(8));
6219
6220 create_comment_text(comment);
6221 m_main_sizer->Add(m_comment_text, 0, wxLEFT, FromDIP(24));
6222
6223 wxBoxSizer *m_photo_sizer = get_photo_btn_sizer();
6224 m_main_sizer->Add(m_photo_sizer, 0, wxEXPAND | wxTOP, FromDIP(8));
6225
6226 m_image_sizer = new wxGridSizer(5, FromDIP(5), FromDIP(5));
6227 if (!images.empty()) {
6228 load_photo(images);
6229 }
6230 m_main_sizer->Add(m_image_sizer, 0, wxEXPAND | wxLEFT, FromDIP(24));
6231 m_main_sizer->Add(0, 0, 1, wxEXPAND, 0);
6232
6233 wxBoxSizer *bSizer_button = get_button_sizer();
6234 m_main_sizer->Add(bSizer_button, 0, wxEXPAND | wxBOTTOM, FromDIP(24));
6235
6236 return m_main_sizer;
6237}
static wxFont Body_13
Definition Label.hpp:54
wxBoxSizer * get_photo_btn_sizer()
Definition StatusPanel.cpp:5929
wxBoxSizer * get_score_sizer()
Definition StatusPanel.cpp:5838
wxStaticText * warning_text
Definition StatusPanel.hpp:260
void init()
Definition StatusPanel.cpp:5831
void create_comment_text(const wxString &comment="")
Definition StatusPanel.cpp:5907
void load_photo(const std::vector< std::pair< wxString, std::string > > &filePaths)
Definition StatusPanel.cpp:6161
wxBoxSizer * get_star_sizer()
Definition StatusPanel.cpp:5847
wxBoxSizer * get_comment_text_sizer()
Definition StatusPanel.cpp:5898
wxBoxSizer * get_button_sizer()
Definition StatusPanel.cpp:6007

References _L, Label::Body_13, create_comment_text(), get_button_sizer(), get_comment_text_sizer(), get_photo_btn_sizer(), get_score_sizer(), get_star_sizer(), init(), load_photo(), m_comment_text, m_image_sizer, warning_text, and wxStaticText.

Referenced by ScoreDialog(), and ScoreDialog().

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

◆ get_photo_btn_sizer()

wxBoxSizer * Slic3r::GUI::ScoreDialog::get_photo_btn_sizer ( )
protected
5929 {
5930 wxBoxSizer * m_photo_sizer = new wxBoxSizer(wxHORIZONTAL);
5931 ScalableBitmap little_photo = wxGetApp().dark_mode() ? ScalableBitmap(this, "single_little_photo_dark", 20) : ScalableBitmap(this, "single_little_photo", 20);
5932 wxStaticBitmap *little_photo_img = new wxStaticBitmap(this, wxID_ANY, little_photo.bmp(), wxDefaultPosition, wxSize(FromDIP(20), FromDIP(20)), 0);
5933 m_photo_sizer->Add(little_photo_img, 0, wxEXPAND | wxLEFT, FromDIP(24));
5934 m_add_photo = new Label(this, _L("Add Photo"));
5935 m_add_photo->SetBackgroundColour(*wxWHITE);
5936 //m_add_photo->SetForegroundColour(wxColor("#898989"));
5937 m_add_photo->SetSize(wxSize(-1, FromDIP(20)));
5938 m_photo_sizer->Add(m_add_photo, 0, wxEXPAND | wxLEFT, FromDIP(12));
5939
5940 m_delete_photo = new Label(this, _L("Delete Photo"));
5941 m_delete_photo->SetBackgroundColour(*wxWHITE);
5942 //m_delete_photo->SetForegroundColour(wxColor("#898989"));
5943 m_delete_photo->SetSize(wxSize(-1, FromDIP(20)));
5944 m_photo_sizer->Add(m_delete_photo, 0, wxEXPAND | wxLEFT, FromDIP(12));
5945 m_delete_photo->Hide();
5946 m_photo_sizer->Add(0, 0, 1, wxEXPAND, 0);
5947
5948 m_add_photo->Bind(wxEVT_LEFT_DOWN, [this](auto &e) {
5949 // add photo logic
5950 wxFileDialog openFileDialog(this, _L("Select Images"), "", "", _L("Image files (*.png;*.jpg;*jpeg)|*.png;*.jpg;*.jpeg"), wxFD_OPEN | wxFD_FILE_MUST_EXIST | wxFD_MULTIPLE);
5951
5952 if (openFileDialog.ShowModal() == wxID_CANCEL) return;
5953
5954 wxArrayString filePaths;
5955 openFileDialog.GetPaths(filePaths);
5956 //wxArrayString filePaths_reduction;
5957 std::vector<std::pair<wxString, std::string>> local_path;
5958 for (int i = 0; i < filePaths.GetCount(); i++) { //It's ugly, but useful
5959 bool is_repeat = false;
5960 for (auto image : m_image) {
5961 if (filePaths[i] == image.second.local_image_url) {
5962 is_repeat = true;
5963 continue;
5964 }
5965 }
5966 if (!is_repeat) {
5967 local_path.push_back(std::make_pair(filePaths[i], ""));
5968 if (local_path.size() + m_image.size() > m_photo_nums) {
5969 break;
5970 }
5971 }
5972
5973 }
5974
5975 load_photo(local_path);
5976
5977 m_image_sizer->Layout();
5978 this->Fit();
5979 this->Layout();
5980 });
5981
5982 m_delete_photo->Bind(wxEVT_LEFT_DOWN, [this](auto &e) {
5983 for (auto it = m_selected_image_list.begin(); it != m_selected_image_list.end();) {
5984 auto bitmap = *it;
5985 m_image_sizer->Detach(m_image[bitmap].image_tb_broad);
5986 m_image[bitmap].image_tb_broad->DeleteWindows();
5987
5988 m_image.erase(bitmap);
5989 it = m_selected_image_list.erase(it);
5990 }
5991 m_image_url_paths.clear();
5992 for (const auto& bitmap : m_image) {
5993 if (bitmap.second.is_uploaded) {
5994 if (!bitmap.second.img_url_paths.empty()) {
5995 m_image_url_paths.push_back(bitmap.second.img_url_paths);
5996 }
5997 }
5998 }
5999 m_delete_photo->Hide();
6000 Layout();
6001 Fit();
6002 });
6003
6004 return m_photo_sizer;
6005}
const wxBitmap & bmp() const
Definition wxExtensions.hpp:189
const int m_photo_nums
Definition StatusPanel.hpp:233
Label * m_add_photo
Definition StatusPanel.hpp:257
std::unordered_set< wxStaticBitmap * > m_selected_image_list
Definition StatusPanel.hpp:262
Label * m_delete_photo
Definition StatusPanel.hpp:258

References _L, ScalableBitmap::bmp(), load_photo(), m_add_photo, m_delete_photo, m_image, m_image_sizer, m_image_url_paths, m_photo_nums, and m_selected_image_list.

Referenced by get_main_sizer().

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

◆ get_rating_id()

int Slic3r::GUI::ScoreDialog::get_rating_id ( )
inline
219{ return m_rating_id; }

References m_rating_id.

◆ get_score_data()

ScoreData Slic3r::GUI::ScoreDialog::get_score_data ( )
6239 {
6240 ScoreData score_data;
6241 score_data.rating_id = m_rating_id;
6242 score_data.design_id = m_design_id;
6243 score_data.model_id = m_model_id;
6244 score_data.profile_id = m_profile_id;
6245 score_data.star_count = m_star_count;
6246 score_data.success_printed = m_success_printed;
6247 score_data.comment_text = m_comment_text->GetValue();
6248 score_data.image_url_paths = m_image_url_paths;
6249 for (auto img : m_image) { score_data.local_to_url_image.push_back(std::make_pair(img.second.local_image_url, img.second.img_url_paths)); }
6250
6251 return score_data;
6252}

References Slic3r::GUI::ScoreData::comment_text, Slic3r::GUI::ScoreData::design_id, Slic3r::GUI::ScoreData::image_url_paths, Slic3r::GUI::ScoreData::local_to_url_image, m_comment_text, m_design_id, m_image, m_image_url_paths, m_model_id, m_profile_id, m_rating_id, m_star_count, m_success_printed, Slic3r::GUI::ScoreData::model_id, Slic3r::GUI::ScoreData::profile_id, Slic3r::GUI::ScoreData::rating_id, Slic3r::GUI::ScoreData::star_count, and Slic3r::GUI::ScoreData::success_printed.

Referenced by Slic3r::GUI::StatusPanel::on_market_scoring().

Here is the caller graph for this function:

◆ get_score_sizer()

wxBoxSizer * Slic3r::GUI::ScoreDialog::get_score_sizer ( )
protected
5838 {
5839 wxBoxSizer *score_sizer = new wxBoxSizer(wxHORIZONTAL);
5840 wxStaticText *static_score_text = new wxStaticText(this, wxID_ANY, _L("Rate"), wxDefaultPosition, wxDefaultSize, 0);
5841 static_score_text->Wrap(-1);
5842 score_sizer->Add(static_score_text, 1, wxEXPAND | wxLEFT, FromDIP(24));
5843 score_sizer->Add(0, 0, 1, wxEXPAND, 0);
5844 return score_sizer;
5845}

References _L, and wxStaticText.

Referenced by get_main_sizer().

Here is the caller graph for this function:

◆ get_star_sizer()

wxBoxSizer * Slic3r::GUI::ScoreDialog::get_star_sizer ( )
protected
5848{
5849 wxBoxSizer *static_score_star_sizer = new wxBoxSizer(wxHORIZONTAL);
5850 static_score_star_sizer->AddSpacer(FromDIP(20));
5851 m_score_star.resize(5);
5852 for (int i = 0; i < m_score_star.size(); ++i) {
5853 if (!m_success_printed && m_star_count > 3) {
5854 m_star_count = 3;
5855 warning_text->Show();
5856 Layout();
5857 Fit();
5858 }
5859 if (i < m_star_count) {
5860 m_score_star[i] = new ScalableButton(this, wxID_ANY, "score_star_light", wxEmptyString, wxSize(FromDIP(26), FromDIP(26)), wxDefaultPosition,
5861 wxBU_EXACTFIT | wxNO_BORDER, true, 26);
5862 } else
5863 m_score_star[i] = new ScalableButton(this, wxID_ANY, "score_star_dark", wxEmptyString, wxSize(FromDIP(26), FromDIP(26)), wxDefaultPosition,
5864 wxBU_EXACTFIT | wxNO_BORDER, true, 26);
5865
5866 m_score_star[i]->SetMinSize(wxSize(FromDIP(26), FromDIP(26)));
5867 m_score_star[i]->SetMaxSize(wxSize(FromDIP(26), FromDIP(26)));
5868 m_score_star[i]->Bind(wxEVT_LEFT_DOWN, [this, i](auto &e) {
5869 if (!m_success_printed && i >= 3) {
5870 warning_text->Show();
5871 Layout();
5872 Fit();
5873 return;
5874 } else {
5875 warning_text->Hide();
5876 Layout();
5877 Fit();
5878 }
5879 for (int j = 0; j < m_score_star.size(); ++j) {
5880 ScalableBitmap light_star = ScalableBitmap(nullptr, "score_star_light", 26);
5881 m_score_star[j]->SetBitmap(light_star.bmp());
5882 if (m_score_star[j] == m_score_star[i]) {
5883 m_star_count = j + 1;
5884 break;
5885 }
5886 }
5887 for (int k = m_star_count; k < m_score_star.size(); ++k) {
5888 ScalableBitmap dark_star = ScalableBitmap(nullptr, "score_star_dark", 26);
5889 m_score_star[k]->SetBitmap(dark_star.bmp());
5890 }
5891 });
5892 static_score_star_sizer->Add(m_score_star[i], 1, wxEXPAND | wxLEFT, FromDIP(5));
5893 }
5894
5895 return static_score_star_sizer;
5896}
std::vector< ScalableButton * > m_score_star
Definition StatusPanel.hpp:253

References ScalableBitmap::bmp(), m_score_star, m_star_count, m_success_printed, and warning_text.

Referenced by get_main_sizer().

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

◆ init()

void Slic3r::GUI::ScoreDialog::init ( )
protected
5831 {
5832 SetBackgroundColour(*wxWHITE);
5833 SetMinSize(wxSize(FromDIP(540), FromDIP(380)));
5834
5835 fail_image = wxImage(Slic3r::resources_dir() + "/images/oss_picture_load_failed.png", wxBITMAP_TYPE_ANY);
5836}

References Slic3r::GUI::fail_image, and Slic3r::resources_dir().

Referenced by get_main_sizer().

Here is the call graph for this function:
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; }

◆ load_photo()

void Slic3r::GUI::ScoreDialog::load_photo ( const std::vector< std::pair< wxString, std::string > > & filePaths)
protected
6162{
6163 for (size_t i = 0; i < filePaths.size(); ++i) {
6164 if (m_image.size() < m_photo_nums) {
6165 std::pair<wxString, std::string> local_to_url_path = filePaths[i];
6166 wxString filePath = local_to_url_path.first;
6167
6168 ImageMsg cur_image_msg;
6169
6170 if (filePath.empty()) { // local img path is empty, oss url path is exist
6171 std::string oss_url_path = local_to_url_path.second;
6172 //to do: load oss image, create wxStaticBitmap
6173
6174 if (!oss_url_path.empty()) {
6175 m_image.insert(create_oss_thumbnail(oss_url_path));
6176 }
6177 continue;
6178 } else {
6179 m_image.insert(create_local_thumbnail(filePath));
6180 }
6181
6182 } else {
6183 MessageDialog *dlg_info_up_to_8 = new MessageDialog(this, _L("You can select up to 16 images."), wxString(_L("info")), wxOK | wxCENTER);
6184 dlg_info_up_to_8->ShowModal();
6185 break;
6186 }
6187
6188 }
6189}
std::pair< wxStaticBitmap *, ImageMsg > create_oss_thumbnail(std::string &oss_path)
Definition StatusPanel.cpp:5742
std::pair< wxStaticBitmap *, ImageMsg > create_local_thumbnail(wxString &local_path)
Definition StatusPanel.cpp:5720

References _L, create_local_thumbnail(), create_oss_thumbnail(), m_image, m_photo_nums, and Slic3r::GUI::DPIAware< P >::ShowModal().

Referenced by get_main_sizer(), and get_photo_btn_sizer().

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

◆ normal_font()

◆ on_dpi_changed()

void Slic3r::GUI::ScoreDialog::on_dpi_changed ( const wxRect & suggested_rect)
overrideprotectedvirtual

◆ on_sys_color_changed()

◆ OnBitmapClicked()

void Slic3r::GUI::ScoreDialog::OnBitmapClicked ( wxMouseEvent & event)
protected
5679{
5680 wxStaticBitmap *clickedBitmap = dynamic_cast<wxStaticBitmap *>(event.GetEventObject());
5681 if (m_image.find(clickedBitmap) != m_image.end()) {
5682 if (!m_image[clickedBitmap].is_selected) {
5683 for (auto panel : m_image[clickedBitmap].image_broad) {
5684 panel->Show();
5685 }
5686 m_image[clickedBitmap].is_selected = true;
5687 m_selected_image_list.insert(clickedBitmap);
5688 } else {
5689 for (auto panel : m_image[clickedBitmap].image_broad) {
5690 panel->Hide();
5691 }
5692 m_image[clickedBitmap].is_selected = false;
5693 m_selected_image_list.erase(clickedBitmap);
5694 m_selected_image_list.erase(clickedBitmap);
5695 }
5696 }
5697 if (m_selected_image_list.empty())
5698 m_delete_photo->Hide();
5699 else
5700 m_delete_photo->Show();
5701 Fit();
5702 Layout();
5703
5704}

References m_delete_photo, m_image, m_selected_image_list, and Slic3r::GUI::wxMouseEvent.

Referenced by create_local_thumbnail(), and create_oss_thumbnail().

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_cloud_bitmap()

void Slic3r::GUI::ScoreDialog::set_cloud_bitmap ( std::vector< std::string > cloud_bitmaps)
6263{
6264 m_image_url_paths = cloud_bitmaps;
6265 for (std::string &url : cloud_bitmaps) {
6266 if (std::string::npos == url.find(m_model_id)) continue;
6267 m_image.insert(create_oss_thumbnail(url));
6268 }
6269 Layout();
6270 Fit();
6271}

References create_oss_thumbnail(), m_image, m_image_url_paths, and m_model_id.

Referenced by Slic3r::GUI::StatusPanel::on_market_scoring().

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

◆ set_comment()

void Slic3r::GUI::ScoreDialog::set_comment ( std::string comment)
6255{
6256 if (m_comment_text) {
6257
6258 m_comment_text->SetValue(wxString::FromUTF8(comment));
6259 }
6260}

References m_comment_text.

Referenced by Slic3r::GUI::StatusPanel::on_market_scoring().

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 }

◆ update_static_bitmap()

void Slic3r::GUI::ScoreDialog::update_static_bitmap ( wxStaticBitmap * static_bitmap,
wxImage image )
protected
5786{
5787 static_bitmap->SetBitmap(wxBitmap(image.Rescale(FromDIP(80), FromDIP(60))));
5788 Layout();
5789 Fit();
5790 //Refresh();
5791}

Referenced by create_oss_thumbnail().

Here is the caller graph for this function:

Member Data Documentation

◆ m_add_photo

Label* Slic3r::GUI::ScoreDialog::m_add_photo = nullptr
protected

Referenced by get_photo_btn_sizer().

◆ m_button_cancel

Button* Slic3r::GUI::ScoreDialog::m_button_cancel = nullptr
protected

Referenced by get_button_sizer().

◆ m_button_ok

Button* Slic3r::GUI::ScoreDialog::m_button_ok = nullptr
protected

Referenced by get_button_sizer().

◆ m_can_rescale

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

◆ m_comment_text

wxTextCtrl* Slic3r::GUI::ScoreDialog::m_comment_text = nullptr
protected

◆ m_delete_photo

Label* Slic3r::GUI::ScoreDialog::m_delete_photo = nullptr
protected

◆ m_design_id

int Slic3r::GUI::ScoreDialog::m_design_id
protected

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

std::unordered_map<wxStaticBitmap *, ImageMsg> Slic3r::GUI::ScoreDialog::m_image
protected

◆ m_image_sizer

wxGridSizer* Slic3r::GUI::ScoreDialog::m_image_sizer = nullptr
protected

◆ m_image_url_paths

std::vector<std::string> Slic3r::GUI::ScoreDialog::m_image_url_paths
protected

◆ m_model_id

std::string Slic3r::GUI::ScoreDialog::m_model_id
protected

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

const int Slic3r::GUI::ScoreDialog::m_photo_nums = 16
protected

Referenced by get_photo_btn_sizer(), and load_photo().

◆ m_prev_scale_factor

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

◆ m_profile_id

int Slic3r::GUI::ScoreDialog::m_profile_id
protected

◆ m_rating_id

int Slic3r::GUI::ScoreDialog::m_rating_id
protected

◆ m_scale_factor

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

◆ m_score_star

std::vector<ScalableButton *> Slic3r::GUI::ScoreDialog::m_score_star
protected

Referenced by get_star_sizer().

◆ m_selected_image_list

std::unordered_set<wxStaticBitmap *> Slic3r::GUI::ScoreDialog::m_selected_image_list
protected

◆ m_star_count

int Slic3r::GUI::ScoreDialog::m_star_count
protected

◆ m_success_printed

bool Slic3r::GUI::ScoreDialog::m_success_printed
protected

◆ m_tocken

std::shared_ptr<int> Slic3r::GUI::ScoreDialog::m_tocken
protected

◆ m_upload_status_code

StatusCode Slic3r::GUI::ScoreDialog::m_upload_status_code
protected

◆ warning_text

wxStaticText* Slic3r::GUI::ScoreDialog::warning_text = nullptr
protected

Referenced by get_main_sizer(), and get_star_sizer().


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