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,21 +33,11 @@ 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_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); }));
|
|
||||||
|
|
||||||
//set default bitmap
|
m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); }));
|
||||||
// wxBitmap bmp = create_scaled_bitmap(m_parent, "bullet_white.png" );
|
m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); }));
|
||||||
// set_undo_bitmap(&bmp);
|
|
||||||
// set_undo_to_sys_bitmap(&bmp);
|
|
||||||
|
|
||||||
switch (m_opt.type)
|
switch (m_opt.type)
|
||||||
{
|
{
|
||||||
|
@ -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,12 +228,12 @@ 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;
|
||||||
// Color for Label. The wxColour will be updated only if the new wxColour pointer differs from the currently rendered one.
|
// Color for Label. The wxColour will be updated only if the new wxColour pointer differs from the currently rendered one.
|
||||||
|
@ -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,11 +12,10 @@ 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;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
SysInfoDialog();
|
SysInfoDialog();
|
||||||
|
|
|
@ -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,
|
const wxBitmap& bmp = wxNullBitmap) :
|
||||||
wxWindowID winid,
|
m_text(text),
|
||||||
const wxString& label,
|
m_bmp(bmp)
|
||||||
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) :
|
|
||||||
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)
|
||||||
|
@ -188,18 +117,18 @@ public:
|
||||||
|
|
||||||
void SetText(const wxString &text) { m_text = text; }
|
void SetText(const wxString &text) { m_text = text; }
|
||||||
wxString GetText() const { return m_text; }
|
wxString GetText() const { return m_text; }
|
||||||
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_bmp = bmp;
|
m_type (itVolume),
|
||||||
m_type = itVolume;
|
m_idx (idx),
|
||||||
m_idx = idx;
|
m_extruder (extruder)
|
||||||
m_extruder = extruder;
|
{
|
||||||
|
m_bmp = bmp;
|
||||||
#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,14 +213,14 @@ 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,
|
||||||
m_parent(parent),
|
const ItemType type) :
|
||||||
m_type(type),
|
m_parent(parent),
|
||||||
m_extruder(wxEmptyString)
|
m_type(type),
|
||||||
|
m_extruder(wxEmptyString)
|
||||||
{
|
{
|
||||||
if (type == itSettings) {
|
if (type == itSettings) {
|
||||||
m_name = "Settings to modified";
|
m_name = "Settings to modified";
|
||||||
|
@ -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,42 +369,40 @@ 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,
|
||||||
const bool create_frst_child = true);
|
const bool create_frst_child = true);
|
||||||
wxDataViewItem AddSettingsChild(const wxDataViewItem &parent_item);
|
wxDataViewItem AddSettingsChild(const wxDataViewItem &parent_item);
|
||||||
wxDataViewItem AddInstanceChild(const wxDataViewItem &parent_item, size_t num);
|
wxDataViewItem AddInstanceChild(const wxDataViewItem &parent_item, size_t num);
|
||||||
wxDataViewItem Delete(const wxDataViewItem &item);
|
wxDataViewItem Delete(const wxDataViewItem &item);
|
||||||
|
@ -486,58 +414,62 @@ public:
|
||||||
wxDataViewItem GetItemById(int obj_idx);
|
wxDataViewItem GetItemById(int obj_idx);
|
||||||
wxDataViewItem GetItemByVolumeId(int obj_idx, int volume_idx);
|
wxDataViewItem GetItemByVolumeId(int obj_idx, int volume_idx);
|
||||||
wxDataViewItem GetItemByInstanceId(int obj_idx, int inst_idx);
|
wxDataViewItem GetItemByInstanceId(int obj_idx, int inst_idx);
|
||||||
int GetIdByItem(const wxDataViewItem& item) const;
|
int GetIdByItem(const wxDataViewItem& item) const;
|
||||||
int GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const;
|
int GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const;
|
||||||
int GetObjectIdByItem(const wxDataViewItem& item) const;
|
int GetObjectIdByItem(const wxDataViewItem& item) const;
|
||||||
int GetVolumeIdByItem(const wxDataViewItem& item) const;
|
int GetVolumeIdByItem(const wxDataViewItem& item) const;
|
||||||
int GetInstanceIdByItem(const wxDataViewItem& item) const;
|
int GetInstanceIdByItem(const wxDataViewItem& item) const;
|
||||||
void GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx);
|
void GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx);
|
||||||
int GetRowByItem(const wxDataViewItem& item) const;
|
int GetRowByItem(const wxDataViewItem& item) const;
|
||||||
bool IsEmpty() { return m_objects.empty(); }
|
bool IsEmpty() { return m_objects.empty(); }
|
||||||
|
|
||||||
// helper method for wxLog
|
// helper method for wxLog
|
||||||
|
|
||||||
wxString GetName(const wxDataViewItem &item) const;
|
wxString GetName(const wxDataViewItem &item) const;
|
||||||
wxBitmap& GetBitmap(const wxDataViewItem &item) const;
|
wxBitmap& GetBitmap(const wxDataViewItem &item) const;
|
||||||
|
|
||||||
// helper methods to change the model
|
// helper methods to change the model
|
||||||
|
|
||||||
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;
|
||||||
|
|
||||||
virtual wxDataViewItem GetParent(const wxDataViewItem &item) const override;
|
virtual wxDataViewItem GetParent(const wxDataViewItem &item) const override;
|
||||||
// get object item
|
// get object item
|
||||||
wxDataViewItem GetTopParent(const wxDataViewItem &item) const;
|
wxDataViewItem GetTopParent(const wxDataViewItem &item) const;
|
||||||
virtual bool IsContainer(const wxDataViewItem &item) const override;
|
virtual bool IsContainer(const wxDataViewItem &item) const override;
|
||||||
virtual unsigned int GetChildren(const wxDataViewItem &parent,
|
virtual unsigned int GetChildren(const wxDataViewItem &parent,
|
||||||
wxDataViewItemArray &array) const override;
|
wxDataViewItemArray &array) const override;
|
||||||
void GetAllChildren(const wxDataViewItem &parent,wxDataViewItemArray &array) const;
|
void GetAllChildren(const wxDataViewItem &parent,wxDataViewItemArray &array) const;
|
||||||
// Is the container just a header or an item with all columns
|
// Is the container just a header or an item with all columns
|
||||||
// In our case it is an item with all columns
|
// In our case it is an item with all columns
|
||||||
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,
|
||||||
wxDataViewItem GetSettingsItem(const wxDataViewItem &item) const;
|
ItemType type) const;
|
||||||
wxDataViewItem GetInstanceRootItem(const wxDataViewItem &item) const;
|
wxDataViewItem GetSettingsItem(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,42 +860,42 @@ 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,
|
||||||
const wxSize& size = wxDefaultSize,
|
const wxSize& size = wxDefaultSize,
|
||||||
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…
Reference in a new issue