Fix: GCodeViewer displaying inconsistent data in title and body (#12014)

* Fix: GCodeViewer displaying inconsistent data in title and body

* Fix: remove actual flow info from GCodeViewer title

* Refactor: reduce repetition of N/A and headers
This commit is contained in:
Sabriel-Koh
2026-01-21 00:32:52 +08:00
committed by GitHub
parent d3d161235d
commit c906075148

View File

@@ -295,6 +295,9 @@ void GCodeViewer::SequentialView::Marker::render_position_window(const libvgcode
static float last_window_width = 0.0f;
static size_t last_text_length = 0;
static bool properties_shown = false;
const std::string NA_TXT = _u8L("N/A");
const char* NA_CSTR = NA_TXT.c_str();
if (viewer != nullptr) {
ImGuiWrapper& imgui = *wxGetApp().imgui();
@@ -316,19 +319,32 @@ void GCodeViewer::SequentialView::Marker::render_position_window(const libvgcode
vertex = viewer->get_vertex_at(vertex_id);
}
char buf[1024];
const bool is_extrusion = vertex.is_extrusion();
char buf[1024]; char valBuf[32];
sprintf(buf, "X: %.3f, Y: %.3f, Z: %.3f Speed: %.0f ", vertex.position[0], vertex.position[1], vertex.position[2], vertex.feedrate);
switch (view_type) {
case libvgcode::EViewType::Height: {
sprintf(buf, "%s %s%.2f", buf, _u8L("Height: ").c_str(), vertex.height);
if (is_extrusion)
sprintf(valBuf, "%.2f", vertex.height);
else
sprintf(valBuf, "%s", NA_CSTR);
sprintf(buf, "%s %s%s", buf, _u8L("Height: ").c_str(), valBuf);
break;
}
case libvgcode::EViewType::Width: {
sprintf(buf, "%s %s%.2f", buf, _u8L("Width: ").c_str(), vertex.width);
if (is_extrusion)
sprintf(valBuf, "%.2f", vertex.width);
else
sprintf(valBuf, "%s", NA_CSTR);
sprintf(buf, "%s %s%s", buf, _u8L("Width: ").c_str(), valBuf);
break;
}
case libvgcode::EViewType::VolumetricFlowRate: {
sprintf(buf, "%s %s%.2f", buf, _u8L("Flow: ").c_str(), vertex.volumetric_rate());
if (is_extrusion)
sprintf(valBuf, "%.2f", vertex.volumetric_rate());
else
sprintf(valBuf, "%s", NA_CSTR);
sprintf(buf, "%s %s%s", buf, _u8L("Flow: ").c_str(), valBuf);
break;
}
case libvgcode::EViewType::FanSpeed: {
@@ -353,7 +369,8 @@ void GCodeViewer::SequentialView::Marker::render_position_window(const libvgcode
break;
}
case libvgcode::EViewType::ActualVolumetricFlowRate: {
sprintf(buf, "%s %s%.2f", buf, _u8L("Actual Flow: ").c_str(), vertex.actual_volumetric_rate());
// Don't display the actual flow, since it only gives data for the end of a segment
// sprintf(buf, "%s %s%.2f", buf, _u8L("Actual Flow: ").c_str(), vertex.actual_volumetric_rate());
break;
}
case libvgcode::EViewType::ActualSpeed: {
@@ -367,7 +384,7 @@ void GCodeViewer::SequentialView::Marker::render_position_window(const libvgcode
ImGuiWrapper::text(std::string(buf));
if (view_type == libvgcode::EViewType::FeatureType) {
ImGui::SameLine();
ImGuiWrapper::text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, to_string(vertex.role).c_str());
ImGuiWrapper::text_colored(ImGuiWrapper::COL_ORANGE_LIGHT, vertex.is_extrusion() ? to_string(vertex.role).c_str() : NA_CSTR);
}
ImGui::SameLine();
if (imgui.image_button(properties_shown ? ImGui::HorizontalHide : ImGui::HorizontalShow, properties_shown ? _u8L("Hide properties") : _u8L("Show properties"))) {
@@ -390,32 +407,32 @@ void GCodeViewer::SequentialView::Marker::render_position_window(const libvgcode
append_table_row(_u8L("Type"), [&vertex]() {
ImGuiWrapper::text(_u8L(to_string(vertex.type)));
});
append_table_row(_u8L("Feature type"), [&vertex]() {
append_table_row(_u8L("Feature type"), [&vertex, NA_TXT]() {
std::string text;
if (vertex.is_extrusion())
text = _u8L(to_string(vertex.role));
else
text = _u8L("N/A");
text = NA_TXT;
ImGuiWrapper::text(text);
});
append_table_row(_u8L("Width") + " (" + _u8L("mm") + ")", [&vertex, &buff]() {
append_table_row(_u8L("Width") + " (" + _u8L("mm") + ")", [&vertex, &buff, NA_TXT]() {
std::string text;
if (vertex.is_extrusion()) {
sprintf(buff, "%.3f", vertex.width);
text = std::string(buff);
}
else
text = _u8L("N/A");
text = NA_TXT;
ImGuiWrapper::text(text);
});
append_table_row(_u8L("Height") + " (" + _u8L("mm") + ")", [&vertex, &buff]() {
append_table_row(_u8L("Height") + " (" + _u8L("mm") + ")", [&vertex, &buff, NA_TXT]() {
std::string text;
if (vertex.is_extrusion()) {
sprintf(buff, "%.3f", vertex.height);
text = std::string(buff);
}
else
text = _u8L("N/A");
text = NA_TXT;
ImGuiWrapper::text(text);
});
append_table_row(_u8L("Layer"), [&vertex, &buff]() {
@@ -428,14 +445,14 @@ void GCodeViewer::SequentialView::Marker::render_position_window(const libvgcode
const std::string text = std::string(buff);
ImGuiWrapper::text(text);
});
append_table_row(_u8L("Volumetric flow rate") + " (" + _u8L("mm³/s") + ")", [&vertex, &buff]() {
append_table_row(_u8L("Volumetric flow rate") + " (" + _u8L("mm³/s") + ")", [&vertex, &buff, NA_TXT]() {
std::string text;
if (vertex.is_extrusion()) {
sprintf(buff, "%.3f", vertex.volumetric_rate());
text = std::string(buff);
}
else
text = _u8L("N/A");
text = NA_TXT;
ImGuiWrapper::text(text);
});
append_table_row(_u8L("Fan speed") + " (" + _u8L("%") + ")", [&vertex, &buff]() {