Merge branch 'master' into update

This commit is contained in:
WandererFan
2018-06-04 17:03:54 -04:00
committed by GitHub
2 changed files with 40 additions and 19 deletions

View File

@@ -1752,6 +1752,16 @@ void PropertyStringList::setPyObject(PyObject *value)
if (PyString_Check(value)) {
setValue(PyString_AsString(value));
}
#endif
else if (PyUnicode_Check(value)) {
#if PY_MAJOR_VERSION >= 3
setValue(PyUnicode_AsUTF8(value));
}
#else
PyObject* unicode = PyUnicode_AsUTF8String(value);
setValue(PyString_AsString(unicode));
Py_DECREF(unicode);
}
#endif
else if (PySequence_Check(value)) {
Py_ssize_t nSize = PySequence_Size(value);
@@ -1781,16 +1791,6 @@ void PropertyStringList::setPyObject(PyObject *value)
setValues(values);
}
else if (PyUnicode_Check(value)) {
#if PY_MAJOR_VERSION >= 3
setValue(PyUnicode_AsUTF8(value));
}
#else
PyObject* unicode = PyUnicode_AsUTF8String(value);
setValue(PyString_AsString(unicode));
Py_DECREF(unicode);
}
#endif
else {
std::string error = std::string("type must be str or unicode or list of str or list of unicodes, not ");
error += value->ob_type->tp_name;

View File

@@ -23,6 +23,7 @@
#* *
#***************************************************************************
import sys
import FreeCAD,Draft,ArchComponent,DraftVecUtils
from FreeCAD import Vector
if FreeCAD.GuiUp:
@@ -48,6 +49,24 @@ __url__ = "http://www.freecadweb.org"
# module functions ###############################################
def string_replace(text, pattern, replacement):
"""
if py2 isn't supported anymore calls to this function
should be replaced with:
`text.replace(pattern, replacement)`
for python2 the encoding must be done, as unicode replacement leads to something like this:
```
>>> a = u'abc mm ^3'
>>> a.replace(u"^3", u"³")
u'abc mm \xc2\xb3'
```
"""
if sys.version_info.major < 3:
text = text.encode("utf8")
return text.replace(pattern, replacement)
def getStringList(objects):
'''getStringList(objects): returns a string defining a list
of objects'''
@@ -807,14 +826,14 @@ def survey(callback=False):
if o.Object.Shape.Solids:
u = FreeCAD.Units.Quantity(o.Object.Shape.Volume,FreeCAD.Units.Volume)
t = u.getUserPreferred()[0]
t = t.encode("utf8").replace("^3","³")
t = string_replace(t, "^3","³")
anno.LabelText = "v " + t
FreeCAD.Console.PrintMessage("Object: " + n + ", Element: Whole, Volume: " + utf8_decode(t) + "\n")
FreeCAD.SurveyObserver.totalVolume += u.Value
elif o.Object.Shape.Faces:
u = FreeCAD.Units.Quantity(o.Object.Shape.Area,FreeCAD.Units.Area)
t = u.getUserPreferred()[0]
t = t.encode("utf8").replace("^2","²")
t = string_replace(t, "^2","²")
anno.LabelText = "a " + t
FreeCAD.Console.PrintMessage("Object: " + n + ", Element: Whole, Area: " + utf8_decode(t) + "\n")
FreeCAD.SurveyObserver.totalArea += u.Value
@@ -850,7 +869,7 @@ def survey(callback=False):
if "Face" in el:
u = FreeCAD.Units.Quantity(e.Area,FreeCAD.Units.Area)
t = u.getUserPreferred()[0]
t = t.encode("utf8").replace("^2","²")
t = string_replace(t, "^2","²")
anno.LabelText = "a " + t
FreeCAD.Console.PrintMessage("Object: " + n + ", Element: " + el + ", Area: "+ utf8_decode(t) + "\n")
FreeCAD.SurveyObserver.totalArea += u.Value
@@ -859,7 +878,8 @@ def survey(callback=False):
elif "Edge" in el:
u= FreeCAD.Units.Quantity(e.Length,FreeCAD.Units.Length)
t = u.getUserPreferred()[0]
t = t.encode("utf8")
if sys.version_info.major < 3:
t = t.encode("utf8")
anno.LabelText = "l " + t
FreeCAD.Console.PrintMessage("Object: " + n + ", Element: " + el + ", Length: " + utf8_decode(t) + "\n")
FreeCAD.SurveyObserver.totalLength += u.Value
@@ -884,17 +904,18 @@ def survey(callback=False):
if FreeCAD.SurveyObserver.totalLength:
u = FreeCAD.Units.Quantity(FreeCAD.SurveyObserver.totalLength,FreeCAD.Units.Length)
t = u.getUserPreferred()[0]
t = t.encode("utf8")
if sys.version_info.major < 3:
t = t.encode("utf8")
msg += " Length: " + t
if FreeCAD.SurveyObserver.totalArea:
u = FreeCAD.Units.Quantity(FreeCAD.SurveyObserver.totalArea,FreeCAD.Units.Area)
t = u.getUserPreferred()[0]
t = t.encode("utf8").replace("^2","²")
t = string_replace(t, "^2","²")
msg += " Area: " + t
if FreeCAD.SurveyObserver.totalVolume:
u = FreeCAD.Units.Quantity(FreeCAD.SurveyObserver.totalVolume,FreeCAD.Units.Volume)
t = u.getUserPreferred()[0]
t = t.encode("utf8").replace("^3","³")
t = string_replace(t, "^3","³")
msg += " Volume: " + t
FreeCAD.Console.PrintMessage(msg+"\n")
@@ -1001,7 +1022,7 @@ class SurveyTaskPanel:
if hasattr(FreeCAD,"SurveyObserver"):
u = FreeCAD.Units.Quantity(FreeCAD.SurveyObserver.totalArea,FreeCAD.Units.Area)
t = u.getUserPreferred()[0]
t = t.encode("utf8").replace("^2","²")
t = string_replace(t, "^2","²")
if FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch").GetBool("surveyUnits",True):
QtGui.QApplication.clipboard().setText(t)
else:
@@ -1038,7 +1059,7 @@ class SurveyTaskPanel:
def update(self,column,txt):
item = QtGui.QTreeWidgetItem(self.tree)
self.tree.setCurrentItem(item)
item.setText(column,txt.decode("utf8"))
item.setText(column,utf8_decode(txt))
def setDescr(self,item,col):
self.descr.setText(item.text(0))