Skip to content

Commit 06e8360

Browse files
Use preference to disable the "Eval Object Relationships" in Solver UI.
The user must enable the user preference "Solver UI - Allow Object Relationships" in order to enable the "Eval Object Relationships" feature in the Solver UI. The solver updates the model each time the user "activates" the window. Issue #222
1 parent 584be63 commit 06e8360

3 files changed

Lines changed: 98 additions & 18 deletions

File tree

python/mmSolver/tools/solver/widget/solver_basic_widget.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
import mmSolver.tools.solver.widget.ui_solver_basic_widget as ui_solver_basic_widget
3636
import mmSolver.tools.solver.widget.framerange_widget as framerange_widget
3737
import mmSolver.tools.solver.constant as const
38+
import mmSolver.tools.userpreferences.constant as userprefs_const
39+
import mmSolver.tools.userpreferences.lib as userprefs_lib
3840

3941
LOG = mmSolver.logger.get_logger()
4042

@@ -47,6 +49,15 @@ def _populateWidgetsEnabled(widgets):
4749
return
4850

4951

52+
def _getAllowObjectRelations():
53+
config = userprefs_lib.get_config()
54+
key = userprefs_const.SOLVER_UI_ALLOW_OBJECT_RELATIONS_KEY
55+
allow_obj_relations = userprefs_lib.get_value(config, key)
56+
true_value = userprefs_const.SOLVER_UI_ALLOW_OBJECT_RELATIONS_TRUE_VALUE
57+
visible = allow_obj_relations == true_value
58+
return visible
59+
60+
5061
class BasicFrameRangeWidget(framerange_widget.FrameRangeWidget):
5162

5263
def getRangeTypeValue(self, col):
@@ -102,6 +113,9 @@ def __init__(self, parent=None, *args, **kwargs):
102113
return
103114

104115
def getEvalObjectRelationshipsValue(self, col):
116+
allow_obj_relations = _getAllowObjectRelations()
117+
if allow_obj_relations is False:
118+
return False
105119
value = lib_col_state.get_solver_eval_object_relationships_from_collection(col)
106120
return value
107121

@@ -117,16 +131,39 @@ def setEvalComplexGraphsValue(self, col, value):
117131
lib_col_state.set_solver_eval_complex_graphs_on_collection(col, value)
118132
return
119133

134+
def event(self, ev):
135+
if ev.type() == QtCore.QEvent.WindowActivate:
136+
LOG.warn('window activated')
137+
self.updateObjectRelationshipsWidgets()
138+
return super(SolverBasicWidget, self).event(ev)
139+
140+
def updateObjectRelationshipsWidgets(self):
141+
LOG.warn('updateObjectRelationshipsWidgets')
142+
allow_obj_relations = _getAllowObjectRelations()
143+
self.evalObjectRelationships_checkBox.setEnabled(allow_obj_relations)
144+
145+
col = lib_state.get_active_collection()
146+
if col is None:
147+
return
148+
value = self.getEvalObjectRelationshipsValue(col)
149+
self.evalObjectRelationships_checkBox.setChecked(value)
150+
return
151+
120152
def updateModel(self):
153+
LOG.debug('UpdateModel Basic')
121154
self.frameRange_widget.updateModel()
122155

123156
col = lib_state.get_active_collection()
124157
if col is None:
125158
return
159+
allow_obj_relations = _getAllowObjectRelations()
126160
eval_obj_conns = self.getEvalObjectRelationshipsValue(col)
127161
eval_complex_graphs = self.getEvalComplexGraphsValue(col)
162+
if allow_obj_relations is False:
163+
eval_obj_conns = False
128164

129165
block = self.blockSignals(True)
166+
self.evalObjectRelationships_checkBox.setEnabled(allow_obj_relations)
130167
self.evalObjectRelationships_checkBox.setChecked(eval_obj_conns)
131168
self.evalComplexGraphs_checkBox.setChecked(eval_complex_graphs)
132169
self.blockSignals(block)

python/mmSolver/tools/solver/widget/solver_standard_widget.py

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import mmSolver.tools.solver.widget.framerange_widget as framerange_widget
3737
import mmSolver.tools.solver.widget.rootframe_widget as rootframe_widget
3838
import mmSolver.tools.solver.constant as const
39+
import mmSolver.tools.userpreferences.constant as userprefs_const
40+
import mmSolver.tools.userpreferences.lib as userprefs_lib
3941

4042

4143
LOG = mmSolver.logger.get_logger()
@@ -49,6 +51,15 @@ def _populateWidgetsEnabled(widgets):
4951
return
5052

5153

54+
def _getAllowObjectRelations():
55+
config = userprefs_lib.get_config()
56+
key = userprefs_const.SOLVER_UI_ALLOW_OBJECT_RELATIONS_KEY
57+
allow_obj_relations = userprefs_lib.get_value(config, key)
58+
true_value = userprefs_const.SOLVER_UI_ALLOW_OBJECT_RELATIONS_TRUE_VALUE
59+
visible = allow_obj_relations == true_value
60+
return visible
61+
62+
5263
class StandardRootFrameWidget(rootframe_widget.RootFrameWidget):
5364

5465
def getRootFramesValue(self, col):
@@ -143,6 +154,9 @@ def setGlobalSolveValue(self, col, value):
143154
return
144155

145156
def getEvalObjectRelationshipsValue(self, col):
157+
allow_obj_relations = _getAllowObjectRelations()
158+
if allow_obj_relations is False:
159+
return False
146160
value = lib_col_state.get_solver_eval_object_relationships_from_collection(col)
147161
return value
148162

@@ -158,6 +172,24 @@ def setEvalComplexGraphsValue(self, col, value):
158172
lib_col_state.set_solver_eval_complex_graphs_on_collection(col, value)
159173
return
160174

175+
def event(self, ev):
176+
if ev.type() == QtCore.QEvent.WindowActivate:
177+
LOG.warn('window activated')
178+
self.updateObjectRelationshipsWidgets()
179+
return super(SolverStandardWidget, self).event(ev)
180+
181+
def updateObjectRelationshipsWidgets(self):
182+
LOG.warn('updateObjectRelationshipsWidgets')
183+
allow_obj_relations = _getAllowObjectRelations()
184+
self.evalObjectRelationships_checkBox.setEnabled(allow_obj_relations)
185+
186+
col = lib_state.get_active_collection()
187+
if col is None:
188+
return
189+
value = self.getEvalObjectRelationshipsValue(col)
190+
self.evalObjectRelationships_checkBox.setChecked(value)
191+
return
192+
161193
def updateModel(self):
162194
self.frameRange_widget.updateModel()
163195
self.rootFrames_widget.updateModel()
@@ -166,29 +198,28 @@ def updateModel(self):
166198
if col is None:
167199
return
168200

201+
allow_obj_relations = _getAllowObjectRelations()
169202
range_type = self.frameRange_widget.getRangeTypeValue(col)
170203
global_solve = self.getGlobalSolveValue(col)
171204
only_root_frames = self.getOnlyRootFramesValue(col)
172205
eval_obj_conns = self.getEvalObjectRelationshipsValue(col)
173206
eval_complex_graphs = self.getEvalComplexGraphsValue(col)
174207
global_solve_enabled = True
175208
only_root_frames_enabled = True
176-
eval_obj_conns_enabled = True
209+
eval_obj_conns_enabled = allow_obj_relations
177210
eval_complex_graphs_enabled = True
178211
frameRange_enabled = True
179212
rootFrames_enabled = True
180213
if range_type == const.RANGE_TYPE_CURRENT_FRAME_VALUE:
181214
global_solve_enabled = False
182215
only_root_frames_enabled = False
183-
eval_obj_conns_enabled = True
184216
eval_complex_graphs_enabled = False
185217
frameRange_enabled = True
186218
rootFrames_enabled = False
187219
else:
188220
if global_solve is True:
189221
only_root_frames_enabled = False
190222
only_root_frames = False
191-
eval_obj_conns_enabled = True
192223
eval_complex_graphs_enabled = False
193224
rootFrames_enabled = True
194225
frameRange_enabled = True
@@ -197,7 +228,6 @@ def updateModel(self):
197228
global_solve = False
198229
frameRange_enabled = False
199230
rootFrames_enabled = True
200-
eval_obj_conns_enabled = True
201231
eval_complex_graphs_enabled = True
202232

203233
block = self.blockSignals(True)

python/mmSolver/tools/solver/widget/solver_widget.py

Lines changed: 27 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -109,10 +109,13 @@ def __init__(self, parent=None, *args, **kwargs):
109109

110110
self.validate_pushButton.setEnabled(False)
111111

112-
# Show the validate button?
113-
visible = _getShowValidateButton()
114-
self.info_groupBox.setVisible(visible)
112+
self.createConnections()
113+
114+
e = time.time()
115+
LOG.warn('SolverWidget init: %r seconds', e - s)
116+
return
115117

118+
def createConnections(self):
116119
self.tabWidget.currentChanged.connect(self._tabChanged)
117120
self.basic_widget.dataChanged.connect(self._dataChanged)
118121
self.standard_widget.dataChanged.connect(self._dataChanged)
@@ -126,17 +129,6 @@ def __init__(self, parent=None, *args, **kwargs):
126129
self.standard_widget.frameRange_widget.rangeTypeChanged.connect(self.updateInfo)
127130
self.validate_pushButton.clicked.connect(self.runUpdateInfo)
128131

129-
# Only run a solver validation if the user wants updates.
130-
validate_on_open = _getValidateOnOpen()
131-
if validate_on_open:
132-
value = lib_state.get_auto_update_solver_validation_state()
133-
if value is False:
134-
self.validate_pushButton.clicked.emit()
135-
136-
e = time.time()
137-
LOG.debug('SolverWidget init: %r seconds', e - s)
138-
return
139-
140132
def getSolverTabValue(self, col):
141133
value = lib_col_state.get_solver_tab_from_collection(col)
142134
return value
@@ -145,6 +137,12 @@ def setSolverTabValue(self, col, value):
145137
lib_col_state.set_solver_tab_on_collection(col, value)
146138
return
147139

140+
def event(self, ev):
141+
if ev.type() == QtCore.QEvent.WindowActivate:
142+
LOG.warn('window was activated')
143+
self.updateValidationWidgets()
144+
return super(SolverWidget, self).event(ev)
145+
148146
@QtCore.Slot(int)
149147
def _tabChanged(self, idx):
150148
self.updateModel()
@@ -196,6 +194,21 @@ def updateModel(self):
196194
self.updateInfo()
197195
return
198196

197+
def updateValidationWidgets(self):
198+
LOG.warn('updateValidationWidgets')
199+
200+
# Show the validate button?
201+
visible = _getShowValidateButton()
202+
self.info_groupBox.setVisible(visible)
203+
204+
# Only run a solver validation if the user wants updates.
205+
validate_on_open = _getValidateOnOpen()
206+
if validate_on_open:
207+
value = lib_state.get_auto_update_solver_validation_state()
208+
if value is False:
209+
self.validate_pushButton.clicked.emit()
210+
return
211+
199212
def updateInfo(self):
200213
is_running = mmapi.is_solver_running()
201214
if is_running is True:

0 commit comments

Comments
 (0)