当前位置: 首页>>代码示例>>Python>>正文


Python Screen.any_to_px方法代码示例

本文整理汇总了Python中singleton_store.Screen.any_to_px方法的典型用法代码示例。如果您正苦于以下问题:Python Screen.any_to_px方法的具体用法?Python Screen.any_to_px怎么用?Python Screen.any_to_px使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在singleton_store.Screen的用法示例。


在下文中一共展示了Screen.any_to_px方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: add_atom_to

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def add_atom_to( self, a1, bond_to_use=None, pos=None):
   """adds new atom bound to atom id with bond, the position of new atom can be specified in pos or is
   decided calling find_place(), if x, y is specified and matches already existing atom it will be
   used instead of creating new one """
   if pos != None:
     x, y = pos
   else:
     if bond_to_use:
       x, y = self.find_place( a1, Screen.any_to_px( self.paper.standard.bond_length), added_order=bond_to_use.order)
     else:
       x, y = self.find_place( a1, Screen.any_to_px( self.paper.standard.bond_length))
   a2 = None # the new atom
   if pos:
     # try if the coordinates are the same as of another atom
     for at in self.atoms:
       if abs( at.x - x) < 2 and abs( at.y - y) < 2 and not at == a1:
         a2 = at
         break
   if not a2:
     a2 = self.create_new_atom( x, y)
   b = bond_to_use or bond( self.paper.standard, order=1, type='n')
   self.add_edge( a1, a2, e=b)
   b.molecule = self
   b.draw()
   return a2, b
开发者ID:sctincman,项目名称:bkchem,代码行数:27,代码来源:molecule.py

示例2: switch_to_type

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def switch_to_type( self, type):
   if type in "wha" and self.type not in "wha":
     # get the standard width only if the changes is not within the "wha" group
     self.wedge_width = Screen.any_to_px( self.paper.standard.wedge_width)
   elif type not in "wha" and self.type in "wha":
     # when both are outside the 'wha' do the similar
     self.bond_width = Screen.any_to_px( self.paper.standard.bond_width)
   self.type = type
开发者ID:sctincman,项目名称:bkchem,代码行数:10,代码来源:bond.py

示例3: read_standard_values

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def read_standard_values( self, standard, old_standard=None):
   meta_enabled.read_standard_values( self, standard, old_standard=old_standard)
   # wedge width
   if not old_standard or (standard.wedge_width != old_standard.wedge_width):
     self.wedge_width = Screen.any_to_px( standard.wedge_width)
   # line width
   if not old_standard or (standard.line_width != old_standard.line_width):
     self.line_width = Screen.any_to_px( standard.line_width)
   # bond width
   if not old_standard or (standard.bond_width != old_standard.bond_width):
     if hasattr( self, 'bond_width'):
       self.bond_width = misc.signum( self.bond_width) * Screen.any_to_px( standard.bond_width)
     else:
       self.bond_width = Screen.any_to_px( standard.bond_width)
开发者ID:sctincman,项目名称:bkchem,代码行数:16,代码来源:bond.py

示例4: get_transformed_template

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def get_transformed_template(self, n, coords, type="empty", paper=None):
     """type is type of connection - 'bond', 'atom1'(for single atom), 'atom2'(for atom with more than 1 bond), 'empty'"""
     pap = paper or Store.app.paper
     pap.onread_id_sandbox_activate()  # must be here to mangle the ids
     current = molecule(pap, package=self.templates[n])
     pap.onread_id_sandbox_finish(apply_to=[current])  # id mangling
     current.name = ""
     self._scale_ratio = 1
     trans = transform()
     # type empty - just draws the template - no conection
     if type == "empty":
         xt1, yt1 = current.t_atom.get_xy()
         xt2, yt2 = current.next_to_t_atom.get_xy()
         x1, y1 = coords
         bond_length = Screen.any_to_px(Store.app.paper.standard.bond_length)
         current.delete_items([current.t_atom], redraw=0, delete_single_atom=0)
         trans.set_move(-xt2, -yt2)
         trans.set_scaling(bond_length / math.sqrt((xt1 - xt2) ** 2 + (yt1 - yt2) ** 2))
         trans.set_move(x1, y1)
     # type atom
     elif type == "atom1" or type == "atom2":
         xt1, yt1 = current.t_atom.get_xy()
         xt2, yt2 = current.next_to_t_atom.get_xy()
         x1, y1, x2, y2 = coords
         trans.set_move(-xt2, -yt2)
         trans.set_scaling(
             math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) / math.sqrt((xt1 - xt2) ** 2 + (yt1 - yt2) ** 2)
         )
         trans.set_rotation(math.atan2(xt1 - xt2, yt1 - yt2) - math.atan2(x1 - x2, y1 - y2))
         trans.set_move(x2, y2)
     # type bond
     elif type == "bond":
         if not (current.t_bond_first and current.t_bond_second):
             warn("this template is not capable to be added to bond - sorry.")
             return None
         current.delete_items([current.t_atom], redraw=0, delete_single_atom=0)
         xt1, yt1 = current.t_bond_first.get_xy()
         xt2, yt2 = current.t_bond_second.get_xy()
         x1, y1, x2, y2 = coords
         self._scale_ratio = math.sqrt((x1 - x2) ** 2 + (y1 - y2) ** 2) / math.sqrt(
             (xt1 - xt2) ** 2 + (yt1 - yt2) ** 2
         )  # further needed for bond.bond_width transformation
         trans.set_move(-xt1, -yt1)
         trans.set_rotation(math.atan2(xt1 - xt2, yt1 - yt2) - math.atan2(x1 - x2, y1 - y2))
         trans.set_scaling(self._scale_ratio)
         trans.set_move(x1, y1)
     self.transform_template(current, trans)
     # remove obsolete info from template
     if type == "atom1":
         current.delete_items([current.t_atom], redraw=0, delete_single_atom=0)
     elif type == "atom2":
         current.t_atom.x = x1
         current.t_atom.y = y1
     current.t_atom = None
     current.t_bond_first = None
     current.t_bond_second = None
     # return ready template
     return current
开发者ID:bartlebee,项目名称:bkchem,代码行数:60,代码来源:temp_manager.py

示例5: expand

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
  def expand( self):
    """expands the group and returns list of atoms that new drawing afterwords"""
    if self.group_type == "builtin":
      names = Store.gm.get_template_names()
      if self.symbol in names:
        a2 = self.neighbors[0]
        x1, y1 = a2.get_xy()
        x2, y2 = self.get_xy()
        self.group_graph = Store.gm.get_transformed_template( names.index( self.symbol), (x1,y1,x2,y2), type='atom1')
        replacement = self.group_graph.next_to_t_atom
      else:
        print "unknown group %s" % a.symbol
        return None

    elif self.group_type == "chain":
      self.group_graph = self.molecule.create_graph()
      p = PT.formula_dict( self.symbol)
      n = p['C']
      last = None
      for i in range( n):
        v = self.group_graph.add_vertex()
        v.x, v.y = None, None
        if last:
          self.group_graph.add_edge( last, v)
        last = v
      replacement = self.group_graph.vertices[0]
      replacement.x = self.x
      replacement.y = self.y

    elif self.group_type == "implicit":
      if not self.group_graph:
        self.set_name( self.symbol, occupied_valency=self.occupied_valency)
      for v in self.group_graph.vertices:
        v.x, v.y = None, None
        v.show = v.symbol != 'C'
      assert self.connecting_atom != None
      replacement = self.connecting_atom
      replacement.x = self.x
      replacement.y = self.y
      
    self.molecule.eat_molecule( self.group_graph)
    self.molecule.move_bonds_between_atoms( self, replacement)
    self.molecule.delete_vertex( self)
    if self.occupied_valency:
      oasa.coords_generator.calculate_coords( self.molecule, bond_length=-1)
    else:
      # if the group is the only vertex of the molecule we must set the bond_length explicitly
      # and the move the whole molecule
      replacement.x = None
      replacement.y = None
      x, y = self.x, self.y
      oasa.coords_generator.calculate_coords( self.molecule, bond_length=Screen.any_to_px( self.paper.standard.bond_length))
      dx = x - replacement.x
      dy = y - replacement.y
      [a.move( dx, dy) for a in self.group_graph.vertices]
    return self.group_graph.vertices
开发者ID:bartlebee,项目名称:bkchem,代码行数:58,代码来源:group.py

示例6: oasa_mol_to_bkchem_mol

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
def oasa_mol_to_bkchem_mol( mol, paper):
  m = molecule.molecule( paper)
  if None in reduce( operator.add, [[a.x, a.y] for a in mol.atoms], []):
    calc_position = 0
  else:
    calc_position = 1
    
  minx = None
  maxx = None
  miny = None
  maxy = None
  # atoms
  for a in mol.vertices:
    a2 = oasa_atom_to_bkchem_atom( a, paper, m)
    m.insert_atom( a2)
    if calc_position:
      # data for rescaling
      if not maxx or a2.x > maxx:
        maxx = a2.x
      if not minx or a2.x < minx:
        minx = a2.x
      if not miny or a2.y < miny:
        miny = a2.y
      if not maxy or a2.y > maxy:
        maxy = a2.y
  # bonds
  bond_lengths = []
  for b in mol.edges:
    b2 = oasa_bond_to_bkchem_bond( b, paper)
    aa1, aa2 = b.vertices
    atom1 = m.atoms[ mol.vertices.index( aa1)]
    atom2 = m.atoms[ mol.vertices.index( aa2)]
    m.add_edge( atom1, atom2, b2)
    b2.molecule = m
    if calc_position:
      bond_lengths.append( math.sqrt( (b2.atom1.x-b2.atom2.x)**2 + (b2.atom1.y-b2.atom2.y)**2))
  # rescale
  if calc_position:
    bl = sum( bond_lengths) / len( bond_lengths)
    scale = Screen.any_to_px( paper.standard.bond_length) / bl
    movex = (maxx+minx)/2
    movey = (maxy+miny)/2
    trans = transform3d.transform3d()
    trans.set_move( -movex, -movey, 0)
    trans.set_scaling( scale)
    trans.set_move( 320, 240, 0)
    for a in m.atoms:
      a.x, a.y, a.z = trans.transform_xyz( a.x, a.y, a.z)
  return m
开发者ID:bartlebee,项目名称:bkchem,代码行数:51,代码来源:oasa_bridge.py

示例7: read_standard_values

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def read_standard_values( self, standard, old_standard=None):
   meta_enabled.read_standard_values( self, standard, old_standard=old_standard)
   if not old_standard or (standard.line_width != old_standard.line_width):
     self.line_width = Screen.any_to_px( standard.line_width)    
开发者ID:bartlebee,项目名称:bkchem,代码行数:6,代码来源:arrow.py

示例8: _set_y

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def _set_y( self, y):
   self._y = Screen.any_to_px( y)
开发者ID:bartlebee,项目名称:bkchem,代码行数:4,代码来源:special_parents.py

示例9: _set_x

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def _set_x( self, x):
   self._x = Screen.any_to_px( x)
开发者ID:bartlebee,项目名称:bkchem,代码行数:4,代码来源:special_parents.py

示例10: y

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def y(self, y):
   self._y = Screen.any_to_px( y)
开发者ID:sctincman,项目名称:bkchem,代码行数:4,代码来源:special_parents.py

示例11: x

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
 def x( self, x):
   self._x = Screen.any_to_px( x)
开发者ID:sctincman,项目名称:bkchem,代码行数:4,代码来源:special_parents.py

示例12: done

# 需要导入模块: from singleton_store import Screen [as 别名]
# 或者: from singleton_store.Screen import any_to_px [as 别名]
  def done( self, button):
    """called on dialog exit"""
    self.dialog.deactivate()
    if button != _('OK'):
      pass
    else:
      #print(self.marks.get())
      # apply changes
      for o in self.items:
        change = 0
        # ATOM
        if o.object_type == 'atom':
          a = self.atom_show.index( Pmw.SELECT)
          if a != 2:
            o.show = a
            change = 1
          # positionning
          a = self.atom_pos.index( Pmw.SELECT)
          if a != 2:
            o.pos = ('center-first', 'center-last')[ a]
            change = 1
          if self.atom_charge.get():
            a = int( self.atom_charge.get())
            if hasattr( o, 'charge') and o.charge != a:
              o.charge = a
            change = 1
          # hydrogens
          a = int( self.atom_show_h.index( Pmw.SELECT))
          if a != 2:
            o.show_hydrogens = a
            change = 1
          # font is in common now
        # BOND
        elif o.object_type == 'bond':
          # width is in common now
          # bond_width
          d = Screen.any_to_px( self.bond_dist.getvalue())
          if d:
            if d != abs( o.bond_width):
              o.bond_width = d * misc.signum( o.bond_width)
              change = 1
          # wedge_width
          d = Screen.any_to_px( self.wedge_width.getvalue())
          if d:
            if d != o.wedge_width:
              o.wedge_width = d
              change = 1
          # ratio
          ratio = self.double_length_ratio.getvalue()
          if ratio:
            ratio = float( self.double_length_ratio.getvalue())
            if ratio != o.double_length_ratio:
              o.double_length_ratio = ratio
              change = 1

        # ARROW - most is in common now
        elif o.object_type == 'arrow':
          if self.arrow_start_changed:
            o.set_pins( start = self.arrow_start.get())
            change = 1
          if self.arrow_end_changed:
            o.set_pins( end = self.arrow_end.get())
            change = 1
          if self.spline_changed:
            o.spline = self.spline.get()
            change = 1

        # TEXT - all is in common now
        # PLUS - all is in common now
        # VECTOR - all is in common now

        # COMMON PROPERTIES
        # LINE COLOR
        if hasattr( o, 'line_color') and self.line_color.color:
          if self.line_color.color != o.line_color:
            o.line_color = self.line_color.color
            change = 1
        # AREA COLOR
        if hasattr( o, 'area_color') and self.area_color.color:
          if self.area_color.color != o.area_color:
            o.area_color = self.area_color.color
            change = 1
        # LINE WIDTH
        if hasattr( o, 'line_width'):
          w = Screen.any_to_px( self.line_width.getvalue())
          if w:
            if w != o.line_width:
              o.line_width = w
              change = 1
        # FONT
        if hasattr( o, 'font_family'):
          if self.font_size.get():
            a = int( self.font_size.get())
            o.font_size = a
            change = 1
          if self.font_family.getcurselection() and self.font_family.getcurselection()[0] != self.used_family:
            a = self.font_family.getcurselection()[0]
            o.font_family = a
            change = 1

#.........这里部分代码省略.........
开发者ID:sctincman,项目名称:bkchem,代码行数:103,代码来源:dialogs.py


注:本文中的singleton_store.Screen.any_to_px方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。