#A* #------------------------------------------------------------------- #B* This file contains source code for the PyMOL computer program C* #copyright 1998-2000 by Warren Lyford Delano of DeLano Scientific. D* #------------------------------------------------------------------- #E* It is unlawful to modify or remove this copyright notice. F* #------------------------------------------------------------------- #G* Please see the accompanying LICENSE file for further information. #H* #------------------------------------------------------------------- #I* Additional authors of this source file include: -* -* NOTE: Based #on code by John E. Grayson which was in turn -* based on code written #by Doug Hellmann. Z* #------------------------------------------------------------------- # this section is devoted to making sure that Tkinter variables which # correspond to Menu-displayed settings are kept synchronized with # PyMOL from Tkinter import * import Pmw from pymol import cmd import pymol.setting pm = cmd class Setting: def __init__(self): self.ray_trace_frames = IntVar() self.ray_trace_frames.set(int(cmd.get_setting_legacy('ray_trace_frames'))) self.cache_frames = IntVar() self.cache_frames.set(int(cmd.get_setting_legacy('ray_trace_frames'))) self.ortho = IntVar() self.ortho.set(int(cmd.get_setting_legacy('orthoscopic'))) self.antialias = IntVar() self.antialias.set(int(cmd.get_setting_legacy('antialias'))) self.all_states = IntVar() self.all_states.set(int(cmd.get_setting_legacy('all_states'))) self.line_smooth = IntVar() self.line_smooth.set(int(cmd.get_setting_legacy('line_smooth'))) self.overlay = IntVar() self.overlay.set(int(cmd.get_setting_legacy('overlay'))) self.valence = IntVar() self.valence.set(int(cmd.get_setting_legacy('valence'))) self.auto_zoom = IntVar() self.auto_zoom.set(int(cmd.get_setting_legacy('auto_zoom'))) self.auto_show_selections = IntVar() self.auto_show_selections.set(int(cmd.get_setting_legacy('auto_show_selections'))) self.auto_hide_selections = IntVar() self.auto_hide_selections.set(int(cmd.get_setting_legacy('auto_hide_selections'))) self.static_singletons = IntVar() self.static_singletons.set(int(cmd.get_setting_legacy('static_singletons'))) self.backface_cull = IntVar() self.backface_cull.set(int(cmd.get_setting_legacy('backface_cull'))) self.depth_cue = IntVar() self.depth_cue.set(int(cmd.get_setting_legacy('depth_cue'))) self.specular = IntVar() self.specular.set(int(cmd.get_setting_legacy('specular'))) self.cartoon_round_helices = IntVar() self.cartoon_round_helices.set(int(cmd.get_setting_legacy('cartoon_round_helices'))) self.cartoon_fancy_helices = IntVar() self.cartoon_fancy_helices.set(int(cmd.get_setting_legacy('cartoon_fancy_helices'))) self.cartoon_flat_sheets = IntVar() self.cartoon_flat_sheets.set(int(cmd.get_setting_legacy('cartoon_flat_sheets'))) self.cartoon_fancy_sheets = IntVar() self.cartoon_fancy_sheets.set(int(cmd.get_setting_legacy('cartoon_fancy_sheets'))) self.cartoon_discrete_colors = IntVar() self.cartoon_discrete_colors.set(int(cmd.get_setting_legacy('cartoon_discrete_colors'))) self.cartoon_smooth_loops = IntVar() self.cartoon_smooth_loops.set(int(cmd.get_setting_legacy('cartoon_smooth_loops'))) self.cartoon_cylindrical_helices = IntVar() self.cartoon_cylindrical_helices.set(int(cmd.get_setting_legacy('cartoon_cylindrical_helices'))) self.ignore_pdb_segi = IntVar() self.ignore_pdb_segi.set(int(cmd.get_setting_legacy('ignore_pdb_segi'))) self.log_box_selections = IntVar() self.log_box_selections.set(int(cmd.get_setting_legacy('log_box_selections'))) self.log_conformations = IntVar() self.log_conformations.set(int(cmd.get_setting_legacy('log_conformations'))) self.two_sided_lighting = IntVar() self.two_sided_lighting.set(int(cmd.get_setting_legacy('two_sided_lighting'))) self.auto_remove_hydrogens = IntVar() self.auto_remove_hydrogens.set(int(cmd.get_setting_legacy('auto_remove_hydrogens'))) self.auto_sculpt = IntVar() self.auto_sculpt.set(int(cmd.get_setting_legacy('auto_sculpt'))) self.sculpting = IntVar() self.sculpting.set(int(cmd.get_setting_legacy('sculpting'))) self.roving_origin = IntVar() self.roving_origin.set(int(cmd.get_setting_legacy('roving_origin'))) self.roving_detail = IntVar() self.roving_detail.set(int(cmd.get_setting_legacy('roving_detail'))) self.ray_interior_color = IntVar() self.ray_interior_color.set(int(cmd.get_setting_legacy('ray_interior_color')!=-1)) self.cartoon_highlight_color = IntVar() self.cartoon_highlight_color.set(int(cmd.get_setting_legacy('ray_interior_color')!=-1)) self.use_display_lists = IntVar() self.use_display_lists.set(int(cmd.get_setting_legacy('use_display_lists')!=-1)) self.virtual_trackball = IntVar() self.virtual_trackball.set(int(cmd.get_setting_legacy('virtual_trackball'))) self.stereo = IntVar() self.seq_view = IntVar() self.seq_view.set(int(cmd.get_setting_legacy('seq_view'))) self.F=[ None, IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), IntVar(), ] self.xref = { 'ray_trace_frames': (lambda s,a: (cmd.set(a,("%1.0f" % s.ray_trace_frames.get()),log=1), s.cache_frames.set(s.ray_trace_frames.get()), s.update('cache_frames'))), 'cache_frames' : (lambda s,a: (cmd.set(a,("%1.0f" % s.cache_frames.get()),log=1))), 'ortho' : (lambda s,a: (cmd.set(a,("%1.0f" % s.ortho.get()),log=1))), 'antialias' : (lambda s,a: (cmd.set(a,("%1.0f" % s.antialias.get()),log=1))), 'valence' : (lambda s,a: (cmd.set(a,("%1.2f" % s.valence.get()),log=1))), 'all_states' : (lambda s,a: (cmd.set(a,("%1.0f" % s.all_states.get()),log=1))), 'line_smooth' : (lambda s,a: (cmd.set(a,("%1.0f" % s.line_smooth.get()),log=1))), 'overlay' : (lambda s,a: (cmd.set(a,("%1.0f" %( s.overlay.get()*5)),log=1))), 'auto_zoom' : (lambda s,a: (cmd.set(a,("%1.0f" % s.auto_zoom.get()),log=1))), 'auto_show_selections' : (lambda s,a: (cmd.set(a,("%1.0f" % s.auto_show_selections.get()),log=1))), 'auto_hide_selections' : (lambda s,a: (cmd.set(a,("%1.0f" % s.auto_hide_selections.get()),log=1))), 'static_singletons' : (lambda s,a: (cmd.set(a,("%1.0f" % s.static_singletons.get()),log=1))), 'backface_cull' : (lambda s,a: (cmd.set(a,("%1.0f" % s.backface_cull.get()),log=1))), 'depth_cue' : (lambda s,a: s.depth_cue_set()), 'specular' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.specular.get())),log=1))), 'cartoon_round_helices' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.cartoon_round_helices.get())),log=1))), 'cartoon_fancy_helices' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.cartoon_fancy_helices.get())),log=1))), 'cartoon_flat_sheets' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.cartoon_flat_sheets.get())),log=1))), 'cartoon_fancy_sheets' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.cartoon_fancy_sheets.get())),log=1))), 'cartoon_discrete_colors' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.cartoon_discrete_colors.get())),log=1))), 'cartoon_smooth_loops' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.cartoon_smooth_loops.get())),log=1))), 'cartoon_cylindrical_helices' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.cartoon_cylindrical_helices.get())),log=1))), 'ignore_pdb_segi' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.ignore_pdb_segi.get())),log=1))), 'log_box_selections' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.log_box_selections.get())),log=1))), 'log_conformations' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.log_conformations.get())),log=1))), 'two_sided_lighting' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.two_sided_lighting.get())),log=1))), 'auto_remove_hydrogens' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.auto_remove_hydrogens.get())),log=1))), 'auto_sculpt' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.auto_sculpt.get())),log=1))), 'sculpting' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.sculpting.get())),log=1))), 'roving_origin' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.roving_origin.get())),log=1))), 'roving_detail' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.roving_detail.get())),log=1))), 'ray_interior_color' : (lambda s,a: (s.ray_interior_color_set())), 'cartoon_highlight_color' : (lambda s,a: (s.cartoon_highlight_color_set())), 'use_display_lists' : (lambda s,a: (cmd.set(a,("%1.0f" % (s.use_display_lists.get())),log=1))), 'virtual_trackball' : (lambda s,a: (cmd.set(a,("%1.0f" % s.virtual_trackball.get()),log=1))), 'seq_view' : (lambda s,a: (cmd.set(a,("%d" % s.seq_view.get()),log=1))), } self.update_code = { 'ray_trace_frames': (lambda s,t: (s.ray_trace_frames.set(int(t[1][0])))), 'cache_frames': (lambda s,t: (s.cache_frames.set(int(t[1][0])))), 'orthoscopic': (lambda s,t: (s.ortho.set(int(t[1][0])))), 'all_states': (lambda s,t: (s.all_states.set(int(t[1][0])))), 'line_smooth': (lambda s,t: (s.line_smooth.set(int(t[1][0])))), 'overlay': (lambda s,t: (s.overlay.set(t[1][0]!=0))), 'valence': (lambda s,t: (s.valence.set(t[1][0]>0.0))), 'auto_zoom': (lambda s,t: (s.auto_zoom.set(int(t[1][0])))), 'auto_show_selections': (lambda s,t: (s.auto_show_selections.set(int(t[1][0])))), 'auto_hide_selections': (lambda s,t: (s.auto_hide_selections.set(int(t[1][0])))), 'static_singletons': (lambda s,t: (s.static_singletons.set(int(t[1][0])))), 'backface_cull': (lambda s,t: (s.backface_cull.set(int(t[1][0])))), 'depth_cue' : (lambda s,t: (s.depth_cue.set(int(t[1][0])))), 'specular' : (lambda s,t: (s.specular.set(t[1][0]>0.0))), 'cartoon_round_helices': (lambda s,t: (s.cartoon_round_helices.set(t[1][0]!=0))), 'cartoon_fancy_helices': (lambda s,t: (s.cartoon_fancy_helices.set(t[1][0]!=0))), 'cartoon_flat_sheets': (lambda s,t: (s.cartoon_flat_sheets.set(t[1][0]!=0))), 'cartoon_fancy_sheets': (lambda s,t: (s.cartoon_fancy_sheets.set(t[1][0]!=0))), 'cartoon_discrete_colors': (lambda s,t: (s.cartoon_discrete_colors.set(t[1][0]!=0))), 'cartoon_smooth_loops': (lambda s,t: (s.cartoon_smooth_loops.set(t[1][0]!=0))), 'cartoon_cylindrical_helices': (lambda s,t: (s.cartoon_cylindrical_helices.set(t[1][0]!=0))), 'ignore_pdb_segi': (lambda s,t: (s.ignore_pdb_segi.set(t[1][0]!=0))), 'log_box_selections': (lambda s,t: (s.log_box_selections.set(t[1][0]!=0))), 'log_conformations': (lambda s,t: (s.log_conformations.set(t[1][0]!=0))), 'two_sided_lighting': (lambda s,t: (s.two_sided_lighting.set(t[1][0]!=0))), 'auto_remove_hydrogens': (lambda s,t: (s.auto_remove_hydrogens.set(t[1][0]!=0))), 'auto_sculpt': (lambda s,t: (s.auto_sculpt.set(t[1][0]!=0))), 'sculpting': (lambda s,t: (s.sculpting.set(t[1][0]!=0))), 'roving_origin': (lambda s,t: (s.roving_origin.set(t[1][0]!=0))), 'roving_detail': (lambda s,t: (s.roving_detail.set(t[1][0]!=0))), 'ray_interior_color': (lambda s,t: (s.ray_interior_color.set(t[1][0]!=-1))), 'cartoon_highlight_color': (lambda s,t: (s.cartoon_highlight_color.set(t[1][0]!=-1))), 'scenes_changed' : (lambda s,t: (s.update_scenes())), 'use_display_lists': (lambda s,t: (s.use_display_lists.set(t[1][0]!=0))), 'virtual_trackball': (lambda s,t: (s.virtual_trackball.set(t[1][0]!=0))), 'seq_view': (lambda s,t: (s.seq_view.set(t[1][0]!=0))), 'stereo': (lambda s,t: (s.stereo.set(t[1][0]!=0))), } self.active_list = [ pymol.setting._get_index("ray_trace_frames"), pymol.setting._get_index("cache_frames"), pymol.setting._get_index("orthoscopic"), pymol.setting._get_index("antialias"), pymol.setting._get_index("all_states"), pymol.setting._get_index("overlay"), pymol.setting._get_index("line_smooth"), pymol.setting._get_index("valence"), pymol.setting._get_index("auto_zoom"), pymol.setting._get_index("auto_hide_selections"), pymol.setting._get_index("auto_show_selections"), pymol.setting._get_index("static_singletons"), pymol.setting._get_index("backface_cull"), pymol.setting._get_index("depth_cue"), pymol.setting._get_index("specular"), pymol.setting._get_index("cartoon_round_helices"), pymol.setting._get_index("cartoon_fancy_helices"), pymol.setting._get_index("cartoon_flat_sheets"), pymol.setting._get_index("cartoon_fancy_sheets"), pymol.setting._get_index("cartoon_discrete_colors"), pymol.setting._get_index("cartoon_smooth_loops"), pymol.setting._get_index("cartoon_cylindrical_helices"), pymol.setting._get_index("ignore_pdb_segi"), pymol.setting._get_index("log_box_selections"), pymol.setting._get_index("log_conformations"), pymol.setting._get_index("two_sided_lighting"), pymol.setting._get_index("auto_remove_hydrogens"), pymol.setting._get_index("auto_sculpt"), pymol.setting._get_index("sculpting"), pymol.setting._get_index("roving_origin"), pymol.setting._get_index("roving_detail"), pymol.setting._get_index("ray_interior_color"), pymol.setting._get_index("cartoon_highlight_color"), pymol.setting._get_index("scenes_changed"), pymol.setting._get_index("use_display_lists"), pymol.setting._get_index("virtual_trackball"), pymol.setting._get_index("seq_view"), pymol.setting._get_index("stereo"), ] self.active_dict = {} for a in self.active_list: self.active_dict[a] = pymol.setting._get_name(a) def depth_cue_set(self): cmd.set("depth_cue",("%1.0f" % self.depth_cue.get()),log=1) if pymol.setting.get_setting("ray_trace_fog")>=0: cmd.set("ray_trace_fog",("%1.0f" % self.depth_cue.get()),log=1) def ray_interior_color_set(self): if(self.ray_interior_color.get()): cmd.set("ray_interior_color","grey20",log=1) else: cmd.set("ray_interior_color","-1",log=1) def cartoon_highlight_color_set(self): if(self.cartoon_highlight_color.get()): cmd.set("cartoon_highlight_color","grey50",log=1) else: cmd.set("cartoon_highlight_color","-1",log=1) def update(self,sttng): set_fn = self.xref[sttng] set_fn(self,sttng) def update_scenes(self): dict = cmd.get_scene_dict() for x in range(1,13): if dict.has_key('F%d'%x): self.F[x].set(1) else: self.F[x].set(0) def refresh(self): # get any settings changes from PyMOL and update menus lst = cmd.get_setting_updates() for a in lst: if a in self.active_list: name = self.active_dict[a] if self.update_code.has_key(name): code = self.update_code[name] if code!=None: tup = cmd.get_setting_tuple(name,'',0) if tup!=None: apply(code,(self,tup))