Skip to content

Commit e08095d

Browse files
authored
Merge pull request #68 from hsorby/main
Tidy up some code in FixedAxisTranslation.
2 parents 2a3dfe3 + aeacd61 commit e08095d

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed

src/cmlibs/widgets/handlers/fixedaxistranslation.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,16 @@ def set_model(self, model):
4343
self._reverse_glyphs = []
4444
self._glyph_fields = []
4545

46+
self._initialise_materials()
47+
4648
region = model.get_projection_plane_region()
4749
field_module = region.getFieldmodule()
4850
scene = region.getScene()
49-
self._glyph_fields.append(field_module.createFieldConstant([0, 0, 0]))
50-
self._glyph_fields.append(field_module.createFieldConstant([0, 0, 0]))
51-
self._glyph_fields.append(field_module.createFieldConstant([0, 0, 0]))
52-
self._glyphs.append(create_plane_manipulation_arrow(scene, self._glyph_fields[0], size=AXIS_ARROW_SIZE))
53-
self._glyphs.append(create_plane_manipulation_arrow(scene, self._glyph_fields[1], size=AXIS_ARROW_SIZE))
54-
self._glyphs.append(create_plane_manipulation_arrow(scene, self._glyph_fields[2], size=AXIS_ARROW_SIZE))
55-
self._reverse_glyphs.append(create_plane_manipulation_arrow(scene, self._glyph_fields[0], size=-AXIS_ARROW_SIZE))
56-
self._reverse_glyphs.append(create_plane_manipulation_arrow(scene, self._glyph_fields[1], size=-AXIS_ARROW_SIZE))
57-
self._reverse_glyphs.append(create_plane_manipulation_arrow(scene, self._glyph_fields[2], size=-AXIS_ARROW_SIZE))
5851

59-
self._initialise_materials()
52+
for i in range(3):
53+
self._glyph_fields.append(field_module.createFieldConstant([0, 0, 0]))
54+
self._glyphs.append(create_plane_manipulation_arrow(scene, self._glyph_fields[i], size=AXIS_ARROW_SIZE, material=self._default_material))
55+
self._reverse_glyphs.append(create_plane_manipulation_arrow(scene, self._glyph_fields[i], size=-AXIS_ARROW_SIZE, material=self._default_material))
6056

6157
else:
6258
raise HandlerError('Given model does not have the required API for handling translation.')
@@ -71,17 +67,13 @@ def enter(self):
7167
x_vector, y_vector = _calculate_orthogonal_vectors(self._model.plane_nodes_coordinates())
7268
normal = self._model.get_plane_normal()
7369

74-
x_field_cache = self._glyph_fields[0].getFieldmodule().createFieldcache()
75-
y_field_cache = self._glyph_fields[1].getFieldmodule().createFieldcache()
76-
normal_field_cache = self._glyph_fields[2].getFieldmodule().createFieldcache()
77-
self._glyph_fields[0].assignReal(x_field_cache, x_vector.tolist())
78-
self._glyph_fields[1].assignReal(y_field_cache, y_vector.tolist())
79-
self._glyph_fields[2].assignReal(normal_field_cache, normal)
70+
field_cache = self._glyph_fields[0].getFieldmodule().createFieldcache()
71+
for i, vector in enumerate([x_vector, y_vector, normal]):
72+
self._glyph_fields[i].assignReal(field_cache, vector)
8073

8174
centroid = calculate_centroid(self._model.plane_nodes_coordinates())
8275
for glyph in (self._glyphs + self._reverse_glyphs):
8376
glyph.setVisibilityFlag(True)
84-
glyph.setMaterial(self._default_material)
8577
set_glyph_position(glyph, centroid)
8678

8779
def leave(self):
@@ -105,6 +97,7 @@ def mouse_press_event(self, event):
10597
self._selected_index = i
10698
self._glyphs[i].setMaterial(self._selected_material)
10799
self._reverse_glyphs[i].setMaterial(self._selected_material)
100+
break
108101

109102
def mouse_move_event(self, event):
110103
if self._selected_index is not None:
@@ -139,8 +132,9 @@ def mouse_move_event(self, event):
139132
def mouse_release_event(self, event):
140133
super().mouse_release_event(event)
141134

142-
for glyph in (self._glyphs + self._reverse_glyphs):
143-
glyph.setMaterial(self._default_material)
135+
if self._selected_index is not None:
136+
self._glyphs[self._selected_index].setMaterial(self._default_material)
137+
self._reverse_glyphs[self._selected_index].setMaterial(self._default_material)
144138

145139
self._start_position = None
146140
self._selected_index = None
@@ -153,4 +147,6 @@ def _calculate_orthogonal_vectors(points):
153147
vectors.pop(max_index)
154148
lengths.pop(max_index)
155149

156-
return (vectors[0] / lengths[0]), (vectors[1] / lengths[1])
150+
x_vector = vectors[0] / lengths[0]
151+
y_vector = vectors[1] / lengths[1]
152+
return x_vector.tolist(), y_vector.tolist()

0 commit comments

Comments
 (0)