"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "modules/pmg_qt/properties_dialog.py" between
pymol-v2.1.0.tar.bz2 and pymol-open-source-2.2.0.tar.gz

About: PyMOL is a Python-enhanced molecular graphics tool. It excels at 3D visualization of proteins, small molecules, density, surfaces, and trajectories. It also includes molecular editing, ray tracing, and movies. Open Source version.

properties_dialog.py  (pymol-v2.1.0.tar.bz2):properties_dialog.py  (pymol-open-source-2.2.0)
import os import os
from pymol.Qt import QtGui, QtCore, QtWidgets from pymol.Qt import QtGui, QtCore, QtWidgets
from pymol.Qt.utils import UpdateLock from pymol.Qt.utils import UpdateLock, PopupOnException
import pymol import pymol
class UneditableDelegate(QtWidgets.QStyledItemDelegate): class UneditableDelegate(QtWidgets.QStyledItemDelegate):
def createEditor(self, parent, option, index): def createEditor(self, parent, option, index):
return None return None
class FunctionSuspender: class FunctionSuspender:
def __init__(self, func): def __init__(self, func):
self.func = func self.func = func
def __enter__(self): def __enter__(self):
skipping to change at line 27 skipping to change at line 27
self.func.suspended = False self.func.suspended = False
def suspendable(func): def suspendable(func):
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
if not func.suspended: if not func.suspended:
return func(*args, **kwargs) return func(*args, **kwargs)
func.suspended = False func.suspended = False
wrapper.suspend = FunctionSuspender(func) wrapper.suspend = FunctionSuspender(func)
return wrapper return wrapper
def get_object_names(_self):
# was _self.get_names('public_objects') in PyMOL 2.1
# but that throws exceptions for groups/isosurfaces/etc.
names = _self.get_object_list()
return names
def props_dialog(parent): #noqa def props_dialog(parent): #noqa
from pymol.setting import name_dict from pymol.setting import name_dict
cmd = parent.cmd cmd = parent.cmd
form = parent.load_form('props', 'floating') form = parent.load_form('props', 'floating')
parent.addDockWidget(QtCore.Qt.RightDockWidgetArea, form._dialog) parent.addDockWidget(QtCore.Qt.RightDockWidgetArea, form._dialog)
def make_entry(parent, label): def make_entry(parent, label):
item = QtWidgets.QTreeWidgetItem(parent) item = QtWidgets.QTreeWidgetItem(parent)
item.setText(0, str(label)) item.setText(0, str(label))
skipping to change at line 78 skipping to change at line 84
item_atom_properties = Ellipsis # Incentive PyMOL only item_atom_properties = Ellipsis # Incentive PyMOL only
item_astate = make_cat(form.treeWidget, "Atom-State-Level") item_astate = make_cat(form.treeWidget, "Atom-State-Level")
item_astate_builtins = make_cat(item_astate, "Properties (built-in)") item_astate_builtins = make_cat(item_astate, "Properties (built-in)")
item_astate_settings = Ellipsis # Incentive PyMOL only item_astate_settings = Ellipsis # Incentive PyMOL only
keys_atom_identifiers = ['model', 'index', 'segi', 'chain', 'resi', keys_atom_identifiers = ['model', 'index', 'segi', 'chain', 'resi',
'resn', 'name', 'alt', 'ID', 'rank'] 'resn', 'name', 'alt', 'ID', 'rank']
keys_atom_builtins = ['elem', 'q', 'b', 'type', 'formal_charge', keys_atom_builtins = ['elem', 'q', 'b', 'type', 'formal_charge',
'partial_charge', 'numeric_type', 'text_type', 'partial_charge', 'numeric_type', 'text_type',
'stereo', 'vdw', 'ss', 'color', 'reps', # avoid stereo auto-assignment errors
# 'stereo',
'vdw', 'ss', 'color', 'reps',
'protons', 'geom', 'valence', 'elec_radius'] 'protons', 'geom', 'valence', 'elec_radius']
keys_astate_builtins = ['state', 'x', 'y', 'z'] keys_astate_builtins = ['state', 'x', 'y', 'z']
items = {} items = {}
for key in keys_atom_identifiers: for key in keys_atom_identifiers:
items[key] = make_entry(item_atom_identifiers, key) items[key] = make_entry(item_atom_identifiers, key)
for key in keys_atom_builtins: for key in keys_atom_builtins:
items[key] = make_entry(item_atom_builtins, key) items[key] = make_entry(item_atom_builtins, key)
for key in keys_astate_builtins: for key in keys_astate_builtins:
items[key] = make_entry(item_astate_builtins, key) items[key] = make_entry(item_astate_builtins, key)
skipping to change at line 120 skipping to change at line 128
try: try:
if new_value: if new_value:
result = cmd.set_object_ttt(model, new_value) result = cmd.set_object_ttt(model, new_value)
except (ValueError, IndexError): except (ValueError, IndexError):
result = False result = False
elif item == item_ostate_title: elif item == item_ostate_title:
result = cmd.set_title(model, state, new_value) result = cmd.set_title(model, state, new_value)
elif item == item_ostate_matrix: elif item == item_ostate_matrix:
cmd.matrix_reset(model, state) cmd.matrix_reset(model, state)
try: try:
new_value = cmd.safe_eval(new_value)
result = cmd.transform_object(model, new_value, state) result = cmd.transform_object(model, new_value, state)
except: # CmdTransformObject-DEBUG: bad matrix except: # CmdTransformObject-DEBUG: bad matrix
result = False result = False
elif parent == item_object_settings: elif parent == item_object_settings:
cmd.set(key, new_value, model, quiet=0) with PopupOnException():
cmd.set(key, new_value, model, quiet=0)
elif parent == item_ostate_settings: elif parent == item_ostate_settings:
cmd.set(key, new_value, model, state, quiet=0) with PopupOnException():
cmd.set(key, new_value, model, state, quiet=0)
elif parent == item_ostate_properties: elif parent == item_ostate_properties:
cmd.set_property(key, new_value, model, state, quiet=0) cmd.set_property(key, new_value, model, state, quiet=0)
else: else:
is_state = False is_state = False
if parent == item_atom_properties: if parent == item_atom_properties:
key = 'p.' + key key = 'p.' + key
elif parent == item_atom_settings: elif parent == item_atom_settings:
key = 's.' + key key = 's.' + key
elif parent == item_astate_settings: elif parent == item_astate_settings:
skipping to change at line 169 skipping to change at line 180
else: else:
result = cmd.alter(*alter_args) result = cmd.alter(*alter_args)
if not result: if not result:
update_treewidget_model() update_treewidget_model()
item_changed.skip = False item_changed.skip = False
def update_object_settings(parent, model, state): def update_object_settings(parent, model, state):
parent.takeChildren() parent.takeChildren()
for sitem in ( for sitem in (cmd.get_object_settings(model, state) or []):
pymol.querying.get_object_settings(
model,
state,
_self=cmd) or []):
key = name_dict.get(sitem[0], sitem[0]) key = name_dict.get(sitem[0], sitem[0])
item = make_entry(parent, key) item = make_entry(parent, key)
item.setText(1, str(sitem[2])) item.setText(1, str(sitem[2]))
def update_atom_settings(wrapper, parent): def update_atom_settings(wrapper, parent):
parent.takeChildren() parent.takeChildren()
for key in wrapper: for key in wrapper:
item = make_entry(parent, name_dict.get(key, key)) item = make_entry(parent, name_dict.get(key, key))
value = wrapper[key] value = wrapper[key]
item.setText(1, str(value)) item.setText(1, str(value))
def update_atom_properties(wrapper, parent): def update_atom_properties(wrapper, parent):
parent.takeChildren() parent.takeChildren()
for key in wrapper: for key in wrapper:
item = make_entry(parent, key) item = make_entry(parent, key)
value = wrapper[key] value = wrapper[key]
item.setText(1, str(value)) item.setText(1, str(value))
def update_atom_fields(ns): def update_atom_fields(ns):
for key in keys_atom_identifiers + keys_atom_builtins: for key in keys_atom_identifiers + keys_atom_builtins:
value = ns[key] try:
value = ns[key]
except Exception as e:
value = 'ERROR: ' + str(e)
items[key].setText(1, str(value)) items[key].setText(1, str(value))
update_atom_settings(ns['s'], item_atom_settings) update_atom_settings(ns['s'], item_atom_settings)
def update_astate_fields(ns): def update_astate_fields(ns):
for key in keys_astate_builtins: for key in keys_astate_builtins:
value = ns[key] value = ns[key]
items[key].setText(1, str(value)) items[key].setText(1, str(value))
space = { space = {
'update_atom_fields': update_atom_fields, 'update_atom_fields': update_atom_fields,
skipping to change at line 296 skipping to change at line 306
update_treewidget_state() update_treewidget_state()
item_changed.skip = False item_changed.skip = False
def update_model_list(*args): def update_model_list(*args):
if 'pk1' not in cmd.get_names('selections'): if 'pk1' not in cmd.get_names('selections'):
update_pk1() update_pk1()
with update_treewidget_model.suspend: with update_treewidget_model.suspend:
form.input_model.clear() form.input_model.clear()
form.input_model.addItems(cmd.get_names('public_objects')) form.input_model.addItems(get_object_names(cmd))
update_from_pk1() update_from_pk1()
update_treewidget_model() update_treewidget_model()
# init input fields # init input fields
form.input_model.addItems(cmd.get_names('public_objects')) form.input_model.addItems(get_object_names(cmd))
form.input_state.setValue(cmd.get_state()) form.input_state.setValue(cmd.get_state())
# select pk1 atom if available # select pk1 atom if available
update_from_pk1() update_from_pk1()
# hook up events # hook up events
form.input_model.currentIndexChanged.connect(update_treewidget_model) form.input_model.currentIndexChanged.connect(update_treewidget_model)
form.input_state.valueChanged.connect(update_treewidget_state) form.input_state.valueChanged.connect(update_treewidget_state)
form.input_index.valueChanged.connect(update_treewidget) form.input_index.valueChanged.connect(update_treewidget)
form.button_refresh.clicked.connect(update_model_list) form.button_refresh.clicked.connect(update_model_list)
 End of changes. 10 change blocks. 
12 lines changed or deleted 22 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)