diff options
author | FormerLurker <hochgebe@gmail.com> | 2020-10-17 02:34:25 +0300 |
---|---|---|
committer | FormerLurker <hochgebe@gmail.com> | 2020-10-17 02:34:25 +0300 |
commit | 4fd38897fd66c245991a4066c7bb3db373087e70 (patch) | |
tree | 30a91cd0ded86278929869ec265c939fc839e18a /PyArcWelder | |
parent | 04958af691abfebc8314b300b4d8676f074439a7 (diff) |
Add additional statistics. Fix windows c++ build for python 2.7 compilers.
Diffstat (limited to 'PyArcWelder')
-rw-r--r-- | PyArcWelder/py_arc_welder.cpp | 78 | ||||
-rw-r--r-- | PyArcWelder/py_arc_welder.h | 2 | ||||
-rw-r--r-- | PyArcWelder/py_arc_welder_extension.cpp | 8 |
3 files changed, 55 insertions, 33 deletions
diff --git a/PyArcWelder/py_arc_welder.cpp b/PyArcWelder/py_arc_welder.cpp index 302aa95..0eacf39 100644 --- a/PyArcWelder/py_arc_welder.cpp +++ b/PyArcWelder/py_arc_welder.cpp @@ -22,35 +22,55 @@ //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// #include "py_arc_welder.h" - -PyObject* py_arc_welder::build_py_progress(arc_welder_progress progress) +PyObject* py_arc_welder::build_py_progress(const arc_welder_progress& progress) { - 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:f,s:f}", - u8"percent_complete", - progress.percent_complete, - u8"seconds_elapsed", - progress.seconds_elapsed, - u8"seconds_remaining", - progress.seconds_remaining, - u8"gcodes_processed", - progress.gcodes_processed, - u8"lines_processed", - progress.lines_processed, - u8"points_compressed", - progress.points_compressed, - u8"arcs_created", - progress.arcs_created, - u8"source_file_position", - progress.source_file_position, - u8"source_file_size", - progress.source_file_size, - u8"target_file_size", - progress.target_file_size, - u8"compression_ratio", - progress.compression_ratio, - u8"compression_percent", - progress.compression_percent + std::string segment_statistics = progress.segment_statistics.str(); + PyObject* pyMessage = gcode_arc_converter::PyUnicode_SafeFromString(segment_statistics); + if (pyMessage == NULL) + return NULL; + 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:f,s:f,s:f,s:f,s:i,s:i}", + "percent_complete", + progress.percent_complete, //1 + "seconds_elapsed", + progress.seconds_elapsed, //2 + "seconds_remaining", + progress.seconds_remaining, //3 + "gcodes_processed", + progress.gcodes_processed, //4 + "lines_processed", + progress.lines_processed, //5 + "points_compressed", + progress.points_compressed, //6 + "arcs_created", + progress.arcs_created, //7 + "source_file_position", + progress.source_file_position, //8 + "source_file_size", + progress.source_file_size, //9 + "target_file_size", + progress.target_file_size, //10 + "compression_ratio", + progress.compression_ratio, //11 + "compression_percent", + progress.compression_percent, //12 + "source_file_total_length", + progress.segment_statistics.total_length_source, //13 + "target_file_total_length", + progress.segment_statistics.total_length_target, //14 + "source_file_total_count", + progress.segment_statistics.total_count_source, //15 + "target_file_total_count", + progress.segment_statistics.total_length_target //16 ); + + if (py_progress == NULL) + { + return NULL; + } + // Due to a CRAZY issue, I have to add this item after building the py_progress object, + // else it crashes in python 2.7. Looking forward to retiring this backwards + // compatible code... + PyDict_SetItemString(py_progress, "segment_statistics_text", pyMessage); return py_progress; } @@ -58,12 +78,14 @@ bool py_arc_welder::on_progress_(const arc_welder_progress& progress) { PyObject* py_dict = py_arc_welder::build_py_progress(progress); if (py_dict == NULL) + { return false; + } PyObject* func_args = Py_BuildValue("(O)", py_dict); if (func_args == NULL) { Py_DECREF(py_dict); - return true; + return false; // This was returning true, I think it was a typo. Making a note just in case. } PyGILState_STATE gstate = PyGILState_Ensure(); diff --git a/PyArcWelder/py_arc_welder.h b/PyArcWelder/py_arc_welder.h index ef56715..1b70980 100644 --- a/PyArcWelder/py_arc_welder.h +++ b/PyArcWelder/py_arc_welder.h @@ -41,7 +41,7 @@ public: virtual ~py_arc_welder() { } - static PyObject* build_py_progress(arc_welder_progress progress); + static PyObject* build_py_progress(const arc_welder_progress& progress); protected: virtual bool on_progress_(const arc_welder_progress& progress); private: diff --git a/PyArcWelder/py_arc_welder_extension.cpp b/PyArcWelder/py_arc_welder_extension.cpp index 07f9dfc..ea24f59 100644 --- a/PyArcWelder/py_arc_welder_extension.cpp +++ b/PyArcWelder/py_arc_welder_extension.cpp @@ -202,13 +202,13 @@ extern "C" PyObject* p_results = Py_BuildValue( "{s:i,s:i,s:s,s:O}", - u8"success", + "success", results.success, - u8"cancelled", + "cancelled", results.cancelled, - u8"message", + "message", results.message.c_str(), - u8"progress", + "progress", p_progress ); return p_results; |