Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FormerLurker/ArcWelderLib.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFormerLurker <hochgebe@gmail.com>2020-10-17 02:34:25 +0300
committerFormerLurker <hochgebe@gmail.com>2020-10-17 02:34:25 +0300
commit4fd38897fd66c245991a4066c7bb3db373087e70 (patch)
tree30a91cd0ded86278929869ec265c939fc839e18a /PyArcWelder/py_arc_welder.cpp
parent04958af691abfebc8314b300b4d8676f074439a7 (diff)
Add additional statistics. Fix windows c++ build for python 2.7 compilers.
Diffstat (limited to 'PyArcWelder/py_arc_welder.cpp')
-rw-r--r--PyArcWelder/py_arc_welder.cpp78
1 files changed, 50 insertions, 28 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();