New gcode visualization integration - Toggling of top layer only view state

This commit is contained in:
enricoturri1966 2024-01-11 14:55:24 +01:00 committed by Lukas Matena
parent 75c7f19f20
commit 13c67db5a1
5 changed files with 17 additions and 7 deletions

View File

@ -76,7 +76,11 @@ public:
// Whether or not the visible range is limited to the current top layer only.
//
bool is_top_layer_only_view_range() const;
void set_top_layer_only_view_range(bool top_layer_only);
//
// Toggle the top layer only state.
//
void toggle_top_layer_only_view_range();
//
// Spiral vase mode
// Whether or not the gcode was generated with spiral vase mode enabled.

View File

@ -67,9 +67,9 @@ bool Viewer::is_top_layer_only_view_range() const
return m_impl->is_top_layer_only_view_range();
}
void Viewer::set_top_layer_only_view_range(bool top_layer_only)
void Viewer::toggle_top_layer_only_view_range()
{
m_impl->set_top_layer_only_view_range(top_layer_only);
m_impl->toggle_top_layer_only_view_range();
}
bool Viewer::is_spiral_vase_mode() const

View File

@ -789,9 +789,12 @@ void ViewerImpl::set_layers_view_range(Interval::value_type min, Interval::value
m_settings.update_colors = true;
}
void ViewerImpl::set_top_layer_only_view_range(bool top_layer_only_view_range)
void ViewerImpl::toggle_top_layer_only_view_range()
{
m_settings.top_layer_only_view_range = top_layer_only_view_range;
m_settings.top_layer_only_view_range = !m_settings.top_layer_only_view_range;
update_view_full_range();
m_view_range.set_visible(m_view_range.get_enabled());
m_settings.update_enabled_entities = true;
m_settings.update_colors = true;
}

View File

@ -81,7 +81,7 @@ public:
void set_layers_view_range(Interval::value_type min, Interval::value_type max);
bool is_top_layer_only_view_range() const { return m_settings.top_layer_only_view_range; }
void set_top_layer_only_view_range(bool top_layer_only_view_range);
void toggle_top_layer_only_view_range();
bool is_spiral_vase_mode() const { return m_settings.spiral_vase_mode; }

View File

@ -1108,7 +1108,10 @@ void GCodeViewer::init()
#if ENABLE_NEW_GCODE_VIEWER
void GCodeViewer::load_as_gcode(const GCodeProcessorResult& gcode_result, const Print& print, const std::vector<std::string>& str_tool_colors)
{
m_viewer.set_top_layer_only_view_range(get_app_config()->get_bool("seq_top_layer_only"));
const bool current_top_layer_only = m_viewer.is_top_layer_only_view_range();
const bool required_top_layer_only = get_app_config()->get_bool("seq_top_layer_only");
if (current_top_layer_only != required_top_layer_only)
m_viewer.toggle_top_layer_only_view_range();
std::vector<ColorRGBA> tool_colors;
if (m_viewer.get_view_type() == libvgcode::EViewType::Tool && !gcode_result.extruder_colors.empty())