"""
This type stub file was generated by pyright.
"""

from .vtkAbstractWidget import vtkAbstractWidget

class vtkImplicitPlaneWidget2(vtkAbstractWidget):
    """
    vtkImplicitPlaneWidget2 - 3D widget for manipulating an infinite plane
    
    Superclass: vtkAbstractWidget
    
    This 3D widget defines an infinite plane that can be interactively
    placed in a scene. The widget is assumed to consist of four parts: 1)
    a plane contained in a 2) bounding box, with a 3) plane normal, which
    is rooted at a 4) point on the plane. (The representation paired with
    this widget determines the actual geometry of the widget.)
    
    To use this widget, you generally pair it with a
    vtkImplicitPlaneRepresentation (or a subclass). Various options are
    available for controlling how the representation appears, and how the
    widget functions.
    
    @par Event Bindings: By default, the widget responds to the following
    VTK events (i.e., it watches the vtkRenderWindowInteractor for these
    events):
    
    If the mouse is over the plane normal:
      LeftButtonPressEvent - select normal
      LeftButtonReleaseEvent - release normal
      MouseMoveEvent - orient the normal vector If the mouse is over the
    origin point (handle):
      LeftButtonPressEvent - select handle
      LeftButtonReleaseEvent - release handle (if selected)
      MouseMoveEvent - move the origin point (constrained to the plane)
    If the mouse is over the plane:
      LeftButtonPressEvent - select plane
      LeftButtonReleaseEvent - release plane (if selected)
      MouseMoveEvent - move the plane If the mouse is over the outline:
      LeftButtonPressEvent - select outline
      LeftButtonReleaseEvent - release outline (if selected)
      MouseMoveEvent - move the outline If the keypress characters are
    used
      'Down/Left' Move plane down
      'Up/Right' Move plane up In all the cases, independent of what is
    picked, the widget responds to the following VTK events:
      MiddleButtonPressEvent - move the plane
      MiddleButtonReleaseEvent - release the plane
      RightButtonPressEvent - scale the widget's representation
      RightButtonReleaseEvent - stop scaling the widget
      MouseMoveEvent - scale (if right button) or move (if middle button)
    the widget 
    
    @par Event Bindings: Note that the event bindings described above can
    be changed using this class's vtkWidgetEventTranslator. This class
    translates VTK events into the vtkImplicitPlaneWidget2's widget
    events:
    
    
      vtkWidgetEvent::Select -- some part of the widget has been selected
      vtkWidgetEvent::EndSelect -- the selection process has completed
      vtkWidgetEvent::Move -- a request for widget motion has been
    invoked
      vtkWidgetEvent::Up and vtkWidgetEvent::Down -- MovePlaneAction 
    
    @par Event Bindings: In turn, when these widget events are processed,
    the vtkImplicitPlaneWidget2 invokes the following VTK events on
    itself (which observers can listen for):
    
    
      vtkCommand::StartInteractionEvent (on vtkWidgetEvent::Select)
      vtkCommand::EndInteractionEvent (on vtkWidgetEvent::EndSelect)
      vtkCommand::InteractionEvent (on vtkWidgetEvent::Move) 
    
    @par Event Bindings: This class, and vtkImplicitPlaneRepresentation,
    are next generation VTK widgets. An earlier version of this
    functionality was defined in the class vtkImplicitPlaneWidget.
    
    @sa
    vtk3DWidget vtkBoxWidget vtkPlaneWidget vtkLineWidget vtkPointWidget
    vtkSphereWidget vtkImagePlaneWidget vtkImplicitCylinderWidget
    """
    def CreateDefaultRepresentation(self):
        """
        V.CreateDefaultRepresentation()
        C++: void CreateDefaultRepresentation() override;
        
        Create the default widget representation if one is not set.
        """
        ...
    
    def GetImplicitPlaneRepresentation(self):
        """
        V.GetImplicitPlaneRepresentation()
            -> vtkImplicitPlaneRepresentation
        C++: vtkImplicitPlaneRepresentation *GetImplicitPlaneRepresentation(
            )
        
        Return the representation as a vtkImplicitPlaneRepresentation.
        """
        ...
    
    def GetNumberOfGenerationsFromBase(self, string):
        """
        V.GetNumberOfGenerationsFromBase(string) -> int
        C++: vtkIdType GetNumberOfGenerationsFromBase(const char *type)
            override;
        
        Standard vtkObject methods
        """
        ...
    
    def GetNumberOfGenerationsFromBaseType(self, string):
        """
        V.GetNumberOfGenerationsFromBaseType(string) -> int
        C++: static vtkIdType GetNumberOfGenerationsFromBaseType(
            const char *type)
        
        Standard vtkObject methods
        """
        ...
    
    def IsA(self, string):
        """
        V.IsA(string) -> int
        C++: vtkTypeBool IsA(const char *type) override;
        
        Standard vtkObject methods
        """
        ...
    
    def IsTypeOf(self, string):
        """
        V.IsTypeOf(string) -> int
        C++: static vtkTypeBool IsTypeOf(const char *type)
        
        Standard vtkObject methods
        """
        ...
    
    def NewInstance(self):
        """
        V.NewInstance() -> vtkImplicitPlaneWidget2
        C++: vtkImplicitPlaneWidget2 *NewInstance()
        
        Standard vtkObject methods
        """
        ...
    
    def SafeDownCast(self, vtkObjectBase):
        """
        V.SafeDownCast(vtkObjectBase) -> vtkImplicitPlaneWidget2
        C++: static vtkImplicitPlaneWidget2 *SafeDownCast(
            vtkObjectBase *o)
        
        Standard vtkObject methods
        """
        ...
    
    def SetEnabled(self, p_int):
        """
        V.SetEnabled(int)
        C++: void SetEnabled(int enabling) override;
        
        Disable/Enable the widget if needed. Unobserved the camera if the
        widget is disabled.
        """
        ...
    
    def SetLockNormalToCamera(self, p_int):
        """
        V.SetLockNormalToCamera(int)
        C++: void SetLockNormalToCamera(int lock)
        
        Observe/Unobserve the camera if the widget is locked/unlocked to
        update the vtkImplicitePlaneRepresentation's normal.
        """
        ...
    
    def SetRepresentation(self, vtkImplicitPlaneRepresentation):
        """
        V.SetRepresentation(vtkImplicitPlaneRepresentation)
        C++: void SetRepresentation(vtkImplicitPlaneRepresentation *rep)
        
        Specify an instance of vtkWidgetRepresentation used to represent
        this widget in the scene. Note that the representation is a
        subclass of vtkProp so it can be added to the renderer
        independent of the widget.
        """
        ...
    
    def __delattr__(self, *args, **kwargs):
        """ Implement delattr(self, name). """
        ...
    
    def __getattribute__(self, *args, **kwargs):
        """ Return getattr(self, name). """
        ...
    
    def __init__(self, *args, **kwargs) -> None:
        ...
    
    @staticmethod
    def __new__(*args, **kwargs):
        """ Create and return a new object.  See help(type) for accurate signature. """
        ...
    
    def __repr__(self, *args, **kwargs):
        """ Return repr(self). """
        ...
    
    def __setattr__(self, *args, **kwargs):
        """ Implement setattr(self, name, value). """
        ...
    
    def __str__(self, *args, **kwargs) -> str:
        """ Return str(self). """
        ...
    
    __this__ = ...
    __dict__ = ...
    __vtkname__ = ...


