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)
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)
############################################################################### # 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]]),
# 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)
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])