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)
Esempio n. 3
0
 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] )
Esempio n. 6
0
 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()
Esempio n. 8
0
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' )