ui#

Module: ui.containers#

UI container module.

Panel2D(size, *[, position, color, opacity, ...])

A 2D UI Panel.

TabPanel2D(*[, position, size, title, ...])

Render content within a Tab.

TabUI(*[, position, size, nb_tabs, ...])

UI element to add multiple panels within a single window.

ImageContainer2D(img_path, *[, position, size])

A 2D container to hold an image.

GridUI(actors, *[, captions, ...])

Add actors in a grid and interact with them individually.

Module: ui.core#

UI core module that describe UI abstract class.

UI(*[, position])

An umbrella class for all UI elements.

Rectangle2D(*[, size, position, color, opacity])

A 2D rectangle sub-classed from UI.

Disk2D(outer_radius, *[, inner_radius, ...])

A 2D disk UI component.

TextBlock2D(*[, text, font_size, ...])

Wrap over the default vtkTextActor and helps setting the text.

Button2D(icon_fnames, *[, position, size])

A 2D overlay button and is of type vtkTexturedActor2D.

Module: ui.elements#

UI components module.

TextBox2D(width, height, *[, text, ...])

An editable 2D text box that behaves as a UI component.

LineSlider2D(*[, center, initial_value, ...])

A 2D Line Slider.

LineDoubleSlider2D(*[, line_width, ...])

A 2D Line Slider with two sliding rings.

RingSlider2D(*[, center, initial_value, ...])

A disk slider.

RangeSlider(*[, line_width, inner_radius, ...])

A set of a LineSlider2D and a LineDoubleSlider2D.

Option(label, *[, position, font_size, checked])

A set of a Button2D and a TextBlock2D to act as a single option for checkboxes and radio buttons.

Checkbox(labels, *[, checked_labels, ...])

A 2D set of :class:'Option' objects.

RadioButton(labels, checked_labels, *[, ...])

A 2D set of :class:'Option' objects.

ComboBox2D(*[, items, position, size, ...])

UI element to create drop-down menus.

ListBox2D(values, *[, position, size, ...])

UI component that allows the user to select items from a list.

ListBoxItem2D(list_box, size, *[, ...])

The text displayed in a listbox.

FileMenu2D(directory_path, *[, extensions, ...])

A menu to select files in the current folder.

DrawShape(shape_type, *[, drawpanel, position])

Create and Manage 2D Shapes.

DrawPanel(*[, size, position, is_draggable])

The main Canvas(Panel2D) on which everything would be drawn.

PlaybackPanel(*[, loop, position, width])

A playback controller that can do essential functionalities.

Card2D(image_path, *[, body_text, ...])

Card element to show image and related text

SpinBox(*[, position, size, padding, ...])

SpinBox UI.

Module: ui.helpers#

Helper variable or function for UI Elements.

clip_overflow(textblock, width, *[, side])

Clips overflowing text of TextBlock2D with respect to width.

wrap_overflow(textblock, wrap_width, *[, side])

Wraps overflowing text of TextBlock2D with respect to width.

check_overflow(textblock, width, *[, ...])

Checks if the text is overflowing.

cal_bounding_box_2d(vertices)

Calculate the min, max position and the size of the bounding box.

rotate_2d(vertices, angle)

Rotate the given vertices by an angle.

Panel2D#

class fury.ui.containers.Panel2D(size, *, position=(0, 0), color=(0.1, 0.1, 0.1), opacity=0.7, align='left', border_color=(1, 1, 1), border_width=0, has_border=False)[source]#

Bases: UI

A 2D UI Panel.

Can contain one or more UI elements.

alignment#

Alignment of the panel with respect to the overall screen.

Type:

[left, right]

__init__(size, *, position=(0, 0), color=(0.1, 0.1, 0.1), opacity=0.7, align='left', border_color=(1, 1, 1), border_width=0, has_border=False)[source]#

Init class instance.

Parameters:
  • size ((int, int)) – Size (width, height) in pixels of the panel.

  • position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of the panel.

  • color ((float, float, float)) – Must take values in [0, 1].

  • opacity (float) – Must take values in [0, 1].

  • align ([left, right]) – Alignment of the panel with respect to the overall screen.

  • border_color ((float, float, float), optional) – Must take values in [0, 1].

  • border_width (float, optional) – width of the border

  • has_border (bool, optional) – If the panel should have borders.

add_element(element, coords, *, anchor='position')[source]#

Add a UI component to the panel.

The coordinates represent an offset from the lower left corner of the panel.

Parameters:
  • element (UI) – The UI item to be added.

  • coords ((float, float) or (int, int)) – If float, normalized coordinates are assumed and they must be between [0,1]. If int, pixels coordinates are assumed and it must fit within the panel’s size.

property border_color#
property border_width#
property color#
left_button_dragged(i_ren, _obj, _panel2d_object)[source]#
left_button_pressed(i_ren, _obj, panel2d_object)[source]#
property opacity#
re_align(window_size_change)[source]#

Re-organise the elements in case the window size is changed.

Parameters:

window_size_change ((int, int)) – New window size (width, height) in pixels.

remove_element(element)[source]#

Remove a UI component from the panel.

Parameters:

element (UI) – The UI item to be removed.

resize(size)[source]#

Set the panel size.

Parameters:

size ((float, float)) – Panel size (width, height) in pixels.

set_visibility(visibility)[source]#

Set visibility of this UI component.

update_border_coords()[source]#

Update the coordinates of the borders

update_element(element, coords, *, anchor='position')[source]#

Update the position of a UI component in the panel.

Parameters:
  • element (UI) – The UI item to be updated.

  • coords ((float, float) or (int, int)) – New coordinates. If float, normalized coordinates are assumed and they must be between [0,1]. If int, pixels coordinates are assumed and it must fit within the panel’s size.

TabPanel2D#

class fury.ui.containers.TabPanel2D(*, position=(0, 0), size=(100, 100), title='New Tab', color=(0.5, 0.5, 0.5), content_panel=None)[source]#

Bases: UI

Render content within a Tab.

content_panel#

Hold all the content UI components.

Type:
class:

‘Panel2D’

text_block#

Renders the title of the tab.

Type:
class:

‘TextBlock2D’

__init__(*, position=(0, 0), size=(100, 100), title='New Tab', color=(0.5, 0.5, 0.5), content_panel=None)[source]#

Init class instance.

Parameters:
  • position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of the UI component

  • size ((int, int)) – Width and height of the pixels of this UI component.

  • title (str) – Renders the title for Tab panel.

  • color (list of 3 floats) – Background color of tab panel.

  • content_panel (Panel2D) – Panel consisting of the content UI elements.

add_element(element, coords, *, anchor='position')[source]#

Add a UI component to the content panel.

The coordinates represent an offset from the lower left corner of the panel.

Parameters:
  • element (UI) – The UI item to be added.

  • coords ((float, float) or (int, int)) – If float, normalized coordinates are assumed and they must be between [0,1]. If int, pixels coordinates are assumed and it must fit within the panel’s size.

property color#

Return the background color of tab panel.

remove_element(element)[source]#

Remove a UI component from the content panel.

Parameters:

element (UI) – The UI item to be removed.

resize(size)[source]#

Resize Tab panel.

Parameters:

size ((int, int)) – New width and height in pixels.

property title#

Return the title of tab panel.

property title_bold#

Is the title of a tab panel bold.

property title_color#

Return the title color of tab panel.

property title_font_size#

Return the title font size of tab panel.

property title_italic#

Is the title of a tab panel italic.

update_element(element, coords, *, anchor='position')[source]#

Update the position of a UI component in the content panel.

Parameters:
  • element (UI) – The UI item to be updated.

  • coords ((float, float) or (int, int)) – New coordinates. If float, normalized coordinates are assumed and they must be between [0,1]. If int, pixels coordinates are assumed and it must fit within the panel’s size.

TabUI#

class fury.ui.containers.TabUI(*, position=(0, 0), size=(100, 100), nb_tabs=1, active_color=(1, 1, 1), inactive_color=(0.5, 0.5, 0.5), draggable=False, startup_tab_id=None, tab_bar_pos='top')[source]#

Bases: UI

UI element to add multiple panels within a single window.

tabs#

Stores all the instances of ‘TabPanel2D’ that renders the contents.

Type:
class:

List of ‘TabPanel2D’

__init__(*, position=(0, 0), size=(100, 100), nb_tabs=1, active_color=(1, 1, 1), inactive_color=(0.5, 0.5, 0.5), draggable=False, startup_tab_id=None, tab_bar_pos='top')[source]#

Init class instance.

Parameters:
  • position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of this UI component.

  • size ((int, int)) – Width and height in pixels of this UI component.

  • nb_tabs (int) – Number of tabs to be renders.

  • active_color (tuple of 3 floats.) – Background color of active tab panel.

  • inactive_color (tuple of 3 floats.) – Background color of inactive tab panels.

  • draggable (bool) – Whether the UI element is draggable or not.

  • startup_tab_id (int, optional) – Tab to be activated and uncollapsed on startup. by default None is activated/ all collapsed.

  • tab_bar_pos (str, optional) – Position of the Tab Bar in the panel

add_element(tab_idx, element, coords, *, anchor='position')[source]#

Add element to content panel after checking its existence.

collapse_tab_ui(iren, _obj, _tab_comp)[source]#

Handle events when Tab UI is collapsed.

left_button_dragged(i_ren, _obj, _sub_component)[source]#
left_button_pressed(i_ren, _obj, _sub_component)[source]#
remove_element(tab_idx, element)[source]#

Remove element from content panel after checking its existence.

select_tab_callback(iren, _obj, _tab_comp)[source]#

Handle events when a tab is selected.

update_element(tab_idx, element, coords, *, anchor='position')[source]#

Update element on content panel after checking its existence.

update_tabs()[source]#

Update position, size and callbacks for tab panels.

ImageContainer2D#

class fury.ui.containers.ImageContainer2D(img_path, *, position=(0, 0), size=(100, 100))[source]#

Bases: UI

A 2D container to hold an image.

Currently Supports: - png and jpg/jpeg images

size#

Image size (width, height) in pixels.

Type:

(float, float)

img#

The image loaded from the specified path.

Type:

ImageData

__init__(img_path, *, position=(0, 0), size=(100, 100))[source]#

Init class instance.

Parameters:
  • img_path (string) – URL or local path of the image

  • position ((float, float), optional) – Absolute coordinates (x, y) of the lower-left corner of the image.

  • size ((int, int), optional) – Width and height in pixels of the image.

resize(size)[source]#

Resize the image.

Parameters:

size ((float, float)) – image size (width, height) in pixels.

scale(factor)[source]#

Scale the image.

Parameters:

factor ((float, float)) – Scaling factor (width, height) in pixels.

set_img(img)[source]#

Modify the image used by the vtkTexturedActor2D.

Parameters:

img (imageData) –

GridUI#

class fury.ui.containers.GridUI(actors, *, captions=None, caption_offset=(0, -100, 0), cell_padding=0, cell_shape='rect', aspect_ratio=1.7777777777777777, dim=None, rotation_speed=1, rotation_axis=(0, 1, 0))[source]#

Bases: UI

Add actors in a grid and interact with them individually.

__init__(actors, *, captions=None, caption_offset=(0, -100, 0), cell_padding=0, cell_shape='rect', aspect_ratio=1.7777777777777777, dim=None, rotation_speed=1, rotation_axis=(0, 1, 0))[source]#

Init scene.

Parameters:

position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of this UI component.

ANTICLOCKWISE_ROTATION_X = array([-10,   1,   0,   0])#
ANTICLOCKWISE_ROTATION_Y = array([-10,   0,   1,   0])#
CLOCKWISE_ROTATION_X = array([10,  1,  0,  0])#
CLOCKWISE_ROTATION_Y = array([10,  0,  1,  0])#
key_press_callback(istyle, obj, _what)[source]#
static left_click_callback(istyle, _obj, _what)[source]#
static left_click_callback2(istyle, obj, self)[source]#
static left_release_callback(istyle, _obj, _what)[source]#
static left_release_callback2(istyle, _obj, _what)[source]#
static mouse_move_callback(istyle, _obj, _what)[source]#
static mouse_move_callback2(istyle, obj, self)[source]#
resize(size)[source]#

Resize the button.

Parameters:

size ((float, float)) – Button size (width, height) in pixels.

UI#

class fury.ui.core.UI(*, position=(0, 0))[source]#

Bases: object

An umbrella class for all UI elements.

While adding UI elements to the scene, we go over all the sub-elements that come with it and add those to the scene automatically.

position#

Absolute coordinates (x, y) of the lower-left corner of this UI component.

Type:

(float, float)

center#

Absolute coordinates (x, y) of the center of this UI component.

Type:

(float, float)

size#

Width and height in pixels of this UI component.

Type:

(int, int)

on_left_mouse_button_pressed#

Callback function for when the left mouse button is pressed.

Type:

function

on_left_mouse_button_released#

Callback function for when the left mouse button is released.

Type:

function

on_left_mouse_button_clicked#

Callback function for when clicked using the left mouse button (i.e. pressed -> released).

Type:

function

on_left_mouse_double_clicked#

Callback function for when left mouse button is double clicked (i.e pressed -> released -> pressed -> released).

Type:

function

on_left_mouse_button_dragged#

Callback function for when dragging using the left mouse button.

Type:

function

on_right_mouse_button_pressed#

Callback function for when the right mouse button is pressed.

Type:

function

on_right_mouse_button_released#

Callback function for when the right mouse button is released.

Type:

function

on_right_mouse_button_clicked#

Callback function for when clicking using the right mouse button (i.e. pressed -> released).

Type:

function

on_right_mouse_double_clicked#

Callback function for when right mouse button is double clicked (i.e pressed -> released -> pressed -> released).

Type:

function

on_right_mouse_button_dragged#

Callback function for when dragging using the right mouse button.

Type:

function

on_middle_mouse_button_pressed#

Callback function for when the middle mouse button is pressed.

Type:

function

on_middle_mouse_button_released#

Callback function for when the middle mouse button is released.

Type:

function

on_middle_mouse_button_clicked#

Callback function for when clicking using the middle mouse button (i.e. pressed -> released).

Type:

function

on_middle_mouse_double_clicked#

Callback function for when middle mouse button is double clicked (i.e pressed -> released -> pressed -> released).

Type:

function

on_middle_mouse_button_dragged#

Callback function for when dragging using the middle mouse button.

Type:

function

on_key_press#

Callback function for when a keyboard key is pressed.

Type:

function

__init__(*, position=(0, 0))[source]#

Init scene.

Parameters:

position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of this UI component.

property actors#

Actors composing this UI component.

add_callback(prop, event_type, callback, *, priority=0)[source]#

Add a callback to a specific event for this UI component.

Parameters:
  • prop (vtkProp) – The prop on which is callback is to be added.

  • event_type (string) – The event code.

  • callback (function) – The callback function.

  • priority (int) – Higher number is higher priority.

add_to_scene(scene)[source]#

Allow UI objects to add their own props to the scene.

Parameters:

scene (scene) –

property center#
handle_events(actor)[source]#
static key_press_callback(i_ren, obj, self)[source]#
static left_button_click_callback(i_ren, obj, self)[source]#
static left_button_release_callback(i_ren, obj, self)[source]#
static middle_button_click_callback(i_ren, obj, self)[source]#
static middle_button_release_callback(i_ren, obj, self)[source]#
static mouse_move_callback(i_ren, obj, self)[source]#
property position#
static right_button_click_callback(i_ren, obj, self)[source]#
static right_button_release_callback(i_ren, obj, self)[source]#
set_visibility(visibility)[source]#

Set visibility of this UI component.

property size#

Rectangle2D#

class fury.ui.core.Rectangle2D(*, size=(0, 0), position=(0, 0), color=(1, 1, 1), opacity=1.0)[source]#

Bases: UI

A 2D rectangle sub-classed from UI.

__init__(*, size=(0, 0), position=(0, 0), color=(1, 1, 1), opacity=1.0)[source]#

Initialize 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) – Must take values in [0, 1].

property color#

Get the rectangle’s color.

property height#
property opacity#

Get the rectangle’s opacity.

resize(size)[source]#

Set the button size.

Parameters:

size ((float, float)) – Button size (width, height) in pixels.

property width#

Disk2D#

class fury.ui.core.Disk2D(outer_radius, *, inner_radius=0, center=(0, 0), color=(1, 1, 1), opacity=1.0)[source]#

Bases: UI

A 2D disk UI component.

__init__(outer_radius, *, inner_radius=0, center=(0, 0), color=(1, 1, 1), opacity=1.0)[source]#

Initialize a 2D Disk.

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) – Must take values in [0, 1].

  • opacity (float, optional) – Must take values in [0, 1].

property color#

Get the color of this UI component.

property inner_radius#
property opacity#

Get the opacity of this UI component.

property outer_radius#

TextBlock2D#

class fury.ui.core.TextBlock2D(*, text='Text Block', font_size=18, font_family='Arial', justification='left', vertical_justification='bottom', bold=False, italic=False, shadow=False, size=None, color=(1, 1, 1), bg_color=None, position=(0, 0), auto_font_scale=False, dynamic_bbox=False)[source]#

Bases: UI

Wrap over the default vtkTextActor and helps setting the text.

Contains member functions for text formatting.

actor#

The text actor.

Type:

vtkTextActor

message#

The initial text while building the actor.

Type:

str

position#

(x, y) in pixels.

Type:

(float, float)

color#

RGB: Values must be between 0-1.

Type:

(float, float, float)

bg_color#

RGB: Values must be between 0-1.

Type:

(float, float, float)

font_size#

Size of the text font.

Type:

int

font_family#

Currently only supports Arial.

Type:

str

justification#

left, right or center.

Type:

str

vertical_justification#

bottom, middle or top.

Type:

str

bold#

Makes text bold.

Type:

bool

italic#

Makes text italicised.

Type:

bool

shadow#

Adds text shadow.

Type:

bool

size#

Size (width, height) in pixels of the text bounding box.

Type:

(int, int)

auto_font_scale#

Automatically scale font according to the text bounding box.

Type:

bool

dynamic_bbox#

Automatically resize the bounding box according to the content.

Type:

bool

__init__(*, text='Text Block', font_size=18, font_family='Arial', justification='left', vertical_justification='bottom', bold=False, italic=False, shadow=False, size=None, color=(1, 1, 1), bg_color=None, position=(0, 0), auto_font_scale=False, dynamic_bbox=False)[source]#

Init class instance.

Parameters:
  • text (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.

  • font_size (int) – Size of the text font.

  • font_family (str) – Currently only supports Arial.

  • justification (str) – left, right or center.

  • vertical_justification (str) – bottom, middle or top.

  • bold (bool) – Makes text bold.

  • italic (bool) – Makes text italicised.

  • shadow (bool) – Adds text shadow.

  • size ((int, int)) – Size (width, height) in pixels of the text bounding box.

  • auto_font_scale (bool, optional) – Automatically scale font according to the text bounding box.

  • dynamic_bbox (bool, optional) – Automatically resize the bounding box according to the content.

property auto_font_scale#

Return whether text font is automatically scaled.

Returns:

Text is auto_font_scaled if True.

Return type:

bool

property background_color#

Get background color.

Returns:

If None, there no background color. Otherwise, background color in RGB.

Return type:

(float, float, float) or None

property bold#

Return whether the text is bold.

Returns:

Text is bold if True.

Return type:

bool

cal_size_from_message()[source]#

Calculate size of background according to the message it contains.

property color#

Get text color.

Returns:

Returns text color in RGB.

Return type:

(float, float, float)

property dynamic_bbox#

Automatically resize the bounding box according to the content.

Returns:

Bounding box is dynamic if True.

Return type:

bool

property font_family#

Get font family.

Returns:

Text font family.

Return type:

str

property font_size#

Get text font size.

Returns:

Text font size.

Return type:

int

property italic#

Return whether the text is italicised.

Returns:

Text is italicised if True.

Return type:

bool

property justification#

Get text justification.

Returns:

Text justification.

Return type:

str

property message#

Get message from the text.

Returns:

The current text message.

Return type:

str

resize(size)[source]#

Resize TextBlock2D.

Parameters:

size ((int, int)) – Text bounding box size(width, height) in pixels.

property shadow#

Return whether the text has shadow.

Returns:

Text is shadowed if True.

Return type:

bool

update_alignment()[source]#

Update Text Alignment.

update_bounding_box(*, size=None)[source]#

Update Text Bounding Box.

Parameters:

size ((int, int) or None) – If None, calculates bounding box. Otherwise, uses the given size.

property vertical_justification#

Get text vertical justification.

Returns:

Text vertical justification.

Return type:

str

Button2D#

class fury.ui.core.Button2D(icon_fnames, *, position=(0, 0), size=(30, 30))[source]#

Bases: UI

A 2D overlay button and is of type vtkTexturedActor2D.

Currently supports:

- Multiple icons.
- Switching between icons.
__init__(icon_fnames, *, position=(0, 0), size=(30, 30))[source]#

Init class instance.

Parameters:
  • icon_fnames (List(string, string)) – ((iconname, filename), (iconname, filename), ….)

  • position ((float, float), optional) – Absolute coordinates (x, y) of the lower-left corner of the button.

  • size ((int, int), optional) – Width and height in pixels of the button.

property color#

Get the button’s color.

next_icon()[source]#

Increment the state of the Button.

Also changes the icon.

next_icon_id()[source]#

Set the next icon ID while cycling through icons.

resize(size)[source]#

Resize the button.

Parameters:

size ((float, float)) – Button size (width, height) in pixels.

scale(factor)[source]#

Scale the button.

Parameters:

factor ((float, float)) – Scaling factor (width, height) in pixels.

set_icon(icon)[source]#

Modify the icon used by the vtkTexturedActor2D.

Parameters:

icon (imageData) –

set_icon_by_name(icon_name)[source]#

Set the button icon using its name.

Parameters:

icon_name (str) –

TextBox2D#

class fury.ui.elements.TextBox2D(width, height, *, text='Enter Text', position=(100, 10), color=(0, 0, 0), font_size=18, font_family='Arial', justification='left', bold=False, italic=False, shadow=False)[source]#

Bases: 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).

text#

The current text state.

Type:

str

actor#

The text actor.

Type:

vtkActor2d

width#

The number of characters in a single line of text.

Type:

int

height#

The number of lines in the textbox.

Type:

int

window_left#

Left limit of visible text in the textbox.

Type:

int

window_right#

Right limit of visible text in the textbox.

Type:

int

caret_pos#

Position of the caret in the text.

Type:

int

init#

Flag which says whether the textbox has just been initialized.

Type:

bool

__init__(width, height, *, text='Enter Text', position=(100, 10), color=(0, 0, 0), font_size=18, font_family='Arial', justification='left', bold=False, italic=False, shadow=False)[source]#

Init this UI element.

Parameters:
  • width (int) – The number of characters in a single line of text.

  • height (int) – The number of lines in the textbox.

  • text (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.

  • font_size (int) – Size of the text font.

  • font_family (str) – Currently only supports Arial.

  • justification (str) – left, right or center.

  • bold (bool) – Makes text bold.

  • italic (bool) – Makes text italicised.

  • shadow (bool) – Adds text shadow.

add_character(character)[source]#

Insert a character into the text and moves window and caret.

Parameters:

character (str) –

edit_mode()[source]#

Turn on edit mode.

handle_character(key, key_char)[source]#

Handle button events.

# TODO: Need to handle all kinds of characters like !, +, etc.

Parameters:

character (str) –

key_press(i_ren, _obj, _textbox_object)[source]#

Handle Key press for textboxself.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _textbox_object (TextBox2D) –

left_button_press(i_ren, _obj, _textbox_object)[source]#

Handle left button press for textbox.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _textbox_object (TextBox2D) –

left_move_left()[source]#

Move left boundary of the text window left-wards.

left_move_right()[source]#

Move left boundary of the text window right-wards.

move_caret_left()[source]#

Move the caret towards left.

move_caret_right()[source]#

Move the caret towards right.

move_left()[source]#

Handle left button press.

move_right()[source]#

Handle right button press.

remove_character()[source]#

Remove a character and moves window and caret accordingly.

render_text(*, show_caret=True)[source]#

Render text after processing.

Parameters:

show_caret (bool) – Whether or not to show the caret.

right_move_left()[source]#

Move right boundary of the text window left-wards.

right_move_right()[source]#

Move right boundary of the text window right-wards.

set_message(message)[source]#

Set custom text to textbox.

Parameters:

message (str) – The custom message to be set.

showable_text(show_caret)[source]#

Chop out text to be shown on the screen.

Parameters:

show_caret (bool) – Whether or not to show the caret.

width_set_text(text)[source]#

Add newlines to text where necessary.

This is needed for multi-line text boxes.

Parameters:

text (str) – The final text to be formatted.

Returns:

A multi line formatted text.

Return type:

str

LineSlider2D#

class fury.ui.elements.LineSlider2D(*, center=(0, 0), initial_value=50, min_value=0, max_value=100, length=200, line_width=5, inner_radius=0, outer_radius=10, handle_side=20, font_size=16, orientation='horizontal', text_alignment='', text_template='{value:.1f} ({ratio:.0%})', shape='disk')[source]#

Bases: UI

A 2D Line Slider.

A sliding handle on a line with a percentage indicator.

line_width#

Width of the line on which the disk will slide.

Type:

int

length#

Length of the slider.

Type:

int

track#

The line on which the slider’s handle moves.

Type:

Rectangle2D

handle#

The moving part of the slider.

Type:

Disk2D

text#

The text that shows percentage.

Type:

TextBlock2D

shape#

Describes the shape of the handle. Currently supports ‘disk’ and ‘square’.

Type:

string

default_color#

Color of the handle when in unpressed state.

Type:

(float, float, float)

active_color#

Color of the handle when it is pressed.

Type:

(float, float, float)

__init__(*, center=(0, 0), initial_value=50, min_value=0, max_value=100, length=200, line_width=5, inner_radius=0, outer_radius=10, handle_side=20, font_size=16, orientation='horizontal', text_alignment='', text_template='{value:.1f} ({ratio:.0%})', shape='disk')[source]#

Init this UI element.

Parameters:
  • center ((float, float)) – Center of the slider’s center.

  • initial_value (float) – Initial value of the slider.

  • min_value (float) – Minimum value of the slider.

  • max_value (float) – Maximum value of the slider.

  • length (int) – Length of the slider.

  • line_width (int) – Width of the line on which the disk will slide.

  • inner_radius (int) – Inner radius of the handles (if disk).

  • outer_radius (int) – Outer radius of the handles (if disk).

  • handle_side (int) – Side length of the handles (if square).

  • font_size (int) – Size of the text to display alongside the slider (pt).

  • orientation (str) – horizontal or vertical

  • text_alignment (str) – define text alignment on a slider. Left (default)/ right for the vertical slider or top/bottom (default) for an horizontal slider.

  • text_template (str, callable) – If str, text template can contain one or multiple of the replacement fields: {value:}, {ratio:}. If callable, this instance of :class:LineSlider2D will be passed as argument to the text template function.

  • shape (string) – Describes the shape of the handle. Currently supports ‘disk’ and ‘square’.

property bottom_y_position#
format_text()[source]#

Return formatted text to display along the slider.

handle_move_callback(i_ren, _vtkactor, _slider)[source]#

Handle movement.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • vtkactor (vtkActor) – The picked actor

  • slider (LineSlider2D) –

handle_release_callback(i_ren, _vtkactor, _slider)[source]#

Change color when handle is released.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • vtkactor (vtkActor) – The picked actor

  • slider (LineSlider2D) –

property left_x_position#
property ratio#
property right_x_position#
set_position(position)[source]#

Set the disk’s position.

Parameters:

position ((float, float)) – The absolute position of the disk (x, y).

property top_y_position#
track_click_callback(i_ren, _vtkactor, _slider)[source]#

Update disk position and grab the focus.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • vtkactor (vtkActor) – The picked actor

  • _slider (LineSlider2D) –

update()[source]#

Update the slider.

property value#

LineDoubleSlider2D#

class fury.ui.elements.LineDoubleSlider2D(*, line_width=5, inner_radius=0, outer_radius=10, handle_side=20, center=(450, 300), length=200, initial_values=(0, 100), min_value=0, max_value=100, font_size=16, text_template='{value:.1f}', orientation='horizontal', shape='disk')[source]#

Bases: 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.

line_width#

Width of the line on which the disk will slide.

Type:

int

length#

Length of the slider.

Type:

int

track#

The line on which the handles move.

Type:

vtkActor

handles#

The moving slider disks.

Type:

[vtkActor, vtkActor]

text#

The texts that show the values of the disks.

Type:

[TextBlock2D, TextBlock2D]

shape#

Describes the shape of the handle. Currently supports ‘disk’ and ‘square’.

Type:

string

default_color#

Color of the handles when in unpressed state.

Type:

(float, float, float)

active_color#

Color of the handles when they are pressed.

Type:

(float, float, float)

__init__(*, line_width=5, inner_radius=0, outer_radius=10, handle_side=20, center=(450, 300), length=200, initial_values=(0, 100), min_value=0, max_value=100, font_size=16, text_template='{value:.1f}', orientation='horizontal', shape='disk')[source]#

Init this UI element.

Parameters:
  • line_width (int) – Width of the line on which the disk will slide.

  • inner_radius (int) – Inner radius of the handles (if disk).

  • outer_radius (int) – Outer radius of the handles (if disk).

  • handle_side (int) – Side length of the handles (if square).

  • center ((float, float)) – Center of the slider.

  • length (int) – Length of the slider.

  • initial_values ((float, float)) – Initial values of the two handles.

  • min_value (float) – Minimum value of the slider.

  • max_value (float) – Maximum value of the slider.

  • font_size (int) – Size of the text to display alongside the slider (pt).

  • text_template (str, callable) – If str, text template can contain one or multiple of the replacement fields: {value:}, {ratio:}. If callable, this instance of :class:LineDoubleSlider2D will be passed as argument to the text template function.

  • orientation (str) – horizontal or vertical

  • shape (string) – Describes the shape of the handle. Currently supports ‘disk’ and ‘square’.

property bottom_disk_ratio#

Return the ratio of the bottom disk.

property bottom_disk_value#

Return the value of the bottom disk.

property bottom_y_position#
coord_to_ratio(coord)[source]#

Convert the x coordinate of a disk to the ratio.

Parameters:

coord (float) –

format_text(disk_number)[source]#

Return formatted text to display along the slider.

Parameters:

disk_number (int) – Index of the disk.

handle_move_callback(i_ren, vtkactor, _slider)[source]#

Handle movement.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • vtkactor (vtkActor) – The picked actor

  • _slider (LineDoubleSlider2D) –

handle_release_callback(i_ren, vtkactor, _slider)[source]#

Change color when handle is released.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • vtkactor (vtkActor) – The picked actor

  • _slider (LineDoubleSlider2D) –

property left_disk_ratio#

Return the ratio of the left disk.

property left_disk_value#

Return the value of the left disk.

property left_x_position#
ratio_to_coord(ratio)[source]#

Convert the ratio to the absolute coordinate.

Parameters:

ratio (float) –

ratio_to_value(ratio)[source]#

Convert the ratio to the value of the disk.

Parameters:

ratio (float) –

property right_disk_ratio#

Return the ratio of the right disk.

property right_disk_value#

Return the value of the right disk.

property right_x_position#
set_position(position, disk_number)[source]#

Set the disk’s position.

Parameters:
  • position ((float, float)) – The absolute position of the disk (x, y).

  • disk_number (int) – The index of disk being moved.

property top_disk_ratio#

Return the ratio of the top disk.

property top_disk_value#

Return the value of the top disk.

property top_y_position#
update(disk_number)[source]#

Update the slider.

Parameters:

disk_number (int) – Index of the disk to be updated.

value_to_ratio(value)[source]#

Convert the value of a disk to the ratio.

Parameters:

value (float) –

RingSlider2D#

class fury.ui.elements.RingSlider2D(*, center=(0, 0), initial_value=180, min_value=0, max_value=360, slider_inner_radius=40, slider_outer_radius=44, handle_inner_radius=0, handle_outer_radius=10, font_size=16, text_template='{ratio:.0%}')[source]#

Bases: UI

A disk slider.

A disk moves along the boundary of a ring. Goes from 0-360 degrees.

mid_track_radius#

Distance from the center of the slider to the middle of the track.

Type:

float

previous_value#

Value of Rotation of the actor before the current value.

Type:

float

track#

The circle on which the slider’s handle moves.

Type:

Disk2D

handle#

The moving part of the slider.

Type:

Disk2D

text#

The text that shows percentage.

Type:

TextBlock2D

default_color#

Color of the handle when in unpressed state.

Type:

(float, float, float)

active_color#

Color of the handle when it is pressed.

Type:

(float, float, float)

__init__(*, center=(0, 0), initial_value=180, min_value=0, max_value=360, slider_inner_radius=40, slider_outer_radius=44, handle_inner_radius=0, handle_outer_radius=10, font_size=16, text_template='{ratio:.0%}')[source]#

Init this UI element.

Parameters:
  • center ((float, float)) – Position (x, y) of the slider’s center.

  • initial_value (float) – Initial value of the slider.

  • min_value (float) – Minimum value of the slider.

  • max_value (float) – Maximum value of the slider.

  • slider_inner_radius (int) – Inner radius of the base disk.

  • slider_outer_radius (int) – Outer radius of the base disk.

  • handle_outer_radius (int) – Outer radius of the slider’s handle.

  • handle_inner_radius (int) – Inner radius of the slider’s handle.

  • font_size (int) – Size of the text to display alongside the slider (pt).

  • text_template (str, callable) – If str, text template can contain one or multiple of the replacement fields: {value:}, {ratio:}, {angle:}. If callable, this instance of :class:RingSlider2D will be passed as argument to the text template function.

property angle#

Return Angle (in rad) the handle makes with x-axis.

format_text()[source]#

Return formatted text to display along the slider.

handle_move_callback(i_ren, _obj, _slider)[source]#

Move the slider’s handle.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _slider (RingSlider2D) –

handle_release_callback(i_ren, _obj, _slider)[source]#

Change color when handle is released.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • vtkactor (vtkActor) – The picked actor

  • _slider (RingSlider2D) –

property mid_track_radius#
move_handle(click_position)[source]#

Move the slider’s handle.

Parameters:

click_position ((float, float)) – Position of the mouse click.

property previous_value#
property ratio#
track_click_callback(i_ren, _obj, _slider)[source]#

Update disk position and grab the focus.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _slider (RingSlider2D) –

update()[source]#

Update the slider.

property value#

RangeSlider#

class fury.ui.elements.RangeSlider(*, line_width=5, inner_radius=0, outer_radius=10, handle_side=20, range_slider_center=(450, 400), value_slider_center=(450, 300), length=200, min_value=0, max_value=100, font_size=16, range_precision=1, orientation='horizontal', value_precision=2, shape='disk')[source]#

Bases: UI

A set of a LineSlider2D and a LineDoubleSlider2D. The double slider is used to set the min and max value for the LineSlider2D

range_slider_center#

Center of the LineDoubleSlider2D object.

Type:

(float, float)

value_slider_center#

Center of the LineSlider2D object.

Type:

(float, float)

range_slider#

The line slider which sets the min and max values

Type:

LineDoubleSlider2D

value_slider#

The line slider which sets the value

Type:

LineSlider2D

__init__(*, line_width=5, inner_radius=0, outer_radius=10, handle_side=20, range_slider_center=(450, 400), value_slider_center=(450, 300), length=200, min_value=0, max_value=100, font_size=16, range_precision=1, orientation='horizontal', value_precision=2, shape='disk')[source]#

Init this class instance.

Parameters:
  • line_width (int) – Width of the slider tracks

  • inner_radius (int) – Inner radius of the handles.

  • outer_radius (int) – Outer radius of the handles.

  • handle_side (int) – Side length of the handles (if square).

  • range_slider_center ((float, float)) – Center of the LineDoubleSlider2D object.

  • value_slider_center ((float, float)) – Center of the LineSlider2D object.

  • length (int) – Length of the sliders.

  • min_value (float) – Minimum value of the double slider.

  • max_value (float) – Maximum value of the double slider.

  • font_size (int) – Size of the text to display alongside the sliders (pt).

  • range_precision (int) – Number of decimal places to show the min and max values set.

  • orientation (str) – horizontal or vertical

  • value_precision (int) – Number of decimal places to show the value set on slider.

  • shape (string) – Describes the shape of the handle. Currently supports ‘disk’ and ‘square’.

range_slider_handle_move_callback(i_ren, obj, _slider)[source]#

Update range_slider’s handles.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _slider (RangeSlider) –

Option#

class fury.ui.elements.Option(label, *, position=(0, 0), font_size=18, checked=False)[source]#

Bases: 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.

label#

The label for the option.

Type:

str

font_size#

Font Size of the label.

Type:

int

__init__(label, *, position=(0, 0), font_size=18, checked=False)[source]#

Init this class instance.

Parameters:
  • label (str) – Text to be displayed next to the option’s button.

  • position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of the button of the option.

  • font_size (int) – Font size of the label.

  • checked (bool, optional) – Boolean value indicates the initial state of the option

deselect()[source]#
select()[source]#
toggle(i_ren, _obj, _element)[source]#

Checkbox#

class fury.ui.elements.Checkbox(labels, *, checked_labels=(), padding=1, font_size=18, font_family='Arial', position=(0, 0))[source]#

Bases: UI

A 2D set of :class:’Option’ objects. Multiple options can be selected.

labels#

List of labels of each option.

Type:

list(string)

options#

Dictionary of all the options in the checkbox set.

Type:

dict(Option)

padding#

Distance between two adjacent options

Type:

float

__init__(labels, *, checked_labels=(), padding=1, font_size=18, font_family='Arial', position=(0, 0))[source]#

Init this class instance.

Parameters:
  • labels (list(str)) – List of labels of each option.

  • checked_labels (list(str), optional) – List of labels that are checked on setting up.

  • padding (float, optional) – The distance between two adjacent options

  • font_size (int, optional) – Size of the text font.

  • font_family (str, optional) – Currently only supports Arial.

  • position ((float, float), optional) – Absolute coordinates (x, y) of the lower-left corner of the button of the first option.

property font_size#

Gets the font size of text.

property padding#

Get the padding between options.

RadioButton#

class fury.ui.elements.RadioButton(labels, checked_labels, *, padding=1, font_size=18, font_family='Arial', position=(0, 0))[source]#

Bases: Checkbox

A 2D set of :class:’Option’ objects. Only one option can be selected.

labels#

List of labels of each option.

Type:

list(string)

options#

Dictionary of all the options in the checkbox set.

Type:

dict(Option)

padding#

Distance between two adjacent options

Type:

float

__init__(labels, checked_labels, *, padding=1, font_size=18, font_family='Arial', position=(0, 0))[source]#

Init class instance.

Parameters:
  • labels (list(str)) – List of labels of each option.

  • checked_labels (list(str), optional) – List of labels that are checked on setting up.

  • padding (float, optional) – The distance between two adjacent options

  • font_size (int, optional) – Size of the text font.

  • font_family (str, optional) – Currently only supports Arial.

  • position ((float, float), optional) – Absolute coordinates (x, y) of the lower-left corner of the button of the first option.

ComboBox2D#

class fury.ui.elements.ComboBox2D(*, items=None, position=(0, 0), size=(300, 200), placeholder='Choose selection...', draggable=True, selection_text_color=(0, 0, 0), selection_bg_color=(1, 1, 1), menu_text_color=(0.2, 0.2, 0.2), selected_color=(0.9, 0.6, 0.6), unselected_color=(0.6, 0.6, 0.6), scroll_bar_active_color=(0.6, 0.2, 0.2), scroll_bar_inactive_color=(0.9, 0.0, 0.0), menu_opacity=1.0, reverse_scrolling=False, font_size=20, line_spacing=1.4)[source]#

Bases: UI

UI element to create drop-down menus.

selection_box#

Display selection and placeholder text.

Type:
class:

‘TextBox2D’

drop_down_button#

Button to show or hide menu.

Type:
class:

‘Button2D’

drop_down_menu#

Container for item list.

Type:
class:

‘ListBox2D’

__init__(*, items=None, position=(0, 0), size=(300, 200), placeholder='Choose selection...', draggable=True, selection_text_color=(0, 0, 0), selection_bg_color=(1, 1, 1), menu_text_color=(0.2, 0.2, 0.2), selected_color=(0.9, 0.6, 0.6), unselected_color=(0.6, 0.6, 0.6), scroll_bar_active_color=(0.6, 0.2, 0.2), scroll_bar_inactive_color=(0.9, 0.0, 0.0), menu_opacity=1.0, reverse_scrolling=False, font_size=20, line_spacing=1.4)[source]#

Init class Instance.

Parameters:
  • items (list(string)) – List of items to be displayed as choices.

  • position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of this UI component.

  • size ((int, int)) – Width and height in pixels of this UI component.

  • placeholder (str) – Holds the default text to be displayed.

  • draggable ({True, False}) – Whether the UI element is draggable or not.

  • selection_text_color (tuple of 3 floats) – Color of the selected text to be displayed.

  • selection_bg_color (tuple of 3 floats) – Background color of the selection text.

  • menu_text_color (tuple of 3 floats.) – Color of the options displayed in drop down menu.

  • selected_color (tuple of 3 floats.) – Background color of the selected option in drop down menu.

  • unselected_color (tuple of 3 floats.) – Background color of the unselected option in drop down menu.

  • scroll_bar_active_color (tuple of 3 floats.) – Color of the scrollbar when in active use.

  • scroll_bar_inactive_color (tuple of 3 floats.) – Color of the scrollbar when inactive.

  • reverse_scrolling ({True, False}) – If True, scrolling up will move the list of files down.

  • font_size (int) – The font size of selected text in pixels.

  • line_spacing (float) – Distance between drop down menu’s items in pixels.

append_item(*items)[source]#

Append additional options to the menu.

Parameters:

items (n-d list, n-d tuple, Number or str) – Additional options.

left_button_dragged(i_ren, _obj, _sub_component)[source]#
left_button_pressed(i_ren, _obj, _sub_component)[source]#
menu_toggle_callback(i_ren, _vtkactor, _combobox)[source]#

Toggle visibility of drop down menu list.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • vtkactor (vtkActor) – The picked actor

  • combobox (ComboBox2D) –

resize(size)[source]#

Resize ComboBox2D.

Parameters:

size ((int, int)) – ComboBox size(width, height) in pixels.

select_option_callback(i_ren, _obj, listboxitem)[source]#

Select the appropriate option

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • listboxitem (ListBoxItem2D) –

property selected_text#
property selected_text_index#
set_visibility(visibility)[source]#

Set visibility of this UI component.

ListBox2D#

class fury.ui.elements.ListBox2D(values, *, position=(0, 0), size=(100, 300), multiselection=True, reverse_scrolling=False, font_size=20, line_spacing=1.4, text_color=(0.2, 0.2, 0.2), selected_color=(0.9, 0.6, 0.6), unselected_color=(0.6, 0.6, 0.6), scroll_bar_active_color=(0.6, 0.2, 0.2), scroll_bar_inactive_color=(0.9, 0.0, 0.0), background_opacity=1.0)[source]#

Bases: UI

UI component that allows the user to select items from a list.

on_change#

Callback function for when the selected items have changed.

Type:

function

__init__(values, *, position=(0, 0), size=(100, 300), multiselection=True, reverse_scrolling=False, font_size=20, line_spacing=1.4, text_color=(0.2, 0.2, 0.2), selected_color=(0.9, 0.6, 0.6), unselected_color=(0.6, 0.6, 0.6), scroll_bar_active_color=(0.6, 0.2, 0.2), scroll_bar_inactive_color=(0.9, 0.0, 0.0), background_opacity=1.0)[source]#

Init class instance.

Parameters:
  • values (list of objects) – Values used to populate this listbox. Objects must be castable to string.

  • position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of this UI component.

  • size ((int, int)) – Width and height in pixels of this UI component.

  • multiselection ({True, False}) – Whether multiple values can be selected at once.

  • reverse_scrolling ({True, False}) – If True, scrolling up will move the list of files down.

  • font_size (int) – The font size in pixels.

  • line_spacing (float) – Distance between listbox’s items in pixels.

  • text_color (tuple of 3 floats) –

  • selected_color (tuple of 3 floats) –

  • unselected_color (tuple of 3 floats) –

  • scroll_bar_active_color (tuple of 3 floats) –

  • scroll_bar_inactive_color (tuple of 3 floats) –

  • background_opacity (float) –

clear_selection()[source]#
down_button_callback(i_ren, _obj, _list_box)[source]#

Pressing down button scrolls down in the combo box.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _list_box (ListBox2D) –

resize(size)[source]#
scroll_click_callback(i_ren, _obj, _rect_obj)[source]#

Callback to change the color of the bar when it is clicked.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _rect_obj (Rectangle2D) –

scroll_drag_callback(i_ren, _obj, _rect_obj)[source]#

Drag scroll bar in the combo box.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • rect_obj (Rectangle2D) –

scroll_release_callback(i_ren, _obj, _rect_obj)[source]#

Callback to change the color of the bar when it is released.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • rect_obj (Rectangle2D) –

select(item, *, multiselect=False, range_select=False)[source]#

Select the item.

Parameters:
  • item (ListBoxItem2D's object) – Item to select.

  • multiselect ({True, False}) – If True and multiselection is allowed, the item is added to the selection. Otherwise, the selection will only contain the provided item unless range_select is True.

  • range_select ({True, False}) – If True and multiselection is allowed, all items between the last selected item and the current one will be added to the selection. Otherwise, the selection will only contain the provided item unless multi_select is True.

up_button_callback(i_ren, _obj, _list_box)[source]#

Pressing up button scrolls up in the combo box.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _list_box (ListBox2D) –

update()[source]#

Refresh listbox’s content.

update_scrollbar()[source]#

Change the scroll-bar height when the values in the listbox change

ListBoxItem2D#

class fury.ui.elements.ListBoxItem2D(list_box, size, *, text_color=(1.0, 0.0, 0.0), selected_color=(0.4, 0.4, 0.4), unselected_color=(0.9, 0.9, 0.9), background_opacity=1.0)[source]#

Bases: UI

The text displayed in a listbox.

__init__(list_box, size, *, text_color=(1.0, 0.0, 0.0), selected_color=(0.4, 0.4, 0.4), unselected_color=(0.9, 0.9, 0.9), background_opacity=1.0)[source]#

Init ListBox Item instance.

Parameters:
  • list_box (ListBox) – The ListBox reference this text belongs to.

  • size (tuple of 2 ints) – The size of the listbox item.

  • text_color (tuple of 3 floats) –

  • unselected_color (tuple of 3 floats) –

  • selected_color (tuple of 3 floats) –

  • background_opacity (float) –

deselect()[source]#
property element#
left_button_clicked(i_ren, _obj, _list_box_item)[source]#

Handle left click for this UI element.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _list_box_item (ListBoxItem2D) –

resize(size)[source]#
select()[source]#

FileMenu2D#

class fury.ui.elements.FileMenu2D(directory_path, *, extensions=None, position=(0, 0), size=(100, 300), multiselection=True, reverse_scrolling=False, font_size=20, line_spacing=1.4)[source]#

Bases: UI

A menu to select files in the current folder.

Can go to new folder, previous folder and select multiple files.

extensions#

To show all files, extensions=[“*”] or [“”] List of extensions to be shown as files.

Type:

[‘extension1’, ‘extension2’, ….]

listbox#

Container for the menu.

Type:
class:

‘ListBox2D’

__init__(directory_path, *, extensions=None, position=(0, 0), size=(100, 300), multiselection=True, reverse_scrolling=False, font_size=20, line_spacing=1.4)[source]#

Init class instance.

Parameters:
  • extensions (list(string)) – List of extensions to be shown as files.

  • directory_path (string) – Path of the directory where this dialog should open.

  • position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of this UI component.

  • size ((int, int)) – Width and height in pixels of this UI component.

  • multiselection ({True, False}) – Whether multiple values can be selected at once.

  • reverse_scrolling ({True, False}) – If True, scrolling up will move the list of files down.

  • font_size (int) – The font size in pixels.

  • line_spacing (float) – Distance between listbox’s items in pixels.

directory_click_callback(i_ren, _obj, listboxitem)[source]#

Handle the move into a directory if it has been clicked.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • listboxitem (ListBoxItem2D) –

get_all_file_names()[source]#

Get file and directory names.

Returns:

all_file_names – List of all file and directory names as string.

Return type:

list((string, {“directory”, “file”}))

get_directory_names()[source]#

Find names of all directories in the current_directory

Returns:

directory_names – List of all directory names as string.

Return type:

list(string)

get_file_names()[source]#

Find names of all files in the current_directory

Returns:

file_names – List of all file names as string.

Return type:

list(string)

resize(size)[source]#
scroll_callback(i_ren, _obj, _filemenu_item)[source]#

Handle scroll and change the slot text colors.

Parameters:
  • i_ren (CustomInteractorStyle) –

  • obj (vtkActor) – The picked actor

  • _filemenu_item (FileMenu2D) –

set_slot_colors()[source]#

Set the text color of the slots based on the type of element they show. Blue for directories and green for files.

DrawShape#

class fury.ui.elements.DrawShape(shape_type, *, drawpanel=None, position=(0, 0))[source]#

Bases: UI

Create and Manage 2D Shapes.

__init__(shape_type, *, drawpanel=None, position=(0, 0))[source]#

Init this UI element.

Parameters:
  • shape_type (string) – Type of shape to be created.

  • drawpanel (DrawPanel, optional) – Reference to the main canvas on which it is drawn.

  • position ((float, float), optional) – (x, y) in pixels.

cal_bounding_box()[source]#

Calculate the min, max position and the size of the bounding box.

property center#
clamp_position(*, center=None)[source]#

Clamp the given center according to the DrawPanel canvas.

Parameters:

center ((float, float)) – (x, y) in pixels.

Returns:

new_center – New center for the shape.

Return type:

ndarray(int)

property is_selected#
left_button_dragged(i_ren, _obj, shape)[source]#
left_button_pressed(i_ren, _obj, shape)[source]#
left_button_released(i_ren, _obj, shape)[source]#
remove()[source]#

Remove the Shape and all related actors.

resize(size)[source]#

Resize the UI.

rotate(angle)[source]#

Rotate the vertices of the UI component using specific angle.

Parameters:

angle (float) – Value by which the vertices are rotated in radian.

selection_change()[source]#
update_shape_position(center_position)[source]#

Update the center position on the canvas.

Parameters:

center_position ((float, float)) – Absolute pixel coordinates (x, y).

DrawPanel#

class fury.ui.elements.DrawPanel(*, size=(400, 400), position=(0, 0), is_draggable=False)[source]#

Bases: UI

The main Canvas(Panel2D) on which everything would be drawn.

__init__(*, size=(400, 400), position=(0, 0), is_draggable=False)[source]#

Init this UI element.

Parameters:
  • size ((int, int), optional) – Width and height in pixels of this UI component.

  • position ((float, float), optional) – (x, y) in pixels.

  • is_draggable (bool, optional) – Whether the background canvas will be draggble or not.

cal_min_boundary_distance(position)[source]#

Calculate minimum distance between the current position and canvas boundary.

Parameters:

position ((float,float)) – current position of the shape.

Returns:

Minimum distance from the boundary.

Return type:

float

clamp_mouse_position(mouse_position)[source]#

Restrict the mouse position to the canvas boundary.

Parameters:

mouse_position ((float,float)) – Current mouse position.

Returns:

New clipped position.

Return type:

list(float)

property current_mode#
draw_shape(shape_type, current_position)[source]#

Draw the required shape at the given position.

Parameters:
  • shape_type (string) – Type of shape - line, quad, circle.

  • current_position ((float,float)) – Lower left corner position for the shape.

handle_mouse_click(position)[source]#
handle_mouse_drag(position)[source]#
left_button_dragged(i_ren, _obj, element)[source]#
left_button_pressed(i_ren, _obj, element)[source]#
resize(size)[source]#

Resize the UI.

resize_shape(current_position)[source]#

Resize the shape.

Parameters:

current_position ((float,float)) – Lower left corner position for the shape.

show_rotation_slider()[source]#

Display the RingSlider2D to allow rotation of shape from the center.

update_button_icons(current_mode)[source]#

Update the button icon.

Parameters:

current_mode (string) – Current mode of the UI.

update_shape_selection(selected_shape)[source]#

PlaybackPanel#

class fury.ui.elements.PlaybackPanel(*, loop=False, position=(0, 0), width=None)[source]#

Bases: UI

A playback controller that can do essential functionalities. such as play, pause, stop, and seek.

__init__(*, loop=False, position=(0, 0), width=None)[source]#

Init scene.

Parameters:

position ((float, float)) – Absolute coordinates (x, y) of the lower-left corner of this UI component.

property current_time#

Get current time of the progress slider.

Returns:

Progress slider current value.

Return type:

float

property current_time_str#

Returns current time as a string.

Returns:

Current time formatted as a string in the form:HH:MM:SS.

Return type:

str

property final_time#

Set final progress slider time value.

Returns:

Final time for the progress slider.

Return type:

float

hide()[source]#
loop()[source]#

Set repeating mode to loop.

pause()[source]#

Pause the playback

play()[source]#

Play the playback

play_once()[source]#

Set repeating mode to repeat once.

show()[source]#
property speed#

Returns current speed.

Returns:

Current time formatted as a string in the form:HH:MM:SS.

Return type:

str

stop()[source]#

Stop the playback

property width#

Return the width of the PlaybackPanel

Returns:

The width of the PlaybackPanel.

Return type:

float

Card2D#

class fury.ui.elements.Card2D(image_path, *, body_text='', draggable=True, title_text='', padding=10, position=(0, 0), size=(400, 400), image_scale=0.5, bg_color=(0.5, 0.5, 0.5), bg_opacity=1, title_color=(0.0, 0.0, 0.0), body_color=(0.0, 0.0, 0.0), border_color=(1.0, 1.0, 1.0), border_width=0, maintain_aspect=False)[source]#

Bases: UI

Card element to show image and related text

image#

Renders the image on the card.

Type:
class:

‘ImageContainer2D’

title_box#

Displays the title on card.

Type:
class:

‘TextBlock2D’

body_box#

Displays the body text.

Type:
class:

‘TextBLock2D’

__init__(image_path, *, body_text='', draggable=True, title_text='', padding=10, position=(0, 0), size=(400, 400), image_scale=0.5, bg_color=(0.5, 0.5, 0.5), bg_opacity=1, title_color=(0.0, 0.0, 0.0), body_color=(0.0, 0.0, 0.0), border_color=(1.0, 1.0, 1.0), border_width=0, maintain_aspect=False)[source]#
Parameters:
  • image_path (str) – Path of the image, supports png and jpg/jpeg images

  • body_text (str, optional) – Card body text

  • draggable (Bool, optional) – If the card should be draggable

  • title_text (str, optional) – Card title text

  • padding (int, optional) – Padding between image, title, body

  • position ((float, float), optional) – Absolute coordinates (x, y) of the lower-left corner of the UI component

  • size ((int, int), optional) – Width and height of the pixels of this UI component.

  • image_scale (float, optional) – fraction of size taken by the image (between 0 , 1)

  • bg_color ((float, float, float), optional) – Background color of card

  • bg_opacity (float, optional) – Background opacity

  • title_color ((float, float, float), optional) – Title text color

  • body_color ((float, float, float), optional) – Body text color

  • border_color ((float, float, float), optional) – Border color

  • border_width (int, optional) – Width of the border

  • maintain_aspect (bool, optional) – If the image should be scaled to maintain aspect ratio

property body#

Returns the body text of the card.

property color#

Returns the background color of card.

left_button_dragged(i_ren, _obj, _sub_component)[source]#
left_button_pressed(i_ren, _obj, _sub_component)[source]#
resize(size)[source]#

Resize Card2D.

Parameters:

size ((int, int)) – Card2D size(width, height) in pixels.

property title#

Returns the title text of the card

SpinBox#

class fury.ui.elements.SpinBox(*, position=(350, 400), size=(300, 100), padding=10, panel_color=(1, 1, 1), min_val=0, max_val=100, initial_val=50, step=1, max_column=10, max_line=2)[source]#

Bases: UI

SpinBox UI.

__init__(*, position=(350, 400), size=(300, 100), padding=10, panel_color=(1, 1, 1), min_val=0, max_val=100, initial_val=50, step=1, max_column=10, max_line=2)[source]#

Init this UI element.

Parameters:
  • position ((int, int), optional) – Absolute coordinates (x, y) of the lower-left corner of this UI component.

  • size ((int, int), optional) – Width and height in pixels of this UI component.

  • padding (int, optional) – Distance between TextBox and Buttons.

  • panel_color ((float, float, float), optional) – Panel color of SpinBoxUI.

  • min_val (int, optional) – Minimum value of SpinBoxUI.

  • max_val (int, optional) – Maximum value of SpinBoxUI.

  • initial_val (int, optional) – Initial value of SpinBoxUI.

  • step (int, optional) – Step value of SpinBoxUI.

  • max_column (int, optional) – Max number of characters in a line.

  • max_line (int, optional) – Max number of lines in the textbox.

decrement()[source]#

Decrement the current value by the step.

decrement_callback(i_ren, _obj, _button)[source]#
increment()[source]#

Increment the current value by the step.

increment_callback(i_ren, _obj, _button)[source]#
resize(size)[source]#

Resize SpinBox.

Parameters:

size ((float, float)) – SpinBox size(width, height) in pixels.

textbox_update_value(textbox)[source]#
validate_value(value)[source]#

Validate and convert the given value into integer.

Parameters:

value (str) – Input value received from the textbox.

Returns:

If valid return converted integer else the previous value.

Return type:

int

property value#

clip_overflow#

fury.ui.helpers.clip_overflow(textblock, width, *, side='right')[source]#

Clips overflowing text of TextBlock2D with respect to width.

Parameters:
  • textblock (TextBlock2D) – The textblock object whose text needs to be clipped.

  • width (int) – Required width of the clipped text.

  • side (str, optional) – Clips the overflowing text according to side. It takes values “left” or “right”.

Returns:

clipped text – Clipped version of the text.

Return type:

str

wrap_overflow#

fury.ui.helpers.wrap_overflow(textblock, wrap_width, *, side='right')[source]#

Wraps overflowing text of TextBlock2D with respect to width.

Parameters:
  • textblock (TextBlock2D) – The textblock object whose text needs to be wrapped.

  • wrap_width (int) – Required width of the wrapped text.

  • side (str, optional) – Clips the overflowing text according to side. It takes values “left” or “right”.

Returns:

wrapped text – Wrapped version of the text.

Return type:

str

check_overflow#

fury.ui.helpers.check_overflow(textblock, width, *, overflow_postfix='', side='right')[source]#

Checks if the text is overflowing.

Parameters:
  • textblock (TextBlock2D) – The textblock object whose text is to be checked.

  • width (int) – Required width of the text.

  • overflow_postfix (str, optional) – Postfix to be added to the text if it is overflowing.

Returns:

mid_ptr – Overflow index of the text.

Return type:

int

cal_bounding_box_2d#

fury.ui.helpers.cal_bounding_box_2d(vertices)[source]#

Calculate the min, max position and the size of the bounding box.

Parameters:

vertices (ndarray) – vertices of the actors.

rotate_2d#

fury.ui.helpers.rotate_2d(vertices, angle)[source]#

Rotate the given vertices by an angle.

Parameters:
  • vertices (ndarray) – vertices of the actors.

  • angle (float) – Value by which the vertices are rotated in radian.