예제 #1
0
def test_ui_ring_slider_2d(recording=False):
    filename = "test_ui_ring_slider_2d"
    recording_filename = pjoin(DATA_DIR, filename + ".log.gz")
    expected_events_counts_filename = pjoin(DATA_DIR, filename + ".json")

    ring_slider_2d_test = ui.RingSlider2D()
    ring_slider_2d_test.center = (300, 300)
    ring_slider_2d_test.value = 90

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

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

    show_manager.scene.add(ring_slider_2d_test)

    if recording:
        # Record the following events
        # 1. Left Click on the handle and hold it
        # 2. Move to the left the handle and make 1.5 tour
        # 3. Release the handle
        # 4. Left Click on the handle and hold it
        # 5. Move to the right the handle and make 1 tour
        # 6. Release the handle
        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)
예제 #2
0
        cube.SetCenter(*center)
    cube_mapper = window.vtk.vtkPolyDataMapper()
    cube_mapper.SetInputConnection(cube.GetOutputPort())
    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)

예제 #3
0
###############################################################################
# First, we create the Tab UI.

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]]),
예제 #4
0
# counter = 0;
# for pos in xyz:
#     rand = random.uniform(0, 90)
#     cell_actor = actor.texture_on_sphere(image)
#     cell_actor.SetScale(radii[counter],radii[counter],radii[counter])
#     cell_actor.SetPosition(pos[0],pos[1],pos[2])
#     utils.rotate(cell_actor,(rand, 1, 0, 0))
#     counter+=1
#     scene.add(actor.texture_on_sphere(image))
#     # print(counter)

#%%


x_ring_slider = ui.RingSlider2D(center=(30, 50), initial_value=0,
                              text_template="{angle:5.1f}°",font_size=12,slider_inner_radius=20,slider_outer_radius=24,handle_outer_radius=5)


y_ring_slider = ui.RingSlider2D(center=(30, 110), initial_value=0,
                              text_template="{angle:5.1f}°°",font_size=12,slider_inner_radius=20,slider_outer_radius=24,handle_outer_radius=5)

z_ring_slider = ui.RingSlider2D(center=(30, 170), initial_value=0,
                              text_template="{angle:5.1f}°°",font_size=12,slider_inner_radius=20,slider_outer_radius=24,handle_outer_radius=5)

scene.add(x_ring_slider)
scene.add(y_ring_slider)
scene.add(z_ring_slider)
x_ring_slider.set_visibility(True)
y_ring_slider.set_visibility(True)
z_ring_slider.set_visibility(True)
예제 #5
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])