Files
PlantAI-dev/tools/pymol-open-source/modules/pymol/wizard/appearance.py
T
2026-08-03 18:42:47 +08:00

234 lines
8.8 KiB
Python

# Warren L. DeLano
from pymol.wizard import Wizard
from pymol import cmd
import pymol
saved_mode = 2 # toggle
saved_scope = 1 # byres
saved_what = 3 # sticks
saved_color = 5 # magenta
class Appearance(Wizard):
mode_dict = {
0 : ['Color', '_ cmd.color' ],
1 : ['Color (elem c)', '_ util.color_carbon' ],
2 : ['Toggle','_ cmd.toggle'],
3 : ['Show', '_ cmd.show'],
4 : ['Hide', '_ cmd.hide'],
5 : ['Select', '_ cmd.select'],
}
what_dict = {
1 : ['Lines', 'lines'],
2 : ['Nonbonded', 'nonbonded' ],
3 : ['Sticks', 'sticks' ],
4 : ['Ribbon', 'ribbon' ],
5 : ['Cartoon', 'cartoon' ],
6 : ['Labels', 'labels' ],
7 : ['Dots', 'dots' ],
8 : ['Spheres', 'spheres' ],
9 : ['NB Spheres', 'nb_spheres' ],
10: ['Mesh', 'mesh' ],
11: ['Surface', 'surface' ],
}
color_dict = {
1 : ['\\900red', 'red' ],
2 : ['\\090green', 'green' ],
3 : ['\\009blue' , 'blue' ],
4 : ['\\990yellow' , 'yellow' ],
5 : ['\\909magenta', 'magenta' ],
6 : ['\\099cyan' , 'cyan' ],
7 : ['\\955salmon' , 'salmon' ],
8 : ['\\595lime' , 'lime' ],
9 : ['\\967pink' , 'pink' ],
10 : ['\\559slate' , 'slate' ],
11 : ['\\949violet' , 'violet' ],
12 : ['\\950orange' , 'orange' ],
13 : ['\\059marine' , 'marine' ],
14 : ['\\905hotpink' , 'hotpink' ],
}
scope_dict = {
0: ['By Atom', ''],
1: ['By Residue', 'byres' ],
2: ['By Chain', 'bychain' ],
3: ['By Segment', 'bysegment' ],
4: ['By Object', 'byobject' ],
5: ['By Molecule', 'bymol' ],
}
def __init__(self,_self=cmd):
Wizard.__init__(self,_self)
self.cmd.deselect()
self.cmd.unpick()
self.selection_mode = self.cmd.get_setting_int("mouse_selection_mode")
self.cmd.set("mouse_selection_mode",0) # set selection mode to atomic
self.current_mode = saved_mode
self.current_what = saved_what
self.current_scope = saved_scope
self.current_color = saved_color
self.menu['mode'] = [
[2, 'Mode', '' ],
[1, self.mode_dict[0][0], 'cmd.get_wizard().set_mode(0)' ],
[1, self.mode_dict[1][0], 'cmd.get_wizard().set_mode(1)' ],
[ 0, '' , '' ],
[1, self.mode_dict[2][0], 'cmd.get_wizard().set_mode(2)' ],
[1, self.mode_dict[3][0], 'cmd.get_wizard().set_mode(3)' ],
[1, self.mode_dict[4][0], 'cmd.get_wizard().set_mode(4)' ],
# [1, self.mode_dict[5][0], 'cmd.get_wizard().set_mode(4)' ],
]
self.menu['what'] = [
[2, 'What', '' ],
[1, self.what_dict[1][0], 'cmd.get_wizard().set_what(1)' ],
[1, self.what_dict[2][0], 'cmd.get_wizard().set_what(2)' ],
[1, self.what_dict[3][0], 'cmd.get_wizard().set_what(3)' ],
[1, self.what_dict[4][0], 'cmd.get_wizard().set_what(4)' ],
[1, self.what_dict[5][0], 'cmd.get_wizard().set_what(5)' ],
[0, '', '' ],
[1, self.what_dict[6][0], 'cmd.get_wizard().set_what(6)' ],
[0, '', '' ],
[1, self.what_dict[7][0], 'cmd.get_wizard().set_what(7)' ],
[1, self.what_dict[8][0], 'cmd.get_wizard().set_what(8)' ],
[1, self.what_dict[9][0], 'cmd.get_wizard().set_what(9)' ],
[0, '', '' ],
[1, self.what_dict[10][0], 'cmd.get_wizard().set_what(10)' ],
[1, self.what_dict[11][0], 'cmd.get_wizard().set_what(11)' ],
]
self.menu['color'] = [
[2, 'Color', '' ],
[1, self.color_dict[1][0], 'cmd.get_wizard().set_color(1)' ],
[1, self.color_dict[2][0], 'cmd.get_wizard().set_color(2)' ],
[1, self.color_dict[3][0], 'cmd.get_wizard().set_color(3)' ],
[1, self.color_dict[4][0], 'cmd.get_wizard().set_color(4)' ],
[1, self.color_dict[5][0], 'cmd.get_wizard().set_color(5)' ],
[1, self.color_dict[6][0], 'cmd.get_wizard().set_color(6)' ],
[1, self.color_dict[7][0], 'cmd.get_wizard().set_color(7)' ],
[1, self.color_dict[8][0], 'cmd.get_wizard().set_color(8)' ],
[1, self.color_dict[9][0], 'cmd.get_wizard().set_color(9)' ],
[1, self.color_dict[10][0], 'cmd.get_wizard().set_color(10)' ],
[1, self.color_dict[11][0], 'cmd.get_wizard().set_color(11)' ],
[1, self.color_dict[12][0], 'cmd.get_wizard().set_color(12)' ],
[1, self.color_dict[13][0], 'cmd.get_wizard().set_color(13)' ],
[1, self.color_dict[14][0], 'cmd.get_wizard().set_color(14)' ],
]
self.menu['scope'] = [
[ 2, 'Scope', ''],
[ 1, self.scope_dict[0][0], 'cmd.get_wizard().set_scope(0)' ],
[ 1, self.scope_dict[1][0], 'cmd.get_wizard().set_scope(1)' ],
[ 1, self.scope_dict[2][0], 'cmd.get_wizard().set_scope(2)' ],
[ 1, self.scope_dict[3][0], 'cmd.get_wizard().set_scope(3)' ],
[ 1, self.scope_dict[4][0], 'cmd.get_wizard().set_scope(4)' ],
[ 0, '' , '' ],
[ 1, self.scope_dict[5][0], 'cmd.get_wizard().set_scope(5)' ],
]
def set_scope(self,scope):
scope = int(scope)
if scope in self.scope_dict:
self.current_scope = scope
self.cmd.refresh_wizard()
def set_what(self,what):
what = int(what)
if what in self.what_dict:
self.current_what = what
self.cmd.refresh_wizard()
def set_color(self,color):
color = int(color)
if color in self.color_dict:
self.current_color = color
self.cmd.refresh_wizard()
def set_mode(self,mode):
mode = int(mode)
if mode in self.mode_dict:
self.current_mode = mode
self.cmd.refresh_wizard()
def undo(self):
print("no undo!")
def get_prompt(self):
self.prompt = []
return self.prompt
def get_panel(self):
panel = [
[ 1, 'Appearance Wizard',''],
[ 3, self.mode_dict[self.current_mode][0], 'mode' ],
]
if self.current_mode in [0,1]: # color mode
panel.append(
[ 3, self.color_dict[self.current_color][0], 'color' ])
elif self.current_mode in [2,3,4]: # what mode
panel.append(
[ 3, self.what_dict[self.current_what][0], 'what' ])
else: # select mode
panel.append(
[ 1, 'Atoms' , '' ])
panel.extend([
[ 3, self.scope_dict[self.current_scope][0], 'scope' ],
# [ 2, 'Undo', 'cmd.get_wizard().undo()' ],
[ 2, 'Done','cmd.set_wizard()'],
])
return panel
def do_pick(self,bondFlag):
if self.current_mode in [0,1]: # color
sele = "(%s pk1)"%self.scope_dict[self.current_scope][1]
color = self.color_dict[self.current_color][1]
mode = self.mode_dict[self.current_mode][1]
cmmd = mode+'("%s","%s")'%(color,sele)
self.cmd.do(cmmd,log=0)
elif self.current_mode in [2,3,4]: # show/hide/toggle
sele = "(%s pk1)"%self.scope_dict[self.current_scope][1]
what = self.what_dict[self.current_what][1]
mode = self.mode_dict[self.current_mode][1]
cmmd = mode+'("%s","%s")'%(what,sele)
self.cmd.do(cmmd,log=0)
else: # select
pass
self.cmd.unpick()
self.cmd.refresh_wizard()
return 1
def do_select(self,selection):
if self.current_mode in [0,1]: # color
sele = "(%s %s)"%(self.scope_dict[self.current_scope][1],selection)
color = self.color_dict[self.current_color][1]
mode = self.mode_dict[self.current_mode][1]
cmmd = mode+'("%s","%s")'%(color,sele)
self.cmd.do(cmmd,log=0)
elif self.current_mode in [2,3,4]: # show/hide/toggle
sele = "(%s %s)"%(self.scope_dict[self.current_scope][1],selection)
what = self.what_dict[self.current_what][1]
mode = self.mode_dict[self.current_mode][1]
cmmd = mode+'("%s","%s")'%(what,sele)
self.cmd.do(cmmd,log=0)
self.cmd.delete(selection)
self.cmd.deselect()
self.cmd.unpick()
self.cmd.refresh_wizard()
return 1
def cleanup(self):
self.cmd.set("mouse_selection_mode",self.selection_mode) # restore selection mode
global saved_scope
saved_scope = self.current_scope
global saved_mode
saved_mode = self.current_mode
global saved_color
saved_color = self.current_color
global saved_what
saved_what = self.current_what