mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 20:21:12 -06:00 
			
		
		
		
	Big Refactoring: - deleted/renamed all _Prusa_ prefixes,
- cleaned code from commented parts - rescale() -> msw_rescale()
This commit is contained in:
		
							parent
							
								
									be60f0a53c
								
							
						
					
					
						commit
						065448e9e5
					
				
					 32 changed files with 726 additions and 1139 deletions
				
			
		|  | @ -45,9 +45,8 @@ AboutDialog::AboutDialog() | ||||||
| 	main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20); | 	main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20); | ||||||
| 
 | 
 | ||||||
|     // logo
 |     // logo
 | ||||||
|     m_logo_bitmap = PrusaBitmap(this, "Slic3r_192px.png", 192); |     m_logo_bitmap = ScalableBitmap(this, "Slic3r_192px.png", 192); | ||||||
|     m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp()); |     m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp()); | ||||||
| //     auto *logo = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap(this, "Slic3r_192px.png", 192));
 |  | ||||||
| 	hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL); | 	hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL); | ||||||
|      |      | ||||||
|     wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); 	 |     wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); 	 | ||||||
|  | @ -56,8 +55,7 @@ AboutDialog::AboutDialog() | ||||||
|     // title
 |     // title
 | ||||||
|     { |     { | ||||||
|         wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); |         wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); | ||||||
|         wxFont title_font = GUI::wxGetApp().bold_font();// wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
 |         wxFont title_font = GUI::wxGetApp().bold_font(); | ||||||
| //         title_font.SetWeight(wxFONTWEIGHT_BOLD);
 |  | ||||||
|         title_font.SetFamily(wxFONTFAMILY_ROMAN); |         title_font.SetFamily(wxFONTFAMILY_ROMAN); | ||||||
|         title_font.SetPointSize(24); |         title_font.SetPointSize(24); | ||||||
|         title->SetFont(title_font); |         title->SetFont(title_font); | ||||||
|  | @ -68,9 +66,9 @@ AboutDialog::AboutDialog() | ||||||
|     { |     { | ||||||
|         auto version_string = _(L("Version"))+ " " + std::string(SLIC3R_VERSION); |         auto version_string = _(L("Version"))+ " " + std::string(SLIC3R_VERSION); | ||||||
|         wxStaticText* version = new wxStaticText(this, wxID_ANY, version_string.c_str(), wxDefaultPosition, wxDefaultSize); |         wxStaticText* version = new wxStaticText(this, wxID_ANY, version_string.c_str(), wxDefaultPosition, wxDefaultSize); | ||||||
|         wxFont version_font = GetFont();//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
 |         wxFont version_font = GetFont(); | ||||||
|         #ifdef __WXMSW__ |         #ifdef __WXMSW__ | ||||||
|         version_font.SetPointSize(/*9*/version_font.GetPointSize()-1); |         version_font.SetPointSize(version_font.GetPointSize()-1); | ||||||
|         #else |         #else | ||||||
|             version_font.SetPointSize(11); |             version_font.SetPointSize(11); | ||||||
|         #endif |         #endif | ||||||
|  | @ -82,7 +80,7 @@ AboutDialog::AboutDialog() | ||||||
|     m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO/*NEVER*/); |     m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO/*NEVER*/); | ||||||
|     { |     { | ||||||
|         m_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit())); |         m_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit())); | ||||||
|         wxFont font = GetFont();//GUI::wxGetApp().normal_font(); // wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
 |         wxFont font = GetFont(); | ||||||
|         const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); |         const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); | ||||||
| 		auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue()); | 		auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue()); | ||||||
| 		auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()); | 		auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()); | ||||||
|  | @ -125,7 +123,7 @@ AboutDialog::AboutDialog() | ||||||
| 
 | 
 | ||||||
| void AboutDialog::on_dpi_changed(const wxRect &suggested_rect) | void AboutDialog::on_dpi_changed(const wxRect &suggested_rect) | ||||||
| { | { | ||||||
|     m_logo_bitmap.rescale(); |     m_logo_bitmap.msw_rescale(); | ||||||
|     m_logo->SetBitmap(m_logo_bitmap.bmp()); |     m_logo->SetBitmap(m_logo_bitmap.bmp()); | ||||||
| 
 | 
 | ||||||
|     const wxFont& font = GetFont(); |     const wxFont& font = GetFont(); | ||||||
|  |  | ||||||
|  | @ -25,7 +25,7 @@ private: | ||||||
| 
 | 
 | ||||||
| class AboutDialog : public DPIDialog | class AboutDialog : public DPIDialog | ||||||
| { | { | ||||||
|     PrusaBitmap     m_logo_bitmap; |     ScalableBitmap  m_logo_bitmap; | ||||||
|     wxHtmlWindow*   m_html; |     wxHtmlWindow*   m_html; | ||||||
|     wxStaticBitmap* m_logo; |     wxStaticBitmap* m_logo; | ||||||
| public: | public: | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ void BedShapeDialog::on_dpi_changed(const wxRect &suggested_rect) | ||||||
|     m_panel->m_shape_options_book->SetMinSize(wxSize(25 * em, -1)); |     m_panel->m_shape_options_book->SetMinSize(wxSize(25 * em, -1)); | ||||||
| 
 | 
 | ||||||
|     for (auto og : m_panel->m_optgroups) |     for (auto og : m_panel->m_optgroups) | ||||||
|         og->rescale(); |         og->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     const wxSize& size = wxSize(50 * em, -1); |     const wxSize& size = wxSize(50 * em, -1); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,12 +4,12 @@ | ||||||
| #include <wx/dialog.h> | #include <wx/dialog.h> | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
| class PrusaBitmap; | class ScalableBitmap; | ||||||
| 
 | 
 | ||||||
| namespace Slic3r { | namespace Slic3r { | ||||||
| namespace GUI { | namespace GUI { | ||||||
| 
 | 
 | ||||||
| using t_icon_descriptions = std::vector<std::pair</*wxBitmap*/PrusaBitmap*, std::string>>; | using t_icon_descriptions = std::vector<std::pair<ScalableBitmap*, std::string>>; | ||||||
| 
 | 
 | ||||||
| class ButtonsDescription : public wxDialog | class ButtonsDescription : public wxDialog | ||||||
| { | { | ||||||
|  | @ -17,8 +17,6 @@ class ButtonsDescription : public wxDialog | ||||||
| public: | public: | ||||||
| 	ButtonsDescription(wxWindow* parent, t_icon_descriptions* icon_descriptions); | 	ButtonsDescription(wxWindow* parent, t_icon_descriptions* icon_descriptions); | ||||||
| 	~ButtonsDescription() {} | 	~ButtonsDescription() {} | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| } // GUI
 | } // GUI
 | ||||||
|  |  | ||||||
|  | @ -648,10 +648,10 @@ ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent) | ||||||
|     , bullet_blue(GUI::from_u8(Slic3r::var("bullet_blue.png")), wxBITMAP_TYPE_PNG) |     , bullet_blue(GUI::from_u8(Slic3r::var("bullet_blue.png")), wxBITMAP_TYPE_PNG) | ||||||
|     , bullet_white(GUI::from_u8(Slic3r::var("bullet_white.png")), wxBITMAP_TYPE_PNG) |     , bullet_white(GUI::from_u8(Slic3r::var("bullet_white.png")), wxBITMAP_TYPE_PNG) | ||||||
|     */ |     */ | ||||||
|     , bg(PrusaBitmap(parent, "Slic3r_192px_transparent.png", 192)) |     , bg(ScalableBitmap(parent, "Slic3r_192px_transparent.png", 192)) | ||||||
|     , bullet_black(PrusaBitmap(parent, "bullet_black.png")) |     , bullet_black(ScalableBitmap(parent, "bullet_black.png")) | ||||||
|     , bullet_blue(PrusaBitmap(parent, "bullet_blue.png")) |     , bullet_blue(ScalableBitmap(parent, "bullet_blue.png")) | ||||||
|     , bullet_white(PrusaBitmap(parent, "bullet_white.png")) |     , bullet_white(ScalableBitmap(parent, "bullet_white.png")) | ||||||
|     , item_active(0) |     , item_active(0) | ||||||
|     , item_hover(-1) |     , item_hover(-1) | ||||||
|     , last_page((size_t)-1) |     , last_page((size_t)-1) | ||||||
|  | @ -839,15 +839,15 @@ void ConfigWizardIndex::on_mouse_move(wxMouseEvent &evt) | ||||||
|     evt.Skip(); |     evt.Skip(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ConfigWizardIndex::rescale() | void ConfigWizardIndex::msw_rescale() | ||||||
| { | { | ||||||
|     bg.rescale(); |     bg.msw_rescale(); | ||||||
|     SetMinSize(bg.bmp().GetSize()); |     SetMinSize(bg.bmp().GetSize()); | ||||||
|     logo->SetBitmap(bg.bmp()); |     logo->SetBitmap(bg.bmp()); | ||||||
| 
 | 
 | ||||||
|     bullet_black.rescale(); |     bullet_black.msw_rescale(); | ||||||
|     bullet_blue.rescale(); |     bullet_blue.msw_rescale(); | ||||||
|     bullet_white.rescale(); |     bullet_white.msw_rescale(); | ||||||
|     Refresh(); |     Refresh(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1174,7 +1174,7 @@ const wxString& ConfigWizard::name(const bool from_menu/* = false*/) | ||||||
| 
 | 
 | ||||||
| void ConfigWizard::on_dpi_changed(const wxRect &suggested_rect) | void ConfigWizard::on_dpi_changed(const wxRect &suggested_rect) | ||||||
| { | { | ||||||
|     p->index->rescale(); |     p->index->msw_rescale(); | ||||||
|     Refresh(); |     Refresh(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -210,7 +210,7 @@ public: | ||||||
|     void go_to(ConfigWizardPage *page); |     void go_to(ConfigWizardPage *page); | ||||||
| 
 | 
 | ||||||
|     void clear(); |     void clear(); | ||||||
|     void rescale(); |     void msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     int em() const { return em_w; } |     int em() const { return em_w; } | ||||||
| private: | private: | ||||||
|  | @ -231,10 +231,10 @@ private: | ||||||
|     const wxBitmap bullet_blue; |     const wxBitmap bullet_blue; | ||||||
|     const wxBitmap bullet_white; |     const wxBitmap bullet_white; | ||||||
|     */ |     */ | ||||||
|     PrusaBitmap bg; |     ScalableBitmap bg; | ||||||
|     PrusaBitmap bullet_black; |     ScalableBitmap bullet_black; | ||||||
|     PrusaBitmap bullet_blue; |     ScalableBitmap bullet_blue; | ||||||
|     PrusaBitmap bullet_white; |     ScalableBitmap bullet_white; | ||||||
|     wxStaticBitmap* logo; |     wxStaticBitmap* logo; | ||||||
| 
 | 
 | ||||||
|     std::vector<Item> items; |     std::vector<Item> items; | ||||||
|  |  | ||||||
|  | @ -33,22 +33,12 @@ wxString double_to_string(double const value, const int max_precision /*= 4*/) | ||||||
| void Field::PostInitialize() | void Field::PostInitialize() | ||||||
| { | { | ||||||
| 	auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); | 	auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW); | ||||||
| 	m_Undo_btn			= new RevertButton(m_parent, "bullet_white.png");//(m_parent, wxID_ANY, "", wxDefaultPosition,wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
 | 	m_Undo_btn			= new RevertButton(m_parent, "bullet_white.png"); | ||||||
| 	m_Undo_to_sys_btn	= new RevertButton(m_parent, "bullet_white.png");//(m_parent, wxID_ANY, "", wxDefaultPosition,wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
 | 	m_Undo_to_sys_btn	= new RevertButton(m_parent, "bullet_white.png"); | ||||||
| // 	if (wxMSW) {
 | 
 | ||||||
| // 		m_Undo_btn->SetBackgroundColour(color);
 |  | ||||||
| // 		m_Undo_btn->SetBackgroundStyle(wxBG_STYLE_PAINT);
 |  | ||||||
| // 		m_Undo_to_sys_btn->SetBackgroundColour(color);
 |  | ||||||
| // 		m_Undo_to_sys_btn->SetBackgroundStyle(wxBG_STYLE_PAINT);
 |  | ||||||
| // 	}
 |  | ||||||
|     m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); })); |     m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); })); | ||||||
| 	m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); })); | 	m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); })); | ||||||
| 
 | 
 | ||||||
| 	//set default bitmap
 |  | ||||||
| // 	wxBitmap bmp = create_scaled_bitmap(m_parent, "bullet_white.png" );
 |  | ||||||
| // 	set_undo_bitmap(&bmp);
 |  | ||||||
| // 	set_undo_to_sys_bitmap(&bmp);
 |  | ||||||
| 
 |  | ||||||
| 	switch (m_opt.type) | 	switch (m_opt.type) | ||||||
| 	{ | 	{ | ||||||
| 	case coPercents: | 	case coPercents: | ||||||
|  | @ -360,9 +350,9 @@ boost::any& TextCtrl::get_value() | ||||||
| 	return m_value; | 	return m_value; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void TextCtrl::rescale() | void TextCtrl::msw_rescale() | ||||||
| { | { | ||||||
|     Field::rescale(); |     Field::msw_rescale(); | ||||||
|     auto size = wxSize(wxDefaultSize); |     auto size = wxSize(wxDefaultSize); | ||||||
|     if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); |     if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); | ||||||
|     if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); |     if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit); | ||||||
|  | @ -523,9 +513,9 @@ void SpinCtrl::propagate_value() | ||||||
|         on_change_field(); |         on_change_field(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void SpinCtrl::rescale() | void SpinCtrl::msw_rescale() | ||||||
| { | { | ||||||
|     Field::rescale(); |     Field::msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     wxSpinCtrl* field = dynamic_cast<wxSpinCtrl*>(window); |     wxSpinCtrl* field = dynamic_cast<wxSpinCtrl*>(window); | ||||||
|     field->SetMinSize(wxSize(-1, int(1.9f*field->GetFont().GetPixelSize().y))); |     field->SetMinSize(wxSize(-1, int(1.9f*field->GetFont().GetPixelSize().y))); | ||||||
|  | @ -843,9 +833,9 @@ boost::any& Choice::get_value() | ||||||
| 	return m_value; | 	return m_value; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Choice::rescale() | void Choice::msw_rescale() | ||||||
| { | { | ||||||
|     Field::rescale(); |     Field::msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     wxBitmapComboBox* field = dynamic_cast<wxBitmapComboBox*>(window); |     wxBitmapComboBox* field = dynamic_cast<wxBitmapComboBox*>(window); | ||||||
| 
 | 
 | ||||||
|  | @ -967,9 +957,9 @@ void PointCtrl::BUILD() | ||||||
| 	y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y)); | 	y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void PointCtrl::rescale() | void PointCtrl::msw_rescale() | ||||||
| { | { | ||||||
|     Field::rescale(); |     Field::msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     const wxSize field_size(4 * m_em_unit, -1); |     const wxSize field_size(4 * m_em_unit, -1); | ||||||
| 
 | 
 | ||||||
|  | @ -1037,9 +1027,9 @@ void StaticText::BUILD() | ||||||
| 	temp->SetToolTip(get_tooltip_text(legend)); | 	temp->SetToolTip(get_tooltip_text(legend)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void StaticText::rescale() | void StaticText::msw_rescale() | ||||||
| { | { | ||||||
|     Field::rescale(); |     Field::msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     auto size = wxSize(wxDefaultSize); |     auto size = wxSize(wxDefaultSize); | ||||||
|     if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); |     if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit); | ||||||
|  |  | ||||||
|  | @ -37,7 +37,7 @@ using t_back_to_init = std::function<void(const std::string&)>; | ||||||
| 
 | 
 | ||||||
| wxString double_to_string(double const value, const int max_precision = 4); | wxString double_to_string(double const value, const int max_precision = 4); | ||||||
| 
 | 
 | ||||||
| class RevertButton : public /*wxButton*/PrusaButton | class RevertButton : public ScalableButton | ||||||
| { | { | ||||||
|     bool hidden = false; // never show button if it's hidden ones
 |     bool hidden = false; // never show button if it's hidden ones
 | ||||||
| public: | public: | ||||||
|  | @ -54,7 +54,7 @@ public: | ||||||
|         wxWindow *parent, |         wxWindow *parent, | ||||||
|         const std::string& icon_name = "" |         const std::string& icon_name = "" | ||||||
|         ) : |         ) : | ||||||
|         PrusaButton(parent, wxID_ANY, icon_name) {} |         ScalableButton(parent, wxID_ANY, icon_name) {} | ||||||
| 
 | 
 | ||||||
| 	// overridden from wxWindow base class
 | 	// overridden from wxWindow base class
 | ||||||
| 	virtual bool | 	virtual bool | ||||||
|  | @ -160,7 +160,7 @@ public: | ||||||
| 		return std::move(p); //!p;
 | 		return std::move(p); //!p;
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     bool 	set_undo_bitmap(const /*wxBitmap*/PrusaBitmap *bmp) { |     bool 	set_undo_bitmap(const ScalableBitmap *bmp) { | ||||||
|     	if (m_undo_bitmap != bmp) { |     	if (m_undo_bitmap != bmp) { | ||||||
|     		m_undo_bitmap = bmp; |     		m_undo_bitmap = bmp; | ||||||
|     		m_Undo_btn->SetBitmap_(*bmp); |     		m_Undo_btn->SetBitmap_(*bmp); | ||||||
|  | @ -169,7 +169,7 @@ public: | ||||||
|     	return false; |     	return false; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     bool 	set_undo_to_sys_bitmap(const /*wxBitmap*/PrusaBitmap *bmp) { |     bool 	set_undo_to_sys_bitmap(const ScalableBitmap *bmp) { | ||||||
|     	if (m_undo_to_sys_bitmap != bmp) { |     	if (m_undo_to_sys_bitmap != bmp) { | ||||||
|     		m_undo_to_sys_bitmap = bmp; |     		m_undo_to_sys_bitmap = bmp; | ||||||
|     		m_Undo_to_sys_btn->SetBitmap_(*bmp); |     		m_Undo_to_sys_btn->SetBitmap_(*bmp); | ||||||
|  | @ -217,9 +217,9 @@ public: | ||||||
| 		m_side_text = side_text; | 		m_side_text = side_text; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     virtual void rescale() { |     virtual void msw_rescale() { | ||||||
|         m_Undo_to_sys_btn->rescale(); |         m_Undo_to_sys_btn->msw_rescale(); | ||||||
|         m_Undo_btn->rescale(); |         m_Undo_btn->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|         // update em_unit value
 |         // update em_unit value
 | ||||||
|         m_em_unit = em_unit(m_parent); |         m_em_unit = em_unit(m_parent); | ||||||
|  | @ -228,11 +228,11 @@ public: | ||||||
| protected: | protected: | ||||||
| 	RevertButton*			m_Undo_btn = nullptr; | 	RevertButton*			m_Undo_btn = nullptr; | ||||||
| 	// Bitmap and Tooltip text for m_Undo_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one.
 | 	// Bitmap and Tooltip text for m_Undo_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one.
 | ||||||
| 	const /*wxBitmap*/PrusaBitmap*		m_undo_bitmap = nullptr; | 	const ScalableBitmap*   m_undo_bitmap = nullptr; | ||||||
| 	const wxString*         m_undo_tooltip = nullptr; | 	const wxString*         m_undo_tooltip = nullptr; | ||||||
| 	RevertButton*			m_Undo_to_sys_btn = nullptr; | 	RevertButton*			m_Undo_to_sys_btn = nullptr; | ||||||
| 	// Bitmap and Tooltip text for m_Undo_to_sys_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one.
 | 	// Bitmap and Tooltip text for m_Undo_to_sys_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one.
 | ||||||
|     const /*wxBitmap*/PrusaBitmap*		m_undo_to_sys_bitmap = nullptr; |     const ScalableBitmap*   m_undo_to_sys_bitmap = nullptr; | ||||||
| 	const wxString*		    m_undo_to_sys_tooltip = nullptr; | 	const wxString*		    m_undo_to_sys_tooltip = nullptr; | ||||||
| 
 | 
 | ||||||
| 	wxStaticText*		m_Label = nullptr; | 	wxStaticText*		m_Label = nullptr; | ||||||
|  | @ -290,7 +290,7 @@ public: | ||||||
| 
 | 
 | ||||||
| 	boost::any&		get_value() override; | 	boost::any&		get_value() override; | ||||||
| 
 | 
 | ||||||
|     void            rescale() override; |     void            msw_rescale() override; | ||||||
|      |      | ||||||
|     virtual void	enable(); |     virtual void	enable(); | ||||||
|     virtual void	disable(); |     virtual void	disable(); | ||||||
|  | @ -355,7 +355,7 @@ public: | ||||||
| 		return m_value = tmp_value; | 		return m_value = tmp_value; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|     void            rescale() override; |     void            msw_rescale() override; | ||||||
| 
 | 
 | ||||||
| 	void			enable() override { dynamic_cast<wxSpinCtrl*>(window)->Enable(); } | 	void			enable() override { dynamic_cast<wxSpinCtrl*>(window)->Enable(); } | ||||||
| 	void			disable() override { dynamic_cast<wxSpinCtrl*>(window)->Disable(); } | 	void			disable() override { dynamic_cast<wxSpinCtrl*>(window)->Disable(); } | ||||||
|  | @ -384,7 +384,7 @@ public: | ||||||
| 	void			set_values(const std::vector<std::string> &values); | 	void			set_values(const std::vector<std::string> &values); | ||||||
| 	boost::any&		get_value() override; | 	boost::any&		get_value() override; | ||||||
| 
 | 
 | ||||||
|     void            rescale() override; |     void            msw_rescale() override; | ||||||
| 
 | 
 | ||||||
| 	void			enable() override { dynamic_cast<wxBitmapComboBox*>(window)->Enable(); }; | 	void			enable() override { dynamic_cast<wxBitmapComboBox*>(window)->Enable(); }; | ||||||
| 	void			disable() override{ dynamic_cast<wxBitmapComboBox*>(window)->Disable(); }; | 	void			disable() override{ dynamic_cast<wxBitmapComboBox*>(window)->Disable(); }; | ||||||
|  | @ -437,7 +437,7 @@ public: | ||||||
| 	void			set_value(const boost::any& value, bool change_event = false); | 	void			set_value(const boost::any& value, bool change_event = false); | ||||||
| 	boost::any&		get_value() override; | 	boost::any&		get_value() override; | ||||||
| 
 | 
 | ||||||
|     void            rescale() override; |     void            msw_rescale() override; | ||||||
| 
 | 
 | ||||||
| 	void			enable() override { | 	void			enable() override { | ||||||
| 		x_textctrl->Enable(); | 		x_textctrl->Enable(); | ||||||
|  | @ -471,7 +471,7 @@ public: | ||||||
| 
 | 
 | ||||||
| 	boost::any&		get_value()override { return m_value; } | 	boost::any&		get_value()override { return m_value; } | ||||||
| 
 | 
 | ||||||
|     void            rescale() override; |     void            msw_rescale() override; | ||||||
| 
 | 
 | ||||||
| 	void			enable() override { dynamic_cast<wxStaticText*>(window)->Enable(); }; | 	void			enable() override { dynamic_cast<wxStaticText*>(window)->Enable(); }; | ||||||
| 	void			disable() override{ dynamic_cast<wxStaticText*>(window)->Disable(); }; | 	void			disable() override{ dynamic_cast<wxStaticText*>(window)->Disable(); }; | ||||||
|  |  | ||||||
|  | @ -3188,7 +3188,7 @@ double GLCanvas3D::get_size_proportional_to_max_bed_size(double factor) const | ||||||
|     return factor * m_bed.get_bounding_box().max_size(); |     return factor * m_bed.get_bounding_box().max_size(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void GLCanvas3D::rescale() | void GLCanvas3D::msw_rescale() | ||||||
| { | { | ||||||
|     m_warning_texture.rescale(*this); |     m_warning_texture.rescale(*this); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -594,7 +594,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     double get_size_proportional_to_max_bed_size(double factor) const; |     double get_size_proportional_to_max_bed_size(double factor) const; | ||||||
| 
 | 
 | ||||||
|     void rescale(); |     void msw_rescale(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     bool _is_shown_on_screen() const; |     bool _is_shown_on_screen() const; | ||||||
|  |  | ||||||
|  | @ -163,7 +163,7 @@ void ObjectList::create_objects_ctrl() | ||||||
|     m_sizer = new wxBoxSizer(wxVERTICAL); |     m_sizer = new wxBoxSizer(wxVERTICAL); | ||||||
|     m_sizer->Add(this, 1, wxGROW); |     m_sizer->Add(this, 1, wxGROW); | ||||||
| 
 | 
 | ||||||
|     m_objects_model = new PrusaObjectDataViewModel; |     m_objects_model = new ObjectDataViewModel; | ||||||
|     AssociateModel(m_objects_model); |     AssociateModel(m_objects_model); | ||||||
|     m_objects_model->SetAssociatedControl(this); |     m_objects_model->SetAssociatedControl(this); | ||||||
| #if wxUSE_DRAG_AND_DROP && wxUSE_UNICODE | #if wxUSE_DRAG_AND_DROP && wxUSE_UNICODE | ||||||
|  | @ -173,7 +173,7 @@ void ObjectList::create_objects_ctrl() | ||||||
| 
 | 
 | ||||||
|     // column 0(Icon+Text) of the view control: 
 |     // column 0(Icon+Text) of the view control: 
 | ||||||
|     // And Icon can be consisting of several bitmaps
 |     // And Icon can be consisting of several bitmaps
 | ||||||
|     AppendColumn(new wxDataViewColumn(_(L("Name")), new PrusaBitmapTextRenderer(), |     AppendColumn(new wxDataViewColumn(_(L("Name")), new BitmapTextRenderer(), | ||||||
|         0, 20*wxGetApp().em_unit()/*200*/, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE)); |         0, 20*wxGetApp().em_unit()/*200*/, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE)); | ||||||
| 
 | 
 | ||||||
|     // column 1 of the view control:
 |     // column 1 of the view control:
 | ||||||
|  | @ -395,22 +395,10 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const | ||||||
| 
 | 
 | ||||||
| void ObjectList::init_icons() | void ObjectList::init_icons() | ||||||
| { | { | ||||||
| //     m_bmp_modifiermesh      = create_scaled_bitmap(nullptr, "add_modifier");
 |     m_bmp_modifiermesh      = ScalableBitmap(nullptr, "add_modifier");    // Add part 
 | ||||||
| //     m_bmp_solidmesh         = create_scaled_bitmap(nullptr, "add_part");
 |     m_bmp_solidmesh         = ScalableBitmap(nullptr, "add_part");        // Add modifier 
 | ||||||
| //     m_bmp_support_enforcer  = create_scaled_bitmap(nullptr, "support_enforcer");
 |     m_bmp_support_enforcer  = ScalableBitmap(nullptr, "support_enforcer");// Add support enforcer 
 | ||||||
| //     m_bmp_support_blocker   = create_scaled_bitmap(nullptr, "support_blocker");
 |     m_bmp_support_blocker   = ScalableBitmap(nullptr, "support_blocker"); // Add support blocker  
 | ||||||
| // 
 |  | ||||||
| // 
 |  | ||||||
| //     m_bmp_vector.reserve(4); // bitmaps for different types of parts 
 |  | ||||||
| //     m_bmp_vector.push_back(&m_bmp_solidmesh);         
 |  | ||||||
| //     m_bmp_vector.push_back(&m_bmp_modifiermesh);      
 |  | ||||||
| //     m_bmp_vector.push_back(&m_bmp_support_enforcer);  
 |  | ||||||
| //     m_bmp_vector.push_back(&m_bmp_support_blocker);   
 |  | ||||||
| 
 |  | ||||||
|     m_bmp_modifiermesh      = PrusaBitmap(nullptr, "add_modifier");    // Add part 
 |  | ||||||
|     m_bmp_solidmesh         = PrusaBitmap(nullptr, "add_part");        // Add modifier 
 |  | ||||||
|     m_bmp_support_enforcer  = PrusaBitmap(nullptr, "support_enforcer");// Add support enforcer 
 |  | ||||||
|     m_bmp_support_blocker   = PrusaBitmap(nullptr, "support_blocker"); // Add support blocker  
 |  | ||||||
| 
 | 
 | ||||||
|     m_bmp_vector.reserve(4); // bitmaps for different types of parts 
 |     m_bmp_vector.reserve(4); // bitmaps for different types of parts 
 | ||||||
|     m_bmp_vector.push_back(&m_bmp_solidmesh.bmp());          |     m_bmp_vector.push_back(&m_bmp_solidmesh.bmp());          | ||||||
|  | @ -423,34 +411,34 @@ void ObjectList::init_icons() | ||||||
|     m_objects_model->SetVolumeBitmaps(m_bmp_vector); |     m_objects_model->SetVolumeBitmaps(m_bmp_vector); | ||||||
| 
 | 
 | ||||||
|     // init icon for manifold warning
 |     // init icon for manifold warning
 | ||||||
|     m_bmp_manifold_warning  = /*create_scaled_bitmap*/PrusaBitmap(nullptr, "exclamation"); |     m_bmp_manifold_warning  = ScalableBitmap(nullptr, "exclamation"); | ||||||
| 
 | 
 | ||||||
|     // init bitmap for "Split to sub-objects" context menu
 |     // init bitmap for "Split to sub-objects" context menu
 | ||||||
|     m_bmp_split             = /*create_scaled_bitmap*/PrusaBitmap(nullptr, "split_parts_SMALL"); |     m_bmp_split             = ScalableBitmap(nullptr, "split_parts_SMALL"); | ||||||
| 
 | 
 | ||||||
|     // init bitmap for "Add Settings" context menu
 |     // init bitmap for "Add Settings" context menu
 | ||||||
|     m_bmp_cog               = /*create_scaled_bitmap*/PrusaBitmap(nullptr, "cog"); |     m_bmp_cog               = ScalableBitmap(nullptr, "cog"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ObjectList::rescale_icons() | void ObjectList::rescale_icons() | ||||||
| { | { | ||||||
|     m_bmp_vector.clear(); |     m_bmp_vector.clear(); | ||||||
|     m_bmp_vector.reserve(4); // bitmaps for different types of parts 
 |     m_bmp_vector.reserve(4); // bitmaps for different types of parts 
 | ||||||
|     for (PrusaBitmap* bitmap : std::vector<PrusaBitmap*> { |     for (ScalableBitmap* bitmap : std::vector<ScalableBitmap*> { | ||||||
|                                     &m_bmp_modifiermesh,         // Add part
 |                                     &m_bmp_modifiermesh,         // Add part
 | ||||||
|                                     &m_bmp_solidmesh,             // Add modifier
 |                                     &m_bmp_solidmesh,             // Add modifier
 | ||||||
|                                     &m_bmp_support_enforcer,     // Add support enforcer
 |                                     &m_bmp_support_enforcer,     // Add support enforcer
 | ||||||
|                                     &m_bmp_support_blocker })    // Add support blocker                                                           
 |                                     &m_bmp_support_blocker })    // Add support blocker                                                           
 | ||||||
|     { |     { | ||||||
|         bitmap->rescale(); |         bitmap->msw_rescale(); | ||||||
|         m_bmp_vector.push_back(& bitmap->bmp()); |         m_bmp_vector.push_back(& bitmap->bmp()); | ||||||
|     } |     } | ||||||
|     // Set volumes default bitmaps for the model
 |     // Set volumes default bitmaps for the model
 | ||||||
|     m_objects_model->SetVolumeBitmaps(m_bmp_vector); |     m_objects_model->SetVolumeBitmaps(m_bmp_vector); | ||||||
| 
 | 
 | ||||||
|     m_bmp_manifold_warning.rescale(); |     m_bmp_manifold_warning.msw_rescale(); | ||||||
|     m_bmp_split.rescale(); |     m_bmp_split.msw_rescale(); | ||||||
|     m_bmp_cog.rescale(); |     m_bmp_cog.msw_rescale(); | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|     // Update CATEGORY_ICON according to new scale
 |     // Update CATEGORY_ICON according to new scale
 | ||||||
|  | @ -1057,7 +1045,7 @@ wxMenuItem* ObjectList::append_menu_item_split(wxMenu* menu) | ||||||
| 
 | 
 | ||||||
| wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)  | wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)  | ||||||
| { | { | ||||||
|     PrusaMenu* menu = dynamic_cast<PrusaMenu*>(menu_); |     MenuWithSeparators* menu = dynamic_cast<MenuWithSeparators*>(menu_); | ||||||
| 
 | 
 | ||||||
|     const wxString menu_name = _(L("Add settings")); |     const wxString menu_name = _(L("Add settings")); | ||||||
|     // Delete old items from settings popupmenu
 |     // Delete old items from settings popupmenu
 | ||||||
|  | @ -1105,7 +1093,7 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_) | ||||||
| 
 | 
 | ||||||
|     if (printer_technology() == ptFFF || |     if (printer_technology() == ptFFF || | ||||||
|         menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator()) |         menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator()) | ||||||
|         menu->m_separator_frst = menu->AppendSeparator(); |         menu->SetFirstSeparator(); | ||||||
| 
 | 
 | ||||||
|     // Add frequently settings
 |     // Add frequently settings
 | ||||||
|     create_freq_settings_popupmenu(menu); |     create_freq_settings_popupmenu(menu); | ||||||
|  | @ -1113,7 +1101,7 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_) | ||||||
|     if (mode == comAdvanced) |     if (mode == comAdvanced) | ||||||
|         return nullptr; |         return nullptr; | ||||||
| 
 | 
 | ||||||
|     menu->m_separator_scnd = menu->AppendSeparator(); |     menu->SetSecondSeparator(); | ||||||
| 
 | 
 | ||||||
|     // Add full settings list
 |     // Add full settings list
 | ||||||
|     auto  menu_item = new wxMenuItem(menu, wxID_ANY, menu_name); |     auto  menu_item = new wxMenuItem(menu, wxID_ANY, menu_name); | ||||||
|  | @ -1864,7 +1852,7 @@ void ObjectList::add_object_to_list(size_t obj_idx) | ||||||
|         stats.facets_added + stats.facets_reversed + stats.backwards_edges; |         stats.facets_added + stats.facets_reversed + stats.backwards_edges; | ||||||
|     if (errors > 0) { |     if (errors > 0) { | ||||||
|         wxVariant variant; |         wxVariant variant; | ||||||
|         variant << PrusaDataViewBitmapText(item_name, m_bmp_manifold_warning.bmp()); |         variant << DataViewBitmapText(item_name, m_bmp_manifold_warning.bmp()); | ||||||
|         m_objects_model->SetValue(variant, item, 0); |         m_objects_model->SetValue(variant, item, 0); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -2664,7 +2652,7 @@ void ObjectList::rename_item() | ||||||
|     wxVariant valueOld; |     wxVariant valueOld; | ||||||
|     m_objects_model->GetValue(valueOld, item, 0); |     m_objects_model->GetValue(valueOld, item, 0); | ||||||
| 
 | 
 | ||||||
|     PrusaDataViewBitmapText bmpText; |     DataViewBitmapText bmpText; | ||||||
|     bmpText << valueOld; |     bmpText << valueOld; | ||||||
| 
 | 
 | ||||||
|     // But replace the text with the value entered by user.
 |     // But replace the text with the value entered by user.
 | ||||||
|  | @ -2712,12 +2700,12 @@ void ObjectList::update_item_error_icon(const int obj_idx, const int vol_idx) co | ||||||
|     if (errors == 0) { |     if (errors == 0) { | ||||||
|         // delete Error_icon if all errors are fixed
 |         // delete Error_icon if all errors are fixed
 | ||||||
|         wxVariant variant; |         wxVariant variant; | ||||||
|         variant << PrusaDataViewBitmapText(from_u8(model_object->name), wxNullBitmap); |         variant << DataViewBitmapText(from_u8(model_object->name), wxNullBitmap); | ||||||
|         m_objects_model->SetValue(variant, item, 0); |         m_objects_model->SetValue(variant, item, 0); | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ObjectList::rescale() | void ObjectList::msw_rescale() | ||||||
| { | { | ||||||
|     // update min size !!! A width of control shouldn't be a wxDefaultCoord
 |     // update min size !!! A width of control shouldn't be a wxDefaultCoord
 | ||||||
|     SetMinSize(wxSize(1, 15 * wxGetApp().em_unit())); |     SetMinSize(wxSize(1, 15 * wxGetApp().em_unit())); | ||||||
|  | @ -2748,7 +2736,7 @@ void ObjectList::OnEditingDone(wxDataViewEvent &event) | ||||||
|     if (event.GetColumn() != 0) |     if (event.GetColumn() != 0) | ||||||
|         return; |         return; | ||||||
| 
 | 
 | ||||||
|     const auto renderer = dynamic_cast<PrusaBitmapTextRenderer*>(GetColumn(0)->GetRenderer()); |     const auto renderer = dynamic_cast<BitmapTextRenderer*>(GetColumn(0)->GetRenderer()); | ||||||
| 
 | 
 | ||||||
|     if (renderer->WasCanceled()) |     if (renderer->WasCanceled()) | ||||||
|         show_error(this, _(L("The supplied name is not valid;")) + "\n" + |         show_error(this, _(L("The supplied name is not valid;")) + "\n" + | ||||||
|  |  | ||||||
|  | @ -13,8 +13,8 @@ | ||||||
| 
 | 
 | ||||||
| class wxBoxSizer; | class wxBoxSizer; | ||||||
| class wxMenuItem; | class wxMenuItem; | ||||||
| class PrusaObjectDataViewModel; | class ObjectDataViewModel; | ||||||
| class PrusaMenu; | class MenuWithSeparators; | ||||||
| 
 | 
 | ||||||
| namespace Slic3r { | namespace Slic3r { | ||||||
| class ConfigOptionsGroup; | class ConfigOptionsGroup; | ||||||
|  | @ -108,24 +108,24 @@ class ObjectList : public wxDataViewCtrl | ||||||
|     wxBoxSizer          *m_sizer {nullptr}; |     wxBoxSizer          *m_sizer {nullptr}; | ||||||
|     wxWindow            *m_parent {nullptr}; |     wxWindow            *m_parent {nullptr}; | ||||||
| 
 | 
 | ||||||
|     /*wxBitmap*/PrusaBitmap	m_bmp_modifiermesh; |     ScalableBitmap	    m_bmp_modifiermesh; | ||||||
|     /*wxBitmap*/PrusaBitmap	m_bmp_solidmesh; |     ScalableBitmap	    m_bmp_solidmesh; | ||||||
|     /*wxBitmap*/PrusaBitmap	m_bmp_support_enforcer; |     ScalableBitmap	    m_bmp_support_enforcer; | ||||||
|     /*wxBitmap*/PrusaBitmap	m_bmp_support_blocker; |     ScalableBitmap	    m_bmp_support_blocker; | ||||||
|     /*wxBitmap*/PrusaBitmap	m_bmp_manifold_warning; |     ScalableBitmap	    m_bmp_manifold_warning; | ||||||
|     /*wxBitmap*/PrusaBitmap	m_bmp_cog; |     ScalableBitmap	    m_bmp_cog; | ||||||
|     /*wxBitmap*/PrusaBitmap	m_bmp_split; |     ScalableBitmap	    m_bmp_split; | ||||||
| 
 | 
 | ||||||
|     PrusaMenu   m_menu_object; |     MenuWithSeparators  m_menu_object; | ||||||
|     PrusaMenu   m_menu_part; |     MenuWithSeparators  m_menu_part; | ||||||
|     PrusaMenu   m_menu_sla_object; |     MenuWithSeparators  m_menu_sla_object; | ||||||
|     PrusaMenu   m_menu_instance; |     MenuWithSeparators  m_menu_instance; | ||||||
|     wxMenuItem* m_menu_item_split { nullptr }; |     wxMenuItem* m_menu_item_split { nullptr }; | ||||||
|     wxMenuItem* m_menu_item_split_part { nullptr }; |     wxMenuItem* m_menu_item_split_part { nullptr }; | ||||||
|     wxMenuItem* m_menu_item_settings { nullptr }; |     wxMenuItem* m_menu_item_settings { nullptr }; | ||||||
|     wxMenuItem* m_menu_item_split_instances { nullptr }; |     wxMenuItem* m_menu_item_split_instances { nullptr }; | ||||||
| 
 | 
 | ||||||
|     std::vector<wxBitmap* /*const wxBitmap&*/> m_bmp_vector; |     std::vector<wxBitmap*> m_bmp_vector; | ||||||
| 
 | 
 | ||||||
|     int			m_selected_object_id = -1; |     int			m_selected_object_id = -1; | ||||||
|     bool		m_prevent_list_events = false;		// We use this flag to avoid circular event handling Select() 
 |     bool		m_prevent_list_events = false;		// We use this flag to avoid circular event handling Select() 
 | ||||||
|  | @ -139,9 +139,6 @@ class ObjectList : public wxDataViewCtrl | ||||||
|                                                            // update_settings_items - updating canvas selection is undesirable,
 |                                                            // update_settings_items - updating canvas selection is undesirable,
 | ||||||
|                                                            // because it would turn off the gizmos (mainly a problem for the SLA gizmo)
 |                                                            // because it would turn off the gizmos (mainly a problem for the SLA gizmo)
 | ||||||
| 
 | 
 | ||||||
| //     bool        m_parts_changed = false;
 |  | ||||||
| //     bool        m_part_settings_changed = false;
 |  | ||||||
| 
 |  | ||||||
|     int         m_selected_row = 0; |     int         m_selected_row = 0; | ||||||
|     wxDataViewItem m_last_selected_item {nullptr}; |     wxDataViewItem m_last_selected_item {nullptr}; | ||||||
| 
 | 
 | ||||||
|  | @ -157,7 +154,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     std::map<std::string, wxBitmap> CATEGORY_ICON; |     std::map<std::string, wxBitmap> CATEGORY_ICON; | ||||||
| 
 | 
 | ||||||
|     PrusaObjectDataViewModel	*m_objects_model{ nullptr }; |     ObjectDataViewModel	*m_objects_model{ nullptr }; | ||||||
|     DynamicPrintConfig          *m_config {nullptr}; |     DynamicPrintConfig          *m_config {nullptr}; | ||||||
| 
 | 
 | ||||||
|     std::vector<ModelObject*>   *m_objects{ nullptr }; |     std::vector<ModelObject*>   *m_objects{ nullptr }; | ||||||
|  | @ -289,7 +286,7 @@ public: | ||||||
|     void paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& volumes); |     void paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& volumes); | ||||||
|     void paste_objects_into_list(const std::vector<size_t>& object_idxs); |     void paste_objects_into_list(const std::vector<size_t>& object_idxs); | ||||||
| 
 | 
 | ||||||
|     void rescale(); |     void msw_rescale(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     void OnChar(wxKeyEvent& event); |     void OnChar(wxKeyEvent& event); | ||||||
|  |  | ||||||
|  | @ -78,7 +78,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : | ||||||
|         // Add "uniform scaling" button in front of "Scale" option 
 |         // Add "uniform scaling" button in front of "Scale" option 
 | ||||||
|         if (option_name == "Scale") { |         if (option_name == "Scale") { | ||||||
|             line.near_label_widget = [this](wxWindow* parent) { |             line.near_label_widget = [this](wxWindow* parent) { | ||||||
|                 auto btn = new PrusaLockButton(parent, wxID_ANY); |                 auto btn = new LockButton(parent, wxID_ANY); | ||||||
|                 btn->Bind(wxEVT_BUTTON, [btn, this](wxCommandEvent &event){ |                 btn->Bind(wxEVT_BUTTON, [btn, this](wxCommandEvent &event){ | ||||||
|                     event.Skip(); |                     event.Skip(); | ||||||
|                     wxTheApp->CallAfter([btn, this]() { set_uniform_scaling(btn->IsLocked()); }); |                     wxTheApp->CallAfter([btn, this]() { set_uniform_scaling(btn->IsLocked()); }); | ||||||
|  | @ -119,10 +119,10 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) : | ||||||
| 
 | 
 | ||||||
|     // call back for a rescale of button "Set uniform scale"
 |     // call back for a rescale of button "Set uniform scale"
 | ||||||
|     m_og->rescale_near_label_widget = [this](wxWindow* win) { |     m_og->rescale_near_label_widget = [this](wxWindow* win) { | ||||||
|         auto *ctrl = dynamic_cast<PrusaLockButton*>(win); |         auto *ctrl = dynamic_cast<LockButton*>(win); | ||||||
|         if (ctrl == nullptr) |         if (ctrl == nullptr) | ||||||
|             return; |             return; | ||||||
|         ctrl->rescale(); |         ctrl->msw_rescale(); | ||||||
|     }; |     }; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
| #include "GLCanvas3D.hpp" | #include "GLCanvas3D.hpp" | ||||||
| 
 | 
 | ||||||
| class wxStaticText; | class wxStaticText; | ||||||
| class PrusaLockButton; | class LockButton; | ||||||
| 
 | 
 | ||||||
| namespace Slic3r { | namespace Slic3r { | ||||||
| namespace GUI { | namespace GUI { | ||||||
|  | @ -76,7 +76,7 @@ class ObjectManipulation : public OG_Settings | ||||||
|     Vec3d           m_new_size; |     Vec3d           m_new_size; | ||||||
|     bool            m_new_enabled; |     bool            m_new_enabled; | ||||||
|     bool            m_uniform_scale {true}; |     bool            m_uniform_scale {true}; | ||||||
|     PrusaLockButton* m_lock_bnt{ nullptr }; |     LockButton*     m_lock_bnt{ nullptr }; | ||||||
| 
 | 
 | ||||||
| #ifndef __APPLE__ | #ifndef __APPLE__ | ||||||
|     // Currently focused option name (empty if none)
 |     // Currently focused option name (empty if none)
 | ||||||
|  |  | ||||||
|  | @ -60,7 +60,7 @@ ObjectSettings::ObjectSettings(wxWindow* parent) : | ||||||
|     m_settings_list_sizer = new wxBoxSizer(wxVERTICAL); |     m_settings_list_sizer = new wxBoxSizer(wxVERTICAL); | ||||||
|     m_og->sizer->Add(m_settings_list_sizer, 1, wxEXPAND | wxLEFT, 5); |     m_og->sizer->Add(m_settings_list_sizer, 1, wxEXPAND | wxLEFT, 5); | ||||||
| 
 | 
 | ||||||
|     m_bmp_delete = PrusaBitmap(parent, "cross"); |     m_bmp_delete = ScalableBitmap(parent, "cross"); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ObjectSettings::update_settings_list() | void ObjectSettings::update_settings_list() | ||||||
|  | @ -79,12 +79,8 @@ void ObjectSettings::update_settings_list() | ||||||
| 		{ | 		{ | ||||||
| 			auto opt_key = (line.get_options())[0].opt_id;  //we assume that we have one option per line
 | 			auto opt_key = (line.get_options())[0].opt_id;  //we assume that we have one option per line
 | ||||||
| 
 | 
 | ||||||
| // 			auto btn = new wxBitmapButton(parent, wxID_ANY, create_scaled_bitmap(m_parent, "cross"/*"colorchange_delete_on.png"*/),
 | 			auto btn = new ScalableButton(parent, wxID_ANY, m_bmp_delete); | ||||||
| // 				wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
 | 
 | ||||||
| 			auto btn = new PrusaButton(parent, wxID_ANY, m_bmp_delete); |  | ||||||
| //#ifdef __WXMSW__
 |  | ||||||
| //            btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
 |  | ||||||
| //#endif // __WXMSW__
 |  | ||||||
| 			btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) { | 			btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) { | ||||||
| 				config->erase(opt_key); | 				config->erase(opt_key); | ||||||
|                 wxGetApp().obj_list()->changed_object(); |                 wxGetApp().obj_list()->changed_object(); | ||||||
|  | @ -145,7 +141,7 @@ void ObjectSettings::update_settings_list() | ||||||
| 
 | 
 | ||||||
|                 // call back for rescaling of the extracolumn control
 |                 // call back for rescaling of the extracolumn control
 | ||||||
|                 optgroup->rescale_extra_column_item = [this](wxWindow* win) { |                 optgroup->rescale_extra_column_item = [this](wxWindow* win) { | ||||||
|                     auto *ctrl = dynamic_cast<PrusaButton*>(win); |                     auto *ctrl = dynamic_cast<ScalableButton*>(win); | ||||||
|                     if (ctrl == nullptr) |                     if (ctrl == nullptr) | ||||||
|                         return; |                         return; | ||||||
|                     ctrl->SetBitmap_(m_bmp_delete); |                     ctrl->SetBitmap_(m_bmp_delete); | ||||||
|  | @ -175,12 +171,12 @@ void ObjectSettings::UpdateAndShow(const bool show) | ||||||
|     OG_Settings::UpdateAndShow(show); |     OG_Settings::UpdateAndShow(show); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ObjectSettings::rescale() | void ObjectSettings::msw_rescale() | ||||||
| { | { | ||||||
|     m_bmp_delete.rescale(); |     m_bmp_delete.msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     for (auto group : m_og_settings) |     for (auto group : m_og_settings) | ||||||
|         group->rescale(); |         group->msw_rescale(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| } //namespace GUI
 | } //namespace GUI
 | ||||||
|  |  | ||||||
|  | @ -38,7 +38,7 @@ class ObjectSettings : public OG_Settings | ||||||
|     // option groups for settings
 |     // option groups for settings
 | ||||||
|     std::vector <std::shared_ptr<ConfigOptionsGroup>> m_og_settings; |     std::vector <std::shared_ptr<ConfigOptionsGroup>> m_og_settings; | ||||||
| 
 | 
 | ||||||
|     PrusaBitmap m_bmp_delete; |     ScalableBitmap m_bmp_delete; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     ObjectSettings(wxWindow* parent); |     ObjectSettings(wxWindow* parent); | ||||||
|  | @ -46,7 +46,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     void        update_settings_list(); |     void        update_settings_list(); | ||||||
|     void        UpdateAndShow(const bool show) override; |     void        UpdateAndShow(const bool show) override; | ||||||
|     void        rescale(); |     void        msw_rescale(); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| }} | }} | ||||||
|  |  | ||||||
|  | @ -396,13 +396,13 @@ void Preview::refresh_print() | ||||||
|     load_print(true); |     load_print(true); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Preview::rescale() | void Preview::msw_rescale() | ||||||
| { | { | ||||||
|     // rescale slider
 |     // rescale slider
 | ||||||
|     if (m_slider) m_slider->rescale(); |     if (m_slider) m_slider->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     // rescale warning legend on the canvas
 |     // rescale warning legend on the canvas
 | ||||||
|     get_canvas3d()->rescale(); |     get_canvas3d()->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     // rescale legend
 |     // rescale legend
 | ||||||
|     refresh_print(); |     refresh_print(); | ||||||
|  | @ -519,7 +519,7 @@ void Preview::on_checkbox_shells(wxCommandEvent& evt) | ||||||
| 
 | 
 | ||||||
| void Preview::create_double_slider() | void Preview::create_double_slider() | ||||||
| { | { | ||||||
|     m_slider = new PrusaDoubleSlider(this, wxID_ANY, 0, 0, 0, 100); |     m_slider = new DoubleSlider(this, wxID_ANY, 0, 0, 0, 100); | ||||||
|     m_double_slider_sizer->Add(m_slider, 0, wxEXPAND, 0); |     m_double_slider_sizer->Add(m_slider, 0, wxEXPAND, 0); | ||||||
| 
 | 
 | ||||||
|     // sizer, m_canvas_widget
 |     // sizer, m_canvas_widget
 | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ class wxStaticText; | ||||||
| class wxChoice; | class wxChoice; | ||||||
| class wxComboCtrl; | class wxComboCtrl; | ||||||
| class wxCheckBox; | class wxCheckBox; | ||||||
| class PrusaDoubleSlider; | class DoubleSlider; | ||||||
| 
 | 
 | ||||||
| namespace Slic3r { | namespace Slic3r { | ||||||
| 
 | 
 | ||||||
|  | @ -99,7 +99,7 @@ class Preview : public wxPanel | ||||||
|     bool m_loaded; |     bool m_loaded; | ||||||
|     bool m_enabled; |     bool m_enabled; | ||||||
| 
 | 
 | ||||||
|     PrusaDoubleSlider* m_slider {nullptr}; |     DoubleSlider* m_slider {nullptr}; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     Preview(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model, DynamicPrintConfig* config,  |     Preview(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model, DynamicPrintConfig* config,  | ||||||
|  | @ -120,7 +120,7 @@ public: | ||||||
|     void reload_print(bool keep_volumes = false); |     void reload_print(bool keep_volumes = false); | ||||||
|     void refresh_print(); |     void refresh_print(); | ||||||
| 
 | 
 | ||||||
|     void rescale(); |     void msw_rescale(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     bool init(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model); |     bool init(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model); | ||||||
|  |  | ||||||
|  | @ -15,21 +15,21 @@ KBShortcutsDialog::KBShortcutsDialog() | ||||||
| { | { | ||||||
| 	SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); | 	SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); | ||||||
| 
 | 
 | ||||||
| 	main_sizer = new wxBoxSizer(wxVERTICAL); | 	auto main_sizer = new wxBoxSizer(wxVERTICAL); | ||||||
| 
 | 
 | ||||||
|     // logo
 |     // logo
 | ||||||
|     m_logo_bmp = PrusaBitmap(this, "Slic3r_32px.png", 32); |     m_logo_bmp = ScalableBitmap(this, "Slic3r_32px.png", 32); | ||||||
| 
 | 
 | ||||||
|     // fonts
 |     // fonts
 | ||||||
|     const wxFont& font = wxGetApp().normal_font(); |     const wxFont& font = wxGetApp().normal_font(); | ||||||
|     const wxFont& bold_font = wxGetApp().bold_font();    |     const wxFont& bold_font = wxGetApp().bold_font();    | ||||||
|     SetFont(font); |     SetFont(font); | ||||||
| 
 | 
 | ||||||
|     wxFont head_font = bold_font;// wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Bold();
 |     wxFont head_font = bold_font; | ||||||
| #ifdef __WXOSX__ | #ifdef __WXOSX__ | ||||||
|     head_font.SetPointSize(14); |     head_font.SetPointSize(14); | ||||||
| #else | #else | ||||||
|     head_font.SetPointSize(/*12*/bold_font.GetPointSize() + 2); |     head_font.SetPointSize(bold_font.GetPointSize() + 2); | ||||||
| #endif // __WXOSX__
 | #endif // __WXOSX__
 | ||||||
| 
 | 
 | ||||||
|     fill_shortcuts(); |     fill_shortcuts(); | ||||||
|  | @ -191,7 +191,7 @@ void KBShortcutsDialog::fill_shortcuts() | ||||||
| 
 | 
 | ||||||
| void KBShortcutsDialog::on_dpi_changed(const wxRect &suggested_rect) | void KBShortcutsDialog::on_dpi_changed(const wxRect &suggested_rect) | ||||||
| { | { | ||||||
|     m_logo_bmp.rescale(); |     m_logo_bmp.msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     for (wxStaticBitmap* bmp : m_head_bitmaps) |     for (wxStaticBitmap* bmp : m_head_bitmaps) | ||||||
|         bmp->SetBitmap(m_logo_bmp.bmp()); |         bmp->SetBitmap(m_logo_bmp.bmp()); | ||||||
|  |  | ||||||
|  | @ -11,7 +11,7 @@ | ||||||
| namespace Slic3r {  | namespace Slic3r {  | ||||||
| namespace GUI { | namespace GUI { | ||||||
| 
 | 
 | ||||||
| class KBShortcutsDialog : public DPIDialog/*wxDialog*/ | class KBShortcutsDialog : public DPIDialog | ||||||
| { | { | ||||||
|     enum PLACED_SIZER_ID |     enum PLACED_SIZER_ID | ||||||
|     { |     { | ||||||
|  | @ -26,8 +26,7 @@ class KBShortcutsDialog : public DPIDialog/*wxDialog*/ | ||||||
|     wxString text_info {wxEmptyString}; |     wxString text_info {wxEmptyString}; | ||||||
| 
 | 
 | ||||||
|     ShortcutsVec    m_full_shortcuts; |     ShortcutsVec    m_full_shortcuts; | ||||||
|     wxSizer*        main_sizer; |     ScalableBitmap  m_logo_bmp; | ||||||
|     PrusaBitmap     m_logo_bmp; |  | ||||||
|     std::vector<wxStaticBitmap*>    m_head_bitmaps; |     std::vector<wxStaticBitmap*>    m_head_bitmaps; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|  |  | ||||||
|  | @ -270,11 +270,11 @@ void MainFrame::on_dpi_changed(const wxRect &suggested_rect) | ||||||
|     wxGetApp().preset_bundle->load_default_preset_bitmaps(this); |     wxGetApp().preset_bundle->load_default_preset_bitmaps(this); | ||||||
| 
 | 
 | ||||||
|     // update Plater
 |     // update Plater
 | ||||||
|     wxGetApp().plater()->rescale(); |     wxGetApp().plater()->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     // update Tabs
 |     // update Tabs
 | ||||||
|     for (auto tab : wxGetApp().tabs_list) |     for (auto tab : wxGetApp().tabs_list) | ||||||
|         tab->rescale(); |         tab->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     /* To correct window rendering (especially redraw of a status bar)
 |     /* To correct window rendering (especially redraw of a status bar)
 | ||||||
|      * we should imitate window resizing. |      * we should imitate window resizing. | ||||||
|  |  | ||||||
|  | @ -484,7 +484,7 @@ bool ConfigOptionsGroup::update_visibility(ConfigOptionMode mode) { | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ConfigOptionsGroup::rescale() | void ConfigOptionsGroup::msw_rescale() | ||||||
| { | { | ||||||
|     // update bitmaps for extra column items (like "mode markers" or buttons on settings panel)
 |     // update bitmaps for extra column items (like "mode markers" or buttons on settings panel)
 | ||||||
|     if (rescale_extra_column_item) |     if (rescale_extra_column_item) | ||||||
|  | @ -498,7 +498,7 @@ void ConfigOptionsGroup::rescale() | ||||||
| 
 | 
 | ||||||
|     // update undo buttons : rescale bitmaps
 |     // update undo buttons : rescale bitmaps
 | ||||||
|     for (const auto& field : m_fields) |     for (const auto& field : m_fields) | ||||||
|         field.second->rescale(); |         field.second->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     const int em = em_unit(parent()); |     const int em = em_unit(parent()); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -266,7 +266,7 @@ public: | ||||||
|     void        Hide(); |     void        Hide(); | ||||||
|     void        Show(const bool show); |     void        Show(const bool show); | ||||||
|     bool        update_visibility(ConfigOptionMode mode); |     bool        update_visibility(ConfigOptionMode mode); | ||||||
|     void        rescale(); |     void        msw_rescale(); | ||||||
| 	boost::any	config_value(const std::string& opt_key, int opt_index, bool deserialize); | 	boost::any	config_value(const std::string& opt_key, int opt_index, bool deserialize); | ||||||
| 	// return option value from config 
 | 	// return option value from config 
 | ||||||
| 	boost::any	get_config_value(const DynamicPrintConfig& config, const std::string& opt_key, int opt_index = -1); | 	boost::any	get_config_value(const DynamicPrintConfig& config, const std::string& opt_key, int opt_index = -1); | ||||||
|  |  | ||||||
|  | @ -111,7 +111,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     bool        showing_manifold_warning_icon; |     bool        showing_manifold_warning_icon; | ||||||
|     void        show_sizer(bool show); |     void        show_sizer(bool show); | ||||||
|     void        rescale(); |     void        msw_rescale(); | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| ObjectInfo::ObjectInfo(wxWindow *parent) : | ObjectInfo::ObjectInfo(wxWindow *parent) : | ||||||
|  | @ -161,7 +161,7 @@ void ObjectInfo::show_sizer(bool show) | ||||||
|         manifold_warning_icon->Show(showing_manifold_warning_icon && show); |         manifold_warning_icon->Show(showing_manifold_warning_icon && show); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void ObjectInfo::rescale() | void ObjectInfo::msw_rescale() | ||||||
| { | { | ||||||
|     manifold_warning_icon->SetBitmap(create_scaled_bitmap(nullptr, "exclamation")); |     manifold_warning_icon->SetBitmap(create_scaled_bitmap(nullptr, "exclamation")); | ||||||
| } | } | ||||||
|  | @ -288,12 +288,7 @@ wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 * | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| //     edit_btn = new wxButton(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
 |     edit_btn = new ScalableButton(parent, wxID_ANY, "cog"); | ||||||
| // #ifdef __WINDOWS__
 |  | ||||||
| //     edit_btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
 |  | ||||||
| // #endif
 |  | ||||||
| //     edit_btn->SetBitmap(create_scaled_bitmap(this, "cog"));
 |  | ||||||
|     edit_btn = new PrusaButton(parent, wxID_ANY, "cog"); |  | ||||||
|     edit_btn->SetToolTip(_(L("Click to edit preset"))); |     edit_btn->SetToolTip(_(L("Click to edit preset"))); | ||||||
| 
 | 
 | ||||||
|     edit_btn->Bind(wxEVT_BUTTON, ([preset_type, this](wxCommandEvent) |     edit_btn->Bind(wxEVT_BUTTON, ([preset_type, this](wxCommandEvent) | ||||||
|  | @ -339,10 +334,10 @@ void PresetComboBox::check_selection() | ||||||
|     this->last_selected = GetSelection(); |     this->last_selected = GetSelection(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void PresetComboBox::rescale() | void PresetComboBox::msw_rescale() | ||||||
| { | { | ||||||
|     m_em_unit = wxGetApp().em_unit(); |     m_em_unit = wxGetApp().em_unit(); | ||||||
|     edit_btn->rescale(); |     edit_btn->msw_rescale(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // Frequently changed parameters
 | // Frequently changed parameters
 | ||||||
|  | @ -580,7 +575,7 @@ struct Sidebar::priv | ||||||
|     wxScrolledWindow *scrolled; |     wxScrolledWindow *scrolled; | ||||||
|     wxPanel* presets_panel; // Used for MSW better layouts
 |     wxPanel* presets_panel; // Used for MSW better layouts
 | ||||||
| 
 | 
 | ||||||
|     PrusaModeSizer  *mode_sizer; |     ModeSizer  *mode_sizer; | ||||||
|     wxFlexGridSizer *sizer_presets; |     wxFlexGridSizer *sizer_presets; | ||||||
|     PresetComboBox *combo_print; |     PresetComboBox *combo_print; | ||||||
|     std::vector<PresetComboBox*> combos_filament; |     std::vector<PresetComboBox*> combos_filament; | ||||||
|  | @ -639,7 +634,7 @@ Sidebar::Sidebar(Plater *parent) | ||||||
|     p->scrolled->SetSizer(scrolled_sizer); |     p->scrolled->SetSizer(scrolled_sizer); | ||||||
| 
 | 
 | ||||||
|     // Sizer with buttons for mode changing
 |     // Sizer with buttons for mode changing
 | ||||||
|     p->mode_sizer = new PrusaModeSizer(p->scrolled, 2 * wxGetApp().em_unit()); |     p->mode_sizer = new ModeSizer(p->scrolled, 2 * wxGetApp().em_unit()); | ||||||
| 
 | 
 | ||||||
|     // The preset chooser
 |     // The preset chooser
 | ||||||
|     p->sizer_presets = new wxFlexGridSizer(10, 1, 1, 2); |     p->sizer_presets = new wxFlexGridSizer(10, 1, 1, 2); | ||||||
|  | @ -854,23 +849,6 @@ void Sidebar::update_presets(Preset::Type preset_type) | ||||||
| 
 | 
 | ||||||
| 	case Preset::TYPE_PRINTER: | 	case Preset::TYPE_PRINTER: | ||||||
| 	{ | 	{ | ||||||
| //         wxWindowUpdateLocker noUpdates_scrolled(p->scrolled);
 |  | ||||||
| 
 |  | ||||||
| // 		// Update the print choosers to only contain the compatible presets, update the dirty flags.
 |  | ||||||
| //         if (print_tech == ptFFF)
 |  | ||||||
| // 			preset_bundle.prints.update_platter_ui(p->combo_print);
 |  | ||||||
| //         else {
 |  | ||||||
| //             preset_bundle.sla_prints.update_platter_ui(p->combo_sla_print);
 |  | ||||||
| //             preset_bundle.sla_materials.update_platter_ui(p->combo_sla_material);
 |  | ||||||
| //         }
 |  | ||||||
| // 		// Update the printer choosers, update the dirty flags.
 |  | ||||||
| // 		preset_bundle.printers.update_platter_ui(p->combo_printer);
 |  | ||||||
| // 		// Update the filament choosers to only contain the compatible presets, update the color preview,
 |  | ||||||
| // 		// update the dirty flags.
 |  | ||||||
| //         if (print_tech == ptFFF) {
 |  | ||||||
| //             for (size_t i = 0; i < p->combos_filament.size(); ++ i)
 |  | ||||||
| //                 preset_bundle.update_platter_filament_ui(i, p->combos_filament[i], wxGetApp().em_unit());
 |  | ||||||
| // 		}
 |  | ||||||
|         update_all_preset_comboboxes(); |         update_all_preset_comboboxes(); | ||||||
| 		p->show_preset_comboboxes(); | 		p->show_preset_comboboxes(); | ||||||
| 		break; | 		break; | ||||||
|  | @ -896,33 +874,33 @@ void Sidebar::update_reslice_btn_tooltip() const | ||||||
|     p->btn_reslice->SetToolTip(tooltip); |     p->btn_reslice->SetToolTip(tooltip); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Sidebar::rescale()  | void Sidebar::msw_rescale()  | ||||||
| { | { | ||||||
|     SetMinSize(wxSize(40 * wxGetApp().em_unit(), -1)); |     SetMinSize(wxSize(40 * wxGetApp().em_unit(), -1)); | ||||||
| 
 | 
 | ||||||
|     p->mode_sizer->rescale(); |     p->mode_sizer->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     // Rescale preset comboboxes in respect to the current  em_unit ...
 |     // Rescale preset comboboxes in respect to the current  em_unit ...
 | ||||||
|     for (PresetComboBox* combo : std::vector<PresetComboBox*> { p->combo_print, |     for (PresetComboBox* combo : std::vector<PresetComboBox*> { p->combo_print, | ||||||
|                                                                 p->combo_sla_print, |                                                                 p->combo_sla_print, | ||||||
|                                                                 p->combo_sla_material, |                                                                 p->combo_sla_material, | ||||||
|                                                                 p->combo_printer } ) |                                                                 p->combo_printer } ) | ||||||
|         combo->rescale(); |         combo->msw_rescale(); | ||||||
|     for (PresetComboBox* combo : p->combos_filament) |     for (PresetComboBox* combo : p->combos_filament) | ||||||
|         combo->rescale(); |         combo->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     // ... then refill them and set min size to correct layout of the sidebar
 |     // ... then refill them and set min size to correct layout of the sidebar
 | ||||||
|     update_all_preset_comboboxes(); |     update_all_preset_comboboxes(); | ||||||
| 
 | 
 | ||||||
|     p->frequently_changed_parameters->get_og(true)->rescale(); |     p->frequently_changed_parameters->get_og(true)->msw_rescale(); | ||||||
|     p->frequently_changed_parameters->get_og(false)->rescale(); |     p->frequently_changed_parameters->get_og(false)->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     p->object_list->rescale(); |     p->object_list->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     p->object_manipulation->get_og()->rescale(); |     p->object_manipulation->get_og()->msw_rescale(); | ||||||
|     p->object_settings->rescale(); |     p->object_settings->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     p->object_info->rescale(); |     p->object_info->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     p->scrolled->Layout(); |     p->scrolled->Layout(); | ||||||
| } | } | ||||||
|  | @ -1198,11 +1176,11 @@ struct Plater::priv | ||||||
|     MainFrame *main_frame; |     MainFrame *main_frame; | ||||||
| 
 | 
 | ||||||
|     // Object popup menu
 |     // Object popup menu
 | ||||||
|     PrusaMenu object_menu; |     MenuWithSeparators object_menu; | ||||||
|     // Part popup menu
 |     // Part popup menu
 | ||||||
|     PrusaMenu part_menu; |     MenuWithSeparators part_menu; | ||||||
|     // SLA-Object popup menu
 |     // SLA-Object popup menu
 | ||||||
|     PrusaMenu sla_object_menu; |     MenuWithSeparators sla_object_menu; | ||||||
| 
 | 
 | ||||||
|     // Removed/Prepended Items according to the view mode
 |     // Removed/Prepended Items according to the view mode
 | ||||||
|     std::vector<wxMenuItem*> items_increase; |     std::vector<wxMenuItem*> items_increase; | ||||||
|  | @ -3850,13 +3828,13 @@ bool Plater::can_paste_from_clipboard() const | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Plater::rescale() | void Plater::msw_rescale() | ||||||
| { | { | ||||||
|     p->preview->rescale(); |     p->preview->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     p->view3D->get_canvas3d()->rescale(); |     p->view3D->get_canvas3d()->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     p->sidebar->rescale(); |     p->sidebar->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     Layout(); |     Layout(); | ||||||
|     GetParent()->Layout(); |     GetParent()->Layout(); | ||||||
|  |  | ||||||
|  | @ -14,7 +14,7 @@ | ||||||
| #include "GLTexture.hpp" | #include "GLTexture.hpp" | ||||||
| 
 | 
 | ||||||
| class wxButton; | class wxButton; | ||||||
| class PrusaButton; | class ScalableButton; | ||||||
| class wxBoxSizer; | class wxBoxSizer; | ||||||
| class wxGLCanvas; | class wxGLCanvas; | ||||||
| class wxScrolledWindow; | class wxScrolledWindow; | ||||||
|  | @ -47,7 +47,7 @@ public: | ||||||
|     PresetComboBox(wxWindow *parent, Preset::Type preset_type); |     PresetComboBox(wxWindow *parent, Preset::Type preset_type); | ||||||
|     ~PresetComboBox(); |     ~PresetComboBox(); | ||||||
| 
 | 
 | ||||||
|     /*wxButton*/PrusaButton* edit_btn { nullptr }; |     ScalableButton* edit_btn { nullptr }; | ||||||
| 
 | 
 | ||||||
| 	enum LabelItemType { | 	enum LabelItemType { | ||||||
| 		LABEL_ITEM_MARKER = 0x4d, | 		LABEL_ITEM_MARKER = 0x4d, | ||||||
|  | @ -60,7 +60,7 @@ public: | ||||||
|     int  em_unit() const                        { return m_em_unit; } |     int  em_unit() const                        { return m_em_unit; } | ||||||
|     void check_selection(); |     void check_selection(); | ||||||
| 
 | 
 | ||||||
|     void rescale(); |     void msw_rescale(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     typedef std::size_t Marker; |     typedef std::size_t Marker; | ||||||
|  | @ -88,7 +88,7 @@ public: | ||||||
|     void update_presets(Slic3r::Preset::Type preset_type); |     void update_presets(Slic3r::Preset::Type preset_type); | ||||||
|     void update_mode_sizer() const; |     void update_mode_sizer() const; | ||||||
|     void update_reslice_btn_tooltip() const; |     void update_reslice_btn_tooltip() const; | ||||||
|     void rescale(); |     void msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     ObjectManipulation*     obj_manipul(); |     ObjectManipulation*     obj_manipul(); | ||||||
|     ObjectList*             obj_list(); |     ObjectList*             obj_list(); | ||||||
|  | @ -206,7 +206,7 @@ public: | ||||||
|     bool can_copy() const; |     bool can_copy() const; | ||||||
|     bool can_paste() const; |     bool can_paste() const; | ||||||
| 
 | 
 | ||||||
|     void rescale(); |     void msw_rescale(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     struct priv; |     struct priv; | ||||||
|  |  | ||||||
|  | @ -144,7 +144,7 @@ void PreferencesDialog::accept() | ||||||
| 
 | 
 | ||||||
| void PreferencesDialog::on_dpi_changed(const wxRect &suggested_rect) | void PreferencesDialog::on_dpi_changed(const wxRect &suggested_rect) | ||||||
| { | { | ||||||
|     m_optgroup->rescale(); |     m_optgroup->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     const int& em = em_unit(); |     const int& em = em_unit(); | ||||||
|     const wxSize& size = wxSize(50 * em, 29 * em); |     const wxSize& size = wxSize(50 * em, 29 * em); | ||||||
|  |  | ||||||
|  | @ -54,8 +54,7 @@ SysInfoDialog::SysInfoDialog() | ||||||
| 	main_sizer->Add(hsizer, 1, wxEXPAND | wxALL, 10); | 	main_sizer->Add(hsizer, 1, wxEXPAND | wxALL, 10); | ||||||
| 
 | 
 | ||||||
|     // logo
 |     // logo
 | ||||||
|     m_logo_bmp = PrusaBitmap(this, "Slic3r_192px.png", 192); |     m_logo_bmp = ScalableBitmap(this, "Slic3r_192px.png", 192); | ||||||
| //     auto *logo = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap(this, "Slic3r_192px.png", 192));
 |  | ||||||
|     m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp()); |     m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp()); | ||||||
| 	hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL); | 	hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL); | ||||||
|      |      | ||||||
|  | @ -65,8 +64,7 @@ SysInfoDialog::SysInfoDialog() | ||||||
|     // title
 |     // title
 | ||||||
|     { |     { | ||||||
|         wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); |         wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize); | ||||||
|         wxFont title_font = wxGetApp().bold_font();//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
 |         wxFont title_font = wxGetApp().bold_font(); | ||||||
| //         title_font.SetWeight(wxFONTWEIGHT_BOLD);
 |  | ||||||
|         title_font.SetFamily(wxFONTFAMILY_ROMAN); |         title_font.SetFamily(wxFONTFAMILY_ROMAN); | ||||||
|         title_font.SetPointSize(22); |         title_font.SetPointSize(22); | ||||||
|         title->SetFont(title_font); |         title->SetFont(title_font); | ||||||
|  | @ -74,7 +72,7 @@ SysInfoDialog::SysInfoDialog() | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // main_info_text
 |     // main_info_text
 | ||||||
|     wxFont font = wxGetApp().normal_font();//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
 |     wxFont font = wxGetApp().normal_font(); | ||||||
|     const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); |     const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT); | ||||||
|     auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue()); |     auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue()); | ||||||
|     auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()); |     auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue()); | ||||||
|  | @ -136,7 +134,7 @@ SysInfoDialog::SysInfoDialog() | ||||||
| 
 | 
 | ||||||
| void SysInfoDialog::on_dpi_changed(const wxRect &suggested_rect) | void SysInfoDialog::on_dpi_changed(const wxRect &suggested_rect) | ||||||
| { | { | ||||||
|     m_logo_bmp.rescale(); |     m_logo_bmp.msw_rescale(); | ||||||
|     m_logo->SetBitmap(m_logo_bmp.bmp()); |     m_logo->SetBitmap(m_logo_bmp.bmp()); | ||||||
| 
 | 
 | ||||||
|     wxFont font = GetFont(); |     wxFont font = GetFont(); | ||||||
|  |  | ||||||
|  | @ -12,8 +12,7 @@ namespace GUI { | ||||||
| 
 | 
 | ||||||
| class SysInfoDialog : public DPIDialog | class SysInfoDialog : public DPIDialog | ||||||
| { | { | ||||||
|     wxString text_info {wxEmptyString}; |     ScalableBitmap  m_logo_bmp; | ||||||
|     PrusaBitmap     m_logo_bmp; |  | ||||||
|     wxStaticBitmap* m_logo; |     wxStaticBitmap* m_logo; | ||||||
|     wxHtmlWindow*   m_opengl_info_html; |     wxHtmlWindow*   m_opengl_info_html; | ||||||
|     wxHtmlWindow*   m_html; |     wxHtmlWindow*   m_html; | ||||||
|  |  | ||||||
|  | @ -117,61 +117,34 @@ void Tab::create_preset_tab() | ||||||
| 	//buttons
 | 	//buttons
 | ||||||
|     m_scaled_buttons.reserve(6); |     m_scaled_buttons.reserve(6); | ||||||
|     m_scaled_buttons.reserve(2); |     m_scaled_buttons.reserve(2); | ||||||
| // 	wxBitmap bmpMenu;
 |  | ||||||
| //     bmpMenu = create_scaled_bitmap(this, "save");
 |  | ||||||
| // 	m_btn_save_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
 |  | ||||||
| // 	if (wxMSW) m_btn_save_preset->SetBackgroundColour(color);
 |  | ||||||
| //     bmpMenu = create_scaled_bitmap(this, "cross"/*"delete.png"*/);
 |  | ||||||
| // 	m_btn_delete_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
 |  | ||||||
| // 	if (wxMSW) m_btn_delete_preset->SetBackgroundColour(color);
 |  | ||||||
| 
 | 
 | ||||||
|     add_scaled_button(panel, &m_btn_save_preset, "save"); |     add_scaled_button(panel, &m_btn_save_preset, "save"); | ||||||
|     add_scaled_button(panel, &m_btn_delete_preset, "cross"); |     add_scaled_button(panel, &m_btn_delete_preset, "cross"); | ||||||
| 
 | 
 | ||||||
| 	m_show_incompatible_presets = false; | 	m_show_incompatible_presets = false; | ||||||
| // 	m_bmp_show_incompatible_presets = create_scaled_bitmap(this, "flag_red");
 |  | ||||||
| // 	m_bmp_hide_incompatible_presets = create_scaled_bitmap(this, "flag_green");
 |  | ||||||
| 	add_scaled_bitmap(this, m_bmp_show_incompatible_presets, "flag_red"); | 	add_scaled_bitmap(this, m_bmp_show_incompatible_presets, "flag_red"); | ||||||
| 	add_scaled_bitmap(this, m_bmp_hide_incompatible_presets, "flag_green"); | 	add_scaled_bitmap(this, m_bmp_hide_incompatible_presets, "flag_green"); | ||||||
| // 	m_btn_hide_incompatible_presets = new wxBitmapButton(panel, wxID_ANY, m_bmp_hide_incompatible_presets, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
 | 
 | ||||||
| // 	if (wxMSW) m_btn_hide_incompatible_presets->SetBackgroundColour(color);
 |  | ||||||
|     add_scaled_button(panel, &m_btn_hide_incompatible_presets, m_bmp_hide_incompatible_presets.name()); |     add_scaled_button(panel, &m_btn_hide_incompatible_presets, m_bmp_hide_incompatible_presets.name()); | ||||||
| 
 | 
 | ||||||
| 	m_btn_save_preset->SetToolTip(_(L("Save current ")) + m_title); | 	m_btn_save_preset->SetToolTip(_(L("Save current ")) + m_title); | ||||||
| 	m_btn_delete_preset->SetToolTip(_(L("Delete this preset"))); | 	m_btn_delete_preset->SetToolTip(_(L("Delete this preset"))); | ||||||
| 	m_btn_delete_preset->Disable(); | 	m_btn_delete_preset->Disable(); | ||||||
| 
 | 
 | ||||||
| // 	m_undo_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
 |  | ||||||
| // 	m_undo_to_sys_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
 |  | ||||||
| //     m_question_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
 |  | ||||||
| 
 |  | ||||||
|     add_scaled_button(panel, &m_question_btn, "question"); |     add_scaled_button(panel, &m_question_btn, "question"); | ||||||
| 
 | 
 | ||||||
| // 	if (wxMSW) {
 |  | ||||||
| // 		m_undo_btn->SetBackgroundColour(color);
 |  | ||||||
| // 		m_undo_to_sys_btn->SetBackgroundColour(color);
 |  | ||||||
| // 		m_question_btn->SetBackgroundColour(color);
 |  | ||||||
| // 	}
 |  | ||||||
| 
 |  | ||||||
| 	m_question_btn->SetToolTip(_(L("Hover the cursor over buttons to find more information \n" | 	m_question_btn->SetToolTip(_(L("Hover the cursor over buttons to find more information \n" | ||||||
| 								   "or click this button."))); | 								   "or click this button."))); | ||||||
| 
 | 
 | ||||||
| 	// Determine the theme color of OS (dark or light)
 | 	// Determine the theme color of OS (dark or light)
 | ||||||
|     auto luma = wxGetApp().get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); |     auto luma = wxGetApp().get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); | ||||||
| 	// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
 | 	// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
 | ||||||
| // 	m_bmp_value_lock  	   = create_scaled_bitmap(this, luma >= 128 ? "lock_closed" : "lock_closed_white");
 |  | ||||||
| // 	m_bmp_value_unlock     = create_scaled_bitmap(this, "lock_open");
 |  | ||||||
| 	add_scaled_bitmap(this, m_bmp_value_lock  , luma >= 128 ? "lock_closed" : "lock_closed_white"); | 	add_scaled_bitmap(this, m_bmp_value_lock  , luma >= 128 ? "lock_closed" : "lock_closed_white"); | ||||||
| 	add_scaled_bitmap(this, m_bmp_value_unlock, "lock_open"); | 	add_scaled_bitmap(this, m_bmp_value_unlock, "lock_open"); | ||||||
| 	m_bmp_non_system = &m_bmp_white_bullet; | 	m_bmp_non_system = &m_bmp_white_bullet; | ||||||
| 	// Bitmaps to be shown on the "Undo user changes" button next to each input field.
 | 	// Bitmaps to be shown on the "Undo user changes" button next to each input field.
 | ||||||
| //	m_bmp_value_revert    = create_scaled_bitmap(this, "undo");
 |  | ||||||
| //	m_bmp_white_bullet    = create_scaled_bitmap(this, luma >= 128 ? "dot" : "dot_white"/*"bullet_white.png"*/);
 |  | ||||||
| //	m_bmp_question        = create_scaled_bitmap(this, "question");
 |  | ||||||
| // 	m_bmp_value_revert    = create_scaled_bitmap(this, "undo");
 |  | ||||||
| // 	m_bmp_white_bullet    = create_scaled_bitmap(this, "bullet_white.png");
 |  | ||||||
| 	add_scaled_bitmap(this, m_bmp_value_revert, "undo"); | 	add_scaled_bitmap(this, m_bmp_value_revert, "undo"); | ||||||
| 	add_scaled_bitmap(this, m_bmp_white_bullet, luma >= 128 ? "dot" : "dot_white"/*"bullet_white.png"*/); | 	add_scaled_bitmap(this, m_bmp_white_bullet, luma >= 128 ? "dot" : "dot_white"); | ||||||
| 
 | 
 | ||||||
| 	fill_icon_descriptions(); | 	fill_icon_descriptions(); | ||||||
| 	set_tooltips_text(); | 	set_tooltips_text(); | ||||||
|  | @ -179,11 +152,8 @@ void Tab::create_preset_tab() | ||||||
|     add_scaled_button(panel, &m_undo_btn,        m_bmp_white_bullet.name()); |     add_scaled_button(panel, &m_undo_btn,        m_bmp_white_bullet.name()); | ||||||
|     add_scaled_button(panel, &m_undo_to_sys_btn, m_bmp_white_bullet.name()); |     add_scaled_button(panel, &m_undo_to_sys_btn, m_bmp_white_bullet.name()); | ||||||
| 
 | 
 | ||||||
| // 	m_undo_btn->SetBitmap(m_bmp_white_bullet);
 |  | ||||||
| 	m_undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(); })); | 	m_undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(); })); | ||||||
| // 	m_undo_to_sys_btn->SetBitmap(m_bmp_white_bullet);
 |  | ||||||
| 	m_undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(true); })); | 	m_undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(true); })); | ||||||
| // 	m_question_btn->SetBitmap(m_bmp_question);
 |  | ||||||
| 	m_question_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) | 	m_question_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) | ||||||
| 	{ | 	{ | ||||||
| 		auto dlg = new ButtonsDescription(this, &m_icon_descriptions); | 		auto dlg = new ButtonsDescription(this, &m_icon_descriptions); | ||||||
|  | @ -203,7 +173,7 @@ void Tab::create_preset_tab() | ||||||
| 	m_default_text_clr		= wxGetApp().get_label_clr_default(); | 	m_default_text_clr		= wxGetApp().get_label_clr_default(); | ||||||
| 
 | 
 | ||||||
|     // Sizer with buttons for mode changing
 |     // Sizer with buttons for mode changing
 | ||||||
|     m_mode_sizer = new PrusaModeSizer(panel); |     m_mode_sizer = new ModeSizer(panel); | ||||||
| 
 | 
 | ||||||
|     const float scale_factor = wxGetApp().em_unit()*0.1;// GetContentScaleFactor();
 |     const float scale_factor = wxGetApp().em_unit()*0.1;// GetContentScaleFactor();
 | ||||||
| 	m_hsizer = new wxBoxSizer(wxHORIZONTAL); | 	m_hsizer = new wxBoxSizer(wxHORIZONTAL); | ||||||
|  | @ -281,9 +251,9 @@ void Tab::create_preset_tab() | ||||||
| 
 | 
 | ||||||
|     // Fill cache for mode bitmaps
 |     // Fill cache for mode bitmaps
 | ||||||
|     m_mode_bitmap_cache.reserve(3); |     m_mode_bitmap_cache.reserve(3); | ||||||
|     m_mode_bitmap_cache.push_back(PrusaBitmap(this, "mode_simple_.png")); |     m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_simple_.png")); | ||||||
|     m_mode_bitmap_cache.push_back(PrusaBitmap(this, "mode_middle_.png")); |     m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_middle_.png")); | ||||||
|     m_mode_bitmap_cache.push_back(PrusaBitmap(this, "mode_expert_.png")); |     m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_expert_.png")); | ||||||
| 
 | 
 | ||||||
| 	// Initialize the DynamicPrintConfig by default keys/values.
 | 	// Initialize the DynamicPrintConfig by default keys/values.
 | ||||||
| 	build(); | 	build(); | ||||||
|  | @ -291,17 +261,21 @@ void Tab::create_preset_tab() | ||||||
|     m_complited = true; |     m_complited = true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Tab::add_scaled_button(wxWindow* parent, PrusaButton** btn, const std::string& icon_name,  | void Tab::add_scaled_button(wxWindow* parent,  | ||||||
|  |                             ScalableButton** btn,  | ||||||
|  |                             const std::string& icon_name,  | ||||||
|                             const wxString& label/* = wxEmptyString*/,  |                             const wxString& label/* = wxEmptyString*/,  | ||||||
|                             long style /*= wxBU_EXACTFIT | wxNO_BORDER*/) |                             long style /*= wxBU_EXACTFIT | wxNO_BORDER*/) | ||||||
| { | { | ||||||
|     *btn = new PrusaButton(parent, wxID_ANY, icon_name, label, wxDefaultSize, wxDefaultPosition, style); |     *btn = new ScalableButton(parent, wxID_ANY, icon_name, label, wxDefaultSize, wxDefaultPosition, style); | ||||||
|     m_scaled_buttons.push_back(*btn); |     m_scaled_buttons.push_back(*btn); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Tab::add_scaled_bitmap(wxWindow* parent, PrusaBitmap& bmp, const std::string& icon_name) | void Tab::add_scaled_bitmap(wxWindow* parent,  | ||||||
|  |                             ScalableBitmap& bmp,  | ||||||
|  |                             const std::string& icon_name) | ||||||
| { | { | ||||||
|     bmp = PrusaBitmap(parent, icon_name); |     bmp = ScalableBitmap(parent, icon_name); | ||||||
|     m_scaled_bitmaps.push_back(&bmp); |     m_scaled_bitmaps.push_back(&bmp); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -321,8 +295,7 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str | ||||||
| 		icon_idx = (m_icon_index.find(icon) == m_icon_index.end()) ? -1 : m_icon_index.at(icon); | 		icon_idx = (m_icon_index.find(icon) == m_icon_index.end()) ? -1 : m_icon_index.at(icon); | ||||||
| 		if (icon_idx == -1) { | 		if (icon_idx == -1) { | ||||||
| 			// Add a new icon to the icon list.
 | 			// Add a new icon to the icon list.
 | ||||||
| //             m_icons->Add(create_scaled_bitmap(this, icon));
 |             m_scaled_icons_list.push_back(ScalableBitmap(this, icon)); | ||||||
|             m_scaled_icons_list.push_back(PrusaBitmap(this, icon)); |  | ||||||
|             m_icons->Add(m_scaled_icons_list.back().bmp()); |             m_icons->Add(m_scaled_icons_list.back().bmp()); | ||||||
|             icon_idx = ++m_icon_count; |             icon_idx = ++m_icon_count; | ||||||
| 			m_icon_index[icon] = icon_idx; | 			m_icon_index[icon] = icon_idx; | ||||||
|  | @ -442,8 +415,8 @@ void Tab::update_changed_ui() | ||||||
| 	{ | 	{ | ||||||
| 		bool is_nonsys_value = false; | 		bool is_nonsys_value = false; | ||||||
| 		bool is_modified_value = true; | 		bool is_modified_value = true; | ||||||
| 		const /*wxBitmap*/PrusaBitmap *sys_icon =	&m_bmp_value_lock; | 		const ScalableBitmap *sys_icon =	&m_bmp_value_lock; | ||||||
| 		const /*wxBitmap*/PrusaBitmap *icon =		&m_bmp_value_revert; | 		const ScalableBitmap *icon =		&m_bmp_value_revert; | ||||||
| 
 | 
 | ||||||
| 		const wxColour *color =		&m_sys_label_clr; | 		const wxColour *color =		&m_sys_label_clr; | ||||||
| 
 | 
 | ||||||
|  | @ -766,11 +739,11 @@ void Tab::update_visibility() | ||||||
|     update_changed_tree_ui(); |     update_changed_tree_ui(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Tab::rescale() | void Tab::msw_rescale() | ||||||
| { | { | ||||||
|     m_em_unit = wxGetApp().em_unit(); |     m_em_unit = wxGetApp().em_unit(); | ||||||
| 
 | 
 | ||||||
|     m_mode_sizer->rescale(); |     m_mode_sizer->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     m_presets_choice->SetSize(35 * m_em_unit, -1); |     m_presets_choice->SetSize(35 * m_em_unit, -1); | ||||||
|     m_treectrl->SetMinSize(wxSize(20 * m_em_unit, -1)); |     m_treectrl->SetMinSize(wxSize(20 * m_em_unit, -1)); | ||||||
|  | @ -779,25 +752,25 @@ void Tab::rescale() | ||||||
| 
 | 
 | ||||||
|     // rescale buttons and cached bitmaps
 |     // rescale buttons and cached bitmaps
 | ||||||
|     for (const auto btn : m_scaled_buttons) |     for (const auto btn : m_scaled_buttons) | ||||||
|         btn->rescale(); |         btn->msw_rescale(); | ||||||
|     for (const auto bmp : m_scaled_bitmaps) |     for (const auto bmp : m_scaled_bitmaps) | ||||||
|         bmp->rescale(); |         bmp->msw_rescale(); | ||||||
|     for (PrusaBitmap& bmp : m_mode_bitmap_cache) |     for (ScalableBitmap& bmp : m_mode_bitmap_cache) | ||||||
|         bmp.rescale(); |         bmp.msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     // rescale icons for tree_ctrl
 |     // rescale icons for tree_ctrl
 | ||||||
|     for (PrusaBitmap& bmp : m_scaled_icons_list) |     for (ScalableBitmap& bmp : m_scaled_icons_list) | ||||||
|         bmp.rescale(); |         bmp.msw_rescale(); | ||||||
|     // recreate and set new ImageList for tree_ctrl
 |     // recreate and set new ImageList for tree_ctrl
 | ||||||
|     m_icons->RemoveAll(); |     m_icons->RemoveAll(); | ||||||
|     m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight()); |     m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight()); | ||||||
|     for (PrusaBitmap& bmp : m_scaled_icons_list) |     for (ScalableBitmap& bmp : m_scaled_icons_list) | ||||||
|         m_icons->Add(bmp.bmp()); |         m_icons->Add(bmp.bmp()); | ||||||
|     m_treectrl->AssignImageList(m_icons); |     m_treectrl->AssignImageList(m_icons); | ||||||
| 
 | 
 | ||||||
|     // rescale options_groups
 |     // rescale options_groups
 | ||||||
|     for (auto page : m_pages) |     for (auto page : m_pages) | ||||||
|         page->rescale(); |         page->msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     Layout(); |     Layout(); | ||||||
| } | } | ||||||
|  | @ -1705,12 +1678,8 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	auto printhost_browse = [=](wxWindow* parent) { | 	auto printhost_browse = [=](wxWindow* parent) { | ||||||
| //        auto btn = m_printhost_browse_btn = new wxButton(parent, wxID_ANY, _(L(" Browse ")) + dots, 
 |  | ||||||
| //            wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
 |  | ||||||
| //		btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
 |  | ||||||
| //        btn->SetBitmap(create_scaled_bitmap(this, "browse"));
 |  | ||||||
|         add_scaled_button(parent, &m_printhost_browse_btn, "browse", _(L(" Browse ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); |         add_scaled_button(parent, &m_printhost_browse_btn, "browse", _(L(" Browse ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); | ||||||
|         PrusaButton* btn = m_printhost_browse_btn; |         ScalableButton* btn = m_printhost_browse_btn; | ||||||
| 		btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); | 		btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); | ||||||
| 
 | 
 | ||||||
| 		auto sizer = new wxBoxSizer(wxHORIZONTAL); | 		auto sizer = new wxBoxSizer(wxHORIZONTAL); | ||||||
|  | @ -1728,12 +1697,8 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup) | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	auto print_host_test = [this](wxWindow* parent) { | 	auto print_host_test = [this](wxWindow* parent) { | ||||||
| // 		auto btn = m_print_host_test_btn = new wxButton(parent, wxID_ANY, _(L("Test")), 
 |  | ||||||
| // 			wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
 |  | ||||||
| // 		btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
 |  | ||||||
| //         btn->SetBitmap(create_scaled_bitmap(this, "test"));
 |  | ||||||
|         add_scaled_button(parent, &m_print_host_test_btn, "test", _(L("Test")), wxBU_LEFT | wxBU_EXACTFIT); |         add_scaled_button(parent, &m_print_host_test_btn, "test", _(L("Test")), wxBU_LEFT | wxBU_EXACTFIT); | ||||||
|         PrusaButton* btn = m_print_host_test_btn; |         ScalableButton* btn = m_print_host_test_btn; | ||||||
|         btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); |         btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); | ||||||
| 		auto sizer = new wxBoxSizer(wxHORIZONTAL); | 		auto sizer = new wxBoxSizer(wxHORIZONTAL); | ||||||
| 		sizer->Add(btn); | 		sizer->Add(btn); | ||||||
|  | @ -1849,11 +1814,7 @@ void TabPrinter::build_fff() | ||||||
| 
 | 
 | ||||||
|         Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" };
 |         Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" };
 | ||||||
| 		line.widget = [this](wxWindow* parent) { | 		line.widget = [this](wxWindow* parent) { | ||||||
| //			auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
 |             ScalableButton* btn; | ||||||
| //            btn->SetFont(wxGetApp().small_font());
 |  | ||||||
| //            btn->SetBitmap(create_scaled_bitmap(this, "printer"));
 |  | ||||||
| 
 |  | ||||||
|             PrusaButton* btn; |  | ||||||
|             add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); |             add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); | ||||||
|             btn->SetFont(wxGetApp().normal_font()); |             btn->SetFont(wxGetApp().normal_font()); | ||||||
| 
 | 
 | ||||||
|  | @ -2054,11 +2015,7 @@ void TabPrinter::build_sla() | ||||||
| 
 | 
 | ||||||
|     Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" };
 |     Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" };
 | ||||||
|     line.widget = [this](wxWindow* parent) { |     line.widget = [this](wxWindow* parent) { | ||||||
| //        auto btn = new wxButton(parent, wxID_ANY, _(L(" Set ")) + dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
 |         ScalableButton* btn; | ||||||
| //        btn->SetFont(wxGetApp().small_font());
 |  | ||||||
| //        btn->SetBitmap(create_scaled_bitmap(this, "printer"));
 |  | ||||||
| 
 |  | ||||||
|         PrusaButton* btn; |  | ||||||
|         add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); |         add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); | ||||||
|         btn->SetFont(wxGetApp().normal_font()); |         btn->SetFont(wxGetApp().normal_font()); | ||||||
| 
 | 
 | ||||||
|  | @ -2157,7 +2114,6 @@ void TabPrinter::extruders_count_changed(size_t extruders_count) | ||||||
|      * of unregular pages of a Printer Settings |      * of unregular pages of a Printer Settings | ||||||
|      */ |      */ | ||||||
| 	build_unregular_pages(); | 	build_unregular_pages(); | ||||||
| // 	reload_config(); // #ys_FIXME_delete_after_testing : This function is called from build_extruder_pages() now
 |  | ||||||
| 
 | 
 | ||||||
|     if (is_count_changed) { |     if (is_count_changed) { | ||||||
|         on_value_change("extruders_count", extruders_count); |         on_value_change("extruders_count", extruders_count); | ||||||
|  | @ -3029,12 +2985,9 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep | ||||||
| { | { | ||||||
| 	deps.checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All"))); | 	deps.checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All"))); | ||||||
| 	deps.checkbox->SetFont(Slic3r::GUI::wxGetApp().normal_font()); | 	deps.checkbox->SetFont(Slic3r::GUI::wxGetApp().normal_font()); | ||||||
| //	deps.btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
 |  | ||||||
|     add_scaled_button(parent, &deps.btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); |     add_scaled_button(parent, &deps.btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT); | ||||||
|     deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); |     deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font()); | ||||||
| 
 | 
 | ||||||
| //    deps.btn->SetBitmap(create_scaled_bitmap(this, "printer"));
 |  | ||||||
| 
 |  | ||||||
| 	auto sizer = new wxBoxSizer(wxHORIZONTAL); | 	auto sizer = new wxBoxSizer(wxHORIZONTAL); | ||||||
| 	sizer->Add((deps.checkbox), 0, wxALIGN_CENTER_VERTICAL); | 	sizer->Add((deps.checkbox), 0, wxALIGN_CENTER_VERTICAL); | ||||||
| 	sizer->Add((deps.btn), 0, wxALIGN_CENTER_VERTICAL); | 	sizer->Add((deps.btn), 0, wxALIGN_CENTER_VERTICAL); | ||||||
|  | @ -3190,10 +3143,10 @@ void Page::update_visibility(ConfigOptionMode mode) | ||||||
|     m_show = ret_val; |     m_show = ret_val; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Page::rescale() | void Page::msw_rescale() | ||||||
| { | { | ||||||
|     for (auto group : m_optgroups) |     for (auto group : m_optgroups) | ||||||
|         group->rescale(); |         group->msw_rescale(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Field* Page::get_field(const t_config_option_key& opt_key, int opt_index /*= -1*/) const | Field* Page::get_field(const t_config_option_key& opt_key, int opt_index /*= -1*/) const | ||||||
|  | @ -3223,14 +3176,6 @@ ConfigOptionsGroupShp Page::new_optgroup(const wxString& title, int noncommon_la | ||||||
|     { |     { | ||||||
|         std::string bmp_name; |         std::string bmp_name; | ||||||
|         const std::vector<Option>& options = line.get_options(); |         const std::vector<Option>& options = line.get_options(); | ||||||
| //         if (options.size() == 0 || options[0].opt.gui_type == "legend")
 |  | ||||||
| //             bmp_name = "";
 |  | ||||||
| //         else {
 |  | ||||||
| //             auto mode = options[0].opt.mode;  //we assume that we have one option per line
 |  | ||||||
| //             bmp_name = mode == comExpert   ? "mode_expert_.png" :
 |  | ||||||
| //                        mode == comAdvanced ? "mode_middle_.png" : "mode_simple_.png";
 |  | ||||||
| //         }                               
 |  | ||||||
| //         auto bmp = new wxStaticBitmap(parent, wxID_ANY, bmp_name.empty() ? wxNullBitmap : create_scaled_bitmap(parent, bmp_name));
 |  | ||||||
|         int mode_id = int(options[0].opt.mode); |         int mode_id = int(options[0].opt.mode); | ||||||
|         const wxBitmap& bitmap = options.size() == 0 || options[0].opt.gui_type == "legend" ? wxNullBitmap : |         const wxBitmap& bitmap = options.size() == 0 || options[0].opt.gui_type == "legend" ? wxNullBitmap : | ||||||
|                                  m_mode_bitmap_cache[mode_id].bmp(); |                                  m_mode_bitmap_cache[mode_id].bmp(); | ||||||
|  | @ -3280,7 +3225,7 @@ ConfigOptionsGroupShp Page::new_optgroup(const wxString& title, int noncommon_la | ||||||
|         if (ctrl == nullptr) |         if (ctrl == nullptr) | ||||||
|             return; |             return; | ||||||
| 
 | 
 | ||||||
|         ctrl->SetBitmap(reinterpret_cast<PrusaBitmap*>(ctrl->GetClientData())->bmp()); |         ctrl->SetBitmap(reinterpret_cast<ScalableBitmap*>(ctrl->GetClientData())->bmp()); | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
| 	vsizer()->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 10); | 	vsizer()->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 10); | ||||||
|  |  | ||||||
|  | @ -36,8 +36,8 @@ namespace Slic3r { | ||||||
| namespace GUI { | namespace GUI { | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| typedef std::pair</*wxBitmap*/PrusaBitmap*, std::string>				t_icon_description; | typedef std::pair<ScalableBitmap*, std::string>				    t_icon_description; | ||||||
| typedef std::vector<std::pair</*wxBitmap*/PrusaBitmap*, std::string>>	t_icon_descriptions; | typedef std::vector<std::pair<ScalableBitmap*, std::string>>    t_icon_descriptions; | ||||||
| 
 | 
 | ||||||
| // Single Tab page containing a{ vsizer } of{ optgroups }
 | // Single Tab page containing a{ vsizer } of{ optgroups }
 | ||||||
| // package Slic3r::GUI::Tab::Page;
 | // package Slic3r::GUI::Tab::Page;
 | ||||||
|  | @ -50,7 +50,7 @@ class Page : public wxScrolledWindow | ||||||
| 	wxBoxSizer*		m_vsizer; | 	wxBoxSizer*		m_vsizer; | ||||||
|     bool            m_show = true; |     bool            m_show = true; | ||||||
| public: | public: | ||||||
|     Page(wxWindow* parent, const wxString title, const int iconID, const std::vector<PrusaBitmap>& mode_bmp_cache) : |     Page(wxWindow* parent, const wxString title, const int iconID, const std::vector<ScalableBitmap>& mode_bmp_cache) : | ||||||
| 			m_parent(parent), | 			m_parent(parent), | ||||||
| 			m_title(title), | 			m_title(title), | ||||||
| 			m_iconID(iconID), | 			m_iconID(iconID), | ||||||
|  | @ -68,7 +68,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     // Delayed layout after resizing the main window.
 |     // Delayed layout after resizing the main window.
 | ||||||
|     bool 				layout_valid = false; |     bool 				layout_valid = false; | ||||||
|     const std::vector<PrusaBitmap>&   m_mode_bitmap_cache; |     const std::vector<ScalableBitmap>&   m_mode_bitmap_cache; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
| 	std::vector <ConfigOptionsGroupShp> m_optgroups; | 	std::vector <ConfigOptionsGroupShp> m_optgroups; | ||||||
|  | @ -81,7 +81,7 @@ public: | ||||||
| 	void		set_config(DynamicPrintConfig* config_in) { m_config = config_in; } | 	void		set_config(DynamicPrintConfig* config_in) { m_config = config_in; } | ||||||
| 	void		reload_config(); | 	void		reload_config(); | ||||||
|     void        update_visibility(ConfigOptionMode mode); |     void        update_visibility(ConfigOptionMode mode); | ||||||
|     void        rescale(); |     void        msw_rescale(); | ||||||
| 	Field*		get_field(const t_config_option_key& opt_key, int opt_index = -1) const; | 	Field*		get_field(const t_config_option_key& opt_key, int opt_index = -1) const; | ||||||
| 	bool		set_value(const t_config_option_key& opt_key, const boost::any& value); | 	bool		set_value(const t_config_option_key& opt_key, const boost::any& value); | ||||||
| 	ConfigOptionsGroupShp	new_optgroup(const wxString& title, int noncommon_label_width = -1); | 	ConfigOptionsGroupShp	new_optgroup(const wxString& title, int noncommon_label_width = -1); | ||||||
|  | @ -122,20 +122,20 @@ protected: | ||||||
| 	std::string			m_name; | 	std::string			m_name; | ||||||
| 	const wxString		m_title; | 	const wxString		m_title; | ||||||
| 	wxBitmapComboBox*	m_presets_choice; | 	wxBitmapComboBox*	m_presets_choice; | ||||||
| 	/*wxBitmap*/PrusaButton*		m_btn_save_preset; | 	ScalableButton*		m_btn_save_preset; | ||||||
| 	/*wxBitmap*/PrusaButton*		m_btn_delete_preset; | 	ScalableButton*		m_btn_delete_preset; | ||||||
| 	/*wxBitmap*/PrusaButton*		m_btn_hide_incompatible_presets; | 	ScalableButton*		m_btn_hide_incompatible_presets; | ||||||
| 	wxBoxSizer*			m_hsizer; | 	wxBoxSizer*			m_hsizer; | ||||||
| 	wxBoxSizer*			m_left_sizer; | 	wxBoxSizer*			m_left_sizer; | ||||||
| 	wxTreeCtrl*			m_treectrl; | 	wxTreeCtrl*			m_treectrl; | ||||||
| 	wxImageList*		m_icons; | 	wxImageList*		m_icons; | ||||||
| 
 | 
 | ||||||
|     PrusaModeSizer*     m_mode_sizer; |     ModeSizer*     m_mode_sizer; | ||||||
| 
 | 
 | ||||||
|    	struct PresetDependencies { |    	struct PresetDependencies { | ||||||
| 		Preset::Type type	  = Preset::TYPE_INVALID; | 		Preset::Type type	  = Preset::TYPE_INVALID; | ||||||
| 		wxCheckBox 	*checkbox = nullptr; | 		wxCheckBox 	*checkbox = nullptr; | ||||||
| 		/*wxButton*/PrusaButton 	*btn   	  = nullptr; | 		ScalableButton 	*btn  = nullptr; | ||||||
| 		std::string  key_list; // "compatible_printers"
 | 		std::string  key_list; // "compatible_printers"
 | ||||||
| 		std::string  key_condition; | 		std::string  key_condition; | ||||||
| 		std::string  dialog_title; | 		std::string  dialog_title; | ||||||
|  | @ -144,27 +144,27 @@ protected: | ||||||
| 	PresetDependencies 	m_compatible_printers; | 	PresetDependencies 	m_compatible_printers; | ||||||
| 	PresetDependencies 	m_compatible_prints; | 	PresetDependencies 	m_compatible_prints; | ||||||
| 
 | 
 | ||||||
| 	/*wxButton*/PrusaButton*			m_undo_btn; | 	ScalableButton*			m_undo_btn; | ||||||
| 	/*wxButton*/PrusaButton*			m_undo_to_sys_btn; | 	ScalableButton*			m_undo_to_sys_btn; | ||||||
| 	/*wxButton*/PrusaButton*			m_question_btn; | 	ScalableButton*			m_question_btn; | ||||||
| 
 | 
 | ||||||
| 	// Cached bitmaps.
 | 	// Cached bitmaps.
 | ||||||
| 	// A "flag" icon to be displayned next to the preset name in the Tab's combo box.
 | 	// A "flag" icon to be displayned next to the preset name in the Tab's combo box.
 | ||||||
| 	/*wxBitmap*/PrusaBitmap			m_bmp_show_incompatible_presets; | 	ScalableBitmap			m_bmp_show_incompatible_presets; | ||||||
| 	/*wxBitmap*/PrusaBitmap			m_bmp_hide_incompatible_presets; | 	ScalableBitmap			m_bmp_hide_incompatible_presets; | ||||||
| 	// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
 | 	// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
 | ||||||
| 	/*wxBitmap*/PrusaBitmap 			m_bmp_value_lock; | 	ScalableBitmap 			m_bmp_value_lock; | ||||||
| 	/*wxBitmap*/PrusaBitmap 			m_bmp_value_unlock; | 	ScalableBitmap 			m_bmp_value_unlock; | ||||||
| 	/*wxBitmap*/PrusaBitmap 			m_bmp_white_bullet; | 	ScalableBitmap 			m_bmp_white_bullet; | ||||||
| 	// The following bitmap points to either m_bmp_value_unlock or m_bmp_white_bullet, depending on whether the current preset has a parent preset.
 | 	// The following bitmap points to either m_bmp_value_unlock or m_bmp_white_bullet, depending on whether the current preset has a parent preset.
 | ||||||
| 	/*wxBitmap*/PrusaBitmap 		   *m_bmp_non_system; | 	ScalableBitmap 		   *m_bmp_non_system; | ||||||
| 	// Bitmaps to be shown on the "Undo user changes" button next to each input field.
 | 	// Bitmaps to be shown on the "Undo user changes" button next to each input field.
 | ||||||
| 	/*wxBitmap*/PrusaBitmap 			m_bmp_value_revert; | 	ScalableBitmap 			m_bmp_value_revert; | ||||||
|      |      | ||||||
|     std::vector<PrusaButton*>	m_scaled_buttons = {};     |     std::vector<ScalableButton*>	m_scaled_buttons = {};     | ||||||
|     std::vector<PrusaBitmap*>	m_scaled_bitmaps = {};     |     std::vector<ScalableBitmap*>	m_scaled_bitmaps = {};     | ||||||
|     std::vector<PrusaBitmap>	m_scaled_icons_list = {}; |     std::vector<ScalableBitmap>     m_scaled_icons_list = {}; | ||||||
|     std::vector<PrusaBitmap>	m_mode_bitmap_cache = {}; |     std::vector<ScalableBitmap>     m_mode_bitmap_cache = {}; | ||||||
| 
 | 
 | ||||||
| 	// Colors for ui "decoration"
 | 	// Colors for ui "decoration"
 | ||||||
| 	wxColour			m_sys_label_clr; | 	wxColour			m_sys_label_clr; | ||||||
|  | @ -241,10 +241,10 @@ public: | ||||||
|     virtual bool supports_printer_technology(const PrinterTechnology tech) = 0; |     virtual bool supports_printer_technology(const PrinterTechnology tech) = 0; | ||||||
| 
 | 
 | ||||||
| 	void		create_preset_tab(); | 	void		create_preset_tab(); | ||||||
|     void        add_scaled_button(wxWindow* parent, PrusaButton** btn, const std::string& icon_name,  |     void        add_scaled_button(wxWindow* parent, ScalableButton** btn, const std::string& icon_name,  | ||||||
|                                   const wxString& label = wxEmptyString,  |                                   const wxString& label = wxEmptyString,  | ||||||
|                                   long style = wxBU_EXACTFIT | wxNO_BORDER); |                                   long style = wxBU_EXACTFIT | wxNO_BORDER); | ||||||
|     void        add_scaled_bitmap(wxWindow* parent, PrusaBitmap& btn, const std::string& icon_name); |     void        add_scaled_bitmap(wxWindow* parent, ScalableBitmap& btn, const std::string& icon_name); | ||||||
|     void		load_current_preset(); |     void		load_current_preset(); | ||||||
| 	void        rebuild_page_tree(); | 	void        rebuild_page_tree(); | ||||||
| 	void        update_page_tree_visibility(); | 	void        update_page_tree_visibility(); | ||||||
|  | @ -283,7 +283,7 @@ public: | ||||||
| 	virtual void	reload_config(); | 	virtual void	reload_config(); | ||||||
|     void            update_mode(); |     void            update_mode(); | ||||||
|     void            update_visibility(); |     void            update_visibility(); | ||||||
|     void            rescale(); |     void            msw_rescale(); | ||||||
| 	Field*			get_field(const t_config_option_key& opt_key, int opt_index = -1) const; | 	Field*			get_field(const t_config_option_key& opt_key, int opt_index = -1) const; | ||||||
| 	bool			set_value(const t_config_option_key& opt_key, const boost::any& value); | 	bool			set_value(const t_config_option_key& opt_key, const boost::any& value); | ||||||
| 	wxSizer*		description_line_widget(wxWindow* parent, ogStaticText** StaticText); | 	wxSizer*		description_line_widget(wxWindow* parent, ogStaticText** StaticText); | ||||||
|  | @ -355,8 +355,8 @@ class TabPrinter : public Tab | ||||||
|     void build_printhost(ConfigOptionsGroup *optgroup); |     void build_printhost(ConfigOptionsGroup *optgroup); | ||||||
| public: | public: | ||||||
| 	wxButton*	m_serial_test_btn = nullptr; | 	wxButton*	m_serial_test_btn = nullptr; | ||||||
| 	/*wxButton*/PrusaButton*	m_print_host_test_btn = nullptr; | 	ScalableButton*	m_print_host_test_btn = nullptr; | ||||||
| 	/*wxButton*/PrusaButton*	m_printhost_browse_btn = nullptr; | 	ScalableButton*	m_printhost_browse_btn = nullptr; | ||||||
| 
 | 
 | ||||||
| 	size_t		m_extruders_count; | 	size_t		m_extruders_count; | ||||||
| 	size_t		m_extruders_count_old = 0; | 	size_t		m_extruders_count_old = 0; | ||||||
|  |  | ||||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -96,91 +96,20 @@ public: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| // ***  PrusaCollapsiblePane  *** 
 |  | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| class PrusaCollapsiblePane : public wxCollapsiblePane | // DataViewBitmapText: helper class used by PrusaBitmapTextRenderer
 | ||||||
|  | // ----------------------------------------------------------------------------
 | ||||||
|  | 
 | ||||||
|  | class DataViewBitmapText : public wxObject | ||||||
| { | { | ||||||
| public: | public: | ||||||
| 	PrusaCollapsiblePane() {} |     DataViewBitmapText( const wxString &text = wxEmptyString, | ||||||
| 	PrusaCollapsiblePane(wxWindow *parent, |  | ||||||
| 		wxWindowID winid, |  | ||||||
| 		const wxString& label, |  | ||||||
| 		const wxPoint& pos = wxDefaultPosition, |  | ||||||
| 		const wxSize& size = wxDefaultSize, |  | ||||||
| 		long style = wxCP_DEFAULT_STYLE, |  | ||||||
| 		const wxValidator& val = wxDefaultValidator, |  | ||||||
| 		const wxString& name = wxCollapsiblePaneNameStr) |  | ||||||
| 	{ |  | ||||||
| 		Create(parent, winid, label, pos, size, style, val, name); |  | ||||||
| 	} |  | ||||||
| 	~PrusaCollapsiblePane() {} |  | ||||||
| 
 |  | ||||||
| 	void OnStateChange(const wxSize& sz); //override/hide of OnStateChange from wxCollapsiblePane
 |  | ||||||
| 	virtual bool Show(bool show = true) override { |  | ||||||
| 		wxCollapsiblePane::Show(show); |  | ||||||
| 		OnStateChange(GetBestSize()); |  | ||||||
| 		return true; |  | ||||||
| 	} |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| // ***  PrusaCollapsiblePaneMSW  ***  used only #ifdef __WXMSW__
 |  | ||||||
| // ----------------------------------------------------------------------------
 |  | ||||||
| #ifdef __WXMSW__ |  | ||||||
| class PrusaCollapsiblePaneMSW : public PrusaCollapsiblePane//wxCollapsiblePane
 |  | ||||||
| { |  | ||||||
| 	wxButton*	m_pDisclosureTriangleButton = nullptr; |  | ||||||
| 	wxBitmap	m_bmp_close; |  | ||||||
| 	wxBitmap	m_bmp_open; |  | ||||||
| 	wxString    m_strLabel; |  | ||||||
| public: |  | ||||||
| 	PrusaCollapsiblePaneMSW() {} |  | ||||||
| 	PrusaCollapsiblePaneMSW(	wxWindow *parent, |  | ||||||
| 							wxWindowID winid, |  | ||||||
| 							const wxString& label, |  | ||||||
| 							const wxPoint& pos = wxDefaultPosition, |  | ||||||
| 							const wxSize& size = wxDefaultSize, |  | ||||||
| 							long style = wxCP_DEFAULT_STYLE, |  | ||||||
| 							const wxValidator& val = wxDefaultValidator, |  | ||||||
| 							const wxString& name = wxCollapsiblePaneNameStr) |  | ||||||
| 	{ |  | ||||||
| 		Create(parent, winid, label, pos, size, style, val, name); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	~PrusaCollapsiblePaneMSW() {} |  | ||||||
| 
 |  | ||||||
| 	bool Create(wxWindow *parent, |  | ||||||
| 				wxWindowID id, |  | ||||||
| 				const wxString& label, |  | ||||||
| 				const wxPoint& pos, |  | ||||||
| 				const wxSize& size, |  | ||||||
| 				long style, |  | ||||||
| 				const wxValidator& val, |  | ||||||
| 				const wxString& name); |  | ||||||
| 
 |  | ||||||
| 	void UpdateBtnBmp(); |  | ||||||
| 	void SetLabel(const wxString &label) override; |  | ||||||
| 	bool Layout() override; |  | ||||||
| 	void Collapse(bool collapse) override; |  | ||||||
| }; |  | ||||||
| #endif //__WXMSW__
 |  | ||||||
| 
 |  | ||||||
| // *****************************************************************************
 |  | ||||||
| 
 |  | ||||||
| // ----------------------------------------------------------------------------
 |  | ||||||
| // PrusaDataViewBitmapText: helper class used by PrusaBitmapTextRenderer
 |  | ||||||
| // ----------------------------------------------------------------------------
 |  | ||||||
| 
 |  | ||||||
| class PrusaDataViewBitmapText : public wxObject |  | ||||||
| { |  | ||||||
| public: |  | ||||||
|     PrusaDataViewBitmapText(const wxString &text = wxEmptyString, |  | ||||||
|                         const wxBitmap& bmp = wxNullBitmap) : |                         const wxBitmap& bmp = wxNullBitmap) : | ||||||
|         m_text(text), m_bmp(bmp) |         m_text(text),  | ||||||
|  |         m_bmp(bmp) | ||||||
|     { } |     { } | ||||||
| 
 | 
 | ||||||
|     PrusaDataViewBitmapText(const PrusaDataViewBitmapText &other) |     DataViewBitmapText(const DataViewBitmapText &other) | ||||||
|         : wxObject(), |         : wxObject(), | ||||||
|         m_text(other.m_text), |         m_text(other.m_text), | ||||||
|         m_bmp(other.m_bmp) |         m_bmp(other.m_bmp) | ||||||
|  | @ -191,15 +120,15 @@ public: | ||||||
|     void SetBitmap(const wxBitmap &bmp)     { m_bmp = bmp; } |     void SetBitmap(const wxBitmap &bmp)     { m_bmp = bmp; } | ||||||
|     const wxBitmap &GetBitmap() const       { return m_bmp; } |     const wxBitmap &GetBitmap() const       { return m_bmp; } | ||||||
| 
 | 
 | ||||||
|     bool IsSameAs(const PrusaDataViewBitmapText& other) const { |     bool IsSameAs(const DataViewBitmapText& other) const { | ||||||
|         return m_text == other.m_text && m_bmp.IsSameAs(other.m_bmp); |         return m_text == other.m_text && m_bmp.IsSameAs(other.m_bmp); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     bool operator==(const PrusaDataViewBitmapText& other) const { |     bool operator==(const DataViewBitmapText& other) const { | ||||||
|         return IsSameAs(other); |         return IsSameAs(other); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     bool operator!=(const PrusaDataViewBitmapText& other) const { |     bool operator!=(const DataViewBitmapText& other) const { | ||||||
|         return !IsSameAs(other); |         return !IsSameAs(other); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -207,13 +136,13 @@ private: | ||||||
|     wxString    m_text; |     wxString    m_text; | ||||||
|     wxBitmap    m_bmp; |     wxBitmap    m_bmp; | ||||||
| 
 | 
 | ||||||
|     wxDECLARE_DYNAMIC_CLASS(PrusaDataViewBitmapText); |     wxDECLARE_DYNAMIC_CLASS(DataViewBitmapText); | ||||||
| }; | }; | ||||||
| DECLARE_VARIANT_OBJECT(PrusaDataViewBitmapText) | DECLARE_VARIANT_OBJECT(DataViewBitmapText) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaObjectDataViewModelNode: a node inside PrusaObjectDataViewModel
 | // ObjectDataViewModelNode: a node inside PrusaObjectDataViewModel
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| enum ItemType { | enum ItemType { | ||||||
|  | @ -225,49 +154,58 @@ enum ItemType { | ||||||
|     itSettings = 16 |     itSettings = 16 | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class PrusaObjectDataViewModelNode; | class ObjectDataViewModelNode; | ||||||
| WX_DEFINE_ARRAY_PTR(PrusaObjectDataViewModelNode*, MyObjectTreeModelNodePtrArray); | WX_DEFINE_ARRAY_PTR(ObjectDataViewModelNode*, MyObjectTreeModelNodePtrArray); | ||||||
| 
 | 
 | ||||||
| class PrusaObjectDataViewModelNode | class ObjectDataViewModelNode | ||||||
| { | { | ||||||
| 	PrusaObjectDataViewModelNode*	m_parent; | 	ObjectDataViewModelNode*	    m_parent; | ||||||
| 	MyObjectTreeModelNodePtrArray   m_children; | 	MyObjectTreeModelNodePtrArray   m_children; | ||||||
|     wxBitmap                        m_empty_bmp; |     wxBitmap                        m_empty_bmp; | ||||||
|     size_t                          m_volumes_cnt = 0; |     size_t                          m_volumes_cnt = 0; | ||||||
|     std::vector< std::string >      m_opt_categories; |     std::vector< std::string >      m_opt_categories; | ||||||
| 
 | 
 | ||||||
|  |     wxString				        m_name; | ||||||
|  |     wxBitmap&                       m_bmp = m_empty_bmp; | ||||||
|  |     ItemType				        m_type; | ||||||
|  |     int                             m_idx = -1; | ||||||
|  |     bool					        m_container = false; | ||||||
|  |     wxString				        m_extruder = "default"; | ||||||
|  |     wxBitmap				        m_action_icon; | ||||||
|  | 
 | ||||||
|     std::string                     m_action_icon_name = ""; |     std::string                     m_action_icon_name = ""; | ||||||
|     Slic3r::ModelVolumeType         m_volume_type; |     Slic3r::ModelVolumeType         m_volume_type; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     PrusaObjectDataViewModelNode(const wxString &name,  |     ObjectDataViewModelNode(const wxString &name,  | ||||||
|                                  const wxString& extruder) { |                             const wxString& extruder): | ||||||
| 		m_parent	= NULL; |         m_parent(NULL), | ||||||
| 		m_name		= name; |         m_name(name), | ||||||
| 		m_type		= itObject; |         m_type(itObject), | ||||||
|  |         m_extruder(extruder) | ||||||
|  |     { | ||||||
| #ifdef __WXGTK__ | #ifdef __WXGTK__ | ||||||
|         // it's necessary on GTK because of control have to know if this item will be container
 |         // it's necessary on GTK because of control have to know if this item will be container
 | ||||||
|         // in another case you couldn't to add subitem for this item
 |         // in another case you couldn't to add subitem for this item
 | ||||||
|         // it will be produce "segmentation fault"
 |         // it will be produce "segmentation fault"
 | ||||||
|         m_container = true; |         m_container = true; | ||||||
| #endif  //__WXGTK__
 | #endif  //__WXGTK__
 | ||||||
|         m_extruder = extruder; |  | ||||||
| 
 | 
 | ||||||
| // 		set_object_action_icon();
 |  | ||||||
|         set_action_icon(); |         set_action_icon(); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	PrusaObjectDataViewModelNode(	PrusaObjectDataViewModelNode* parent, | 	ObjectDataViewModelNode(ObjectDataViewModelNode* parent, | ||||||
| 							const wxString& sub_obj_name,  | 							const wxString& sub_obj_name,  | ||||||
| 							const wxBitmap& bmp,  | 							const wxBitmap& bmp,  | ||||||
|                             const wxString& extruder,  |                             const wxString& extruder,  | ||||||
|                                     const int idx = -1 ) { |                             const int idx = -1 ) : | ||||||
| 		m_parent	= parent; |         m_parent	(parent), | ||||||
| 		m_name		= sub_obj_name; | 		m_name		(sub_obj_name), | ||||||
|  | 		m_type		(itVolume), | ||||||
|  |         m_idx       (idx), | ||||||
|  |         m_extruder  (extruder) | ||||||
|  |     { | ||||||
|         m_bmp = bmp;		 |         m_bmp = bmp;		 | ||||||
| 		m_type		= itVolume; |  | ||||||
|         m_idx       = idx; |  | ||||||
|         m_extruder = extruder; |  | ||||||
| #ifdef __WXGTK__ | #ifdef __WXGTK__ | ||||||
|         // it's necessary on GTK because of control have to know if this item will be container
 |         // it's necessary on GTK because of control have to know if this item will be container
 | ||||||
|         // in another case you couldn't to add subitem for this item
 |         // in another case you couldn't to add subitem for this item
 | ||||||
|  | @ -275,11 +213,11 @@ public: | ||||||
|         m_container = true; |         m_container = true; | ||||||
| #endif  //__WXGTK__
 | #endif  //__WXGTK__
 | ||||||
| 
 | 
 | ||||||
| // 		set_part_action_icon();
 |  | ||||||
|         set_action_icon(); |         set_action_icon(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     PrusaObjectDataViewModelNode(   PrusaObjectDataViewModelNode* parent, const ItemType type) : |     ObjectDataViewModelNode(ObjectDataViewModelNode* parent,  | ||||||
|  |                             const ItemType type) : | ||||||
|         m_parent(parent), |         m_parent(parent), | ||||||
|         m_type(type), |         m_type(type), | ||||||
|         m_extruder(wxEmptyString) |         m_extruder(wxEmptyString) | ||||||
|  | @ -296,36 +234,28 @@ public: | ||||||
|         else if (type == itInstance) { |         else if (type == itInstance) { | ||||||
|             m_idx = parent->GetChildCount(); |             m_idx = parent->GetChildCount(); | ||||||
|             m_name = wxString::Format("Instance_%d", m_idx+1); |             m_name = wxString::Format("Instance_%d", m_idx+1); | ||||||
| //             set_part_action_icon();
 | 
 | ||||||
|             set_action_icon(); |             set_action_icon(); | ||||||
|         } |         } | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	~PrusaObjectDataViewModelNode() | 	~ObjectDataViewModelNode() | ||||||
| 	{ | 	{ | ||||||
| 		// free all our children nodes
 | 		// free all our children nodes
 | ||||||
| 		size_t count = m_children.GetCount(); | 		size_t count = m_children.GetCount(); | ||||||
| 		for (size_t i = 0; i < count; i++) | 		for (size_t i = 0; i < count; i++) | ||||||
| 		{ | 		{ | ||||||
| 			PrusaObjectDataViewModelNode *child = m_children[i]; | 			ObjectDataViewModelNode *child = m_children[i]; | ||||||
| 			delete child; | 			delete child; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	wxString				m_name; |  | ||||||
|     wxBitmap&               m_bmp = m_empty_bmp; |  | ||||||
|     ItemType				m_type; |  | ||||||
|     int                     m_idx = -1; |  | ||||||
| 	bool					m_container = false; |  | ||||||
| 	wxString				m_extruder = "default"; |  | ||||||
| 	wxBitmap				m_action_icon; |  | ||||||
| 
 |  | ||||||
| 	bool IsContainer() const | 	bool IsContainer() const | ||||||
| 	{ | 	{ | ||||||
| 		return m_container; | 		return m_container; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	PrusaObjectDataViewModelNode* GetParent() | 	ObjectDataViewModelNode* GetParent() | ||||||
| 	{ | 	{ | ||||||
| 		return m_parent; | 		return m_parent; | ||||||
| 	} | 	} | ||||||
|  | @ -333,17 +263,17 @@ public: | ||||||
| 	{ | 	{ | ||||||
| 		return m_children; | 		return m_children; | ||||||
| 	} | 	} | ||||||
| 	PrusaObjectDataViewModelNode* GetNthChild(unsigned int n) | 	ObjectDataViewModelNode* GetNthChild(unsigned int n) | ||||||
| 	{ | 	{ | ||||||
| 		return m_children.Item(n); | 		return m_children.Item(n); | ||||||
| 	} | 	} | ||||||
| 	void Insert(PrusaObjectDataViewModelNode* child, unsigned int n) | 	void Insert(ObjectDataViewModelNode* child, unsigned int n) | ||||||
| 	{ | 	{ | ||||||
| 		if (!m_container) | 		if (!m_container) | ||||||
| 			m_container = true; | 			m_container = true; | ||||||
| 		m_children.Insert(child, n); | 		m_children.Insert(child, n); | ||||||
| 	} | 	} | ||||||
| 	void Append(PrusaObjectDataViewModelNode* child) | 	void Append(ObjectDataViewModelNode* child) | ||||||
| 	{ | 	{ | ||||||
| 		if (!m_container) | 		if (!m_container) | ||||||
| 			m_container = true; | 			m_container = true; | ||||||
|  | @ -373,7 +303,7 @@ public: | ||||||
| 		switch (col) | 		switch (col) | ||||||
| 		{ | 		{ | ||||||
| 		case 0:{ | 		case 0:{ | ||||||
|             PrusaDataViewBitmapText data; |             DataViewBitmapText data; | ||||||
| 			data << variant; | 			data << variant; | ||||||
|             m_bmp = data.GetBitmap(); |             m_bmp = data.GetBitmap(); | ||||||
| 			m_name = data.GetText(); | 			m_name = data.GetText(); | ||||||
|  | @ -411,7 +341,7 @@ public: | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// use this function only for childrens
 | 	// use this function only for childrens
 | ||||||
| 	void AssignAllVal(PrusaObjectDataViewModelNode& from_node) | 	void AssignAllVal(ObjectDataViewModelNode& from_node) | ||||||
| 	{ | 	{ | ||||||
| 		// ! Don't overwrite other values because of equality of this values for all children --
 | 		// ! Don't overwrite other values because of equality of this values for all children --
 | ||||||
| 		m_name = from_node.m_name; | 		m_name = from_node.m_name; | ||||||
|  | @ -427,8 +357,8 @@ public: | ||||||
| 			scnd_id < 0 || scnd_id >= GetChildCount()) | 			scnd_id < 0 || scnd_id >= GetChildCount()) | ||||||
| 			return false; | 			return false; | ||||||
| 
 | 
 | ||||||
| 		PrusaObjectDataViewModelNode new_scnd = *GetNthChild(frst_id); | 		ObjectDataViewModelNode new_scnd = *GetNthChild(frst_id); | ||||||
| 		PrusaObjectDataViewModelNode new_frst = *GetNthChild(scnd_id); | 		ObjectDataViewModelNode new_frst = *GetNthChild(scnd_id); | ||||||
| 
 | 
 | ||||||
|         new_scnd.m_idx = m_children.Item(scnd_id)->m_idx; |         new_scnd.m_idx = m_children.Item(scnd_id)->m_idx; | ||||||
|         new_frst.m_idx = m_children.Item(frst_id)->m_idx; |         new_frst.m_idx = m_children.Item(frst_id)->m_idx; | ||||||
|  | @ -439,38 +369,36 @@ public: | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Set action icons for node
 | 	// Set action icons for node
 | ||||||
| // 	void set_object_action_icon();
 |  | ||||||
| // 	void set_part_action_icon();
 |  | ||||||
|     void set_action_icon(); |     void set_action_icon(); | ||||||
| 
 | 
 | ||||||
|     void    update_settings_digest_bitmaps(); |     void    update_settings_digest_bitmaps(); | ||||||
| 	bool    update_settings_digest(const std::vector<std::string>& categories); | 	bool    update_settings_digest(const std::vector<std::string>& categories); | ||||||
|     int     volume_type() const { return int(m_volume_type); } |     int     volume_type() const { return int(m_volume_type); } | ||||||
|     void    rescale(); |     void    msw_rescale(); | ||||||
| private: | private: | ||||||
|     friend class PrusaObjectDataViewModel; |     friend class ObjectDataViewModel; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaObjectDataViewModel
 | // ObjectDataViewModel
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| // custom message the model sends to associated control to notify a last volume deleted from the object:
 | // custom message the model sends to associated control to notify a last volume deleted from the object:
 | ||||||
| wxDECLARE_EVENT(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, wxCommandEvent); | wxDECLARE_EVENT(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, wxCommandEvent); | ||||||
| 
 | 
 | ||||||
| class PrusaObjectDataViewModel :public wxDataViewModel | class ObjectDataViewModel :public wxDataViewModel | ||||||
| { | { | ||||||
| 	std::vector<PrusaObjectDataViewModelNode*>  m_objects; | 	std::vector<ObjectDataViewModelNode*>       m_objects; | ||||||
|     std::vector<wxBitmap*>                      m_volume_bmps; |     std::vector<wxBitmap*>                      m_volume_bmps; | ||||||
| 
 | 
 | ||||||
|     wxDataViewCtrl*                             m_ctrl{ nullptr }; |     wxDataViewCtrl*                             m_ctrl{ nullptr }; | ||||||
| 
 | 
 | ||||||
| public: | public: | ||||||
|     PrusaObjectDataViewModel(); |     ObjectDataViewModel(); | ||||||
|     ~PrusaObjectDataViewModel(); |     ~ObjectDataViewModel(); | ||||||
| 
 | 
 | ||||||
| 	wxDataViewItem Add(const wxString &name, const int extruder); | 	wxDataViewItem Add(const wxString &name, const int extruder); | ||||||
|     wxDataViewItem AddVolumeChild(const wxDataViewItem &parent_item, |     wxDataViewItem AddVolumeChild(  const wxDataViewItem &parent_item, | ||||||
|                                     const wxString &name, |                                     const wxString &name, | ||||||
|                                     const Slic3r::ModelVolumeType volume_type, |                                     const Slic3r::ModelVolumeType volume_type, | ||||||
|                                     const int extruder = 0, |                                     const int extruder = 0, | ||||||
|  | @ -505,18 +433,20 @@ public: | ||||||
| 	virtual unsigned int    GetColumnCount() const override { return 3;} | 	virtual unsigned int    GetColumnCount() const override { return 3;} | ||||||
| 	virtual wxString        GetColumnType(unsigned int col) const override{ return wxT("string"); } | 	virtual wxString        GetColumnType(unsigned int col) const override{ return wxT("string"); } | ||||||
| 
 | 
 | ||||||
| 	virtual void GetValue(wxVariant &variant, | 	virtual void GetValue(  wxVariant &variant, | ||||||
| 		const wxDataViewItem &item, unsigned int col) const override; | 		                    const wxDataViewItem &item,  | ||||||
| 	virtual bool SetValue(const wxVariant &variant, |                             unsigned int col) const override; | ||||||
| 		const wxDataViewItem &item, unsigned int col) override; | 	virtual bool SetValue(  const wxVariant &variant, | ||||||
| 	bool SetValue(const wxVariant &variant, const int item_idx, unsigned int col); | 		                    const wxDataViewItem &item,  | ||||||
|  |                             unsigned int col) override; | ||||||
|  | 	bool SetValue(  const wxVariant &variant,  | ||||||
|  |                     const int item_idx,  | ||||||
|  |                     unsigned int col); | ||||||
| 
 | 
 | ||||||
| // 	wxDataViewItem MoveChildUp(const wxDataViewItem &item);
 |  | ||||||
| // 	wxDataViewItem MoveChildDown(const wxDataViewItem &item);
 |  | ||||||
|     // For parent move child from cur_volume_id place to new_volume_id 
 |     // For parent move child from cur_volume_id place to new_volume_id 
 | ||||||
|     // Remaining items will moved up/down accordingly
 |     // Remaining items will moved up/down accordingly
 | ||||||
|     wxDataViewItem ReorganizeChildren(int cur_volume_id,  |     wxDataViewItem  ReorganizeChildren( const int cur_volume_id,  | ||||||
|                                       int new_volume_id, |                                         const int new_volume_id, | ||||||
|                                         const wxDataViewItem &parent); |                                         const wxDataViewItem &parent); | ||||||
| 
 | 
 | ||||||
| 	virtual bool    IsEnabled(const wxDataViewItem &item, unsigned int col) const override; | 	virtual bool    IsEnabled(const wxDataViewItem &item, unsigned int col) const override; | ||||||
|  | @ -533,11 +463,13 @@ public: | ||||||
| 	virtual bool    HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override {	return true; } | 	virtual bool    HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override {	return true; } | ||||||
| 
 | 
 | ||||||
|     ItemType        GetItemType(const wxDataViewItem &item) const ; |     ItemType        GetItemType(const wxDataViewItem &item) const ; | ||||||
|     wxDataViewItem    GetItemByType(const wxDataViewItem &parent_item, ItemType type) const; |     wxDataViewItem  GetItemByType(  const wxDataViewItem &parent_item,  | ||||||
|  |                                     ItemType type) const; | ||||||
|     wxDataViewItem  GetSettingsItem(const wxDataViewItem &item) const; |     wxDataViewItem  GetSettingsItem(const wxDataViewItem &item) const; | ||||||
|     wxDataViewItem  GetInstanceRootItem(const wxDataViewItem &item) const; |     wxDataViewItem  GetInstanceRootItem(const wxDataViewItem &item) const; | ||||||
|     bool    IsSettingsItem(const wxDataViewItem &item) const; |     bool    IsSettingsItem(const wxDataViewItem &item) const; | ||||||
|     void    UpdateSettingsDigest(const wxDataViewItem &item, const std::vector<std::string>& categories); |     void    UpdateSettingsDigest(   const wxDataViewItem &item,  | ||||||
|  |                                     const std::vector<std::string>& categories); | ||||||
| 
 | 
 | ||||||
|     void    SetVolumeBitmaps(const std::vector<wxBitmap*>& volume_bmps) { m_volume_bmps = volume_bmps; } |     void    SetVolumeBitmaps(const std::vector<wxBitmap*>& volume_bmps) { m_volume_bmps = volume_bmps; } | ||||||
|     void    SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type); |     void    SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type); | ||||||
|  | @ -548,16 +480,16 @@ public: | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaBitmapTextRenderer
 | // BitmapTextRenderer
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING | #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING | ||||||
| class PrusaBitmapTextRenderer : public wxDataViewRenderer | class BitmapTextRenderer : public wxDataViewRenderer | ||||||
| #else | #else | ||||||
| class PrusaBitmapTextRenderer : public wxDataViewCustomRenderer | class BitmapTextRenderer : public wxDataViewCustomRenderer | ||||||
| #endif //ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
 | #endif //ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
 | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     PrusaBitmapTextRenderer(wxDataViewCellMode mode = |     BitmapTextRenderer(wxDataViewCellMode mode = | ||||||
| #ifdef __WXOSX__ | #ifdef __WXOSX__ | ||||||
|                                                         wxDATAVIEW_CELL_INERT |                                                         wxDATAVIEW_CELL_INERT | ||||||
| #else | #else | ||||||
|  | @ -568,7 +500,7 @@ public: | ||||||
| #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING | #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING | ||||||
|                             ); |                             ); | ||||||
| #else | #else | ||||||
|                             ) : wxDataViewCustomRenderer(wxT("PrusaDataViewBitmapText"), mode, align) {} |                             ) : wxDataViewCustomRenderer(wxT("DataViewBitmapText"), mode, align) {} | ||||||
| #endif //ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
 | #endif //ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
 | ||||||
| 
 | 
 | ||||||
|     bool SetValue(const wxVariant &value); |     bool SetValue(const wxVariant &value); | ||||||
|  | @ -596,7 +528,7 @@ public: | ||||||
|     bool        WasCanceled() const { return m_was_unusable_symbol; } |     bool        WasCanceled() const { return m_was_unusable_symbol; } | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     PrusaDataViewBitmapText m_value; |     DataViewBitmapText m_value; | ||||||
|     bool                    m_was_unusable_symbol {false}; |     bool                    m_was_unusable_symbol {false}; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -694,21 +626,21 @@ private: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaBitmap
 | // ScalableBitmap
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| class PrusaBitmap | class ScalableBitmap | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     PrusaBitmap() {}; |     ScalableBitmap() {}; | ||||||
|     PrusaBitmap(wxWindow *parent,  |     ScalableBitmap( wxWindow *parent,  | ||||||
|                     const std::string& icon_name = "", |                     const std::string& icon_name = "", | ||||||
|                     const int px_cnt = 16, |                     const int px_cnt = 16, | ||||||
|                     const bool is_horizontal = false); |                     const bool is_horizontal = false); | ||||||
| 
 | 
 | ||||||
|     ~PrusaBitmap() {} |     ~ScalableBitmap() {} | ||||||
| 
 | 
 | ||||||
|     void                rescale(); |     void                msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     const wxBitmap&     bmp() const { return m_bmp; } |     const wxBitmap&     bmp() const { return m_bmp; } | ||||||
|     wxBitmap&           bmp()       { return m_bmp; } |     wxBitmap&           bmp()       { return m_bmp; } | ||||||
|  | @ -724,7 +656,7 @@ private: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaDoubleSlider
 | // DoubleSlider
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| // custom message the slider sends to its parent to notify a tick-change:
 | // custom message the slider sends to its parent to notify a tick-change:
 | ||||||
|  | @ -741,10 +673,10 @@ enum TicksAction{ | ||||||
|     taDel |     taDel | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| class PrusaDoubleSlider : public wxControl | class DoubleSlider : public wxControl | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     PrusaDoubleSlider( |     DoubleSlider( | ||||||
|         wxWindow *parent, |         wxWindow *parent, | ||||||
|         wxWindowID id, |         wxWindowID id, | ||||||
|         int lowerValue,  |         int lowerValue,  | ||||||
|  | @ -756,9 +688,9 @@ public: | ||||||
|         long style = wxSL_VERTICAL, |         long style = wxSL_VERTICAL, | ||||||
|         const wxValidator& val = wxDefaultValidator, |         const wxValidator& val = wxDefaultValidator, | ||||||
|         const wxString& name = wxEmptyString); |         const wxString& name = wxEmptyString); | ||||||
|     ~PrusaDoubleSlider() {} |     ~DoubleSlider() {} | ||||||
| 
 | 
 | ||||||
|     void    rescale(); |     void    msw_rescale(); | ||||||
| 
 | 
 | ||||||
|     int GetMinValue() const { return m_min_value; } |     int GetMinValue() const { return m_min_value; } | ||||||
|     int GetMaxValue() const { return m_max_value; } |     int GetMaxValue() const { return m_max_value; } | ||||||
|  | @ -852,16 +784,16 @@ private: | ||||||
|     int         m_max_value; |     int         m_max_value; | ||||||
|     int         m_lower_value; |     int         m_lower_value; | ||||||
|     int         m_higher_value; |     int         m_higher_value; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_thumb_higher; |     ScalableBitmap    m_bmp_thumb_higher; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_thumb_lower; |     ScalableBitmap    m_bmp_thumb_lower; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_add_tick_on; |     ScalableBitmap    m_bmp_add_tick_on; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_add_tick_off; |     ScalableBitmap    m_bmp_add_tick_off; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_del_tick_on; |     ScalableBitmap    m_bmp_del_tick_on; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_del_tick_off; |     ScalableBitmap    m_bmp_del_tick_off; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_one_layer_lock_on; |     ScalableBitmap    m_bmp_one_layer_lock_on; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_one_layer_lock_off; |     ScalableBitmap    m_bmp_one_layer_lock_off; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_one_layer_unlock_on; |     ScalableBitmap    m_bmp_one_layer_unlock_on; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_one_layer_unlock_off; |     ScalableBitmap    m_bmp_one_layer_unlock_off; | ||||||
|     SelectedSlider  m_selection; |     SelectedSlider  m_selection; | ||||||
|     bool        m_is_left_down = false; |     bool        m_is_left_down = false; | ||||||
|     bool        m_is_right_down = false; |     bool        m_is_right_down = false; | ||||||
|  | @ -892,26 +824,26 @@ private: | ||||||
|     wxPen   GREY_PEN; |     wxPen   GREY_PEN; | ||||||
|     wxPen   LIGHT_GREY_PEN; |     wxPen   LIGHT_GREY_PEN; | ||||||
| 
 | 
 | ||||||
|     std::vector<wxPen*> line_pens; |     std::vector<wxPen*> m_line_pens; | ||||||
|     std::vector<wxPen*> segm_pens; |     std::vector<wxPen*> m_segm_pens; | ||||||
|     std::set<int>       m_ticks; |     std::set<int>       m_ticks; | ||||||
|     std::vector<std::pair<int,double>> m_values; |     std::vector<std::pair<int,double>> m_values; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaLockButton
 | // LockButton
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| class PrusaLockButton : public wxButton | class LockButton : public wxButton | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     PrusaLockButton( |     LockButton( | ||||||
|         wxWindow *parent, |         wxWindow *parent, | ||||||
|         wxWindowID id, |         wxWindowID id, | ||||||
|         const wxPoint& pos = wxDefaultPosition, |         const wxPoint& pos = wxDefaultPosition, | ||||||
|         const wxSize& size = wxDefaultSize); |         const wxSize& size = wxDefaultSize); | ||||||
|     ~PrusaLockButton() {} |     ~LockButton() {} | ||||||
| 
 | 
 | ||||||
|     void    OnButton(wxCommandEvent& event); |     void    OnButton(wxCommandEvent& event); | ||||||
|     void    OnEnterBtn(wxMouseEvent& event) { enter_button(true); event.Skip(); } |     void    OnEnterBtn(wxMouseEvent& event) { enter_button(true); event.Skip(); } | ||||||
|  | @ -920,7 +852,7 @@ public: | ||||||
|     bool    IsLocked() const { return m_is_pushed; } |     bool    IsLocked() const { return m_is_pushed; } | ||||||
|     void    SetLock(bool lock); |     void    SetLock(bool lock); | ||||||
| 
 | 
 | ||||||
|     void    rescale(); |     void    msw_rescale(); | ||||||
| 
 | 
 | ||||||
| protected: | protected: | ||||||
|     void    enter_button(const bool enter); |     void    enter_button(const bool enter); | ||||||
|  | @ -928,23 +860,23 @@ protected: | ||||||
| private: | private: | ||||||
|     bool        m_is_pushed = false; |     bool        m_is_pushed = false; | ||||||
| 
 | 
 | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_lock_on; |     ScalableBitmap    m_bmp_lock_on; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_lock_off; |     ScalableBitmap    m_bmp_lock_off; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_unlock_on; |     ScalableBitmap    m_bmp_unlock_on; | ||||||
|     /*wxBitmap*/PrusaBitmap    m_bmp_unlock_off; |     ScalableBitmap    m_bmp_unlock_off; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaButton
 | // ScalableButton
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| class PrusaButton : public wxButton | class ScalableButton : public wxButton | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     PrusaButton(){} |     ScalableButton(){} | ||||||
|     PrusaButton( |     ScalableButton( | ||||||
|         wxWindow *parent, |         wxWindow *          parent, | ||||||
|         wxWindowID          id, |         wxWindowID          id, | ||||||
|         const std::string&  icon_name = "", |         const std::string&  icon_name = "", | ||||||
|         const wxString&     label = wxEmptyString, |         const wxString&     label = wxEmptyString, | ||||||
|  | @ -952,18 +884,18 @@ public: | ||||||
|         const wxPoint&      pos = wxDefaultPosition, |         const wxPoint&      pos = wxDefaultPosition, | ||||||
|         long                style = wxBU_EXACTFIT | wxNO_BORDER); |         long                style = wxBU_EXACTFIT | wxNO_BORDER); | ||||||
| 
 | 
 | ||||||
|     PrusaButton( |     ScalableButton( | ||||||
|         wxWindow *parent, |         wxWindow *          parent, | ||||||
|         wxWindowID          id, |         wxWindowID          id, | ||||||
|         const PrusaBitmap& bitmap, |         const ScalableBitmap&  bitmap, | ||||||
|         const wxString&     label = wxEmptyString, |         const wxString&     label = wxEmptyString, | ||||||
|         long                style = wxBU_EXACTFIT | wxNO_BORDER); |         long                style = wxBU_EXACTFIT | wxNO_BORDER); | ||||||
| 
 | 
 | ||||||
|     ~PrusaButton() {} |     ~ScalableButton() {} | ||||||
| 
 | 
 | ||||||
|     void SetBitmap_(const PrusaBitmap& bmp); |     void SetBitmap_(const ScalableBitmap& bmp); | ||||||
| 
 | 
 | ||||||
|     void    rescale(); |     void    msw_rescale(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     wxWindow*       m_parent; |     wxWindow*       m_parent; | ||||||
|  | @ -972,20 +904,20 @@ private: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaModeButton
 | // ModeButton
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| class PrusaModeButton : public PrusaButton/*wxButton*/ | class ModeButton : public ScalableButton | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     PrusaModeButton( |     ModeButton( | ||||||
|         wxWindow *parent, |         wxWindow*           parent, | ||||||
|         wxWindowID          id, |         wxWindowID          id, | ||||||
|         const std::string&  icon_name = "", |         const std::string&  icon_name = "", | ||||||
|         const wxString&     mode = wxEmptyString, |         const wxString&     mode = wxEmptyString, | ||||||
|         const wxSize&       size = wxDefaultSize, |         const wxSize&       size = wxDefaultSize, | ||||||
|         const wxPoint&      pos = wxDefaultPosition); |         const wxPoint&      pos = wxDefaultPosition); | ||||||
|     ~PrusaModeButton() {} |     ~ModeButton() {} | ||||||
| 
 | 
 | ||||||
|     void    OnButton(wxCommandEvent& event); |     void    OnButton(wxCommandEvent& event); | ||||||
|     void    OnEnterBtn(wxMouseEvent& event) { focus_button(true); event.Skip(); } |     void    OnEnterBtn(wxMouseEvent& event) { focus_button(true); event.Skip(); } | ||||||
|  | @ -999,8 +931,6 @@ protected: | ||||||
| private: | private: | ||||||
|     bool        m_is_selected = false; |     bool        m_is_selected = false; | ||||||
| 
 | 
 | ||||||
| //     wxBitmap    m_bmp_on;
 |  | ||||||
| //     wxBitmap    m_bmp_off;
 |  | ||||||
|     wxString    m_tt_selected; |     wxString    m_tt_selected; | ||||||
|     wxString    m_tt_focused; |     wxString    m_tt_focused; | ||||||
| }; | }; | ||||||
|  | @ -1008,42 +938,45 @@ private: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaModeSizer
 | // ModeSizer
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| class PrusaModeSizer : public wxFlexGridSizer | class ModeSizer : public wxFlexGridSizer | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     PrusaModeSizer( wxWindow *parent, int hgap = 10); |     ModeSizer( wxWindow *parent, int hgap = 10); | ||||||
|     ~PrusaModeSizer() {} |     ~ModeSizer() {} | ||||||
| 
 | 
 | ||||||
|     void SetMode(const /*ConfigOptionMode*/int mode); |     void SetMode(const /*ConfigOptionMode*/int mode); | ||||||
| 
 | 
 | ||||||
|     void rescale(); |     void msw_rescale(); | ||||||
| 
 | 
 | ||||||
| private: | private: | ||||||
|     std::vector<PrusaModeButton*> mode_btns; |     std::vector<ModeButton*> m_mode_btns; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| // PrusaMenu
 | // MenuWithSeparators
 | ||||||
| // ----------------------------------------------------------------------------
 | // ----------------------------------------------------------------------------
 | ||||||
| 
 | 
 | ||||||
| class PrusaMenu : public wxMenu | class MenuWithSeparators : public wxMenu | ||||||
| { | { | ||||||
| public: | public: | ||||||
|     PrusaMenu(const wxString& title, long style = 0) |     MenuWithSeparators(const wxString& title, long style = 0) | ||||||
|         : wxMenu(title, style) {} |         : wxMenu(title, style) {} | ||||||
| 
 | 
 | ||||||
|     PrusaMenu(long style = 0) |     MenuWithSeparators(long style = 0) | ||||||
|         : wxMenu(style) {} |         : wxMenu(style) {} | ||||||
| 
 | 
 | ||||||
|     ~PrusaMenu() {} |     ~MenuWithSeparators() {} | ||||||
| 
 | 
 | ||||||
|     void DestroySeparators(); |     void DestroySeparators(); | ||||||
|  |     void SetFirstSeparator(); | ||||||
|  |     void SetSecondSeparator(); | ||||||
| 
 | 
 | ||||||
|  | private: | ||||||
|     wxMenuItem* m_separator_frst { nullptr };    // use like separator before settings item
 |     wxMenuItem* m_separator_frst { nullptr };    // use like separator before settings item
 | ||||||
|     wxMenuItem* m_separator_scnd { nullptr };   // use like separator between settings items
 |     wxMenuItem* m_separator_scnd { nullptr };   // use like separator between settings items
 | ||||||
| }; | }; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka