Esempio n. 1
0
def test_ui_line_slider_2d_vertical(recording=False):
    filename = "test_ui_line_slider_2d_vertical"
    recording_filename = pjoin(DATA_DIR, filename + ".log.gz")
    expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json")

    line_slider_2d_test = ui.LineSlider2D(initial_value=-2,
                                          min_value=-5, max_value=5,
                                          orientation="vertical")
    line_slider_2d_test.center = (300, 300)

    # Assign the counter callback to every possible event.
    event_counter = EventCounter()
    event_counter.monitor(line_slider_2d_test)

    current_size = (600, 600)
    show_manager = window.ShowManager(size=current_size,
                                      title="FURY Vertical Line Slider")

    show_manager.scene.add(line_slider_2d_test)

    if recording:
        show_manager.record_events_to_file(recording_filename)
        print(list(event_counter.events_counts.items()))
        event_counter.save(expected_events_counts_filename)

    else:
        show_manager.play_events_from_file(recording_filename)
        expected = EventCounter.load(expected_events_counts_filename)
        event_counter.check_counts(expected)
Esempio n. 2
0
    cube_actor = window.vtk.vtkActor()
    cube_actor.SetMapper(cube_mapper)
    if color is not None:
        cube_actor.GetProperty().SetColor(color)
    return cube_actor


cube = cube_maker(color=(0, 0, 1), size=(20, 20, 20), center=(15, 0, 0))

###############################################################################
# Now we'll add two sliders: one circular and one linear.

ring_slider = ui.RingSlider2D(center=(740, 400), initial_value=0,
                              text_template="{angle:5.1f}°")

line_slider = ui.LineSlider2D(center=(500, 250), initial_value=0,
                              min_value=-10, max_value=10)

###############################################################################
# We can use a callback to rotate the cube with the ring slider.


def rotate_cube(slider):
    angle = slider.value
    previous_angle = slider.previous_value
    rotation_angle = angle - previous_angle
    cube.RotateX(rotation_angle)


ring_slider.on_change = rotate_cube

###############################################################################
Esempio n. 3
0
def test_ui_tab_ui(interactive=False):
    filename = "test_ui_tab_ui"
    recording_filename = pjoin(DATA_DIR, filename + ".log.gz")
    expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json")

    tab_ui = ui.TabUI(position=(50, 50),
                      size=(300, 300),
                      nb_tabs=3,
                      draggable=True)

    tab_ui.tabs[0].title = "Tab 1"
    tab_ui.tabs[1].title = "Tab 2"
    tab_ui.tabs[2].title = "Tab 3"

    tab_ui.add_element(0, ui.Checkbox(["Option 1", "Option 2"]), (0.5, 0.5))
    tab_ui.add_element(1, ui.LineSlider2D(), (0.0, 0.5))
    tab_ui.add_element(2, ui.TextBlock2D(), (0.5, 0.5))

    with npt.assert_raises(IndexError):
        tab_ui.add_element(3, ui.TextBlock2D(), (0.5, 0.5, 0.5))

    with npt.assert_raises(IndexError):
        tab_ui.remove_element(3, ui.TextBlock2D())

    with npt.assert_raises(IndexError):
        tab_ui.update_element(3, ui.TextBlock2D(), (0.5, 0.5, 0.5))

    npt.assert_equal("Tab 1", tab_ui.tabs[0].title)
    npt.assert_equal("Tab 2", tab_ui.tabs[1].title)
    npt.assert_equal("Tab 3", tab_ui.tabs[2].title)

    npt.assert_equal(3, tab_ui.nb_tabs)

    collapses = itertools.count()
    changes = itertools.count()

    def collapse(tab_ui):
        if tab_ui.collapsed:
            next(collapses)

    def tab_change(tab_ui):
        next(changes)

    tab_ui.on_change = tab_change
    tab_ui.on_collapse = collapse

    event_counter = EventCounter()
    event_counter.monitor(tab_ui)

    current_size = (800, 800)
    show_manager = window.ShowManager(size=current_size, title="Tab UI Test")
    show_manager.scene.add(tab_ui)

    if interactive:
        show_manager.record_events_to_file(recording_filename)
        print(list(event_counter.events_counts.items()))
        event_counter.save(expected_events_counts_filename)
    else:
        show_manager.play_events_from_file(recording_filename)
        expected = EventCounter.load(expected_events_counts_filename)
        event_counter.check_counts(expected)

    npt.assert_equal(0, tab_ui.active_tab_idx)
    npt.assert_equal(11, next(changes))
    npt.assert_equal(5, next(collapses))
Esempio n. 4
0
# Now we would like to change the position of each ``image_actor`` using a
# slider. The sliders are widgets which require access to different areas of
# the visualization pipeline and therefore we don't recommend using them with
# ``show``. The more appropriate way is to use them with the ``ShowManager``
# object which allows accessing the pipeline in different areas. Here is how:

show_m = window.ShowManager(ren, size=(1200, 900))
show_m.initialize()

###############################################################################
# After we have initialized the ``ShowManager`` we can go ahead and create
# sliders to move the slices and change their opacity.

line_slider_z = ui.LineSlider2D(min_value=0,
                                max_value=shape[2] - 1,
                                initial_value=shape[2] / 2,
                                text_template="{value:.0f}",
                                length=140)

line_slider_x = ui.LineSlider2D(min_value=0,
                                max_value=shape[0] - 1,
                                initial_value=shape[0] / 2,
                                text_template="{value:.0f}",
                                length=140)

line_slider_y = ui.LineSlider2D(min_value=0,
                                max_value=shape[1] - 1,
                                initial_value=shape[1] / 2,
                                text_template="{value:.0f}",
                                length=140)
Esempio n. 5
0
    if color is not None:
        cube_actor.GetProperty().SetColor(color)
    return cube_actor


cube = cube_maker(color=(0, 0, 1), size=(20, 20, 20), center=(15, 0, 0))

###############################################################################
# Now we'll add five sliders: 1 circular and 4 linear sliders.
# By default the alignments are 'bottom' for horizontal and 'top' for vertical.

ring_slider = ui.RingSlider2D(center=(630, 400), initial_value=0,
                              text_template="{angle:5.1f}°")

hor_line_slider_text_top = ui.LineSlider2D(center=(400, 230), initial_value=0,
                                           orientation='horizontal',
                                           min_value=-10, max_value=10,
                                           text_alignment='top')

hor_line_slider_text_bottom = ui.LineSlider2D(center=(400, 200),
                                              initial_value=0,
                                              orientation='horizontal',
                                              min_value=-10, max_value=10,
                                              text_alignment='bottom')

ver_line_slider_text_left = ui.LineSlider2D(center=(100, 400), initial_value=0,
                                            orientation='vertical',
                                            min_value=-10, max_value=10,
                                            text_alignment='left')

ver_line_slider_text_right = ui.LineSlider2D(center=(150, 400),
                                             initial_value=0,
Esempio n. 6
0
panel_2 = ui.Panel2D(size=(250, 250),
                     color=(0.8, 0.3, 0.5),
                     position=(150, 150))

###############################################################################
# Now we create two listboxes

listbox_1 = ui.ListBox2D(size=(150, 150), values=['First', 'Second', 'Third'])

listbox_2 = ui.ListBox2D(size=(250, 250), values=['First', 'Second', 'Third'])

###############################################################################
# Now we create two diffrent UI i.e. a slider and a listbox

slider = ui.LineSlider2D(length=150)
listbox = ui.ListBox2D(size=(150, 150), values=['First', 'Second', 'Third'])

###############################################################################
# Now, we create grids with different shapes

rect_grid = GridLayout(position_offset=(0, 0, 0))
square_grid = GridLayout(cell_shape='square', position_offset=(0, 300, 0))
diagonal_grid = GridLayout(cell_shape="diagonal", position_offset=(0, 600, 0))

###############################################################################
# Applying the grid to the ui elements

rect_grid.apply([panel_1, panel_2])
square_grid.apply([listbox_1, listbox_2])
diagonal_grid.apply([slider, listbox])
Esempio n. 7
0
        cube_actor.GetProperty().SetColor(color)
    return cube_actor


cube = cube_maker(color=(0, 0, 1), size=(20, 20, 20), center=(15, 5, 0))

###############################################################################
# Now we'll add three sliders: one circular and two linear.

ring_slider = ui.RingSlider2D(center=(740, 400),
                              initial_value=0,
                              text_template="{angle:5.1f}°")

line_slider_x = ui.LineSlider2D(center=(500, 250),
                                initial_value=0,
                                min_value=-10,
                                max_value=10,
                                orientation="horizontal")

line_slider_y = ui.LineSlider2D(center=(650, 350),
                                initial_value=0,
                                min_value=-10,
                                max_value=10,
                                orientation="vertical")

###############################################################################
# We can use a callback to rotate the cube with the ring slider.


def rotate_cube(slider):
    angle = slider.value
Esempio n. 8
0
control_panel.add_element(slider_label_roughness, (.01, .86))
control_panel.add_element(slider_label_anisotropy, (.01, .77))
control_panel.add_element(slider_label_anisotropy_rotation, (.01, .68))
control_panel.add_element(slider_label_anisotropy_direction_x, (.01, .59))
control_panel.add_element(slider_label_anisotropy_direction_y, (.01, .5))
control_panel.add_element(slider_label_anisotropy_direction_z, (.01, .41))
control_panel.add_element(slider_label_coat_strength, (.01, .32))
control_panel.add_element(slider_label_coat_roughness, (.01, .23))
control_panel.add_element(slider_label_base_ior, (.01, .14))
control_panel.add_element(slider_label_coat_ior, (.01, .05))

###############################################################################
# Our sliders are created and added to the panel in the following way.

slider_slice_metallic = ui.LineSlider2D(initial_value=pbr_params.metallic,
                                        max_value=1,
                                        length=195,
                                        text_template='{value:.1f}')
slider_slice_roughness = ui.LineSlider2D(initial_value=pbr_params.roughness,
                                         max_value=1,
                                         length=195,
                                         text_template='{value:.1f}')
slider_slice_anisotropy = ui.LineSlider2D(initial_value=pbr_params.anisotropy,
                                          max_value=1,
                                          length=195,
                                          text_template='{value:.1f}')
slider_slice_anisotropy_rotation = ui.LineSlider2D(
    initial_value=pbr_params.anisotropy_rotation,
    max_value=1,
    length=195,
    text_template='{value:.1f}')
slider_slice_coat_strength = ui.LineSlider2D(
Esempio n. 9
0
tab_ui = ui.TabUI(position=(49, 94),
                  size=(300, 300),
                  nb_tabs=3,
                  draggable=True)

###############################################################################
# Slider Controls for a Cube for Tab Index 0
# ==========================================
#
# Now we prepare content for the first tab.

ring_slider = ui.RingSlider2D(initial_value=0, text_template="{angle:5.1f}°")

line_slider_x = ui.LineSlider2D(initial_value=0,
                                min_value=-10,
                                max_value=10,
                                orientation="horizontal",
                                text_alignment="Top")

line_slider_y = ui.LineSlider2D(initial_value=0,
                                min_value=-10,
                                max_value=10,
                                orientation="vertical",
                                text_alignment="Right")

cube = actor.box(centers=np.array([[10, 0, 0]]),
                 directions=np.array([[0, 1, 0]]),
                 colors=np.array([[0, 0, 1]]),
                 scales=np.array([[1, 1, 1]]))
cube_x = 0
cube_y = 0
Esempio n. 10
0
    min_centers = np.min(centers, axis=0)
    max_centers = np.max(centers, axis=0)

    low_perc = np.array([50, 50, 50])
    high_perc = np.array([100, 100, 100])

    low_ranges = np.array(
        [np.percentile(centers[:, i], v) for i, v in enumerate(low_perc)])
    high_ranges = np.array(
        [np.percentile(centers[:, i], v) for i, v in enumerate(high_perc)])

    slider_frame_thr = ui.LineSlider2D(initial_value=0,
                                       min_value=0,
                                       max_value=len(xml_files) - 1,
                                       length=260,
                                       line_width=3,
                                       outer_radius=8,
                                       font_size=16,
                                       text_template="{value:.0f}")

    slider_clipping_plane_thrs_x = ui.LineDoubleSlider2D(
        line_width=3,
        outer_radius=8,
        length=260,
        initial_values=(low_ranges[0], high_ranges[0]),
        min_value=min_centers[0],
        max_value=max_centers[0],
        font_size=16,
        text_template="{value:.0f}")

    slider_clipping_plane_thrs_y = ui.LineDoubleSlider2D(
Esempio n. 11
0
#Drawing Axis
lines = [np.array([[-500.,-800.,-500.],[500.,-800.,-500.],[500.,800.,-500.],[-500.,800.,-500.],[-500.,-800.,-500.],[-500.,-800.,500.],[-500.,800.,500.],[-500.,800.,-500.],[-500.,800.,500.],[500.,800.,500.],[500.,800.,-500.],[500.,800.,-500.],[500.,-800.,-500.],[500.,-800.,500.],[500.,800.,500.],[500.,-800.,500.],[-500.,-800.,500.]])]
colors = np.random.rand(1,3)
c = actor.line(lines, colors)
scene.add(c)

x_label = actor.text_3d(text='x axis (micron)',position=(-100,-900,550),font_size=50,justification='left')
scene.add(x_label)
y_label = actor.text_3d(text='y axis (micron)',position=(-900,0,550),font_size=50,justification='left')
scene.add(y_label)
z_label = actor.text_3d(text='z axis (micron)',position=(600,-900,0),font_size=50,justification='left')
scene.add(z_label)



line_slider = ui.LineSlider2D(center=(200, 250), initial_value=1,
                              min_value=0, max_value=37,text_template="{value:.0f}")

line_slider.on_change = line_slider_value
showm.scene.add(line_slider)

current_Timepoint = 1

def timer_callback(_obj, _event):
    global current_Timepoint, Timepoint, c
    cnt = next(counter)
    maxcnt = 1000
    Logic_check = (current_Timepoint == Timepoint)
    current_Timepoint = Timepoint
    tb.message = "Time Point : " + str(Timepoint)+ " hrs"
    scene.add(tb)
    #scene.camera_info()
Esempio n. 12
0
    def build_slider_demo(self):
        panel = ui.Panel2D(size=(500, 150),
                           color=(1.0, 1.0, 1.0),
                           align="right",
                           opacity=0.1)
        panel.center = (500, 400)

        ring_slider = ui.RingSlider2D(center=(740, 400),
                                      initial_value=0,
                                      text_template="{angle:5.1f}")
        ring_slider.default_color = (1, 0.5, 0)
        ring_slider.track.color = (0.8, 0.3, 0)
        ring_slider.active_color = (0.9, 0.4, 0)
        ring_slider.handle.color = (1, 0.5, 0)

        line_slider = ui.LineSlider2D(center=(500, 250),
                                      initial_value=0,
                                      min_value=-10,
                                      max_value=10)
        line_slider.default_color = (1, 0.5, 0)
        line_slider.track.color = (0.8, 0.3, 0)
        line_slider.active_color = (0.9, 0.4, 0)
        line_slider.handle.color = (1, 0.5, 0)

        def cube_maker(color=(1, 1, 1), size=(0.2, 0.2, 0.2),
                       center=(0, 0, 0)):
            cube = vtk.vtkCubeSource()
            cube.SetXLength(size[0])
            cube.SetYLength(size[1])
            cube.SetZLength(size[2])
            if center is not None:
                cube.SetCenter(*center)
            cube_mapper = vtk.vtkPolyDataMapper()
            cube_mapper.SetInputConnection(cube.GetOutputPort())
            cube_actor = vtk.vtkActor()
            cube_actor.SetMapper(cube_mapper)
            if color is not None:
                cube_actor.GetProperty().SetColor(color)
            return cube_actor

        cube = cube_maker(color=(0, 0, 1),
                          size=(20, 20, 20),
                          center=(15, 0, 0))

        def rotate_cube(slider):
            angle = slider.value
            previous_angle = slider.previous_value
            rotation_angle = angle - previous_angle
            cube.RotateX(rotation_angle)

        ring_slider.on_change = rotate_cube

        def translate_cube(slider):
            value = slider.value
            cube.SetPosition(value, 0, 0)

        line_slider.on_change = translate_cube

        panel.add_element(ring_slider, (50, 20))
        panel.add_element(line_slider, (200, 70))

        return ('Slider Demo', [panel, cube])
Esempio n. 13
0
                           grid_shape[1] - 1, 0, grid_shape[2] - 1)

scene = window.Scene()
scene.add(odf_actor_z)
scene.add(odf_actor_y)
scene.add(odf_actor_x)

show_m = window.ShowManager(scene, reset_camera=True, size=(1200, 900))
show_m.initialize()

###############################################################################
# Now that we have a `ShowManager` containing our slicer, we can go on and
# configure our UI for changing the slices to visualize.
line_slider_z = ui.LineSlider2D(min_value=0,
                                max_value=grid_shape[2] - 1,
                                initial_value=grid_shape[2] / 2,
                                text_template="{value:.0f}",
                                length=140)

line_slider_y = ui.LineSlider2D(min_value=0,
                                max_value=grid_shape[1] - 1,
                                initial_value=grid_shape[1] / 2,
                                text_template="{value:.0f}",
                                length=140)

line_slider_x = ui.LineSlider2D(min_value=0,
                                max_value=grid_shape[0] - 1,
                                initial_value=grid_shape[0] / 2,
                                text_template="{value:.0f}",
                                length=140)
Esempio n. 14
0
    def create_visualization(self):
        ren_win = self.getView('-1')
        scene = ren_win.GetRenderers().GetFirstRenderer()
        showm = self.getSharedObject('SHOWM')

        self.panel = ui.Panel2D((480, 270),
                                position=(5, 5),
                                color=(1, 1, 1),
                                opacity=.1,
                                align='right')

        self.slider_frame_label = build_label('Frame')
        self.slider_frame_label.set_visibility(False)
        self.slider_frame_thr = ui.LineSlider2D(initial_value=0,
                                                min_value=0,
                                                max_value=1,
                                                length=260,
                                                line_width=3,
                                                outer_radius=8,
                                                font_size=16,
                                                text_template="{value:.0f}")
        self.slider_frame_thr.set_visibility(False)
        self.slider_frame_thr.on_change = self.change_frame
        self.slider_clipping_plane_label_x = build_label('X Clipping Plane')
        self.slider_clipping_plane_thrs_x = ui.LineDoubleSlider2D(
            line_width=3,
            outer_radius=8,
            length=260,
            initial_values=(self.low_ranges[0], self.high_ranges[0]),
            min_value=self.min_centers[0],
            max_value=self.max_centers[0],
            font_size=16,
            text_template="{value:.0f}")

        self.slider_clipping_plane_label_y = build_label('Y Clipping Plane')
        self.slider_clipping_plane_thrs_y = ui.LineDoubleSlider2D(
            line_width=3,
            outer_radius=8,
            length=260,
            initial_values=(self.low_ranges[1], self.high_ranges[1]),
            min_value=self.min_centers[1],
            max_value=self.max_centers[1],
            font_size=16,
            text_template="{value:.0f}")

        self.slider_clipping_plane_label_z = build_label('Z Clipping Plane')
        self.slider_clipping_plane_thrs_z = ui.LineDoubleSlider2D(
            line_width=3,
            outer_radius=8,
            length=260,
            initial_values=(self.low_ranges[2], self.high_ranges[2]),
            min_value=self.min_centers[2],
            max_value=self.max_centers[2],
            font_size=16,
            text_template="{value:.0f}")

        self.panel.add_element(self.slider_frame_label, (.04, .85))
        self.panel.add_element(self.slider_frame_thr, (.38, .85))
        self.panel.add_element(self.slider_clipping_plane_label_x, (.04, .55))
        self.panel.add_element(self.slider_clipping_plane_thrs_x, (.38, .55))
        self.panel.add_element(self.slider_clipping_plane_label_y, (.04, .35))
        self.panel.add_element(self.slider_clipping_plane_thrs_y, (.38, .35))
        self.panel.add_element(self.slider_clipping_plane_label_z, (.04, .15))
        self.panel.add_element(self.slider_clipping_plane_thrs_z, (.38, .15))

        scene.ResetCamera()
        scene.add(self.panel)
        self.size = scene.GetSize()
        # showm.add_window_callback(self.win_callback)
        showm.render()

        if self.load_default:
            print("load default")
            data = {
                "folder": os.path.abspath(os.path.dirname(__file__)),
                "filename": 'output00000246.xml'
            }
            self.add_frame(data)