Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
self.range_slider.handles[0].color = \
self.range_slider.active_color
self.range_slider.set_position(position, 0)
self.value_slider.min_value = self.range_slider.left_disk_value
self.value_slider.update()
elif obj == self.range_slider.handles[1].actors[0]:
self.range_slider.handles[1].color = \
self.range_slider.active_color
self.range_slider.set_position(position, 1)
self.value_slider.max_value = self.range_slider.right_disk_value
self.value_slider.update()
i_ren.force_render()
i_ren.event.abort() # Stop propagating the event.
class ImageContainer2D(UI):
""" A 2D container to hold an image.
Currently Supports:
- png and jpg/jpeg images
Attributes
----------
size: (float, float)
Image size (width, height) in pixels.
img : vtkImageDataGeometryFilters
The image loaded from the specified path.
"""
def __init__(self, img_path, position=(0, 0), size=(100, 100)):
"""
Parameters
@position.setter
def position(self, position):
""" Set text actor position.
Parameters
----------
position : (float, float)
The new position. (x, y) in pixels.
"""
self.actor.SetPosition(*position)
if self._background is not None:
self._background.SetPosition(*self.actor.GetPosition())
class TextBox2D(UI):
""" An editable 2D text box that behaves as a UI component.
Currently supports:
- Basic text editing.
- Cursor movements.
- Single and multi-line text boxes.
- Pre text formatting (text needs to be formatted beforehand).
Attributes
----------
text : str
The current text state.
actor : :class:`vtkActor2d`
The text actor.
width : int
The number of characters in a single line of text.
@inner_radius.setter
def inner_radius(self, radius):
self._disk.SetInnerRadius(radius)
self._disk.Update()
@property
def outer_radius(self):
return self._disk.GetOuterRadius()
@outer_radius.setter
def outer_radius(self, radius):
self._disk.SetOuterRadius(radius)
self._disk.Update()
class Panel2D(UI):
""" A 2D UI Panel.
Can contain one or more UI elements.
Attributes
----------
alignment : [left, right]
Alignment of the panel with respect to the overall screen.
"""
def __init__(self, size, position=(0, 0), color=(0.1, 0.1, 0.1),
opacity=0.7, align="left"):
"""
Parameters
----------
size : (int, int)
Parameters
----------
i_ren: :class:`CustomInteractorStyle`
obj: :class:`vtkActor`
The picked actor
textbox_object: :class:`TextBox2D`
"""
key = i_ren.event.key
is_done = self.handle_character(key)
if is_done:
i_ren.remove_active_prop(self.text.actor)
i_ren.force_render()
class LineSlider2D(UI):
""" A 2D Line Slider.
A sliding handle on a line with a percentage indicator.
Attributes
----------
line_width : int
Width of the line on which the disk will slide.
length : int
Length of the slider.
track : :class:`Rectangle2D`
The line on which the slider's handle moves.
handle : :class:`Disk2D`
The moving part of the slider.
text : :class:`TextBlock2D`
The text that shows percentage.
Parameters
----------
window_size_change : (int, int)
New window size (width, height) in pixels.
"""
if self.alignment == "left":
pass
elif self.alignment == "right":
self.position += np.array(window_size_change)
else:
msg = "You can only left-align or right-align objects in a panel."
raise ValueError(msg)
class TextBlock2D(UI):
""" Wraps over the default vtkTextActor and helps setting the text.
Contains member functions for text formatting.
Attributes
----------
actor : :class:`vtkTextActor`
The text actor.
message : str
The initial text while building the actor.
position : (float, float)
(x, y) in pixels.
color : (float, float, float)
RGB: Values must be between 0-1.
bg_color : (float, float, float)
RGB: Values must be between 0-1.
Scaling factor (width, height) in pixels.
"""
self.resize(self.size * factor)
def set_img(self, img):
""" Modifies the image used by the vtkTexturedActor2D.
Parameters
----------
img : imageDataGeometryFilter
"""
self.texture = set_input(self.texture, img)
class Option(UI):
"""
A set of a Button2D and a TextBlock2D to act as a single option
for checkboxes and radio buttons.
Clicking the button toggles its checked/unchecked status.
Attributes
----------
label : str
The label for the option.
font_size : int
Font Size of the label.
"""
def __init__(self, label, position=(0, 0), font_size=18):
"""
"""
return self.actor.GetProperty().GetOpacity()
@opacity.setter
def opacity(self, opacity):
""" Sets the rectangle's opacity.
Parameters
----------
opacity : float
Degree of transparency. Must be between [0, 1].
"""
self.actor.GetProperty().SetOpacity(opacity)
class Disk2D(UI):
""" A 2D disk UI component.
"""
def __init__(self, outer_radius, inner_radius=0, center=(0, 0),
color=(1, 1, 1), opacity=1.0):
""" Initializes a rectangle.
Parameters
----------
outer_radius : int
Outer radius of the disk.
inner_radius : int, optional
Inner radius of the disk. A value > 0, makes a ring.
center : (float, float), optional
Coordinates (x, y) of the center of the disk.
color : (float, float, float), optional
"""
self.current_icon_id += 1
if self.current_icon_id == len(self.icons):
self.current_icon_id = 0
self.current_icon_name = self.icon_names[self.current_icon_id]
def next_icon(self):
""" Increments the state of the Button.
Also changes the icon.
"""
self.next_icon_id()
self.set_icon(self.icons[self.current_icon_id][1])
class Rectangle2D(UI):
""" A 2D rectangle sub-classed from UI.
"""
def __init__(self, size=(0, 0), position=(0, 0), color=(1, 1, 1),
opacity=1.0):
""" Initializes a rectangle.
Parameters
----------
size : (int, int)
The size of the rectangle (width, height) in pixels.
position : (float, float)
Coordinates (x, y) of the lower-left corner of the rectangle.
color : (float, float, float)
Must take values in [0, 1].
opacity : float
def handle_release_callback(self, i_ren, vtkactor, slider):
""" Change color when handle is released.
Parameters
----------
i_ren : :class:`CustomInteractorStyle`
vtkactor : :class:`vtkActor`
The picked actor
slider : :class:`LineSlider2D`
"""
self.handle.color = self.default_color
i_ren.force_render()
class LineDoubleSlider2D(UI):
""" A 2D Line Slider with two sliding rings.
Useful for setting min and max values for something.
Currently supports:
- Setting positions of both disks.
Attributes
----------
line_width : int
Width of the line on which the disk will slide.
length : int
Length of the slider.
track : :class:`vtkActor`
The line on which the handles move.
handles : [:class:`vtkActor`, :class:`vtkActor`]
The moving slider disks.
def handle_release_callback(self, i_ren, obj, slider):
""" Change color when handle is released.
Parameters
----------
i_ren : :class:`CustomInteractorStyle`
vtkactor : :class:`vtkActor`
The picked actor
slider : :class:`RingSlider2D`
"""
self.handle.color = self.default_color
i_ren.force_render()
class RangeSlider(UI):
""" A set of a LineSlider2D and a LineDoubleSlider2D.
The double slider is used to set the min and max value
for the LineSlider2D
Attributes
----------
range_slider_center : (float, float)
Center of the LineDoubleSlider2D object.
value_slider_center : (float, float)
Center of the LineSlider2D object.
range_slider : :class:`LineDoubleSlider2D`
The line slider which sets the min and max values
value_slider : :class:`LineSlider2D`
The line slider which sets the value