schrodinger.models.advanced_mappers module¶
- class schrodinger.models.advanced_mappers.ModelBaseClassMapperMixin(*args, **kwargs)¶
Bases:
schrodinger.models.mappers.MapperMixin
A mapper mixin that allows any model class that is a subclass of a specified base class. Unlike a standard MapperMixin, the mapper is re- generated every time a new model is set, and the model_class class variable is updated to the class of the new model.
This allows mappings to vary depending on the characteristics of the model class (for example, values of class attributes, presence or absence of specific params, etc.).
To use, set the model_base_class class variable to the base class of all models that will be used with this mapper.
- model_base_class = None¶
- __init__(*args, **kwargs)¶
- defineMappings()¶
Override this in the subclass to define mappings. Should return a list of tuples [(<target>, <param>)]. Targets can be:
a basic widget, like
QLineEdit
orQComboBox
a custom object that inherits
MapperMixin
orTargetMixin
a
TargetSpec
instancea slot
For common widgets, standard signals and getter/setter methods will be used, as defined in
mappers._get_default_access_names()
.For more fine-grained custom control, instantiate a
TargetSpec
object, which allows custom setters, getters, and signals to be specified.Supplying a slot as the first element of the tuple is equivalent to providing
TargetSpec(slot=my_slot)
.Note that all target slots are triggered on
setModel()
as well as in response to the specified signal.The param is an abstract param reference, e.g. MyModel.my_param.
Example:
def defineMappings(self): combo = self.style_combo return [(self.name_le, MyModel.name), (TargetSpec(combo, getter=combo.currentText, setter=combo.setCurrentText), MyModel.style), (self.coord_widget, MyModel.coord), (self._onASLTextChanged, MyModel.asl_text)]
- getModel()¶
- getSignalsAndSlots(model)¶
Override this method to specify signal and slot pairs that need to be connected/disconnected whenever the model instance is switched using setModel. The model instance is provided as an argument so that instance-specific signals can be used, but any pairs of signals and slots may be returned from this method.
- Returns
a list of 2-tuples where each tuple is a signal, slot pair
- initLayOut()¶
@overrides: widgetmixins.InitMixin
- initSetDefaults()¶
@overrides: widgetmixins.InitMixin
- makeInitialModel()¶
- mappedParams()¶
Return a list of the abstract params that are mapped to.
- property model¶
- model_class = None¶
- resetMappedParams()¶
- runAllSlots()¶
- setDefaults()¶
@overrides: af2.App
- setModel(model)¶
Sets the model object for the mapper. Disconnects the old model, if one is set, and connects the new model. Pass in None to have no model set.
- Parameters
model – the model instance or None
- setModelWithoutSlots(model)¶
This is called when this MapperMixin is a sub-widget of a parent MapperMixin. Since the slots will all be called at the end of the parent setModel, they shouldn’t be called during the sub-widget’s setModel.
- setting_model()¶
- class schrodinger.models.advanced_mappers.MultiModelClassMapperMixin(*args, **kwargs)¶
Bases:
schrodinger.models.mappers.MapperMixin
A mapper mixin that allows multiple model classes. To use, define the model_classes tuple with all the allowable model classes. Then define the usual defineMappings and getSignalsAndSlots methods, which are allowed to branch on self.model_class to specify model class-specific mappings and signal/slot connections.
In use, self.model_class will be set to one of the classes in self.model_classes, depending on what the current model is.
- model_classes = ()¶
- __init__(*args, **kwargs)¶
- defineMappings()¶
Override this in the subclass to define mappings. Should return a list of tuples [(<target>, <param>)]. Targets can be:
a basic widget, like
QLineEdit
orQComboBox
a custom object that inherits
MapperMixin
orTargetMixin
a
TargetSpec
instancea slot
For common widgets, standard signals and getter/setter methods will be used, as defined in
mappers._get_default_access_names()
.For more fine-grained custom control, instantiate a
TargetSpec
object, which allows custom setters, getters, and signals to be specified.Supplying a slot as the first element of the tuple is equivalent to providing
TargetSpec(slot=my_slot)
.Note that all target slots are triggered on
setModel()
as well as in response to the specified signal.The param is an abstract param reference, e.g. MyModel.my_param.
Example:
def defineMappings(self): combo = self.style_combo return [(self.name_le, MyModel.name), (TargetSpec(combo, getter=combo.currentText, setter=combo.setCurrentText), MyModel.style), (self.coord_widget, MyModel.coord), (self._onASLTextChanged, MyModel.asl_text)]
- getModel()¶
- getSignalsAndSlots(model)¶
Override this method to specify signal and slot pairs that need to be connected/disconnected whenever the model instance is switched using setModel. The model instance is provided as an argument so that instance-specific signals can be used, but any pairs of signals and slots may be returned from this method.
- Returns
a list of 2-tuples where each tuple is a signal, slot pair
- initLayOut()¶
@overrides: widgetmixins.InitMixin
- initSetDefaults()¶
@overrides: widgetmixins.InitMixin
- makeInitialModel()¶
- mappedParams()¶
Return a list of the abstract params that are mapped to.
- property model¶
- model_class = None¶
- resetMappedParams()¶
- runAllSlots()¶
- setDefaults()¶
@overrides: af2.App
- setModel(model)¶
Sets the model object for the mapper. Disconnects the old model, if one is set, and connects the new model. Pass in None to have no model set.
- Parameters
model – the model instance or None
- setModelWithoutSlots(model)¶
This is called when this MapperMixin is a sub-widget of a parent MapperMixin. Since the slots will all be called at the end of the parent setModel, they shouldn’t be called during the sub-widget’s setModel.
- setting_model()¶