def __call__(self, x, y, text, text_anchor='inherit', rotation=None): ''' text_anchor = start | middle | end | inherit rotation is in degress, and is done about x,y ''' try: XML = '''<text x="%f" y="%f" font-family="%s" font-size="%s" fill="%s" text-anchor="%s" %s >%s</text>''' % ( x, y, self.font_family, self.font_size, self.fill, text_anchor, 'transform="rotate(%f %f,%f)"' % (rotation,x,y) if rotation != None else '', text ) except UnicodeDecodeError: text_utf8 = unicode( text, 'utf8' ) XML = '''<text x="%f" y="%f" font-family="%s" font-size="%s" fill="%s" text-anchor="%s" %s >%s</text>''' % ( x, y, self.font_family, self.font_size, self.fill, text_anchor, 'transform="rotate(%f %f,%f)"' % (rotation,x,y) if rotation != None else '', text_utf8 ) return XML
def generateWidget( self, dimensioningProcess ): self.spinbox = QtGui.QDoubleSpinBox() self.spinbox.setValue(0) d.rotation = 0 self.spinbox.setMinimum( -180 ) self.spinbox.setMaximum( 180 ) self.spinbox.setDecimals( 1 ) self.spinbox.setSingleStep( 5 ) self.spinbox.setSuffix(unicode('°','utf8')) self.spinbox.valueChanged.connect(self.valueChanged) return DimensioningTaskDialog_generate_row_hbox('rotation', self.spinbox)
def __init__(self, xml): p_header_end = xml.find('>') self.header = xml[:p_header_end] try: self.text = unicode(xml[p_header_end + 1:-len('</text>')], 'utf8') except TypeError: self.text = unicode(xml[p_header_end + 1:-len('</text>')]) #import FreeCAD #FreeCAD.Console.PrintMessage(self.text) self.parms = {} h = self.header p = h.find('=') while p > -1: i = p - 1 key = '' while key == '' or h[i] != ' ': if h[i] != ' ': key = h[i] + key i = i - 1 p1 = h.find('"', p) p2 = h.find('"', p1 + 1) self.parms[key] = h[p1 + 1:p2] p = self.header.find('=', p + 1) self.x = float(self.parms['x']) self.y = float(self.parms['y']) self.font_family = self.parms.get('font-family', 'inherit') self.font_size = self.parms.get('font-size', 'inherit') if 'style' in self.parms: #for backwards compadiability self.font_size = self.parms['style'][len('font-size:'):] self.fill = self.parms.get('fill', 'rgb(0,0,0)') self.transform = self.parms.get('transform') if self.transform != None: t = self.transform if 'rotate(' in t: self.rotation = float(t[t.find('rotate(') + len('rotate('):].split()[0]) else: self.rotation = 0 else: self.rotation = 0 self.text_anchor = self.parms.get('text-anchor', 'inherit')
def __init__(self, xml): p_header_end = xml.find('>') self.header = xml[:p_header_end] try: self.text = unicode(xml[ p_header_end+1:-len('</text>') ],'utf8') except TypeError: self.text = unicode(xml[ p_header_end+1:-len('</text>') ]) #import FreeCAD #FreeCAD.Console.PrintMessage(self.text) self.parms = {} h = self.header p = h.find('=') while p > -1: i = p-1 key = '' while key == '' or h[i] != ' ': if h[i] != ' ': key = h[i] + key i = i - 1 p1 = h.find('"', p) p2 = h.find('"', p1+1) self.parms[key] = h[p1+1:p2] p = self.header.find('=', p+1) self.x = float(self.parms['x']) self.y = float(self.parms['y']) self.font_family = self.parms.get('font-family', 'inherit') self.font_size = self.parms.get('font-size','inherit') if 'style' in self.parms: #for backwards compadiability self.font_size = self.parms['style'][len('font-size:'):] self.fill = self.parms.get('fill','rgb(0,0,0)') self.transform = self.parms.get('transform') if self.transform != None: t = self.transform if 'rotate(' in t: self.rotation = float(t[t.find('rotate(')+len('rotate('):].split()[0]) else: self.rotation = 0 else: self.rotation = 0 self.text_anchor = self.parms.get('text-anchor','inherit')
def registerPreference( self, name, defaultValue=None, label=None, kind='guess', **extraKWs): if not name in dimensioningPreferences: if defaultValue == None: raise ValueError("registerPreferenceError: %s default required in first definition" % name) if type(defaultValue) == str: defaultValue = unicode(defaultValue, 'utf8') class_key = kind if kind != 'guess' else str(type(defaultValue)) if class_key in DimensioningPreferenceClasses: dimensioningPreferences[name] = DimensioningPreferenceClasses[class_key](name, defaultValue, label, **extraKWs) else: App.Console.PrintError("registerPreferenceError: %s : defaultValue %s, kind %s [class_key %s] not understood, ignoring!\n" % (name, defaultValue, kind, class_key) ) return elif defaultValue != None: raise ValueError("registerPreferenceError: default for %s redeclared" % name) self.preferences.append( dimensioningPreferences[name] )
def __call__(self, x, y, text, text_anchor='inherit', rotation=None): ''' text_anchor = start | middle | end | inherit rotation is in degress, and is done about x,y ''' try: XML = '''<text x="%f" y="%f" font-family="%s" font-size="%s" fill="%s" text-anchor="%s" %s >%s</text>''' % ( x, y, self.font_family, self.font_size, self.fill, text_anchor, 'transform="rotate(%f %f,%f)"' % (rotation, x, y) if rotation != None else '', text) except UnicodeDecodeError: text_utf8 = unicode(text, 'utf8') XML = '''<text x="%f" y="%f" font-family="%s" font-size="%s" fill="%s" text-anchor="%s" %s >%s</text>''' % ( x, y, self.font_family, self.font_size, self.fill, text_anchor, 'transform="rotate(%f %f,%f)"' % (rotation, x, y) if rotation != None else '', text_utf8) return XML
def EditDimensionText( event, referer, elementXML, elementParms, elementViewObject ): d.dimToEdit = elementViewObject d.elementXML = elementXML selectionOverlay.hideSelectionGraphicsItems() e = elementXML debugPrint(3, e.XML[e.pStart:e.pEnd] ) svgText = SvgTextParser( e.XML[e.pStart:e.pEnd] ) d.svgText = svgText debugPrint(3, u'editing %s' % unicode(svgText)) widgets = dict( [c.objectName(), c] for c in dialog.children() ) widgets['textLineEdit'].setText( svgText.text ) widgets['sizeLineEdit'].setText( svgText.font_size) widgets['colorLineEdit'].setText( svgText.fill ) widgets['familyLineEdit'].setText( svgText.font_family ) widgets['doubleSpinBox_rotation'].setValue(svgText.rotation) widgets['placeButton'].setText('Change') dialog.setWindowTitle('Editing %s' % elementViewObject.Name) dialog.show()
def EditDimensionText(event, referer, elementXML, elementParms, elementViewObject): d.dimToEdit = elementViewObject d.elementXML = elementXML selectionOverlay.hideSelectionGraphicsItems() e = elementXML debugPrint(3, e.XML[e.pStart:e.pEnd]) svgText = SvgTextParser(e.XML[e.pStart:e.pEnd]) d.svgText = svgText debugPrint(3, u'editing %s' % unicode(svgText)) widgets = dict([c.objectName(), c] for c in dialog.children()) widgets['textLineEdit'].setText(svgText.text) widgets['sizeLineEdit'].setText(svgText.font_size) widgets['colorLineEdit'].setText(svgText.fill) widgets['familyLineEdit'].setText(svgText.font_family) widgets['doubleSpinBox_rotation'].setValue(svgText.rotation) widgets['placeButton'].setText('Change') dialog.setWindowTitle('Editing %s' % elementViewObject.Name) dialog.show()
def get_values_from_dimension_object( self, obj, KWs ): unit_text = unicode( obj.unit_scheme, 'utf8' ) KWs['unit_scaling_factor'] = self.unit_factor( unit_text, obj.unit_custom_scale )
def FreeCAD_parm_to_val( self, FreeCAD_parm ): return [ unicode( line, 'utf8' ) for line in FreeCAD_parm.split('\n') ]
def get_values_from_dimension_object( self, obj, KWs ): KWs[self.name] = unicode( getattr( obj, self.name ), 'utf8' )
def getDefaultValue(self): encoded_value = self.dd_parms.GetString( self.name, encode_if_py2(self.defaultValue[0]) ) return unicode( encoded_value, 'utf8' )