Files
2026-08-03 18:42:47 +08:00

46 lines
1.2 KiB
Python

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()' ]
]