Commit dc3edb075e04adabec5f322ea57c2c61028bce8f
1 parent
b7bb24bd
Exists in
measure_improvements
Improvements
Showing
3 changed files
with
47 additions
and
26 deletions
Show diff stats
invesalius/data/measures.py
@@ -98,6 +98,7 @@ class MeasurementManager(object): | @@ -98,6 +98,7 @@ class MeasurementManager(object): | ||
98 | Publisher.subscribe(self._load_measurements, "Load measurement dict") | 98 | Publisher.subscribe(self._load_measurements, "Load measurement dict") |
99 | Publisher.subscribe(self._rm_incomplete_measurements, | 99 | Publisher.subscribe(self._rm_incomplete_measurements, |
100 | "Remove incomplete measurements") | 100 | "Remove incomplete measurements") |
101 | + Publisher.subscribe(self._change_measure_point_pos, 'Change measurement point position') | ||
101 | 102 | ||
102 | def _load_measurements(self, pubsub_evt): | 103 | def _load_measurements(self, pubsub_evt): |
103 | try: | 104 | try: |
@@ -246,6 +247,40 @@ class MeasurementManager(object): | @@ -246,6 +247,40 @@ class MeasurementManager(object): | ||
246 | value)) | 247 | value)) |
247 | self.current = None | 248 | self.current = None |
248 | 249 | ||
250 | + def _change_measure_point_pos(self, pubsub_evt): | ||
251 | + index, npoint, pos = pubsub_evt.data | ||
252 | + print index, npoint, pos | ||
253 | + m, mr = self.measures[index] | ||
254 | + x, y, z = pos | ||
255 | + if npoint == 0: | ||
256 | + mr.SetPoint1(x, y, z) | ||
257 | + m.points[0] = x, y, z | ||
258 | + elif npoint == 1: | ||
259 | + mr.SetPoint2(x, y, z) | ||
260 | + m.points[1] = x, y, z | ||
261 | + elif npoint == 2: | ||
262 | + mr.SetPoint3(x, y, z) | ||
263 | + m.points[2] = x, y, z | ||
264 | + | ||
265 | + m.value = mr.GetValue() | ||
266 | + | ||
267 | + name = m.name | ||
268 | + colour = m.colour | ||
269 | + m.value = mr.GetValue() | ||
270 | + type_ = TYPE[m.type] | ||
271 | + location = LOCATION[m.location] | ||
272 | + | ||
273 | + if m.type == const.LINEAR: | ||
274 | + value = u"%.2f mm"% m.value | ||
275 | + else: | ||
276 | + value = u"%.2f°"% m.value | ||
277 | + | ||
278 | + Publisher.sendMessage('Update measurement info in GUI', | ||
279 | + (index, name, colour, | ||
280 | + location, | ||
281 | + type_, | ||
282 | + value)) | ||
283 | + | ||
249 | def _change_name(self, pubsub_evt): | 284 | def _change_name(self, pubsub_evt): |
250 | index, new_name = pubsub_evt.data | 285 | index, new_name = pubsub_evt.data |
251 | self.measures[index].name = new_name | 286 | self.measures[index].name = new_name |
invesalius/data/styles.py
@@ -394,36 +394,19 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | @@ -394,36 +394,19 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | ||
394 | 394 | ||
395 | def OnReleaseMeasurePoint(self, obj, evt): | 395 | def OnReleaseMeasurePoint(self, obj, evt): |
396 | if self.selected: | 396 | if self.selected: |
397 | - print "Changing Position" | ||
398 | n, m, mr = self.selected | 397 | n, m, mr = self.selected |
399 | x, y, z = self._get_pos_clicked() | 398 | x, y, z = self._get_pos_clicked() |
400 | - ren = self.slice_data.renderer | ||
401 | - mr.renderer = ren | ||
402 | - if n == 0: | ||
403 | - mr.SetPoint1(x, y, z) | ||
404 | - m.points[0] = x, y, z | ||
405 | - elif n == 1: | ||
406 | - mr.SetPoint2(x, y, z) | ||
407 | - m.points[1] = x, y, z | ||
408 | - | ||
409 | - m.value = mr.GetValue() | ||
410 | - | 399 | + idx = self.measures._list_measures.index((m, mr)) |
400 | + Publisher.sendMessage('Change measurement point position', (idx, n, (x, y, z))) | ||
411 | Publisher.sendMessage('Reload actual slice %s' % self.orientation) | 401 | Publisher.sendMessage('Reload actual slice %s' % self.orientation) |
412 | self.selected = None | 402 | self.selected = None |
413 | 403 | ||
414 | def OnMoveMeasurePoint(self, obj, evt): | 404 | def OnMoveMeasurePoint(self, obj, evt): |
415 | if self.selected: | 405 | if self.selected: |
416 | - print "Changing Position" | ||
417 | n, m, mr = self.selected | 406 | n, m, mr = self.selected |
418 | x, y, z = self._get_pos_clicked() | 407 | x, y, z = self._get_pos_clicked() |
419 | - ren = self.slice_data.renderer | ||
420 | - mr.renderer = ren | ||
421 | - if n == 0: | ||
422 | - mr.SetPoint1(x, y, z) | ||
423 | - m.points[0] = x, y, z | ||
424 | - elif n == 1: | ||
425 | - mr.SetPoint2(x, y, z) | ||
426 | - m.points[1] = x, y, z | 408 | + idx = self.measures._list_measures.index((m, mr)) |
409 | + Publisher.sendMessage('Change measurement point position', (idx, n, (x, y, z))) | ||
427 | 410 | ||
428 | Publisher.sendMessage('Reload actual slice %s' % self.orientation) | 411 | Publisher.sendMessage('Reload actual slice %s' % self.orientation) |
429 | 412 | ||
@@ -452,11 +435,12 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | @@ -452,11 +435,12 @@ class LinearMeasureInteractorStyle(DefaultInteractorStyle): | ||
452 | 435 | ||
453 | if slice_number in self.measures.measures[self._ori]: | 436 | if slice_number in self.measures.measures[self._ori]: |
454 | for m, mr in self.measures.measures[self._ori][slice_number]: | 437 | for m, mr in self.measures.measures[self._ori][slice_number]: |
455 | - for n, p in enumerate(m.points): | ||
456 | - px, py, pz = p | ||
457 | - dist = ((px-x)**2 + (py-y)**2 + (pz-z)**2)**0.5 | ||
458 | - if dist < max_dist: | ||
459 | - return (n, m, mr) | 438 | + if mr.IsComplete(): |
439 | + for n, p in enumerate(m.points): | ||
440 | + px, py, pz = p | ||
441 | + dist = ((px-x)**2 + (py-y)**2 + (pz-z)**2)**0.5 | ||
442 | + if dist < max_dist: | ||
443 | + return (n, m, mr) | ||
460 | return None | 444 | return None |
461 | 445 | ||
462 | class AngularMeasureInteractorStyle(DefaultInteractorStyle): | 446 | class AngularMeasureInteractorStyle(DefaultInteractorStyle): |
invesalius/gui/data_notebook.py
@@ -1127,6 +1127,8 @@ class MeasuresListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): | @@ -1127,6 +1127,8 @@ class MeasuresListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin): | ||
1127 | self.UpdateItemInfo(index, name, colour, location, type_, value) | 1127 | self.UpdateItemInfo(index, name, colour, location, type_, value) |
1128 | else: | 1128 | else: |
1129 | self.InsertNewItem(index, name, colour, location, type_, value) | 1129 | self.InsertNewItem(index, name, colour, location, type_, value) |
1130 | + else: | ||
1131 | + self.UpdateItemInfo(index, name, colour, location, type_, value) | ||
1130 | 1132 | ||
1131 | 1133 | ||
1132 | 1134 |