def test_ui_textbox(recording=False): filename = "test_ui_textbox" recording_filename = pjoin(DATA_DIR, filename + ".log.gz") expected_events_counts_filename = pjoin(DATA_DIR, filename + ".pkl") # TextBox textbox_test = ui.TextBox2D(height=3, width=10, text="Text") another_textbox_test = ui.TextBox2D(height=3, width=10, text="Enter Text") another_textbox_test.set_message("Enter Text") npt.assert_raises(NotImplementedError, setattr, another_textbox_test, "center", (10, 100)) # Assign the counter callback to every possible event. event_counter = EventCounter() event_counter.monitor(textbox_test) current_size = (600, 600) show_manager = window.ShowManager(size=current_size, title="DIPY TextBox") show_manager.ren.add(textbox_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)
def slider(image_actor, line_actor): slicer_opacity = 0.6 #image_actor.opacity(slicer_opacity) ren = window.Renderer() ren.add(image_actor) ren.add(line_actor) show_m = window.ShowManager(ren, size=(1200, 900)) show_m.initialize() line_slider_z = ui.LineSlider2D(min_value=0, max_value=shape[2] - 1, initial_value=shape[2] / 2, text_template="{value:.0f}") opacity_slider = ui.LineSlider2D(min_value=0.0, max_value=1.0, initial_value=slicer_opacity) def change_slice_z(i_ren, obj, slider): z = int(np.round(slider.value)) image_actor.display(None, None, z) def change_opacity(i_ren, obj, slider): slicer_opacity = slider.value image_actor.opacity(slicer_opacity) line_slider_z.add_callback(line_slider_z.slider_disk, "MouseMoveEvent", change_slice_z) opacity_slider.add_callback(opacity_slider.slider_disk, "MouseMoveEvent", change_opacity) line_slider_label_z = ui.TextBox2D(text="Slice", width=50, height=20) opacity_slider_label = ui.TextBox2D(text="Opacity", width=50, height=20) panel = ui.Panel2D(center=(1030, 120), size=(300, 200), color=(1, 1, 1), opacity=0.1, align="right") panel.add_element(line_slider_label_z, 'relative', (0.1, 0.4)) panel.add_element(line_slider_z, 'relative', (0.5, 0.4)) panel.add_element(opacity_slider_label, 'relative', (0.1, 0.2)) panel.add_element(opacity_slider, 'relative', (0.5, 0.2)) #show_m.ren.add(panel) ren.add(panel) global size size = ren.GetSize() def win_callback(obj, event): global size if size != obj.GetSize(): size_old = size size = obj.GetSize() size_change = [size[0] - size_old[0], 0] panel.re_align(size_change) show_m.initialize() #window.show(ren) show_m.add_window_callback(win_callback) show_m.render() show_m.start()
Panels ====== Simply create a panel and add elements to it. """ panel = ui.Panel2D(size=(300, 150), color=(1, 1, 1), align="right") panel.center = (440, 90) panel.add_element(button_example, (0.2, 0.2)) panel.add_element(second_button_example, (190, 85)) """ TextBox ======= """ text = ui.TextBox2D(height=3, width=10) """ 2D Line Slider ============== """ def translate_green_cube(slider): value = slider.value cube_actor_2.SetPosition(value, 0, 0) line_slider = ui.LineSlider2D(center=(450, 300), initial_value=-2, min_value=-5, max_value=5)
change_slice_z) line_slider_x.add_callback(line_slider_x.slider_disk, "MouseMoveEvent", change_slice_x) line_slider_y.add_callback(line_slider_y.slider_disk, "MouseMoveEvent", change_slice_y) opacity_slider.add_callback(opacity_slider.slider_disk, "MouseMoveEvent", change_opacity) """ We'll also create text labels to identify the sliders. """ line_slider_label_z = ui.TextBox2D(text="Z Slice", width=50, height=20) line_slider_label_x = ui.TextBox2D(text="X Slice", width=50, height=20) line_slider_label_y = ui.TextBox2D(text="Y Slice", width=50, height=20) opacity_slider_label = ui.TextBox2D(text="Opacity", width=50, height=20) """ Now we will create a ``panel`` to contain the sliders and labels. """ panel = ui.Panel2D(center=(1030, 120), size=(300, 200), color=(1, 1, 1), opacity=0.1, align="right")