From 3bd3d54894cd49fb564396fd043c4b0c80f4b116 Mon Sep 17 00:00:00 2001 From: FormerLurker Date: Sun, 21 Nov 2021 12:51:53 -0600 Subject: For python progress updates, make detailed statistics optional (they take a while to create, and are unused in the current Octoprint plugin until the final message). --- PyArcWelder/py_arc_welder.cpp | 23 +++++++++++++++-------- PyArcWelder/py_arc_welder.h | 2 +- PyArcWelder/py_arc_welder_extension.cpp | 3 ++- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/PyArcWelder/py_arc_welder.cpp b/PyArcWelder/py_arc_welder.cpp index 635ad9d..2cdfde5 100644 --- a/PyArcWelder/py_arc_welder.cpp +++ b/PyArcWelder/py_arc_welder.cpp @@ -22,23 +22,30 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include "py_arc_welder.h" -PyObject* py_arc_welder::build_py_progress(const arc_welder_progress& progress, std::string guid) +PyObject* py_arc_welder::build_py_progress(const arc_welder_progress& progress, std::string guid, bool include_detailed_statistics) { PyObject* pyGuid = gcode_arc_converter::PyUnicode_SafeFromString(guid); if (pyGuid == NULL) return NULL; - // Extrusion Statistics - source_target_segment_statistics combined_stats = source_target_segment_statistics::add(progress.segment_statistics, progress.segment_retraction_statistics); - std::string segment_statistics = combined_stats.str("", utilities::box_drawing::HTML); + std::string segment_statistics = ""; + std::string segment_travel_statistics = ""; + + if (include_detailed_statistics) + { + // Extrusion Statistics + source_target_segment_statistics combined_stats = source_target_segment_statistics::add(progress.segment_statistics, progress.segment_retraction_statistics); + segment_statistics = combined_stats.str("", utilities::box_drawing::HTML); + // Travel Statistics + segment_travel_statistics = progress.travel_statistics.str("", utilities::box_drawing::HTML); + } PyObject* pyMessage = gcode_arc_converter::PyUnicode_SafeFromString(segment_statistics); if (pyMessage == NULL) return NULL; double total_count_reduction_percent = progress.segment_statistics.get_total_count_reduction_percent(); - // Travel Statistics - std::string segment_travel_statistics = progress.travel_statistics.str("", utilities::box_drawing::HTML); + PyObject* pyTravelMessage = gcode_arc_converter::PyUnicode_SafeFromString(segment_travel_statistics); - if (pyMessage == NULL) + if (pyTravelMessage == NULL) return NULL; double total_travel_count_reduction_percent = progress.travel_statistics.get_total_count_reduction_percent(); PyObject* py_progress = Py_BuildValue("{s:d,s:d,s:d,s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:i,s:f,s:f,s:f,s:f,s:i,s:i,s:f,s:f,s:f,s:i,s:i,s:f}", @@ -110,7 +117,7 @@ PyObject* py_arc_welder::build_py_progress(const arc_welder_progress& progress, bool py_arc_welder::on_progress_(const arc_welder_progress& progress) { - PyObject* py_dict = py_arc_welder::build_py_progress(progress, guid_); + PyObject* py_dict = py_arc_welder::build_py_progress(progress, guid_, false); if (py_dict == NULL) { return false; diff --git a/PyArcWelder/py_arc_welder.h b/PyArcWelder/py_arc_welder.h index 686a9cd..a8f0819 100644 --- a/PyArcWelder/py_arc_welder.h +++ b/PyArcWelder/py_arc_welder.h @@ -61,7 +61,7 @@ public: virtual ~py_arc_welder() { } - static PyObject* build_py_progress(const arc_welder_progress& progress, std::string guid); + static PyObject* build_py_progress(const arc_welder_progress& progress, std::string guid, bool include_detailed_statistics); protected: std::string guid_; virtual bool on_progress_(const arc_welder_progress& progress); diff --git a/PyArcWelder/py_arc_welder_extension.cpp b/PyArcWelder/py_arc_welder_extension.cpp index c08e3d7..7609b61 100644 --- a/PyArcWelder/py_arc_welder_extension.cpp +++ b/PyArcWelder/py_arc_welder_extension.cpp @@ -207,7 +207,8 @@ extern "C" p_py_logger->log(GCODE_CONVERSION, log_levels::INFO, message); Py_XDECREF(py_progress_callback); // return the arguments - PyObject* p_progress = py_arc_welder::build_py_progress(results.progress, args.guid); + PyObject* p_progress = py_arc_welder::build_py_progress(results.progress, args.guid, true); + if (p_progress == NULL) p_progress = Py_None; -- cgit v1.2.3