The print bed is limited to 1.2m x 1.2m. (related to #2877)
This commit is contained in:
parent
f27999e136
commit
815989d488
@ -74,6 +74,8 @@ void BedShapePanel::build_panel(const ConfigOptionPoints& default_pt, const Conf
|
|||||||
ConfigOptionDef def;
|
ConfigOptionDef def;
|
||||||
def.type = coPoints;
|
def.type = coPoints;
|
||||||
def.set_default_value(new ConfigOptionPoints{ Vec2d(200, 200) });
|
def.set_default_value(new ConfigOptionPoints{ Vec2d(200, 200) });
|
||||||
|
def.min = 0;
|
||||||
|
def.max = 1200;
|
||||||
def.label = L("Size");
|
def.label = L("Size");
|
||||||
def.tooltip = L("Size in X and Y of the rectangular plate.");
|
def.tooltip = L("Size in X and Y of the rectangular plate.");
|
||||||
Option option(def, "rect_size");
|
Option option(def, "rect_size");
|
||||||
@ -81,6 +83,8 @@ void BedShapePanel::build_panel(const ConfigOptionPoints& default_pt, const Conf
|
|||||||
|
|
||||||
def.type = coPoints;
|
def.type = coPoints;
|
||||||
def.set_default_value(new ConfigOptionPoints{ Vec2d(0, 0) });
|
def.set_default_value(new ConfigOptionPoints{ Vec2d(0, 0) });
|
||||||
|
def.min = -600;
|
||||||
|
def.max = 600;
|
||||||
def.label = L("Origin");
|
def.label = L("Origin");
|
||||||
def.tooltip = L("Distance of the 0,0 G-code coordinate from the front left corner of the rectangle.");
|
def.tooltip = L("Distance of the 0,0 G-code coordinate from the front left corner of the rectangle.");
|
||||||
option = Option(def, "rect_origin");
|
option = Option(def, "rect_origin");
|
||||||
|
@ -1242,12 +1242,24 @@ void PointCtrl::msw_rescale(bool rescale_sidetext/* = false*/)
|
|||||||
y_textctrl->SetMinSize(field_size);
|
y_textctrl->SetMinSize(field_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool PointCtrl::value_was_changed(wxTextCtrl* win)
|
||||||
|
{
|
||||||
|
if (m_value.empty())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
boost::any val = m_value;
|
||||||
|
// update m_value!
|
||||||
|
get_value();
|
||||||
|
|
||||||
|
return boost::any_cast<Vec2d>(m_value) != boost::any_cast<Vec2d>(val);
|
||||||
|
}
|
||||||
|
|
||||||
void PointCtrl::propagate_value(wxTextCtrl* win)
|
void PointCtrl::propagate_value(wxTextCtrl* win)
|
||||||
{
|
{
|
||||||
if (!win->GetValue().empty())
|
if (win->GetValue().empty())
|
||||||
on_change_field();
|
|
||||||
else
|
|
||||||
on_kill_focus();
|
on_kill_focus();
|
||||||
|
else if (value_was_changed(win))
|
||||||
|
on_change_field();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PointCtrl::set_value(const Vec2d& value, bool change_event)
|
void PointCtrl::set_value(const Vec2d& value, bool change_event)
|
||||||
@ -1281,6 +1293,19 @@ boost::any& PointCtrl::get_value()
|
|||||||
double x, y;
|
double x, y;
|
||||||
x_textctrl->GetValue().ToDouble(&x);
|
x_textctrl->GetValue().ToDouble(&x);
|
||||||
y_textctrl->GetValue().ToDouble(&y);
|
y_textctrl->GetValue().ToDouble(&y);
|
||||||
|
|
||||||
|
if (m_opt.min > x || x > m_opt.max ||
|
||||||
|
m_opt.min > y || y > m_opt.max)
|
||||||
|
{
|
||||||
|
if (m_opt.min > x) x = m_opt.min;
|
||||||
|
if (x > m_opt.max) x = m_opt.max;
|
||||||
|
if (m_opt.min > y) y = m_opt.min;
|
||||||
|
if (y > m_opt.max) y = m_opt.max;
|
||||||
|
set_value(Vec2d(x, y), true);
|
||||||
|
|
||||||
|
show_error(m_parent, _(L("Input value is out of range")));
|
||||||
|
}
|
||||||
|
|
||||||
return m_value = Vec2d(x, y);
|
return m_value = Vec2d(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -445,6 +445,7 @@ public:
|
|||||||
wxTextCtrl* y_textctrl{ nullptr };
|
wxTextCtrl* y_textctrl{ nullptr };
|
||||||
|
|
||||||
void BUILD() override;
|
void BUILD() override;
|
||||||
|
bool value_was_changed(wxTextCtrl* win);
|
||||||
// Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER
|
// Propagate value from field to the OptionGroupe and Config after kill_focus/ENTER
|
||||||
void propagate_value(wxTextCtrl* win);
|
void propagate_value(wxTextCtrl* win);
|
||||||
void set_value(const Vec2d& value, bool change_event = false);
|
void set_value(const Vec2d& value, bool change_event = false);
|
||||||
|
Loading…
Reference in New Issue
Block a user