Merge branch 'master' into update
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user