Skip to content

Commit 4cc5472

Browse files
Maya Tool - Fix Center 2D Offset node update bug
The Center 2D Offset UI was not updating the nodes used under the hood when the centering was created after the UI was opened - it only found the nodes when the UI was opened. Added a "Camera" label, so the user can see which camera is being controlled. Renamed "Reset All" button to "Reset Offset" because the later is more descriptive to what the button actually does - What does "Reset All" mean? What is "all"?
1 parent b732181 commit 4cc5472

File tree

5 files changed

+62
-7
lines changed

5 files changed

+62
-7
lines changed
1.61 KB
Loading

docs/source/tools_displaytools.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Usage to *apply* the centering effect:
4343

4444
- Click 'Remove' button to remove the Center 2D.
4545

46-
- Click 'Reset All' button to reset all the 2D offsets.
46+
- Click 'Reset Offset' button to reset all the 2D offsets.
4747

4848
- Click 'Close' button to close the window.
4949

python/mmSolver/tools/centertwodee/tool.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@
3535
LOG = mmSolver.logger.get_logger()
3636

3737

38+
def _update_ui_nodes():
39+
import mmSolver.tools.centertwodee.ui.centertwodee_window as window
40+
41+
window_instance = window.CenterTwoDeeWindow.get_instance()
42+
if window_instance is not None:
43+
window_instance.update_nodes()
44+
45+
3846
def main():
3947
"""
4048
Center the selected transform onto the camera view.
@@ -54,12 +62,14 @@ def main():
5462
if model_editor is None:
5563
msg = 'Please select an active 3D viewport.'
5664
LOG.warning(msg)
65+
_update_ui_nodes()
5766
return
5867

5968
cam_tfm, cam_shp = viewport_utils.get_viewport_camera(model_editor)
6069
if cam_shp is None:
6170
msg = 'Please select an active 3D viewport to get a camera.'
6271
LOG.warning(msg)
72+
_update_ui_nodes()
6373
return
6474

6575
try:
@@ -140,6 +150,7 @@ def main():
140150
maya.cmds.select(save_sel, replace=True)
141151
finally:
142152
mmapi.set_solver_running(False)
153+
_update_ui_nodes()
143154
return
144155

145156

@@ -151,12 +162,14 @@ def remove():
151162
if model_editor is None:
152163
msg = 'Please select an active 3D viewport.'
153164
LOG.warning(msg)
165+
_update_ui_nodes()
154166
return
155167

156168
cam_tfm, cam_shp = viewport_utils.get_viewport_camera(model_editor)
157169
if cam_shp is None:
158170
msg = 'Please select an active 3D viewport to get a camera.'
159171
LOG.warning(msg)
172+
_update_ui_nodes()
160173
return
161174

162175
LOG.warning('Removing 2D centering from %r', cam_tfm)
@@ -167,6 +180,7 @@ def remove():
167180
reproject_utils.reset_pan_zoom(cam_tfm, cam_shp)
168181
finally:
169182
mmapi.set_solver_running(False)
183+
_update_ui_nodes()
170184
return
171185

172186

python/mmSolver/tools/centertwodee/ui/centertwodee_layout.ui

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,34 @@
77
<x>0</x>
88
<y>0</y>
99
<width>510</width>
10-
<height>146</height>
10+
<height>178</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
1414
<string>Form</string>
1515
</property>
1616
<layout class="QVBoxLayout" name="verticalLayout">
17+
<item>
18+
<layout class="QHBoxLayout" name="camera_layout">
19+
<item>
20+
<widget class="QLabel" name="camera_label">
21+
<property name="text">
22+
<string>Camera</string>
23+
</property>
24+
</widget>
25+
</item>
26+
<item>
27+
<widget class="QLineEdit" name="camera_lineEdit">
28+
<property name="enabled">
29+
<bool>false</bool>
30+
</property>
31+
<property name="readOnly">
32+
<bool>true</bool>
33+
</property>
34+
</widget>
35+
</item>
36+
</layout>
37+
</item>
1738
<item>
1839
<widget class="QGroupBox" name="options_groupBox">
1940
<property name="title">

python/mmSolver/tools/centertwodee/ui/centertwodee_window.py

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,12 @@ def __init__(self, parent=None, name=None):
6565
super(CenterTwoDeeWindow, self).__init__(parent, name=name)
6666
self.setupUi(self)
6767
self.addSubForm(centertwodee_layout.CenterTwoDeeLayout)
68-
self.offset_node, self.camera_shape = lib.get_offset_nodes()
6968
self.form = self.getSubForm()
7069

70+
self.offset_node = None
71+
self.camera_shape = None
72+
self.update_nodes()
73+
7174
# Set slider defaults in subform
7275
self.set_initial_values()
7376

@@ -81,7 +84,7 @@ def __init__(self, parent=None, name=None):
8184
self.form.zoom_horizontalSlider.valueChanged.connect(self.form.zoomValueChanged)
8285
self.form.horizontal_signal.connect(self.horizontal_offset_node_update)
8386
self.form.vertical_signal.connect(self.vertical_offset_node_update)
84-
self.form.zoom_signal.connect(self.camera_shape_update)
87+
self.form.zoom_signal.connect(self.zoom_camera_shape_update)
8588

8689
self.setWindowTitle(const.WINDOW_TITLE)
8790
self.setWindowFlags(QtCore.Qt.Tool)
@@ -94,7 +97,7 @@ def __init__(self, parent=None, name=None):
9497
self.closeBtn.show()
9598
self.createBtn.setText('Apply')
9699
self.applyBtn.setText('Remove')
97-
self.resetBtn.setText('Reset All')
100+
self.resetBtn.setText('Reset Offset')
98101

99102
self.createBtn.clicked.connect(self.apply_center)
100103
self.applyBtn.clicked.connect(self.remove_center)
@@ -132,7 +135,7 @@ def vertical_offset_node_update(self, value):
132135
return
133136

134137
@QtCore.Slot(float)
135-
def camera_shape_update(self, value):
138+
def zoom_camera_shape_update(self, value):
136139
output = lib.process_value(input_value=value, source='slider', zoom=True)
137140
if self.camera_shape:
138141
lib.set_zoom(self.camera_shape, output)
@@ -148,11 +151,28 @@ def remove_center(self):
148151

149152
tool.remove()
150153

154+
def update_nodes(self):
155+
self.offset_node, self.camera_shape = lib.get_offset_nodes()
156+
157+
enabled = bool(self.offset_node and self.camera_shape)
158+
self.form.horizontal_horizontalSlider.setEnabled(enabled)
159+
self.form.vertical_horizontalSlider.setEnabled(enabled)
160+
self.form.zoom_horizontalSlider.setEnabled(enabled)
161+
162+
if enabled is True:
163+
self.form.camera_lineEdit.setText(self.camera_shape)
164+
else:
165+
self.form.camera_lineEdit.setText('')
166+
167+
# Ensure both are not set.
168+
self.offset_node = None
169+
self.camera_shape = None
170+
151171
def reset_options(self):
152172
self.form.reset_options()
153173

154174
def set_initial_values(self):
155-
if not self.offset_node:
175+
if not self.offset_node or not self.camera_shape:
156176
horizontal_slider_value = const.DEFAULT_SLIDER_VALUE
157177
vertical_slider_value = const.DEFAULT_SLIDER_VALUE
158178
zoom_slider_value = const.DEFAULT_SLIDER_VALUE

0 commit comments

Comments
 (0)