Beispiel #1
0
 def _draw_text(self, parent, xy, text, font_name="Arial", font_size=16):
     x, y = xy
     dom_extensions.textOnlyElementUnder(parent, "text", text,
                                         (("x", str(x)), ("y", str(y)),
                                          ("font-family", font_name),
                                          ("font-size", str(font_size)),
                                          ('fill', "#000")))
Beispiel #2
0
 def _draw_text( self, parent, xy, text, font_name="Arial", font_size=16):
   x, y = xy
   dom_extensions.textOnlyElementUnder( parent, "text", text,
                                        (( "x", str( x)),
                                         ( "y", str( y)),
                                         ( "font-family", font_name),
                                         ( "font-size", str( font_size)),
                                         ( 'fill', "#000")))
Beispiel #3
0
  def get_CML_dom( self, doc):
    if self.not_enough_data():
      return None
    out = doc.createElement( 'bond')
    out.setAttribute('order', str( self.order))
    if self.stereo:
      dom_ext.textOnlyElementUnder( out, 'stereo', self.stereo)
    out.setAttribute( 'atomRefs2', '%s %s' % ( str( self.atom1), str( self.atom2)))

    return out
Beispiel #4
0
    def get_CML_dom(self, doc):
        if self.not_enough_data():
            return None
        out = doc.createElement('bond')
        out.setAttribute('order', str(self.order))
        if self.stereo:
            dom_ext.textOnlyElementUnder(out, 'stereo', self.stereo)
        out.setAttribute('atomRefs2',
                         '%s %s' % (str(self.atom1), str(self.atom2)))

        return out
Beispiel #5
0
  def write_to_dom(self, doc=None):
    if not doc:
      doc = dom.Document()

    top = doc.createElement("bkchem-prefs")
    doc.appendChild(top)

    for k, v in self.data.items():
      itype = 'UnicodeType'
      for tn in types.__dict__:
        if type(v) == types.__dict__[tn]:
          itype = tn
          break
      # Deal with string types explicitly
      if sys.version_info[0] > 2:
        if isinstance(v, bytes):
          v = v.decode('utf-8')
          itype = 'UnicodeType'
        elif isinstance(v, str):
          itype = 'UnicodeType'
      else:
        if isinstance(v, str):
          v = v.decode('utf-8')
          itype = 'UnicodeType'
        elif isinstance(v, unicode):
          itype = 'UnicodeType'
      el = dom_extensions.textOnlyElementUnder(top, k, v,
                                               attributes = (("type", itype),))
    return doc
Beispiel #6
0
 def get_package( self, doc):
   el = doc.createElement( "fragment")
   el.setAttribute( "id", self.id)
   el.setAttribute( "type", self.type)
   dom_ext.textOnlyElementUnder( el, "name", xml.sax.saxutils.escape( self.name))
   for e in self.edges:
     dom_ext.elementUnder( el, "bond", (("id", e.id),))
   for v in self.vertices:
     dom_ext.elementUnder( el, "vertex", (("id", v.id),))
   for k, v in self.properties.iteritems():
     itype = 'UnicodeType'
     for tn in types.__dict__:
       if type( v) == types.__dict__[ tn]:
         itype = tn
         break
     dom_ext.elementUnder( el, "property", (("name",str( k)),
                                            ("value",str( v)),
                                            ("type", itype)))
   return el
Beispiel #7
0
  def get_svg_element( self, doc):
    e = doc.createElement( 'g')
    x, y = self.x, self.y
    font = tkFont.Font( family=self.atom.font_family, size=self.size)
    dx = font.measure( self.text) / 2
    y += font.metrics('descent')

    text = dom_extensions.textOnlyElementUnder( e, 'text', self.text,
                                                (('font-size', "%dpt" % self.size),
                                                 ('font-family', self.atom.font_family),
                                                 ( "x", str( x - dx)),
                                                 ( "y", str( y)),
                                                 ( 'fill', self.line_color)))
    return e
Beispiel #8
0
 def get_CML_dom( self, doc):
   if self.not_enough_data():
     return None
   out = doc.createElement( 'bond')
   #atom1
   dom_ext.textOnlyElementUnder( out, 'string', str( self.atom1), (('builtin','atomRef'),
                                                                   ('convention','CML')))
   #atom2
   dom_ext.textOnlyElementUnder( out, 'string', str( self.atom2), (('builtin','atomRef'),
                                                                   ('convention','CML')))
   #order
   dom_ext.textOnlyElementUnder( out, 'string', str( self.order), (('builtin','order'),
                                                                   ('convention','CML')))
   #stereo
   if self.stereo:
     dom_ext.textOnlyElementUnder( out, 'string', str( self.stereo), (('builtin','stereo'),
                                                                      ('convention','CML')))
   return out
Beispiel #9
0
  def write_to_dom( self, doc=None):
    if not doc:
      doc = dom.Document()

    top = doc.createElement( "bkchem-prefs")
    doc.appendChild( top)

    for k, v in self.data.iteritems():
      itype = 'UnicodeType'
      for tn in types.__dict__:
        if type( v) == types.__dict__[ tn]:
          itype = tn
          break
      if itype == "StringType":
        v = v.decode('utf-8')
        itype = 'UnicodeType'
      el = dom_extensions.textOnlyElementUnder( top, k, unicode( v),
                                                attributes = (("type", itype),))
    return doc
Beispiel #10
0
 def add_plus(self, p):
     """adds plus item to SVG document"""
     item = p.item
     x1, y1 = p.get_xy()
     x, y, x2, y2 = self.paper.bbox(item)
     if p.area_color:
         # it is not needed to export the rectangle in case its transparent
         dom_extensions.elementUnder(self.group, 'rect',
                                     (('x', self.convert(x)),
                                      ('y', self.convert(y)),
                                      ('width', self.convert(x2 - x)),
                                      ('height', self.convert(y2 - y)),
                                      ('fill', self.cc(p.area_color)),
                                      ('stroke', self.cc(p.area_color))))
     y1 += (y2 - y) / 4.0
     text = dom_extensions.textOnlyElementUnder(
         self.group, 'text', '+',
         (('font-size', "%d%s" % (p.font_size, pt_or_px)),
          ('font-family', p.font_family), ("x", self.convert(x)),
          ("y", self.convert(round(y1))), ('fill', self.cc(p.line_color))))
Beispiel #11
0
 def add_plus( self, p):
   """adds plus item to SVG document"""
   item = p.item
   x1, y1 = p.get_xy()
   x, y, x2, y2 = self.paper.bbox( item)
   if p.area_color:
     # it is not needed to export the rectangle in case its transparent
     dom_extensions.elementUnder( self.group, 'rect',
                                  (( 'x', self.convert( x)),
                                   ( 'y', self.convert( y)),
                                   ( 'width', self.convert( x2-x)),
                                   ( 'height', self.convert( y2-y)),
                                   ( 'fill', self.cc( p.area_color)),
                                   ( 'stroke', self.cc( p.area_color))))
   y1 += (y2-y)/4.0
   text = dom_extensions.textOnlyElementUnder( self.group, 'text', '+',
                                               (('font-size', "%d%s" % (p.font_size, pt_or_px)),
                                                ('font-family', p.font_family),
                                                ( "x", self.convert( x)),
                                                ( "y", self.convert( round( y1))),
                                                ( 'fill', self.cc( p.line_color))))
Beispiel #12
0
 def get_CML_dom( self, doc):
   if self.not_enough_data():
     return None # raise cml_exception( "missing "+str( self.not_enough_data())+" in atom specification")
   out = doc.createElement( 'atom')
   #id
   dom_ext.textOnlyElementUnder( out, 'string', str( self.id), (('builtin','atomId'),
                                                                ('convention','CML')))
   #name
   dom_ext.textOnlyElementUnder( out, 'string', str( self.symbol), (('builtin','elementType'),
                                                                  ('convention','CML')))
   # x, y
   if self.z is None:
     dom_ext.textOnlyElementUnder( out, 'float', str( self.x), (('builtin','x2'),))
     dom_ext.textOnlyElementUnder( out, 'float', str( self.y), (('builtin','y2'),))
   else:
     dom_ext.textOnlyElementUnder( out, 'float', str( self.x), (('builtin','x3'),))
     dom_ext.textOnlyElementUnder( out, 'float', str( self.y), (('builtin','y3'),))
     dom_ext.textOnlyElementUnder( out, 'float', str( self.z), (('builtin','z3'),))
   return out