60 lines
1.3 KiB
Python
60 lines
1.3 KiB
Python
|
|
# demonstrate how to capture PyMOL's atom selection events
|
|
|
|
from pymol.wizard import Wizard
|
|
from pymol import cmd
|
|
import pymol
|
|
|
|
sele_name = "lb" # must be set to "lb" for now...
|
|
|
|
class PickWizard(Wizard):
|
|
|
|
def set_buttons(self):
|
|
|
|
# just use selections (disable atom and bond picking)
|
|
|
|
cmd.button('m','ctrl','+lb')
|
|
cmd.button('r','ctrl','none')
|
|
cmd.button('r','ctsh','none')
|
|
|
|
def get_prompt(self):
|
|
|
|
# returns prompt for the viewer window (optional)
|
|
|
|
if sele_name in cmd.get_names('selections'):
|
|
n_atom = cmd.count_atoms(sele_name)
|
|
else:
|
|
n_atom = 0
|
|
if n_atom:
|
|
list = cmd.identify(sele_name)
|
|
return ["%d atoms selected..."%n_atom,str(list)]
|
|
else:
|
|
return ["Please select some atoms..."]
|
|
|
|
def do_select(self,name):
|
|
|
|
# handle mouse selection callback
|
|
|
|
if not sele_name in cmd.get_names('selections'):
|
|
cmd.select(sele_name,'none')
|
|
cmd.enable(sele_name)
|
|
cmd.refresh_wizard()
|
|
|
|
def get_panel(self):
|
|
return [
|
|
[ 1, 'Example Wizard',''],
|
|
[ 2, 'Clear Selection',
|
|
'cmd.delete("'+sele_name+'");cmd.refresh_wizard()'],
|
|
]
|
|
|
|
wiz = PickWizard()
|
|
|
|
# make this the active wizard
|
|
|
|
cmd.set_wizard(wiz)
|
|
|
|
# reconfigure the mouse panel
|
|
|
|
wiz.set_buttons()
|
|
|