from pymol.wizard import Wizard from pymol import cmd import pymol import types class Pseudoatom(Wizard): def __init__(self,mode='label',pos='[0.0,0.0,0.0]',_self=cmd): Wizard.__init__(self,_self) self.mode = mode if mode == 'label': self.prefix = r'Label text: \888' self.text = '' self.pos = pos def get_event_mask(self): return Wizard.event_mask_key def do_key(self,k,x,y,m): if k in [8,127]: self.text = self.text[:-1] elif k==27: self.cmd.set_wizard() elif k==32: self.text = self.text + " " elif k>32: self.text = self.text + chr(k) elif k==10 or k==13: self.text = self.text.strip() if self.mode=='label': obj_name = self.cmd.get_unused_name(self.text[0:14].lower(),0) self.cmd.pseudoatom(obj_name,pos=self.pos,label=self.text) self.cmd.set_wizard() self.cmd.refresh_wizard() return 1 def get_prompt(self): self.prompt = [ self.prefix + self.text + "_" ] return self.prompt def get_panel(self): return [ [ 2, 'Cancel', 'cmd.set_wizard()' ] ]