2121# SOFTWARE.
2222"""Provides a wrapper to aid in plotting."""
2323from abc import abstractmethod
24- from enum import Enum
2524
2625from beartype .typing import Any , Dict , List , Optional , Union
2726import numpy as np
5958from ansys .tools .visualization_interface .utils .logger import logger
6059
6160
62- class PickingMode (Enum ):
63- """Enumerate with the available picking modes."""
64- PICK = "pick"
65- HOVER = "hover"
66-
67-
6861class PyVistaBackendInterface (BaseBackend ):
6962 """Provides the interface for the Visualization Interface Tool plotter.
7063
@@ -108,14 +101,12 @@ def __init__(
108101
109102 self ._use_trame = use_trame
110103 self ._allow_picking = allow_picking
111- if self ._allow_picking :
112- if allow_hovering :
113- logger .warning (
114- "Picking and hovering are incompatible. Picking will take precedence."
115- )
104+ self ._allow_hovering = allow_hovering
105+ if self . _allow_picking and self . _allow_hovering :
106+ logger .warning (
107+ "Picking and hovering are incompatible. Picking will take precedence."
108+ )
116109 self ._allow_hovering = False
117- else :
118- self ._allow_hovering = allow_hovering
119110 self ._pv_off_screen_original = bool (pv .OFF_SCREEN )
120111 self ._plot_picked_names = plot_picked_names
121112 # Map that relates PyVista actors with PyAnsys objects
@@ -158,8 +149,8 @@ def __init__(
158149
159150 self ._enable_widgets = self ._pl ._enable_widgets
160151
161- self ._hover_picker = vtkPointPicker ()
162- self ._hover_widget = vtkHoverWidget ()
152+ self ._hover_picker = vtkPointPicker () if self . _allow_hovering else None
153+ self ._hover_widget = vtkHoverWidget () if self . _allow_hovering else None
163154 self ._added_hover_labels = []
164155
165156 @property
@@ -324,8 +315,10 @@ def hover_callback(self, _widget, event_name) -> None:
324315 renderer = plotter .iren .get_poked_renderer (x , y )
325316 self ._hover_picker .Pick (x , y , 0 , renderer )
326317 actor = self ._hover_picker .GetActor ()
327- if event_name == "TimerEvent" and actor is not None and actor in self ._object_to_actors_map :
318+ if actor in self ._object_to_actors_map :
328319 custom_object = self ._object_to_actors_map [actor ]
320+ for label in self ._added_hover_labels :
321+ self ._pl .scene .remove_actor (label )
329322 label_actor = self ._pl .scene .add_point_labels (
330323 [actor .GetCenter ()],
331324 [custom_object .name ],
@@ -335,7 +328,7 @@ def hover_callback(self, _widget, event_name) -> None:
335328 show_points = False ,
336329 )
337330 self ._added_hover_labels .append (label_actor )
338- elif event_name == "EndInteractionEvent" :
331+ else :
339332 for label in self ._added_hover_labels :
340333 self ._pl .scene .remove_actor (label )
341334
@@ -416,8 +409,8 @@ def show(
416409
417410 """
418411 self .plot (plottable_object , name_filter , ** plotting_options )
419- if self ._pl ._object_to_actors_map :
420- self ._object_to_actors_map = self ._pl ._object_to_actors_map
412+ if self ._pl .object_to_actors_map :
413+ self ._object_to_actors_map = self ._pl .object_to_actors_map
421414 else :
422415 logger .warning ("No actors were added to the plotter." )
423416
0 commit comments